4.7 - Workspace playlist
Last updated
Last updated
const observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if(mutation){
// this is where the eventListeners are placed
...
}
const results = document.querySelectorAll('.search-results')
const projectPage = document.querySelector('.project-page')
observer.observe(results[0], {
childList: true,
attributes: true,
characterData: true,
})
observer.observe(projectPage, {
childList: true,
attributes: true,
characterData: true,
})
})//select all draggable tracks
const tracks = document.querySelectorAll('.draggableTrack')
//select the target
const target = document.querySelector('.target-drop')
//current dragging item indicator
let dragged
tracks.forEach(listItem => {
// attach an eventListener on drag start for each draggable track
listItem.addEventListener('dragstart', (dragEvent) => {
// set the value of of each draggable track to the value of the item being dragged
dragged = event.target
})
})
target.addEventListener('dragover', (event) => {
event.preventDefault()
})
document.addEventListener("dragenter", function(event) {
//changes the color of the background if an item is dragged over the drop target
if (event.target.className == "target-drop") {
event.target.style.background = "purple";
}
}, false);
document.addEventListener("dragleave", function(event) {
// reset background of potential drop target when the draggable element leaves it
if (event.target.className == "target-drop") {
event.target.style.background = "";
}
}, false);
target.addEventListener("drop", function(event) {
// prevent default action (open as link for some elements)
event.preventDefault();
// move dragged element to the selected drop target
if (event.target.parentNode.className == "target-drop") {
event.target.style.background = "";
// remove the dragged element from the first list
dragged.parentNode.removeChild( dragged );
// append the dragged element to the target drop
event.target.parentNode.appendChild( dragged );
}
}, false);