diff --git a/app.css b/app.css index 52aa66f..11b2ee1 100644 --- a/app.css +++ b/app.css @@ -27,7 +27,7 @@ li { list-style:none; } -body.dragging, li.dragging { +li.draggedOver { cursor:grabbing; background-color:lightgrey; } diff --git a/app.js b/app.js index f620800..cce8bf8 100644 --- a/app.js +++ b/app.js @@ -1,32 +1,33 @@ // TODO: reorder let currentDraggedItem = null; -const lisAndBody = document.querySelectorAll('li, body'); -for(const element of lisAndBody){ +const attachDragEvents = (element)=>{ element.addEventListener('dragstart', (event)=>{ currentDraggedItem = event.target; }) element.addEventListener('dragover', (event)=>{ event.preventDefault() - event.target.classList.add('dragging'); + event.stopPropagation() + event.currentTarget.classList.add('draggedOver'); }) element.addEventListener('dragleave', (event)=>{ - event.target.classList.remove('dragging'); + event.currentTarget.classList.remove('draggedOver'); }) element.addEventListener('drop', (event)=>{ - event.target.classList.remove('dragging'); - event.target.querySelector('ul').appendChild(currentDraggedItem) + event.stopPropagation() + event.currentTarget.classList.remove('draggedOver'); + event.target.closest('li').querySelector('ul').appendChild(currentDraggedItem) }) } const deleteItem = (event)=>{ - event.target.parentNode.remove() + event.currentTarget.closest('li').remove() } const updateItem = (event)=>{ event.preventDefault() - const newValue = event.target.parentNode.querySelector('input').value - event.target.parentNode.querySelector('h2').innerHTML = newValue + const newValue = event.currentTarget.parentNode.querySelector('input').value + event.currentTarget.closest('li').querySelector('h2').innerHTML = newValue } const createNewItem = (event)=>{ @@ -36,9 +37,10 @@ const createNewItem = (event)=>{ newItem.querySelector('.add').addEventListener('click',createNewItem); newItem.querySelector('.delete').addEventListener('click',deleteItem); newItem.querySelector('form').addEventListener('submit',updateItem); + attachDragEvents(newItem) if(event){ - event.target.parentNode.querySelector('ul').appendChild(newItem) + event.currentTarget.parentNode.querySelector('ul').appendChild(newItem) } else { document.querySelector('ul').appendChild(newItem) } diff --git a/index.html b/index.html index 36e5149..8de584a 100644 --- a/index.html +++ b/index.html @@ -13,8 +13,11 @@
  • Placeholder

    - children/actions + children +
    +
    + actions