mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Resolve #707
This commit is contained in:
parent
33cb705b07
commit
ad4159fd2c
1 changed files with 18 additions and 16 deletions
34
dev/External/User/ko.js
vendored
34
dev/External/User/ko.js
vendored
|
|
@ -29,37 +29,39 @@ const rlContentType = 'snappymail/action',
|
||||||
},
|
},
|
||||||
|
|
||||||
dragTimer = {
|
dragTimer = {
|
||||||
id: 0,
|
id: 0
|
||||||
stop: () => clearTimeout(dragTimer.id),
|
|
||||||
start: fn => dragTimer.id = setTimeout(fn, 500)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
fnStop = (e, element) => {
|
dragStop = (e, element) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
element.classList.remove('droppableHover');
|
element?.classList.remove('droppableHover');
|
||||||
dragTimer.stop();
|
if (dragTimer.node == element) {
|
||||||
|
dragTimer.node = null;
|
||||||
|
clearTimeout(dragTimer.id);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
fnHover = (e, element, folder) => {
|
dragEnter = (e, element, folder) => {
|
||||||
let files = false;
|
let files = false;
|
||||||
// if (e.dataTransfer.types.includes('Files'))
|
// if (e.dataTransfer.types.includes('Files'))
|
||||||
for (const item of e.dataTransfer.items) {
|
for (const item of e.dataTransfer.items) {
|
||||||
files |= 'file' === item.kind && 'message/rfc822' === item.type;
|
files |= 'file' === item.kind && 'message/rfc822' === item.type;
|
||||||
}
|
}
|
||||||
if (files || dragMessages()) {
|
if (files || dragMessages()) {
|
||||||
fnStop(e, element);
|
e.stopPropagation();
|
||||||
files && e.stopPropagation();
|
dragStop(e, dragTimer.node);
|
||||||
e.dataTransfer.dropEffect = files ? 'copy' : (e.ctrlKey ? 'copy' : 'move');
|
e.dataTransfer.dropEffect = files ? 'copy' : (e.ctrlKey ? 'copy' : 'move');
|
||||||
element.classList.add('droppableHover');
|
element.classList.add('droppableHover');
|
||||||
if (folder.collapsed()) {
|
if (folder.collapsed()) {
|
||||||
dragTimer.start(() => {
|
dragTimer.node = element;
|
||||||
|
dragTimer.id = setTimeout(() => {
|
||||||
folder.collapsed(false);
|
folder.collapsed(false);
|
||||||
setExpandedFolder(folder.fullName, true);
|
setExpandedFolder(folder.fullName, true);
|
||||||
}, 500);
|
}, 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
fnDrop = (e, element, folder, dragData) => {
|
dragDrop = (e, element, folder, dragData) => {
|
||||||
fnStop(e, element);
|
dragStop(e, element);
|
||||||
if (dragMessages() && 'copyMove' == e.dataTransfer.effectAllowed) {
|
if (dragMessages() && 'copyMove' == e.dataTransfer.effectAllowed) {
|
||||||
moveMessagesToFolder(FolderUserStore.currentFolderFullName(), dragData.data, folder.fullName, e.ctrlKey);
|
moveMessagesToFolder(FolderUserStore.currentFolderFullName(), dragData.data, folder.fullName, e.ctrlKey);
|
||||||
} else if (e.dataTransfer.types.includes('Files')) {
|
} else if (e.dataTransfer.types.includes('Files')) {
|
||||||
|
|
@ -160,10 +162,10 @@ Object.assign(ko.bindingHandlers, {
|
||||||
init: (element, fValueAccessor) => {
|
init: (element, fValueAccessor) => {
|
||||||
const folder = fValueAccessor(); // ko.dataFor(element)
|
const folder = fValueAccessor(); // ko.dataFor(element)
|
||||||
folder && addEventsListeners(element, {
|
folder && addEventsListeners(element, {
|
||||||
dragenter: e => fnHover(e, element, folder),
|
dragenter: e => dragEnter(e, element, folder),
|
||||||
dragover: e => fnHover(e, element, folder),
|
// dragover: e => dragOver(e, element, folder),
|
||||||
dragleave: e => fnStop(e, element),
|
dragleave: e => dragStop(e, element),
|
||||||
drop: e => fnDrop(e, element, folder, dragData)
|
drop: e => dragDrop(e, element, folder, dragData)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue