mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 00:20:47 +02:00
This commit is contained in:
parent
dd3f5cfacf
commit
1b9b7e1c83
4 changed files with 23 additions and 9 deletions
|
@ -94,8 +94,7 @@ export class Gutter {
|
|||
return true;
|
||||
}
|
||||
});
|
||||
if (avElement.querySelector('.block__icon[data-type="av-sort"]')?.classList.contains("block__icon--active") ||
|
||||
["template", "created", "updated"].includes(avElement.querySelector(".av__group-title")?.getAttribute("data-dtype"))) {
|
||||
if (avElement.querySelector('.block__icon[data-type="av-sort"]')?.classList.contains("block__icon--active")) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
return;
|
||||
|
|
|
@ -132,7 +132,7 @@ const renderGroupGallery = (options: ITableOptions) => {
|
|||
options.data.view.groups.forEach((group: IAVGallery) => {
|
||||
if (group.groupHidden === 0) {
|
||||
avBodyHTML += `${getGroupTitleHTML(group, group.cards.length)}
|
||||
<div data-group-id="${group.id}" data-page-size="${group.pageSize}" data-dtype="${group.groupKey.type}" data-content="${group.groupValue.text.content}" class="av__body${group.groupFolded ? " fn__none" : ""}">${getGalleryHTML(group, options.resetData.selectItemIds, options.resetData.editIds, group.id)}</div>`;
|
||||
<div data-group-id="${group.id}" data-page-size="${group.pageSize}" data-dtype="${group.groupKey.type}" data-content="${group.groupValue.text?.content}" class="av__body${group.groupFolded ? " fn__none" : ""}">${getGalleryHTML(group, options.resetData.selectItemIds, options.resetData.editIds, group.id)}</div>`;
|
||||
}
|
||||
});
|
||||
if (options.renderAll) {
|
||||
|
|
|
@ -241,7 +241,7 @@ export const getGroupTitleHTML = (group: IAVView, counter: number) => {
|
|||
} else {
|
||||
nameHTML = group.name;
|
||||
}
|
||||
return `<div class="av__group-title" data-dtype="${group.groupKey.type}">
|
||||
return `<div class="av__group-title">
|
||||
<div class="av__group-icon" data-type="av-group-fold" data-id="${group.id}">
|
||||
<svg class="${group.groupFolded ? "" : "av__group-arrow--open"}"><use xlink:href="#iconRight"></use></svg>
|
||||
</div>
|
||||
|
@ -261,7 +261,7 @@ const renderGroupTable = (options: ITableOptions) => {
|
|||
options.data.view.groups.forEach((group: IAVTable) => {
|
||||
if (group.groupHidden === 0) {
|
||||
avBodyHTML += `${getGroupTitleHTML(group, group.rows.length)}
|
||||
<div data-group-id="${group.id}" data-page-size="${group.pageSize}" data-dtype="${group.groupKey.type}" data-content="${group.groupValue.text.content}" style="float: left" class="av__body${group.groupFolded ? " fn__none" : ""}">${getTableHTMLs(group, options.blockElement)}</div>`;
|
||||
<div data-group-id="${group.id}" data-page-size="${group.pageSize}" data-dtype="${group.groupKey.type}" data-content="${group.groupValue.text?.content}" style="float: left" class="av__body${group.groupFolded ? " fn__none" : ""}">${getTableHTMLs(group, options.blockElement)}</div>`;
|
||||
}
|
||||
});
|
||||
if (options.renderAll) {
|
||||
|
|
|
@ -1496,6 +1496,7 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
const gutterTypes = gutterType ? gutterType.replace(Constants.SIYUAN_DROP_GUTTER, "").split(Constants.ZWSP) : [];
|
||||
const fileTreeIds = (event.dataTransfer.types.includes(Constants.SIYUAN_DROP_FILE) && window.siyuan.dragElement) ? window.siyuan.dragElement.innerText : "";
|
||||
if (event.shiftKey || (event.altKey && fileTreeIds.indexOf("-") === -1)) {
|
||||
const targetAssetElement = hasClosestBlock(event.target);
|
||||
|
@ -1567,7 +1568,7 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
targetElement = hasTopClosestByAttribute(targetElement, "data-node-id", null);
|
||||
}
|
||||
} else if (targetElement && targetElement.classList.contains("list")) {
|
||||
if (gutterType && gutterType.replace(Constants.SIYUAN_DROP_GUTTER, "").split(Constants.ZWSP)[0] !== "nodelistitem") {
|
||||
if (gutterTypes[0] !== "nodelistitem") {
|
||||
targetElement = hasClosestBlock(document.elementFromPoint(event.clientX, event.clientY - 6));
|
||||
} else {
|
||||
targetElement = hasClosestByClassName(document.elementFromPoint(event.clientX, event.clientY - 6), "li");
|
||||
|
@ -1586,10 +1587,25 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
}
|
||||
}
|
||||
} else if (targetElement && gutterType && gutterType.startsWith(`${Constants.SIYUAN_DROP_GUTTER}NodeAttributeViewRowMenu${Constants.ZWSP}`.toLowerCase())) {
|
||||
// 行只能拖拽当前 av 中
|
||||
if ((!targetElement.classList.contains("av__row") && !targetElement.classList.contains("av__row--util")) ||
|
||||
(window.siyuan.dragElement && !window.siyuan.dragElement.contains(targetElement))) {
|
||||
// 行只能拖拽当前 av 中
|
||||
targetElement = false;
|
||||
} else {
|
||||
// 模板、创建时间、更新时间 字段作为分组方式时不允许跨分组拖拽 https://github.com/siyuan-note/siyuan/issues/15553
|
||||
const bodyElement = hasClosestByClassName(targetElement, "av__body");
|
||||
if (bodyElement && ["template", "created", "updated"].includes(bodyElement.getAttribute("data-dtype"))) {
|
||||
const groupID = bodyElement.getAttribute("data-group-id");
|
||||
gutterTypes[2].split(",").find(item => {
|
||||
if (item && item.split("@")[1] !== groupID) {
|
||||
targetElement = false;
|
||||
editorElement.querySelectorAll(".dragover__bottom, .dragover__top, .dragover").forEach((item: HTMLElement) => {
|
||||
item.classList.remove("dragover__top", "dragover__bottom", "dragover");
|
||||
});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else if (targetElement && gutterType && gutterType.startsWith(`${Constants.SIYUAN_DROP_GUTTER}NodeAttributeView${Constants.ZWSP}GalleryItem${Constants.ZWSP}`.toLowerCase())) {
|
||||
// gallery item 只能拖拽当前 av 中
|
||||
|
@ -1718,13 +1734,12 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
disabledPosition = "";
|
||||
// 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")) {
|
||||
if (gutterTypes[0] === "nodeattributeviewrowmenu" && gutterTypes[2].split("@")[0] === targetElement.getAttribute("data-id")) {
|
||||
// 行不能拖到自己上
|
||||
clearDragoverElement(dragoverElement);
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue