diff --git a/app/src/assets/scss/business/_custom.scss b/app/src/assets/scss/business/_custom.scss
index 1dafec9ff..356f9c132 100644
--- a/app/src/assets/scss/business/_custom.scss
+++ b/app/src/assets/scss/business/_custom.scss
@@ -16,16 +16,13 @@
&__avheader {
border-bottom: 1px solid var(--b3-border-color);
padding: 8px;
+ color: var(--b3-protyle-inline-blockref-color);
+ opacity: .86;
+ transition: var(--b3-transition);
+ cursor: pointer;
- .block__logo {
- color: var(--b3-protyle-inline-blockref-color);
- opacity: .86;
- transition: var(--b3-transition);
- cursor: pointer;
-
- &:hover {
- opacity: 1;
- }
+ &:hover {
+ opacity: 1;
}
}
diff --git a/app/src/protyle/render/av/blockAttr.ts b/app/src/protyle/render/av/blockAttr.ts
index 2c0c989f8..88b992094 100644
--- a/app/src/protyle/render/av/blockAttr.ts
+++ b/app/src/protyle/render/av/blockAttr.ts
@@ -6,6 +6,7 @@ import {popTextCell} from "./cell";
import {hasClosestBlock, hasClosestByClassName} from "../../util/hasClosest";
import {unicode2Emoji} from "../../../emoji";
import {transaction} from "../../wysiwyg/transaction";
+import {openMenuPanel} from "./openMenuPanel";
const genAVRollupHTML = (value: IAVCellValue) => {
let html = "";
@@ -127,7 +128,7 @@ export const genAVValueHTML = (value: IAVCellValue) => {
return html;
};
-export const renderAVAttribute = (element: HTMLElement, id: string, protyle: IProtyle) => {
+export const renderAVAttribute = (element: HTMLElement, id: string, protyle: IProtyle, cb?: (element: HTMLElement) => void) => {
fetchPost("/api/av/getAttributeViewKeys", {id}, (response) => {
let html = "";
response.data.forEach((table: {
@@ -154,17 +155,15 @@ export const renderAVAttribute = (element: HTMLElement, id: string, protyle: IPr
avName: string
}) => {
html += `
-`;
});
if (element.innerHTML === "") {
let dragBlockElement: HTMLElement;
@@ -203,7 +207,7 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone", "block"]
transaction(protyle, [{
action: "sortAttrViewCol",
avID: dragBlockElement.dataset.avId,
- previousID:isBottom ? targetElement.dataset.colId : targetElement.previousElementSibling?.getAttribute("data-col-id"),
+ previousID: isBottom ? targetElement.dataset.colId : targetElement.previousElementSibling?.getAttribute("data-col-id"),
id: window.siyuan.dragElement.dataset.colId,
}, {
action: "sortAttrViewCol",
@@ -255,6 +259,10 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone", "block"]
});
element.addEventListener("click", (event) => {
let target = event.target as HTMLElement;
+ const blockElement = hasClosestBlock(target);
+ if (!blockElement) {
+ return;
+ }
while (target && !element.isSameNode(target)) {
const type = target.getAttribute("data-type");
if (type === "date") {
@@ -293,7 +301,8 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone", "block"]
event.preventDefault();
break;
} else if (type === "addColumn") {
- const addMenu = addCol(protyle, hasClosestBlock(target) as HTMLElement, "");
+ const rowElements = blockElement.querySelectorAll(".av__row")
+ const addMenu = addCol(protyle, blockElement, rowElements[rowElements.length - 1].getAttribute("data-col-id"));
const addRect = target.getBoundingClientRect();
addMenu.open({
x: addRect.left,
@@ -303,6 +312,18 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone", "block"]
event.stopPropagation();
event.preventDefault();
break;
+ } else if (type === "editCol") {
+ if (target.classList.contains("fn__pointer")) {
+ openMenuPanel({
+ protyle,
+ blockElement,
+ type: "edit",
+ colId: target.parentElement.dataset.colId
+ });
+ }
+ event.stopPropagation();
+ event.preventDefault();
+ break;
}
target = target.parentElement;
}
@@ -334,5 +355,8 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone", "block"]
});
});
});
+ if (cb) {
+ cb(element);
+ }
});
};
diff --git a/app/src/protyle/render/av/col.ts b/app/src/protyle/render/av/col.ts
index 9fb9274ff..c459355de 100644
--- a/app/src/protyle/render/av/col.ts
+++ b/app/src/protyle/render/av/col.ts
@@ -84,7 +84,8 @@ export const duplicateCol = (options: {
export const getEditHTML = (options: {
protyle: IProtyle,
colId: string,
- data: IAV
+ data: IAV,
+ isCustomAttr: boolean
}) => {
let colData: IAVColumn;
options.data.view.columns.find((item) => {
@@ -94,7 +95,7 @@ export const getEditHTML = (options: {
}
});
let html = `