const item = document.querySelectorAll('.item'); item.forEach(e=>{ e.addEventListener('dragstart', dragStart); e.addEventListener('dragend', dragEnd); }); function dragStart(e) { e.dataTransfer.setData('text/plain', e.target.id); setTimeout(() => { e.target.classList.add('hide'); }, 0); } function dragEnd(e) { e.target.classList.remove('hide'); } /* drop targets */ const boxes = document.querySelectorAll('.box'); boxes.forEach(box => { box.addEventListener('dragenter', dragEnter) box.addEventListener('dragover', dragOver); box.addEventListener('dragleave', dragLeave); box.addEventListener('drop', drop); }); function dragEnter(e) { if(!e.target.classList.contains("box")) return; e.preventDefault(); e.target.classList.add('drag-over'); } function dragOver(e) { if(!e.target.classList.contains("box")) return; e.preventDefault(); e.target.classList.add('drag-over'); } function dragLeave(e) { e.target.classList.remove('drag-over'); } function drop(e) { e.target.classList.remove('drag-over'); // get the draggable element const id = e.dataTransfer.getData('text/plain'); const draggable = document.getElementById(id); // add it to the drop target e.target.appendChild(draggable); // display the draggable element draggable.classList.remove('hide'); } var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')) var popoverList = popoverTriggerList.map(function (popoverTriggerEl) { return new bootstrap.Popover(popoverTriggerEl) })