mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-07 01:08:49 +01:00
This commit is contained in:
parent
4463fd6c5d
commit
f6b70f8b2e
1 changed files with 18 additions and 7 deletions
|
|
@ -1383,7 +1383,7 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
hasClosestByClassName(event.target, "av__row") || hasClosestByClassName(event.target, "av__row--util") ||
|
||||
hasClosestBlock(event.target);
|
||||
if (targetElement && targetElement.getAttribute("data-av-type") === "gallery" &&
|
||||
event.target.classList.contains("av__gallery")) {
|
||||
(event.target.classList.contains("av__gallery") || event.target.classList.contains("av__gallery-add"))) {
|
||||
// 拖拽到属性视图 gallery 内,但没选中 item
|
||||
return;
|
||||
}
|
||||
|
|
@ -1458,7 +1458,8 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
} else if (targetElement && gutterType && gutterType.startsWith(`${Constants.SIYUAN_DROP_GUTTER}NodeAttributeView${Constants.ZWSP}GalleryItem${Constants.ZWSP}`.toLowerCase())) {
|
||||
// gallery item 只能拖拽当前 av 中
|
||||
const galleryElement = hasClosestByClassName(event.target, "av__gallery");
|
||||
if (!galleryElement || !galleryElement.contains(window.siyuan.dragElement) || targetElement.isSameNode(window.siyuan.dragElement)) {
|
||||
if (targetElement.classList.contains("av") || !galleryElement ||
|
||||
!galleryElement.contains(window.siyuan.dragElement) || targetElement.isSameNode(window.siyuan.dragElement)) {
|
||||
targetElement = false;
|
||||
}
|
||||
}
|
||||
|
|
@ -1563,22 +1564,20 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (gutterType) {
|
||||
disabledPosition = "";
|
||||
// https://github.com/siyuan-note/siyuan/issues/12651
|
||||
if (dragoverElement) {
|
||||
dragoverElement.classList.remove("dragover__top", "dragover__bottom", "dragover__left", "dragover__right", "dragover");
|
||||
dragoverElement = undefined;
|
||||
}
|
||||
// gutter 文档内拖拽限制
|
||||
// 排除自己及子孙
|
||||
const gutterTypes = gutterType.replace(Constants.SIYUAN_DROP_GUTTER, "").split(Constants.ZWSP);
|
||||
if (gutterTypes[0] === "nodeattributeview" && gutterTypes[1] === "col" && targetElement.getAttribute("data-id") === gutterTypes[2]) {
|
||||
// 表头不能拖到自己上
|
||||
clearDragoverElement(dragoverElement);
|
||||
return;
|
||||
}
|
||||
if (gutterTypes[0] === "nodeattributeviewrowmenu" && gutterTypes[2] === targetElement.getAttribute("data-id")) {
|
||||
// 行不能拖到自己上
|
||||
clearDragoverElement(dragoverElement);
|
||||
return;
|
||||
}
|
||||
const isSelf = gutterTypes[2].split(",").find((item: string) => {
|
||||
|
|
@ -1587,20 +1586,24 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
}
|
||||
});
|
||||
if (isSelf && "nodeattributeviewrowmenu" !== gutterTypes[0]) {
|
||||
clearDragoverElement(dragoverElement);
|
||||
return;
|
||||
}
|
||||
if (isInEmbedBlock(targetElement)) {
|
||||
// 不允许托入嵌入块
|
||||
clearDragoverElement(dragoverElement);
|
||||
return;
|
||||
}
|
||||
if (gutterTypes[0] === "nodelistitem" &&
|
||||
gutterTypes[1] !== targetElement.getAttribute("data-subtype") &&
|
||||
"NodeListItem" === targetElement.getAttribute("data-type")) {
|
||||
// 排除类型不同的列表项
|
||||
clearDragoverElement(dragoverElement);
|
||||
return;
|
||||
}
|
||||
if (gutterTypes[0] !== "nodelistitem" && targetElement.getAttribute("data-type") === "NodeListItem") {
|
||||
// 非列表项不能拖入列表项周围
|
||||
clearDragoverElement(dragoverElement);
|
||||
return;
|
||||
}
|
||||
if (gutterTypes[0] === "nodelistitem" && targetElement.parentElement.classList.contains("li") &&
|
||||
|
|
@ -1648,3 +1651,11 @@ const addDragover = (element: HTMLElement) => {
|
|||
element.classList.add("dragover");
|
||||
}
|
||||
};
|
||||
|
||||
// https://github.com/siyuan-note/siyuan/issues/12651
|
||||
const clearDragoverElement = (element: Element) => {
|
||||
if (element) {
|
||||
element.classList.remove("dragover__top", "dragover__bottom", "dragover__left", "dragover__right", "dragover");
|
||||
element = undefined;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue