diff --git a/app/src/assets/scss/protyle/_wysiwyg.scss b/app/src/assets/scss/protyle/_wysiwyg.scss index 7679b89a8..3c715be7b 100644 --- a/app/src/assets/scss/protyle/_wysiwyg.scss +++ b/app/src/assets/scss/protyle/_wysiwyg.scss @@ -66,12 +66,17 @@ } &__firstcol { - input { - margin: 11px 5px; + svg { + color: var(--b3-theme-on-surface); + height: 36px; + width: 24px; opacity: 0; + padding: 5px; + box-sizing: border-box; + float: left; } - &:hover input { + &:hover svg { opacity: 1; } } diff --git a/app/src/protyle/render/av/action.ts b/app/src/protyle/render/av/action.ts index e995c0d84..d3275a967 100644 --- a/app/src/protyle/render/av/action.ts +++ b/app/src/protyle/render/av/action.ts @@ -4,6 +4,7 @@ import {Menu} from "../../../plugin/API"; import {getIconByType} from "./render"; import {openEditorTab} from "../../../menus/util"; import {copySubMenu} from "../../../menus/commonMenuItem"; +import {popTextCell} from "./cell"; export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLElement }) => { const blockElement = hasClosestBlock(event.target); @@ -42,97 +43,101 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle const cellElement = hasClosestByClassName(event.target, "av__cell"); if (cellElement && blockElement) { const type = cellElement.getAttribute("data-dtype") as TAVCol; - const menu = new Menu("av-header-cell"); - menu.addItem({ - icon: getIconByType(type), - label: ``, - bind() { - - } - }); - if (type !== "block") { + if (cellElement.parentElement.classList.contains("av__row--header")) { + const menu = new Menu("av-header-cell"); menu.addItem({ - icon: "iconEdit", - label: window.siyuan.languages.edit, - click() { + icon: getIconByType(type), + label: ``, + bind() { } }); - } - menu.addSeparator(); - menu.addItem({ - icon: "iconUp", - label: window.siyuan.languages.fileNameNatASC, - click() { + if (type !== "block") { + menu.addItem({ + icon: "iconEdit", + label: window.siyuan.languages.edit, + click() { + } + }); } - }); - menu.addItem({ - icon: "iconDown", - label: window.siyuan.languages.fileNameNatDESC, - click() { - - } - }); - menu.addItem({ - icon: "iconFilter", - label: window.siyuan.languages.filter, - click() { - - } - }); - menu.addSeparator(); - if (type !== "block") { + menu.addSeparator(); menu.addItem({ - icon: "iconEyeoff", - label: window.siyuan.languages.hide, + icon: "iconUp", + label: window.siyuan.languages.fileNameNatASC, click() { } }); menu.addItem({ - icon: "iconCopy", - label: window.siyuan.languages.duplicate, + icon: "iconDown", + label: window.siyuan.languages.fileNameNatDESC, click() { } }); menu.addItem({ - icon: "iconTrashcan", - label: window.siyuan.languages.delete, + icon: "iconFilter", + label: window.siyuan.languages.filter, click() { - const id = cellElement.getAttribute("data-id") - transaction(protyle, [{ - action: "removeAttrViewCol", - id, - parentID: blockElement.getAttribute("data-av-id"), - }], [{ - action: "addAttrViewCol", - name: cellElement.textContent.trim(), - parentID: blockElement.getAttribute("data-av-id"), - type: type, - id - }]); + } }); menu.addSeparator(); - } - menu.addItem({ - label: `
${window.siyuan.languages.wrap} -
`, - click() { + if (type !== "block") { + menu.addItem({ + icon: "iconEyeoff", + label: window.siyuan.languages.hide, + click() { + } + }); + menu.addItem({ + icon: "iconCopy", + label: window.siyuan.languages.duplicate, + click() { + + } + }); + menu.addItem({ + icon: "iconTrashcan", + label: window.siyuan.languages.delete, + click() { + const id = cellElement.getAttribute("data-id") + transaction(protyle, [{ + action: "removeAttrViewCol", + id, + parentID: blockElement.getAttribute("data-av-id"), + }], [{ + action: "addAttrViewCol", + name: cellElement.textContent.trim(), + parentID: blockElement.getAttribute("data-av-id"), + type: type, + id + }]); + } + }); + menu.addSeparator(); } - }); - const cellRect = cellElement.getBoundingClientRect(); - menu.open({ - x: cellRect.left, - y: cellRect.bottom, - h: cellRect.height - }); - (window.siyuan.menus.menu.element.querySelector(".b3-text-field") as HTMLInputElement)?.select(); - event.preventDefault(); - event.stopPropagation(); + menu.addItem({ + label: `
${window.siyuan.languages.wrap} +
`, + click() { + + } + }); + const cellRect = cellElement.getBoundingClientRect(); + menu.open({ + x: cellRect.left, + y: cellRect.bottom, + h: cellRect.height + }); + (window.siyuan.menus.menu.element.querySelector(".b3-text-field") as HTMLInputElement)?.select(); + event.preventDefault(); + event.stopPropagation(); + } else { + popTextCell() + } return true; } return false; diff --git a/app/src/protyle/render/av/cell.ts b/app/src/protyle/render/av/cell.ts new file mode 100644 index 000000000..9a3315f75 --- /dev/null +++ b/app/src/protyle/render/av/cell.ts @@ -0,0 +1,3 @@ +export const popTextCell = () => { + +} diff --git a/app/src/protyle/render/av/render.ts b/app/src/protyle/render/av/render.ts index 3482a9c78..d9d2cdf28 100644 --- a/app/src/protyle/render/av/render.ts +++ b/app/src/protyle/render/av/render.ts @@ -28,7 +28,7 @@ export const avRender = (element: Element) => { fetchPost("/api/av/renderAttributeView", {id: e.getAttribute("data-av-id")}, (response) => { const data = response.data.av; // header - let tableHTML = '
'; + let tableHTML = '
'; data.columns.forEach((column: IAVColumn) => { if (column.hidden) { return; @@ -47,7 +47,7 @@ export const avRender = (element: Element) => { // body data.rows.forEach((row: IAVRow) => { - tableHTML += `
`; + tableHTML += `
`; row.cells.forEach((cell, index) => { tableHTML += `
${cell.value}
`; });