Vanessa 2025-08-14 11:21:48 +08:00
parent dd3f5cfacf
commit 1b9b7e1c83
4 changed files with 23 additions and 9 deletions

View file

@ -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;

View file

@ -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) {

View file

@ -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) {

View file

@ -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;