Vanessa 2023-11-10 17:44:04 +08:00
parent bbbdda7ef0
commit 6109e8a3c3
3 changed files with 12 additions and 8 deletions

View file

@ -82,7 +82,6 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle
avID, avID,
}]); }]);
insertAttrViewBlockAnimation(blockElement, 1, previousID, avID); insertAttrViewBlockAnimation(blockElement, 1, previousID, avID);
popTextCell(protyle, [rowElement[event.altKey ? "previousElementSibling" : "nextElementSibling"].querySelector('[data-detached="true"]')], "block");
} else { } else {
const gutterRect = gutterElement.getBoundingClientRect(); const gutterRect = gutterElement.getBoundingClientRect();
avContextmenu(protyle, rowElement, { avContextmenu(protyle, rowElement, {
@ -238,7 +237,6 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle
avID, avID,
}]); }]);
insertAttrViewBlockAnimation(blockElement, 1, previousID, avID); insertAttrViewBlockAnimation(blockElement, 1, previousID, avID);
popTextCell(protyle, [addRowElement.previousElementSibling.querySelector('[data-detached="true"]')], "block");
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
return true; return true;

View file

@ -1,7 +1,7 @@
import {fetchPost} from "../../../util/fetch"; import {fetchPost} from "../../../util/fetch";
import {getColIconByType} from "./col"; import {getColIconByType} from "./col";
import {Constants} from "../../../constants"; import {Constants} from "../../../constants";
import {getCalcValue} from "./cell"; import {getCalcValue, popTextCell} from "./cell";
import * as dayjs from "dayjs"; import * as dayjs from "dayjs";
import {unicode2Emoji} from "../../../emoji"; import {unicode2Emoji} from "../../../emoji";
import {focusBlock} from "../../util/selection"; import {focusBlock} from "../../util/selection";
@ -177,8 +177,8 @@ ${cell.color ? `color:${cell.color};` : ""}">${text}</div>`;
<div class="layout-tab-bar fn__flex"> <div class="layout-tab-bar fn__flex">
${tabHTML} ${tabHTML}
<div class="fn__flex-1"></div> <div class="fn__flex-1"></div>
${response.data.isMirror?` <span class="block__icon block__icon--show b3-tooltips b3-tooltips__w" aria-label="${window.siyuan.languages.mirrorTip}"> ${response.data.isMirror ? ` <span class="block__icon block__icon--show b3-tooltips b3-tooltips__w" aria-label="${window.siyuan.languages.mirrorTip}">
<svg><use xlink:href="#iconSplitLR"></use></svg></span><div class="fn__space"></div>`:""} <svg><use xlink:href="#iconSplitLR"></use></svg></span><div class="fn__space"></div>` : ""}
<span data-type="av-filter" class="block__icon block__icon--show b3-tooltips b3-tooltips__w${data.filters.length > 0 ? " block__icon--active" : ""}" aria-label="${window.siyuan.languages.filter}"> <span data-type="av-filter" class="block__icon block__icon--show b3-tooltips b3-tooltips__w${data.filters.length > 0 ? " block__icon--active" : ""}" aria-label="${window.siyuan.languages.filter}">
<svg><use xlink:href="#iconFilter"></use></svg> <svg><use xlink:href="#iconFilter"></use></svg>
</span> </span>
@ -236,7 +236,7 @@ ${cell.color ? `color:${cell.color};` : ""}">${text}</div>`;
let lastParentID: string; let lastParentID: string;
let lastElement: HTMLElement; let lastElement: HTMLElement;
export const refreshAV = (protyle: IProtyle, operation: IOperation) => { export const refreshAV = (protyle: IProtyle, operation: IOperation, isUndo: boolean) => {
if (operation.action === "setAttrViewName") { if (operation.action === "setAttrViewName") {
Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-av-id="${operation.id}"]`)).forEach((item: HTMLElement) => { Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-av-id="${operation.id}"]`)).forEach((item: HTMLElement) => {
const titleElement = item.querySelector(".av__title") as HTMLElement; const titleElement = item.querySelector(".av__title") as HTMLElement;
@ -267,9 +267,15 @@ export const refreshAV = (protyle: IProtyle, operation: IOperation) => {
} else { } else {
Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-av-id="${avId}"]`)).forEach((item: HTMLElement) => { Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-av-id="${avId}"]`)).forEach((item: HTMLElement) => {
item.removeAttribute("data-render"); item.removeAttribute("data-render");
avRender(item, protyle); avRender(item, protyle, () => {
// https://github.com/siyuan-note/siyuan/issues/9599
if (!isUndo && operation.action === "insertAttrViewBlock" && operation.isDetached) {
popTextCell(protyle, [item.querySelector(`.av__row[data-id="${operation.srcIDs[0]}"] > .av__cell[data-detached="true"]`)], "block");
}
});
}); });
} }
setTimeout(() => { setTimeout(() => {
lastParentID = null; lastParentID = null;
}, Constants.TIMEOUT_TRANSITION); }, Constants.TIMEOUT_TRANSITION);

View file

@ -712,7 +712,7 @@ export const onTransaction = (protyle: IProtyle, operation: IOperation, isUndo:
"setAttrViewColWrap", "setAttrViewColWidth", "removeAttrViewColOption", "setAttrViewName", "setAttrViewFilters", "setAttrViewColWrap", "setAttrViewColWidth", "removeAttrViewColOption", "setAttrViewName", "setAttrViewFilters",
"setAttrViewSorts", "setAttrViewColCalc", "removeAttrViewCol", "updateAttrViewColNumberFormat", "removeAttrViewBlock", "setAttrViewSorts", "setAttrViewColCalc", "removeAttrViewCol", "updateAttrViewColNumberFormat", "removeAttrViewBlock",
"replaceAttrViewBlock", "updateAttrViewColTemplate", "setAttrViewColIcon"].includes(operation.action)) { "replaceAttrViewBlock", "updateAttrViewColTemplate", "setAttrViewColIcon"].includes(operation.action)) {
refreshAV(protyle, operation); refreshAV(protyle, operation, isUndo);
} else if (operation.action === "doUpdateUpdated") { } else if (operation.action === "doUpdateUpdated") {
updateElements.forEach(item => { updateElements.forEach(item => {
item.setAttribute("updated", operation.data); item.setAttribute("updated", operation.data);