From ab32bb90276c940aa8e29f842fe67b5ec75fb878 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Sat, 23 Aug 2025 10:25:31 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E5=B1=9E=E6=80=A7=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=85=B3=E8=81=94=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/assets/scss/business/_av.scss | 1 + app/src/assets/scss/business/_custom.scss | 4 ++++ app/src/protyle/render/av/blockAttr.ts | 10 ++++++---- app/src/protyle/render/av/render.ts | 2 +- app/src/protyle/render/av/row.ts | 2 +- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/assets/scss/business/_av.scss b/app/src/assets/scss/business/_av.scss index 10c562a9b..9241e23db 100644 --- a/app/src/assets/scss/business/_av.scss +++ b/app/src/assets/scss/business/_av.scss @@ -846,6 +846,7 @@ &__label { overflow: hidden; + min-height: 30px; } &__icon.fn__grab { diff --git a/app/src/assets/scss/business/_custom.scss b/app/src/assets/scss/business/_custom.scss index dd428762c..d074eabda 100644 --- a/app/src/assets/scss/business/_custom.scss +++ b/app/src/assets/scss/business/_custom.scss @@ -130,4 +130,8 @@ .av__row.dragover__top::after { top: -1.5px; } + + .av__cell--relation { + display: inline-flex; + } } diff --git a/app/src/protyle/render/av/blockAttr.ts b/app/src/protyle/render/av/blockAttr.ts index 892ce2ecd..6608df69a 100644 --- a/app/src/protyle/render/av/blockAttr.ts +++ b/app/src/protyle/render/av/blockAttr.ts @@ -129,12 +129,14 @@ export const genAVValueHTML = (value: IAVCellValue) => { `; break; case "relation": - value?.relation?.contents?.forEach((item) => { + value?.relation?.contents?.forEach((item, index) => { if (item && item.block) { + const rowID = value.relation.blockIDs[index]; if (item?.isDetached) { - html += `${Lute.EscapeHTMLStr(item.block.content || window.siyuan.languages.untitled)}`; + html += `${Lute.EscapeHTMLStr(item.block.content || window.siyuan.languages.untitled)}`; } else { - html += `${unicode2Emoji(item.block.icon || window.siyuan.storage[Constants.LOCAL_IMAGES].file)} ${Lute.EscapeHTMLStr(item.block.content || window.siyuan.languages.untitled)}`; + // data-block-id 用于更新 emoji + html += `${unicode2Emoji(item.block.icon || window.siyuan.storage[Constants.LOCAL_IMAGES].file)}${Lute.EscapeHTMLStr(item.block.content || window.siyuan.languages.untitled)}`; } } }); @@ -212,7 +214,7 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone", "block"] if (element.innerHTML) { // 防止 blockElement 找不到 - element.querySelector(`.av[data-node-id="${id}"][data-av-id="${table.avID}"]`).innerHTML = innerHTML; + element.querySelector(`[data-node-id="${id}"][data-av-id="${table.avID}"]`).innerHTML = innerHTML; } }); if (element.innerHTML === "") { diff --git a/app/src/protyle/render/av/render.ts b/app/src/protyle/render/av/render.ts index 2f7c58538..c83d73b26 100644 --- a/app/src/protyle/render/av/render.ts +++ b/app/src/protyle/render/av/render.ts @@ -759,7 +759,7 @@ export const refreshAV = (protyle: IProtyle, operation: IOperation) => { } } avRender(item, protyle, () => { - const attrElement = document.querySelector(`.b3-dialog--open[data-key="${Constants.DIALOG_ATTR}"] .av[data-av-id="${avID}"]`) as HTMLElement; + const attrElement = document.querySelector(`.b3-dialog--open[data-key="${Constants.DIALOG_ATTR}"] .custom-attr > [data-av-id="${avID}"]`) as HTMLElement; if (attrElement) { // 更新属性面板 renderAVAttribute(attrElement.parentElement, attrElement.dataset.nodeId, protyle); diff --git a/app/src/protyle/render/av/row.ts b/app/src/protyle/render/av/row.ts index 8e0c49693..f12f3a66c 100644 --- a/app/src/protyle/render/av/row.ts +++ b/app/src/protyle/render/av/row.ts @@ -17,7 +17,7 @@ import {clearSelect} from "../../util/clearSelect"; export const getFieldIdByCellElement = (cellElement: Element, viewType: TAVView): string => { if (hasClosestByClassName(cellElement, "custom-attr")) { - return (hasClosestByClassName(cellElement, "av__row") as HTMLElement).dataset.id; + return cellElement.getAttribute("data-row-id"); } return (hasClosestByClassName(cellElement, viewType === "table" ? "av__row" : "av__gallery-item") as HTMLElement).dataset.id; };