This commit is contained in:
the-djmaze 2022-11-25 15:52:46 +01:00
parent 33cb705b07
commit ad4159fd2c

View file

@ -29,37 +29,39 @@ const rlContentType = 'snappymail/action',
},
dragTimer = {
id: 0,
stop: () => clearTimeout(dragTimer.id),
start: fn => dragTimer.id = setTimeout(fn, 500)
id: 0
},
fnStop = (e, element) => {
dragStop = (e, element) => {
e.preventDefault();
element.classList.remove('droppableHover');
dragTimer.stop();
element?.classList.remove('droppableHover');
if (dragTimer.node == element) {
dragTimer.node = null;
clearTimeout(dragTimer.id);
}
},
fnHover = (e, element, folder) => {
dragEnter = (e, element, folder) => {
let files = false;
// if (e.dataTransfer.types.includes('Files'))
for (const item of e.dataTransfer.items) {
files |= 'file' === item.kind && 'message/rfc822' === item.type;
}
if (files || dragMessages()) {
fnStop(e, element);
files && e.stopPropagation();
e.stopPropagation();
dragStop(e, dragTimer.node);
e.dataTransfer.dropEffect = files ? 'copy' : (e.ctrlKey ? 'copy' : 'move');
element.classList.add('droppableHover');
if (folder.collapsed()) {
dragTimer.start(() => {
dragTimer.node = element;
dragTimer.id = setTimeout(() => {
folder.collapsed(false);
setExpandedFolder(folder.fullName, true);
}, 500);
}
}
},
fnDrop = (e, element, folder, dragData) => {
fnStop(e, element);
dragDrop = (e, element, folder, dragData) => {
dragStop(e, element);
if (dragMessages() && 'copyMove' == e.dataTransfer.effectAllowed) {
moveMessagesToFolder(FolderUserStore.currentFolderFullName(), dragData.data, folder.fullName, e.ctrlKey);
} else if (e.dataTransfer.types.includes('Files')) {
@ -160,10 +162,10 @@ Object.assign(ko.bindingHandlers, {
init: (element, fValueAccessor) => {
const folder = fValueAccessor(); // ko.dataFor(element)
folder && addEventsListeners(element, {
dragenter: e => fnHover(e, element, folder),
dragover: e => fnHover(e, element, folder),
dragleave: e => fnStop(e, element),
drop: e => fnDrop(e, element, folder, dragData)
dragenter: e => dragEnter(e, element, folder),
// dragover: e => dragOver(e, element, folder),
dragleave: e => dragStop(e, element),
drop: e => dragDrop(e, element, folder, dragData)
});
}
},