Vanessa 2025-06-20 10:58:34 +08:00
parent 9f5aca1e58
commit 30d84c3e66
7 changed files with 22 additions and 66 deletions

View file

@ -66,6 +66,7 @@ import {popSearch} from "../mobile/menu/search";
import {showMessage} from "../dialog/message";
import {img3115} from "../boot/compatibleVersion";
import {hideTooltip} from "../dialog/tooltip";
import {clearSelect} from "../protyle/util/clearSelect";
const renderAssetList = (element: Element, k: string, position: IPosition, exts: string[] = []) => {
fetchPost("/api/search/searchAsset", {
@ -2464,16 +2465,7 @@ export const setFold = (protyle: IProtyle, nodeElement: Element, isOpen?: boolea
focusBlock(nodeElement, undefined, false);
}
}
nodeElement.querySelectorAll(".img--select, .av__cell--select, .av__cell--active, .av__row--select").forEach((item: HTMLElement) => {
if (item.classList.contains("av__row--select")) {
item.classList.remove("av__row--select");
item.querySelector(".av__firstcol use").setAttribute("xlink:href", "#iconUncheck");
updateHeader(item);
} else {
item.querySelector(".av__drag-fill")?.remove();
item.classList.remove("img--select", "av__cell--select", "av__cell--active");
}
});
clearSelect(["img", "av"], nodeElement);
}
const id = nodeElement.getAttribute("data-node-id");
if (nodeElement.getAttribute("data-type") === "NodeHeading") {

View file

@ -61,6 +61,7 @@ import {openFileById} from "../../editor/util";
/// #endif
import {checkFold} from "../../util/noRelyPCFunction";
import {copyTextByType} from "../toolbar/util";
import {clearSelect} from "../util/clearSelect";
export class Gutter {
public element: HTMLElement;
@ -169,6 +170,7 @@ export class Gutter {
event.preventDefault();
event.stopPropagation();
hideTooltip();
clearSelect(["av", "img"], protyle.wysiwyg.element);
const id = buttonElement.getAttribute("data-node-id");
if (!id) {
if (buttonElement.getAttribute("disabled")) {
@ -258,10 +260,6 @@ export class Gutter {
return;
}
if (buttonElement.dataset.type === "NodeAttributeViewRow") {
blockElement.querySelectorAll(".av__cell--select, .av__cell--active").forEach((cellElement: HTMLElement) => {
cellElement.classList.remove("av__cell--select", "av__cell--active");
cellElement.querySelector(".av__drag-fill")?.remove();
});
const avID = blockElement.getAttribute("data-av-id");
const srcIDs = [Lute.NewNodeID()];
const previousID = event.altKey ? (rowElement.previousElementSibling.getAttribute("data-id") || "") : buttonElement.dataset.rowId;
@ -408,6 +406,7 @@ export class Gutter {
}
if (!window.siyuan.ctrlIsPressed && !window.siyuan.altIsPressed && !window.siyuan.shiftIsPressed) {
hideTooltip();
clearSelect(["av", "img"], protyle.wysiwyg.element);
const gutterRect = buttonElement.getBoundingClientRect();
if (buttonElement.dataset.type === "NodeAttributeViewRowMenu") {
const rowElement = Array.from(protyle.wysiwyg.element.querySelectorAll(`.av[data-node-id="${buttonElement.dataset.nodeId}"] .av__row[data-id="${buttonElement.dataset.rowId}"]`)).find((item: HTMLElement) => {

View file

@ -35,6 +35,7 @@ import {fetchPost, fetchSyncPost} from "../../../util/fetch";
import {scrollCenter} from "../../../util/highlightById";
import {escapeHtml} from "../../../util/escape";
import {editGalleryItem, openGalleryItemMenu} from "./gallery/util";
import {clearSelect} from "../../util/clearSelect";
export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLElement }) => {
if (isOnlyMeta(event)) {
@ -300,19 +301,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi
if (!blockElement) {
return false;
}
blockElement.querySelectorAll(".av__cell--select, .av__cell--active").forEach(item => {
item.classList.remove("av__cell--select", "av__cell--active");
item.querySelector(".av__drag-fill")?.remove();
});
if (!rowElement.classList.contains("av__row--select")) {
blockElement.querySelectorAll(".av__row--select").forEach(item => {
item.classList.remove("av__row--select");
});
blockElement.querySelectorAll(".av__firstcol use").forEach(item => {
item.setAttribute("xlink:href", "#iconUncheck");
});
}
clearSelect(["cell", "row"], blockElement);
const menu = new Menu();
rowElement.classList.add("av__row--select");
rowElement.querySelector(".av__firstcol use").setAttribute("xlink:href", "#iconCheck");

View file

@ -5,6 +5,7 @@ import {avContextmenu} from "./action";
import {hasClosestByClassName} from "../../util/hasClosest";
import {Constants} from "../../../constants";
import {upDownHint} from "../../../util/upDownHint";
import {clearSelect} from "../../util/clearSelect";
export const avKeydown = (event: KeyboardEvent, nodeElement: HTMLElement, protyle: IProtyle) => {
if (!nodeElement.classList.contains("av") || !window.siyuan.menus.menu.element.classList.contains("fn__none")) {
@ -41,10 +42,7 @@ export const avKeydown = (event: KeyboardEvent, nodeElement: HTMLElement, protyl
return true;
}
if (event.key === "Escape") {
nodeElement.querySelectorAll(".av__cell--select, .av__cell--active").forEach(item => {
item.classList.remove("av__cell--select", "av__cell--active");
item.querySelector(".av__drag-fill")?.remove();
});
clearSelect(["cell"], nodeElement);
selectRow(rowElement.querySelector(".av__firstcol"), "select");
event.preventDefault();
return true;
@ -72,8 +70,7 @@ export const avKeydown = (event: KeyboardEvent, nodeElement: HTMLElement, protyl
newCellElement = previousCellElements[previousCellElements.length - 1];
}
if (newCellElement) {
selectCellElement.classList.remove("av__cell--select", "av__cell--active");
selectCellElement.querySelector(".av__drag-fill")?.remove();
clearSelect(["cell"], nodeElement);
newCellElement.classList.add("av__cell--select");
addDragFill(newCellElement);
cellScrollIntoView(nodeElement, newCellElement, false);
@ -92,14 +89,12 @@ export const avKeydown = (event: KeyboardEvent, nodeElement: HTMLElement, protyl
newCellElement = nextRowElement.querySelector(".av__cell");
}
if (newCellElement) {
selectCellElement.classList.remove("av__cell--select", "av__cell--active");
selectCellElement.querySelector(".av__drag-fill")?.remove();
clearSelect(["cell"], nodeElement);
newCellElement.classList.add("av__cell--select");
addDragFill(newCellElement);
cellScrollIntoView(nodeElement, newCellElement, false);
} else if (event.key !== "ArrowRight") {
selectCellElement.classList.remove("av__cell--select", "av__cell--active");
selectCellElement.querySelector(".av__drag-fill")?.remove();
clearSelect(["cell"], nodeElement);
insertRows(nodeElement, protyle, 1, rowElement.getAttribute("data-id"));
}
event.preventDefault();
@ -111,8 +106,7 @@ export const avKeydown = (event: KeyboardEvent, nodeElement: HTMLElement, protyl
newCellElement = previousRowElement.querySelector(`.av__cell[data-col-id="${selectCellElement.dataset.colId}"]`);
}
if (newCellElement) {
selectCellElement.classList.remove("av__cell--select", "av__cell--active");
selectCellElement.querySelector(".av__drag-fill")?.remove();
clearSelect(["cell"], nodeElement);
newCellElement.classList.add("av__cell--select");
addDragFill(newCellElement);
cellScrollIntoView(nodeElement, newCellElement);
@ -126,8 +120,7 @@ export const avKeydown = (event: KeyboardEvent, nodeElement: HTMLElement, protyl
newCellElement = nextRowElement.querySelector(`.av__cell[data-col-id="${selectCellElement.dataset.colId}"]`);
}
if (newCellElement) {
selectCellElement.classList.remove("av__cell--select", "av__cell--active");
selectCellElement.querySelector(".av__drag-fill")?.remove();
clearSelect(["cell"], nodeElement);
newCellElement.classList.add("av__cell--select");
addDragFill(newCellElement);
cellScrollIntoView(nodeElement, newCellElement);

View file

@ -15,6 +15,7 @@ import {showMessage} from "../../../dialog/message";
import * as dayjs from "dayjs";
import {Constants} from "../../../constants";
import {insertGalleryItemAnimation} from "./gallery/item";
import {clearSelect} from "../../util/clearSelect";
export const getFieldIdByCellElement = (cellElement: Element, viewType: TAVView): string => {
return (hasClosestByClassName(cellElement, viewType === "table" ? "av__row" : "av__gallery-item") as HTMLElement).dataset.id;
@ -143,10 +144,7 @@ ${getTypeByCellElement(item) === "block" ? ' data-detached="true"' : ""}><span c
${colHTML}
</div>`;
} else {
blockElement.querySelectorAll(".av__cell--select, .av__cell--active").forEach(item => {
item.classList.remove("av__cell--select", "av__cell--active");
item.querySelector(".av__drag-fill")?.remove();
});
clearSelect(["cell"], blockElement);
addDragFill(blockCellElement);
blockCellElement.classList.add("av__cell--select");
}

View file

@ -34,6 +34,7 @@ import {webUtils} from "electron";
import {addDragFill} from "../render/av/cell";
import {processClonePHElement} from "../render/util";
import {insertGalleryItemAnimation} from "../render/av/gallery/item";
import {clearSelect} from "./clearSelect";
const moveToNew = (protyle: IProtyle, sourceElements: Element[], targetElement: Element, newSourceElement: Element,
isSameDoc: boolean, isBottom: boolean, isCopy: boolean) => {
@ -1285,10 +1286,7 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
} else {
paste(protyle, event);
}
protyle.wysiwyg.element.querySelectorAll(".av__cell--select, .av__cell--active").forEach(item => {
item.classList.remove("av__cell--select", "av__cell--active");
item.querySelector(".av__drag-fill")?.remove();
});
clearSelect(["av", "img"], protyle.wysiwyg.element);
} else {
const cellElement = hasClosestByClassName(event.target, "av__cell");
if (cellElement) {
@ -1336,10 +1334,7 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
}
const blockElement = hasClosestBlock(targetElement);
if (blockElement) {
protyle.wysiwyg.element.querySelectorAll(".av__cell--select, .av__cell--active").forEach(item => {
item.classList.remove("av__cell--select", "av__cell--active");
item.querySelector(".av__drag-fill")?.remove();
});
clearSelect(["cell", "row"], protyle.wysiwyg.element);
targetElement.classList.add("av__cell--select");
addDragFill(targetElement);
dragoverElement = targetElement;

View file

@ -99,6 +99,7 @@ import {img3115} from "../../boot/compatibleVersion";
import {globalClickHideMenu} from "../../boot/globalEvent/click";
import {hideTooltip} from "../../dialog/tooltip";
import {openGalleryItemMenu} from "../render/av/gallery/util";
import {clearSelect} from "../util/clearSelect";
export class WYSIWYG {
public lastHTMLs: { [key: string]: string } = {};
@ -226,18 +227,7 @@ export class WYSIWYG {
}
private setEmptyOutline(protyle: IProtyle, element: HTMLElement) {
// 图片移除选择状态应放在前面,否则 https://github.com/siyuan-note/siyuan/issues/4173
protyle.wysiwyg.element.querySelectorAll(".img--select, .av__cell--select, .av__cell--active, .av__row--select").forEach((item: HTMLElement) => {
if (item.classList.contains("av__row--select") && !hasClosestByClassName(element, "av")) {
item.classList.remove("av__row--select");
item.querySelector(".av__firstcol use").setAttribute("xlink:href", "#iconUncheck");
updateHeader(item);
} else {
item.classList.remove("img--select", "av__cell--select", "av__cell--active");
item.querySelector(".av__drag-fill")?.remove();
}
});
clearSelect(["img" ,"av"], protyle.wysiwyg.element);
let nodeElement = element;
if (!element.getAttribute("data-node-id")) {
const tempElement = hasClosestBlock(element);
@ -1799,7 +1789,7 @@ export class WYSIWYG {
if (avGalleryItemElement) {
avGalleryItemElement.classList.add("av__gallery-item--select");
const menu = openGalleryItemMenu({
target: avGalleryItemElement.querySelector('.protyle-icon--last'),
target: avGalleryItemElement.querySelector(".protyle-icon--last"),
blockElement: nodeElement,
protyle,
returnMenu: true