From af651215a906e0aec7e9b5fea1f1974d50a2cf63 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 26 Oct 2023 17:28:22 +0800 Subject: [PATCH] :art: drag --- app/src/assets/scss/business/_av.scss | 7 +++++++ app/src/layout/dock/Files.ts | 3 +-- app/src/protyle/render/av/openMenuPanel.ts | 18 ++++++++++-------- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/assets/scss/business/_av.scss b/app/src/assets/scss/business/_av.scss index f7d23bb1e..9931be13d 100644 --- a/app/src/assets/scss/business/_av.scss +++ b/app/src/assets/scss/business/_av.scss @@ -379,3 +379,10 @@ img.av__cellassetimg { max-width: none; } +html[data-theme-mode="dark"] .av__panel .b3-menu__item { + mix-blend-mode: lighten; +} + +html[data-theme-mode="light"] .av__panel .b3-menu__item { + mix-blend-mode: darken; +} diff --git a/app/src/layout/dock/Files.ts b/app/src/layout/dock/Files.ts index aead4b2ea..b4f213d77 100644 --- a/app/src/layout/dock/Files.ts +++ b/app/src/layout/dock/Files.ts @@ -423,8 +423,7 @@ export class Files extends Model { } let liElement = hasClosestByTag(event.target, "LI"); if (!liElement) { - liElement = document.elementFromPoint(event.clientX, event.clientY - 1) as HTMLElement; - liElement = hasClosestByTag(liElement, "LI"); + liElement = hasClosestByTag(document.elementFromPoint(event.clientX, event.clientY - 1), "LI"); } if (!liElement || !window.siyuan.dragElement) { event.preventDefault(); diff --git a/app/src/protyle/render/av/openMenuPanel.ts b/app/src/protyle/render/av/openMenuPanel.ts index 1c00fd476..5f507e109 100644 --- a/app/src/protyle/render/av/openMenuPanel.ts +++ b/app/src/protyle/render/av/openMenuPanel.ts @@ -296,13 +296,17 @@ export const openMenuPanel = (options: { let dragoverElement: HTMLElement; avPanelElement.addEventListener("dragover", (event: DragEvent) => { const target = event.target as HTMLElement; - const targetElement = hasClosestByAttribute(target, "draggable", "true"); + let targetElement = hasClosestByAttribute(target, "draggable", "true"); + if (!targetElement) { + targetElement = hasClosestByAttribute(document.elementFromPoint(event.clientX, event.clientY - 1), "draggable", "true") + } if (!targetElement || targetElement.isSameNode(window.siyuan.dragElement)) { return; } event.preventDefault(); if (dragoverElement && targetElement.isSameNode(dragoverElement)) { const nodeRect = targetElement.getBoundingClientRect(); + targetElement.classList.remove("dragover__bottom", "dragover__top"); if (event.clientY > nodeRect.top + nodeRect.height / 2) { targetElement.classList.add("dragover__bottom"); } else { @@ -312,12 +316,10 @@ export const openMenuPanel = (options: { } dragoverElement = targetElement; }); - avPanelElement.addEventListener("dragleave", (event) => { - const target = event.target as HTMLElement; - const targetElement = hasClosestByAttribute(target, "draggable", "true"); - if (targetElement) { - targetElement.classList.remove("dragover__top", "dragover__bottom"); - } + avPanelElement.addEventListener("dragleave", () => { + avPanelElement.querySelectorAll(".dragover__bottom, .dragover__top").forEach((item: HTMLElement) => { + item.classList.remove("dragover__bottom", "dragover__top"); + }); }); avPanelElement.addEventListener("dragend", () => { if (window.siyuan.dragElement) { @@ -752,7 +754,7 @@ export const openMenuPanel = (options: { /// #if !MOBILE if (isLocalPath(assetLink) && ( [".pdf"].concat(Constants.SIYUAN_ASSETS_AUDIO).concat(Constants.SIYUAN_ASSETS_VIDEO).includes(suffix) && ( - suffix !== ".pdf" || ( suffix === ".pdf" && !assetLink.startsWith("file://")) + suffix !== ".pdf" || (suffix === ".pdf" && !assetLink.startsWith("file://")) ) )) { openAsset(options.protyle.app, assetLink.trim(), parseInt(getSearch("page", assetLink)), "right");