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 += `${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;
};