mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-21 17:10:12 +01:00
🎨 #10730
This commit is contained in:
parent
1d2f6d276f
commit
2cf0b09282
5 changed files with 81 additions and 32 deletions
|
|
@ -3,8 +3,11 @@ import {genUUID} from "../util/genID";
|
||||||
import {
|
import {
|
||||||
fixWndFlex1,
|
fixWndFlex1,
|
||||||
getInstanceById,
|
getInstanceById,
|
||||||
getWndByLayout, JSONToCenter,
|
getWndByLayout,
|
||||||
newModelByInitData, pdfIsLoading, saveLayout,
|
JSONToCenter,
|
||||||
|
newModelByInitData,
|
||||||
|
pdfIsLoading,
|
||||||
|
saveLayout,
|
||||||
setPanelFocus,
|
setPanelFocus,
|
||||||
switchWnd
|
switchWnd
|
||||||
} from "./util";
|
} from "./util";
|
||||||
|
|
@ -20,7 +23,7 @@ import {
|
||||||
} from "../protyle/util/hasClosest";
|
} from "../protyle/util/hasClosest";
|
||||||
import {Constants} from "../constants";
|
import {Constants} from "../constants";
|
||||||
/// #if !BROWSER
|
/// #if !BROWSER
|
||||||
import {webFrame, ipcRenderer} from "electron";
|
import {ipcRenderer, webFrame} from "electron";
|
||||||
import {setModelsHash, setTabPosition} from "../window/setHeader";
|
import {setModelsHash, setTabPosition} from "../window/setHeader";
|
||||||
/// #endif
|
/// #endif
|
||||||
import {Search} from "../search";
|
import {Search} from "../search";
|
||||||
|
|
@ -198,7 +201,10 @@ export class Wnd {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
let dragleaveTimeout: number;
|
let dragleaveTimeout: number;
|
||||||
|
let headerDragCounter = 0;
|
||||||
this.headersElement.parentElement.addEventListener("dragleave", function () {
|
this.headersElement.parentElement.addEventListener("dragleave", function () {
|
||||||
|
headerDragCounter--;
|
||||||
|
if (headerDragCounter === 0) {
|
||||||
clearTimeout(dragleaveTimeout);
|
clearTimeout(dragleaveTimeout);
|
||||||
// 窗口拖拽到新窗口时,不 drop 无法移除 clone 的元素
|
// 窗口拖拽到新窗口时,不 drop 无法移除 clone 的元素
|
||||||
dragleaveTimeout = window.setTimeout(() => {
|
dragleaveTimeout = window.setTimeout(() => {
|
||||||
|
|
@ -208,6 +214,11 @@ export class Wnd {
|
||||||
}, 1000);
|
}, 1000);
|
||||||
const it = this as HTMLElement;
|
const it = this as HTMLElement;
|
||||||
it.classList.remove("layout-tab-bars--drag");
|
it.classList.remove("layout-tab-bars--drag");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.headersElement.parentElement.addEventListener("dragenter", (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
headerDragCounter++;
|
||||||
});
|
});
|
||||||
this.headersElement.parentElement.addEventListener("drop", function (event: DragEvent & {
|
this.headersElement.parentElement.addEventListener("drop", function (event: DragEvent & {
|
||||||
target: HTMLElement
|
target: HTMLElement
|
||||||
|
|
|
||||||
|
|
@ -451,7 +451,9 @@ export class Files extends Model {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
liElement.classList.remove("dragover__top", "dragover__bottom", "dragover");
|
this.element.querySelectorAll(".dragover, .dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
|
||||||
|
item.classList.remove("dragover", "dragover__bottom", "dragover__top");
|
||||||
|
});
|
||||||
let gutterType = "";
|
let gutterType = "";
|
||||||
for (const item of event.dataTransfer.items) {
|
for (const item of event.dataTransfer.items) {
|
||||||
if (item.type.startsWith(Constants.SIYUAN_DROP_GUTTER)) {
|
if (item.type.startsWith(Constants.SIYUAN_DROP_GUTTER)) {
|
||||||
|
|
@ -510,10 +512,18 @@ export class Files extends Model {
|
||||||
liElement.classList.add("dragover");
|
liElement.classList.add("dragover");
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
|
let counter = 0;
|
||||||
this.element.addEventListener("dragleave", () => {
|
this.element.addEventListener("dragleave", () => {
|
||||||
|
counter--;
|
||||||
|
if (counter === 0) {
|
||||||
this.element.querySelectorAll(".dragover, .dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
|
this.element.querySelectorAll(".dragover, .dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
|
||||||
item.classList.remove("dragover", "dragover__bottom", "dragover__top");
|
item.classList.remove("dragover", "dragover__bottom", "dragover__top");
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.element.addEventListener("dragenter", (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
counter++;
|
||||||
});
|
});
|
||||||
this.element.addEventListener("drop", async (event: DragEvent & { target: HTMLElement }) => {
|
this.element.addEventListener("drop", async (event: DragEvent & { target: HTMLElement }) => {
|
||||||
const newElement = this.element.querySelector(".dragover, .dragover__bottom, .dragover__top");
|
const newElement = this.element.querySelector(".dragover, .dragover__bottom, .dragover__top");
|
||||||
|
|
|
||||||
|
|
@ -264,17 +264,27 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone", "block"]
|
||||||
}
|
}
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const nodeRect = targetElement.getBoundingClientRect();
|
const nodeRect = targetElement.getBoundingClientRect();
|
||||||
targetElement.classList.remove("dragover__bottom", "dragover__top");
|
element.querySelectorAll(".dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
|
||||||
|
item.classList.remove("dragover__bottom", "dragover__top");
|
||||||
|
});
|
||||||
if (event.clientY > nodeRect.top + nodeRect.height / 2) {
|
if (event.clientY > nodeRect.top + nodeRect.height / 2) {
|
||||||
targetElement.classList.add("dragover__bottom");
|
targetElement.classList.add("dragover__bottom");
|
||||||
} else {
|
} else {
|
||||||
targetElement.classList.add("dragover__top");
|
targetElement.classList.add("dragover__top");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
let counter = 0
|
||||||
element.addEventListener("dragleave", () => {
|
element.addEventListener("dragleave", () => {
|
||||||
|
counter--;
|
||||||
|
if (counter === 0) {
|
||||||
element.querySelectorAll(".dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
|
element.querySelectorAll(".dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
|
||||||
item.classList.remove("dragover__bottom", "dragover__top");
|
item.classList.remove("dragover__bottom", "dragover__top");
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
element.addEventListener("dragenter", (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
counter++;
|
||||||
});
|
});
|
||||||
element.addEventListener("dragend", () => {
|
element.addEventListener("dragend", () => {
|
||||||
if (window.siyuan.dragElement) {
|
if (window.siyuan.dragElement) {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
import {transaction} from "../../wysiwyg/transaction";
|
import {transaction} from "../../wysiwyg/transaction";
|
||||||
import {fetchPost} from "../../../util/fetch";
|
import {fetchPost} from "../../../util/fetch";
|
||||||
import {addCol} from "./col";
|
import {addCol, bindEditEvent, duplicateCol, getColIconByType, getEditHTML} from "./col";
|
||||||
import {bindEditEvent, duplicateCol, getColIconByType, getEditHTML} from "./col";
|
|
||||||
import {setPosition} from "../../../util/setPosition";
|
import {setPosition} from "../../../util/setPosition";
|
||||||
import {hasClosestByAttribute, hasClosestByClassName} from "../../util/hasClosest";
|
import {hasClosestByAttribute, hasClosestByClassName} from "../../util/hasClosest";
|
||||||
import {bindSelectEvent, getSelectHTML, addColOptionOrCell, setColOption, removeCellOption} from "./select";
|
import {addColOptionOrCell, bindSelectEvent, getSelectHTML, removeCellOption, setColOption} from "./select";
|
||||||
import {addFilter, getFiltersHTML, setFilter} from "./filter";
|
import {addFilter, getFiltersHTML, setFilter} from "./filter";
|
||||||
import {addSort, bindSortsEvent, getSortsHTML} from "./sort";
|
import {addSort, bindSortsEvent, getSortsHTML} from "./sort";
|
||||||
import {bindDateEvent, getDateHTML} from "./date";
|
import {bindDateEvent, getDateHTML} from "./date";
|
||||||
|
|
@ -457,7 +456,9 @@ export const openMenuPanel = (options: {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if (dragoverElement && targetElement.isSameNode(dragoverElement)) {
|
if (dragoverElement && targetElement.isSameNode(dragoverElement)) {
|
||||||
const nodeRect = targetElement.getBoundingClientRect();
|
const nodeRect = targetElement.getBoundingClientRect();
|
||||||
targetElement.classList.remove("dragover__bottom", "dragover__top");
|
avPanelElement.querySelectorAll(".dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
|
||||||
|
item.classList.remove("dragover__bottom", "dragover__top");
|
||||||
|
});
|
||||||
if (event.clientY > nodeRect.top + nodeRect.height / 2) {
|
if (event.clientY > nodeRect.top + nodeRect.height / 2) {
|
||||||
targetElement.classList.add("dragover__bottom");
|
targetElement.classList.add("dragover__bottom");
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -467,10 +468,18 @@ export const openMenuPanel = (options: {
|
||||||
}
|
}
|
||||||
dragoverElement = targetElement;
|
dragoverElement = targetElement;
|
||||||
});
|
});
|
||||||
|
let counter = 0
|
||||||
avPanelElement.addEventListener("dragleave", () => {
|
avPanelElement.addEventListener("dragleave", () => {
|
||||||
|
counter--;
|
||||||
|
if (counter === 0) {
|
||||||
avPanelElement.querySelectorAll(".dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
|
avPanelElement.querySelectorAll(".dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
|
||||||
item.classList.remove("dragover__bottom", "dragover__top");
|
item.classList.remove("dragover__bottom", "dragover__top");
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
avPanelElement.addEventListener("dragenter", (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
counter++;
|
||||||
});
|
});
|
||||||
avPanelElement.addEventListener("dragend", () => {
|
avPanelElement.addEventListener("dragend", () => {
|
||||||
if (window.siyuan.dragElement) {
|
if (window.siyuan.dragElement) {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,8 @@ import {
|
||||||
hasClosestByAttribute,
|
hasClosestByAttribute,
|
||||||
hasClosestByClassName,
|
hasClosestByClassName,
|
||||||
hasClosestByTag,
|
hasClosestByTag,
|
||||||
hasTopClosestByAttribute, isInEmbedBlock
|
hasTopClosestByAttribute,
|
||||||
|
isInEmbedBlock
|
||||||
} from "./hasClosest";
|
} from "./hasClosest";
|
||||||
import {Constants} from "../../constants";
|
import {Constants} from "../../constants";
|
||||||
import {paste} from "./paste";
|
import {paste} from "./paste";
|
||||||
|
|
@ -1371,15 +1372,23 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
||||||
dragoverElement = targetElement;
|
dragoverElement = targetElement;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
editorElement.addEventListener("dragleave", (event) => {
|
let counter = 0
|
||||||
|
editorElement.addEventListener("dragleave", (event: DragEvent & { target: HTMLElement }) => {
|
||||||
if (protyle.disabled) {
|
if (protyle.disabled) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
counter--;
|
||||||
|
if (counter === 0) {
|
||||||
editorElement.querySelectorAll(".dragover__left, .dragover__right, .dragover__bottom, .dragover__top, .dragover").forEach((item: HTMLElement) => {
|
editorElement.querySelectorAll(".dragover__left, .dragover__right, .dragover__bottom, .dragover__top, .dragover").forEach((item: HTMLElement) => {
|
||||||
item.classList.remove("dragover__top", "dragover__bottom", "dragover__left", "dragover__right", "dragover");
|
item.classList.remove("dragover__top", "dragover__bottom", "dragover__left", "dragover__right", "dragover");
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
editorElement.addEventListener("dragenter", (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
counter++;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue