mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-08 22:18:28 +03:00
cleanup dragmessages code
This commit is contained in:
parent
afe4da1f65
commit
c2ef5abd79
3 changed files with 17 additions and 24 deletions
29
dev/External/User/ko.js
vendored
29
dev/External/User/ko.js
vendored
|
|
@ -2,12 +2,14 @@ import 'External/ko';
|
|||
import ko from 'ko';
|
||||
import { HtmlEditor } from 'Common/Html';
|
||||
import { timeToNode } from 'Common/Translator';
|
||||
import { elementById, addEventsListeners, dropdowns } from 'Common/Globals';
|
||||
import { doc, elementById, addEventsListeners, dropdowns } from 'Common/Globals';
|
||||
import { dropdownsDetectVisibility } from 'Common/UtilsUser';
|
||||
import { EmailAddressesComponent } from 'Component/EmailAddresses';
|
||||
import { ThemeStore } from 'Stores/Theme';
|
||||
import { moveMessagesToFolder } from 'Common/Folders';
|
||||
import { setExpandedFolder } from 'Model/FolderCollection';
|
||||
import { FolderUserStore } from 'Stores/User/Folder';
|
||||
import { MessagelistUserStore } from 'Stores/User/Messagelist';
|
||||
|
||||
const rlContentType = 'snappymail/action',
|
||||
|
||||
|
|
@ -89,21 +91,23 @@ Object.assign(ko.bindingHandlers, {
|
|||
}
|
||||
},
|
||||
|
||||
// Start dragging selected messages
|
||||
// Start dragging checked messages
|
||||
dragmessages: {
|
||||
init: (element, fValueAccessor) => {
|
||||
init: element => {
|
||||
element.addEventListener("dragstart", e => {
|
||||
let data = fValueAccessor()(e);
|
||||
dragImage || (dragImage = elementById('messagesDragImage'));
|
||||
if (data && dragImage && !ThemeStore.isMobile()) {
|
||||
dragImage.querySelector('.text').textContent = data.size;
|
||||
if (dragImage && !ThemeStore.isMobile()) {
|
||||
ko.dataFor(doc.elementFromPoint(e.clientX, e.clientY))?.checked?.(true);
|
||||
|
||||
// Else Chrome doesn't show it
|
||||
const uids = MessagelistUserStore.listCheckedOrSelectedUidsWithSubMails();
|
||||
dragImage.querySelector('.text').textContent = uids.size;
|
||||
|
||||
// Make sure Chrome shows it
|
||||
dragImage.style.left = e.clientX + 'px';
|
||||
dragImage.style.top = e.clientY + 'px';
|
||||
dragImage.style.right = 'auto';
|
||||
|
||||
setDragAction(e, 'messages', 'copyMove', data, dragImage);
|
||||
setDragAction(e, 'messages', 'copyMove', uids, dragImage);
|
||||
|
||||
// Remove the Chrome visibility
|
||||
dragImage.style.cssText = '';
|
||||
|
|
@ -131,7 +135,7 @@ Object.assign(ko.bindingHandlers, {
|
|||
fnStop(e);
|
||||
e.dataTransfer.dropEffect = e.ctrlKey ? 'copy' : 'move';
|
||||
element.classList.add('droppableHover');
|
||||
if (folder?.collapsed()) {
|
||||
if (folder.collapsed()) {
|
||||
dragTimer.start(() => {
|
||||
folder.collapsed(false);
|
||||
setExpandedFolder(folder.fullName, true);
|
||||
|
|
@ -139,17 +143,14 @@ Object.assign(ko.bindingHandlers, {
|
|||
}
|
||||
}
|
||||
};
|
||||
addEventsListeners(element, {
|
||||
folder && addEventsListeners(element, {
|
||||
dragenter: fnHover,
|
||||
dragover: fnHover,
|
||||
dragleave: fnStop,
|
||||
drop: e => {
|
||||
fnStop(e);
|
||||
if (dragMessages() && 'copyMove' == e.dataTransfer.effectAllowed) {
|
||||
let data = dragData.data;
|
||||
if (folder && data?.folder && data.size) {
|
||||
moveMessagesToFolder(data.folder, data, folder.fullName, e.ctrlKey);
|
||||
}
|
||||
moveMessagesToFolder(FolderUserStore.currentFolderFullName(), dragData.data, folder.fullName, e.ctrlKey);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { Scope } from 'Common/Enums';
|
|||
|
||||
import { ComposeType, FolderType, MessageSetAction } from 'Common/EnumsUser';
|
||||
|
||||
import { doc, leftPanelDisabled, moveAction,
|
||||
import { leftPanelDisabled, moveAction,
|
||||
Settings, SettingsCapa, SettingsGet,
|
||||
addEventsListeners,
|
||||
addShortcut, registerShortcut, formFieldFocused
|
||||
|
|
@ -380,14 +380,6 @@ export class MailMessageList extends AbstractViewRight {
|
|||
return false;
|
||||
}
|
||||
|
||||
getDragData(event) {
|
||||
const item = ko.dataFor(doc.elementFromPoint(event.clientX, event.clientY));
|
||||
item?.checked?.(true);
|
||||
const uids = MessagelistUserStore.listCheckedOrSelectedUidsWithSubMails();
|
||||
uids.folder = FolderUserStore.currentFolderFullName();
|
||||
return uids;
|
||||
}
|
||||
|
||||
listSetSeen() {
|
||||
listAction(
|
||||
FolderUserStore.currentFolderFullName(),
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@
|
|||
<i class="icon-spinner"></i>
|
||||
<span data-i18n="GLOBAL/LOADING"></span>
|
||||
</div>
|
||||
<div class="messageListPlace" data-bind="dragmessages: getDragData, foreach: messageList" draggable="true">
|
||||
<div class="messageListPlace" data-bind="dragmessages: 1, foreach: messageList" draggable="true">
|
||||
<div class="messageListItem" data-bind="css: lineAsCss()">
|
||||
<div class="checkboxMessage fontastic" data-bind="text: checked() ? '☑' : '☐'"></div>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue