One Hat Cyber Team
  • Dir : ~/www/wwwroot/ppt.com.ng/public/assets/js/
  • Edit File: app-kanban.js
    ' + '
    ' + '
    ' + '' + '' + '
    '; kanban.addForm(boardId, addNew); addNew.addEventListener('submit', function (e) { e.preventDefault(); const currentBoard = [].slice.call( document.querySelectorAll('.kanban-board[data-id=' + boardId + '] .kanban-item') ); kanban.addElement(boardId, { title: "" + e.target[0].value + '', id: boardId + '-' + currentBoard.length + 1 }); // add dropdown in new boards const kanbanText = [].slice.call( document.querySelectorAll('.kanban-board[data-id=' + boardId + '] .kanban-text') ); kanbanText.forEach(function (e) { e.insertAdjacentHTML('beforebegin', renderDropdown()); }); // prevent sidebar to open onclick dropdown buttons of new tasks const newTaskDropdown = [].slice.call(document.querySelectorAll('.kanban-item .kanban-tasks-item-dropdown')); if (newTaskDropdown) { newTaskDropdown.forEach(function (e) { e.addEventListener('click', function (el) { el.stopPropagation(); }); }); } // delete tasks for new boards const deleteTask = [].slice.call( document.querySelectorAll('.kanban-board[data-id=' + boardId + '] .delete-task') ); deleteTask.forEach(function (e) { e.addEventListener('click', function () { const id = this.closest('.kanban-item').getAttribute('data-eid'); kanban.removeElement(id); }); }); addNew.remove(); }); // Remove form on clicking cancel button addNew.querySelector('.cancel-add-item').addEventListener('click', function (e) { addNew.remove(); }); } }); // Kanban Wrapper scrollbar if (kanbanWrapper) { new PerfectScrollbar(kanbanWrapper); } const kanbanContainer = document.querySelector('.kanban-container'), kanbanTitleBoard = [].slice.call(document.querySelectorAll('.kanban-title-board')), kanbanItem = [].slice.call(document.querySelectorAll('.kanban-item')); // Render custom items if (kanbanItem) { kanbanItem.forEach(function (el) { const element = "" + el.textContent + ''; let img = ''; if (el.getAttribute('data-image') !== null) { img = ""; } el.textContent = ''; if (el.getAttribute('data-badge') !== undefined && el.getAttribute('data-badge-text') !== undefined) { el.insertAdjacentHTML( 'afterbegin', renderHeader(el.getAttribute('data-badge'), el.getAttribute('data-badge-text')) + img + element ); } if ( el.getAttribute('data-comments') !== undefined || el.getAttribute('data-due-date') !== undefined || el.getAttribute('data-assigned') !== undefined ) { el.insertAdjacentHTML( 'beforeend', renderFooter( el.getAttribute('data-attachments'), el.getAttribute('data-comments'), el.getAttribute('data-assigned'), el.getAttribute('data-members') ) ); } }); } // To initialize tooltips for rendered items const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); tooltipTriggerList.map(function (tooltipTriggerEl) { return new bootstrap.Tooltip(tooltipTriggerEl); }); // prevent sidebar to open onclick dropdown buttons of tasks const tasksItemDropdown = [].slice.call(document.querySelectorAll('.kanban-tasks-item-dropdown')); if (tasksItemDropdown) { tasksItemDropdown.forEach(function (e) { e.addEventListener('click', function (el) { el.stopPropagation(); }); }); } // Toggle add new input and actions add-new-btn if (kanbanAddBoardBtn) { kanbanAddBoardBtn.addEventListener('click', () => { kanbanAddNewInput.forEach(el => { el.value = ''; el.classList.toggle('d-none'); }); }); } // Render add new inline with boards if (kanbanContainer) { kanbanContainer.appendChild(kanbanAddNewBoard); } // Makes kanban title editable for rendered boards if (kanbanTitleBoard) { kanbanTitleBoard.forEach(function (elem) { elem.addEventListener('mouseenter', function () { this.contentEditable = 'true'; }); // Appends delete icon with title elem.insertAdjacentHTML('afterend', renderBoardDropdown()); }); } // To delete Board for rendered boards const deleteBoards = [].slice.call(document.querySelectorAll('.delete-board')); if (deleteBoards) { deleteBoards.forEach(function (elem) { elem.addEventListener('click', function () { const id = this.closest('.kanban-board').getAttribute('data-id'); kanban.removeBoard(id); }); }); } // Delete task for rendered boards const deleteTask = [].slice.call(document.querySelectorAll('.delete-task')); if (deleteTask) { deleteTask.forEach(function (e) { e.addEventListener('click', function () { const id = this.closest('.kanban-item').getAttribute('data-eid'); kanban.removeElement(id); }); }); } // Cancel btn add new input const cancelAddNew = document.querySelector('.kanban-add-board-cancel-btn'); if (cancelAddNew) { cancelAddNew.addEventListener('click', function () { kanbanAddNewInput.forEach(el => { el.classList.toggle('d-none'); }); }); } // Add new board if (kanbanAddNewBoard) { kanbanAddNewBoard.addEventListener('submit', function (e) { e.preventDefault(); const thisEle = this, value = thisEle.querySelector('.form-control').value, id = value.replace(/\s+/g, '-').toLowerCase(); kanban.addBoards([ { id: id, title: value } ]); // Adds delete board option to new board, delete new boards & updates data-order const kanbanBoardLastChild = document.querySelectorAll('.kanban-board:last-child')[0]; if (kanbanBoardLastChild) { const header = kanbanBoardLastChild.querySelector('.kanban-title-board'); header.insertAdjacentHTML('afterend', renderBoardDropdown()); // To make newly added boards title editable kanbanBoardLastChild.querySelector('.kanban-title-board').addEventListener('mouseenter', function () { this.contentEditable = 'true'; }); } // Add delete event to delete newly added boards const deleteNewBoards = kanbanBoardLastChild.querySelector('.delete-board'); if (deleteNewBoards) { deleteNewBoards.addEventListener('click', function () { const id = this.closest('.kanban-board').getAttribute('data-id'); kanban.removeBoard(id); }); } // Remove current append new add new form if (kanbanAddNewInput) { kanbanAddNewInput.forEach(el => { el.classList.add('d-none'); }); } // To place inline add new btn after clicking add btn if (kanbanContainer) { kanbanContainer.appendChild(kanbanAddNewBoard); } }); } // Clear comment editor on close kanbanSidebar.addEventListener('hidden.bs.offcanvas', function () { kanbanSidebar.querySelector('.ql-editor').firstElementChild.innerHTML = ''; }); // Re-init tooltip when offcanvas opens(Bootstrap bug) if (kanbanSidebar) { kanbanSidebar.addEventListener('shown.bs.offcanvas', function () { const tooltipTriggerList = [].slice.call(kanbanSidebar.querySelectorAll('[data-bs-toggle="tooltip"]')); tooltipTriggerList.map(function (tooltipTriggerEl) { return new bootstrap.Tooltip(tooltipTriggerEl); }); }); } })();