diff --git a/app/src/card/openCard.ts b/app/src/card/openCard.ts index 595ee7ade..66587989f 100644 --- a/app/src/card/openCard.ts +++ b/app/src/card/openCard.ts @@ -342,6 +342,7 @@ export const bindCardEvent = async (options: { } const menu = new Menu(); menu.addItem({ + id: "setDueTime", icon: "iconClock", label: window.siyuan.languages.setDueTime, click() { @@ -392,6 +393,7 @@ export const bindCardEvent = async (options: { }); if (currentCard.state !== 0) { menu.addItem({ + id: "reset", icon: "iconRefresh", label: window.siyuan.languages.reset, click() { @@ -426,6 +428,7 @@ export const bindCardEvent = async (options: { }); } menu.addItem({ + id: "removeRiffCard", icon: "iconTrashcan", label: `${window.siyuan.languages.remove} ${window.siyuan.languages.riffCard}`, click() { @@ -448,6 +451,7 @@ export const bindCardEvent = async (options: { }); menu.addSeparator(); menu.addItem({ + id: "forgetCountAndRevisionCountAndCardStatusAndLastReviewTime", iconHTML: "", type: "readonly", label: `
@@ -484,6 +488,7 @@ export const bindCardEvent = async (options: { if (sticktabElement) { const stickMenu = new Menu(); stickMenu.addItem({ + id: "insertRight", icon: "iconLayoutRight", label: window.siyuan.languages.insertRight, click() { @@ -508,6 +513,7 @@ export const bindCardEvent = async (options: { }); /// #if !BROWSER stickMenu.addItem({ + id: "openByNewWindow", icon: "iconOpenWindow", label: window.siyuan.languages.openByNewWindow, click() { @@ -557,6 +563,7 @@ export const bindCardEvent = async (options: { fetchPost("/api/riff/getRiffDecks", {}, (response) => { window.siyuan.menus.menu.remove(); window.siyuan.menus.menu.append(new MenuItem({ + id: "all", iconHTML: "", label: window.siyuan.languages.all, click() { @@ -566,6 +573,7 @@ export const bindCardEvent = async (options: { }, }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "fileTree", iconHTML: "", label: window.siyuan.languages.fileTree, click() { diff --git a/app/src/menus/Menu.ts b/app/src/menus/Menu.ts index 4cad076b8..d075cd56d 100644 --- a/app/src/menus/Menu.ts +++ b/app/src/menus/Menu.ts @@ -84,7 +84,10 @@ export class Menu { } } - public addSeparator(index?: number) { + public addSeparator(index?: number, id?: string) { + if (id) { + return this.addItem({id: "separator_" + id, type: "separator", index}); + } return this.addItem({type: "separator", index}); } diff --git a/app/src/menus/bookmark.ts b/app/src/menus/bookmark.ts index ebc5597d2..fed1f24e6 100644 --- a/app/src/menus/bookmark.ts +++ b/app/src/menus/bookmark.ts @@ -19,6 +19,7 @@ export const openBookmarkMenu = (element: HTMLElement, event: MouseEvent, bookma const id = element.getAttribute("data-node-id"); if (!id && !window.siyuan.config.readonly) { window.siyuan.menus.menu.append(new MenuItem({ + id: "rename", icon: "iconEdit", label: window.siyuan.languages.rename, click: () => { @@ -57,6 +58,7 @@ export const openBookmarkMenu = (element: HTMLElement, event: MouseEvent, bookma } if (id) { window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", label: window.siyuan.languages.copy, type: "submenu", icon: "iconCopy", @@ -66,6 +68,7 @@ export const openBookmarkMenu = (element: HTMLElement, event: MouseEvent, bookma if (!window.siyuan.config.readonly) { window.siyuan.menus.menu.append(new MenuItem({ + id: "remove", icon: "iconTrashcan", label: window.siyuan.languages.remove, click: () => { diff --git a/app/src/menus/commonMenuItem.ts b/app/src/menus/commonMenuItem.ts index 4dbeb123f..cec380d7d 100644 --- a/app/src/menus/commonMenuItem.ts +++ b/app/src/menus/commonMenuItem.ts @@ -284,6 +284,7 @@ export const openFileAttr = (attrs: IObject, focusName = "bookmark", protyle?: I window.siyuan.menus.menu.remove(); if (response.data.length === 0) { window.siyuan.menus.menu.append(new MenuItem({ + id: "emptyContent", iconHTML: "", label: window.siyuan.languages.emptyContent, type: "readonly", @@ -711,6 +712,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat const submenu = []; /// #if MOBILE submenu.push({ + id: isInAndroid() || isInHarmony() ? "useDefault" : "useBrowserView", label: isInAndroid() || isInHarmony() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView, accelerator: showAccelerator ? window.siyuan.languages.click : "", click: () => { @@ -724,6 +726,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat (src.endsWith(".pdf") && !src.startsWith("file://"))) ) { submenu.push({ + id: "insertRight", icon: "iconLayoutRight", label: window.siyuan.languages.insertRight, accelerator: showAccelerator ? window.siyuan.languages.click : "", @@ -732,6 +735,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat } }); submenu.push({ + id: "openBy", label: window.siyuan.languages.openBy, icon: "iconOpen", accelerator: showAccelerator ? "⌥" + window.siyuan.languages.click : "", @@ -741,6 +745,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat }); /// #if !BROWSER submenu.push({ + id: "openByNewWindow", label: window.siyuan.languages.openByNewWindow, icon: "iconOpenWindow", click() { @@ -748,6 +753,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat } }); submenu.push({ + id: "showInFolder", icon: "iconFolder", label: window.siyuan.languages.showInFolder, accelerator: showAccelerator ? "⌘" + window.siyuan.languages.click : "", @@ -756,6 +762,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat } }); submenu.push({ + id: "useDefault", label: window.siyuan.languages.useDefault, accelerator: showAccelerator ? "⇧" + window.siyuan.languages.click : "", click() { @@ -766,6 +773,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat } else { /// #if !BROWSER submenu.push({ + id: "useDefault", label: window.siyuan.languages.useDefault, accelerator: showAccelerator ? window.siyuan.languages.click : "", click() { @@ -773,6 +781,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat } }); submenu.push({ + id: "showInFolder", icon: "iconFolder", label: window.siyuan.languages.showInFolder, accelerator: showAccelerator ? "⌘" + window.siyuan.languages.click : "", @@ -782,6 +791,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat }); /// #else submenu.push({ + id: isInAndroid() || isInHarmony() ? "useDefault" : "useBrowserView", label: isInAndroid() || isInHarmony() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView, accelerator: showAccelerator ? window.siyuan.languages.click : "", click: () => { @@ -798,6 +808,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat } /// #if !BROWSER submenu.push({ + id: "useDefault", label: window.siyuan.languages.useDefault, accelerator: showAccelerator ? window.siyuan.languages.click : "", click: () => { @@ -808,6 +819,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat }); /// #else submenu.push({ + id: isInAndroid() || isInHarmony() ? "useDefault" : "useBrowserView", label: isInAndroid() || isInHarmony() ? window.siyuan.languages.useDefault : window.siyuan.languages.useBrowserView, accelerator: showAccelerator ? window.siyuan.languages.click : "", click: () => { @@ -821,6 +833,7 @@ export const openMenu = (app: App, src: string, onlyMenu: boolean, showAccelerat return submenu; } window.siyuan.menus.menu.append(new MenuItem({ + id: "openBy", label: window.siyuan.languages.openBy, icon: "iconOpen", submenu diff --git a/app/src/menus/protyle.ts b/app/src/menus/protyle.ts index d8d6de0cb..84971bffb 100644 --- a/app/src/menus/protyle.ts +++ b/app/src/menus/protyle.ts @@ -219,6 +219,7 @@ export const fileAnnotationRefMenu = (protyle: IProtyle, refElement: HTMLElement window.siyuan.menus.menu.remove(); let anchorElement: HTMLInputElement; window.siyuan.menus.menu.append(new MenuItem({ + id: "idAndAnchor", iconHTML: "", type: "readonly", label: `
ID
@@ -265,9 +266,11 @@ export const fileAnnotationRefMenu = (protyle: IProtyle, refElement: HTMLElement }).element); window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "turnInto", label: window.siyuan.languages.turnInto, icon: "iconRefresh", submenu: [{ + id: "text", iconHTML: "", label: window.siyuan.languages.text, click() { @@ -277,6 +280,7 @@ export const fileAnnotationRefMenu = (protyle: IProtyle, refElement: HTMLElement oldHTML = nodeElement.outerHTML; } }, { + id: "text*", iconHTML: "", label: window.siyuan.languages.text + " *", click() { @@ -289,6 +293,7 @@ export const fileAnnotationRefMenu = (protyle: IProtyle, refElement: HTMLElement }] }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "remove", icon: "iconTrashcan", label: window.siyuan.languages.remove, click() { @@ -349,6 +354,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { window.siyuan.menus.menu.remove(); if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "anchor", iconHTML: "", type: "readonly", label: ``, @@ -379,11 +385,13 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "separator_1", type: "separator" }).element); } /// #if !MOBILE window.siyuan.menus.menu.append(new MenuItem({ + id: "openBy", label: window.siyuan.languages.openBy, icon: "iconOpen", accelerator: window.siyuan.config.keymap.editor.general.openBy.custom + "/" + window.siyuan.languages.click, @@ -402,6 +410,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "refTab", label: window.siyuan.languages.refTab, icon: "iconEyeoff", accelerator: window.siyuan.config.keymap.editor.general.refTab.custom + "/" + updateHotkeyTip("⌘" + window.siyuan.languages.click), @@ -418,6 +427,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "insertRight", label: window.siyuan.languages.insertRight, icon: "iconLayoutRight", accelerator: window.siyuan.config.keymap.editor.general.insertRight.custom + "/" + updateHotkeyTip("⌥" + window.siyuan.languages.click), @@ -437,6 +447,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "insertBottom", label: window.siyuan.languages.insertBottom, icon: "iconLayoutBottom", accelerator: window.siyuan.config.keymap.editor.general.insertBottom.custom + (window.siyuan.config.keymap.editor.general.insertBottom.custom ? "/" : "") + updateHotkeyTip("⇧" + window.siyuan.languages.click), @@ -457,6 +468,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { }).element); /// #if !BROWSER window.siyuan.menus.menu.append(new MenuItem({ + id: "openByNewWindow", label: window.siyuan.languages.openByNewWindow, icon: "iconOpenWindow", click() { @@ -464,8 +476,9 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { } }).element); /// #endif - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_2", type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "backlinks", icon: "iconLink", label: window.siyuan.languages.backlinks, accelerator: window.siyuan.config.keymap.editor.general.backlinks.custom, @@ -477,6 +490,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "graphView", icon: "iconGraph", label: window.siyuan.languages.graphView, accelerator: window.siyuan.config.keymap.editor.general.graphView.custom, @@ -487,12 +501,13 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { }); } }).element); - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_3", type: "separator"}).element); /// #endif if (!protyle.disabled) { let submenu: IMenu[] = []; if (element.getAttribute("data-subtype") === "s") { submenu.push({ + id: "turnToDynamic", iconHTML: "", label: window.siyuan.languages.turnToDynamic, click() { @@ -508,6 +523,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { }); } else { submenu.push({ + id: "turnToStatic", iconHTML: "", label: window.siyuan.languages.turnToStatic, click() { @@ -520,6 +536,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { }); } submenu = submenu.concat([{ + id: "text", iconHTML: "", label: window.siyuan.languages.text, click() { @@ -529,6 +546,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { oldHTML = nodeElement.outerHTML; } }, { + id: "*", iconHTML: "", label: "*", click() { @@ -540,6 +558,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { oldHTML = nodeElement.outerHTML; } }, { + id: "text*", iconHTML: "", label: window.siyuan.languages.text + " *", click() { @@ -552,6 +571,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { oldHTML = nodeElement.outerHTML; } }, { + id: "link", label: window.siyuan.languages.link, iconHTML: "", click() { @@ -564,6 +584,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { }]); if (element.parentElement.textContent.trim() === element.textContent.trim() && element.parentElement.tagName === "DIV") { submenu.push({ + id: "blockEmbed", iconHTML: "", label: window.siyuan.languages.blockEmbed, click() { @@ -576,6 +597,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { }); } submenu.push({ + id: "defBlock", iconHTML: "", label: window.siyuan.languages.defBlock, click() { @@ -587,6 +609,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { } }); submenu.push({ + id: "defBlockChildren", iconHTML: "", label: window.siyuan.languages.defBlockChildren, click() { @@ -598,12 +621,14 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { } }); window.siyuan.menus.menu.append(new MenuItem({ + id: "iconRefresh", label: window.siyuan.languages.turnInto, icon: "iconRefresh", submenu }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", click() { @@ -612,6 +637,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { }).element); if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "cut", label: window.siyuan.languages.cut, icon: "iconCut", click() { @@ -626,6 +652,7 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "remove", label: window.siyuan.languages.remove, icon: "iconTrashcan", click() { @@ -686,6 +713,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { const id = nodeElement.getAttribute("data-node-id"); if (range.toString() !== "" || (range.cloneContents().childNodes[0] as HTMLElement)?.classList?.contains("emoji")) { window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", icon: "iconCopy", accelerator: "⌘C", label: window.siyuan.languages.copy, @@ -696,6 +724,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "copyPlainText", label: window.siyuan.languages.copyPlainText, accelerator: window.siyuan.config.keymap.editor.general.copyPlainText.custom, click() { @@ -707,6 +736,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { return; } window.siyuan.menus.menu.append(new MenuItem({ + id: "cut", icon: "iconCut", accelerator: "⌘X", label: window.siyuan.languages.cut, @@ -716,6 +746,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "delete", icon: "iconTrashcan", accelerator: "⌫", label: window.siyuan.languages.delete, @@ -735,6 +766,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { const inlineTypes = protyle.toolbar.getCurrentType(range); if (inlineTypes.includes("code") || inlineTypes.includes("kbd")) { window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", click() { @@ -742,6 +774,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "copyPlainText", label: window.siyuan.languages.copyPlainText, click() { copyPlainText(inlineElement.textContent); @@ -750,6 +783,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { if (!protyle.disabled) { const id = nodeElement.getAttribute("data-node-id"); window.siyuan.menus.menu.append(new MenuItem({ + id: "cut", icon: "iconCut", label: window.siyuan.languages.cut, click() { @@ -763,6 +797,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "remove", icon: "iconTrashcan", label: window.siyuan.languages.remove, click() { @@ -782,6 +817,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { } if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "paste", label: window.siyuan.languages.paste, icon: "iconPaste", accelerator: "⌘V", @@ -799,6 +835,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "pasteAsPlainText", label: window.siyuan.languages.pasteAsPlainText, accelerator: "⇧⌘V", click() { @@ -807,6 +844,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "pasteEscaped", label: window.siyuan.languages.pasteEscaped, click() { pasteEscaped(protyle, nodeElement); @@ -814,6 +852,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "selectAll", label: window.siyuan.languages.selectAll, icon: "iconSelect", accelerator: "⌘A", @@ -827,6 +866,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { const tableMenus = tableMenu(protyle, nodeElement, cellElement as HTMLTableCellElement, range); if (tableMenus.insertMenus.length > 0) { window.siyuan.menus.menu.append(new MenuItem({ + id: "separator_1", type: "separator", }).element); tableMenus.insertMenus.forEach((menuItem) => { @@ -835,6 +875,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { } if (tableMenus.removeMenus.length > 0) { window.siyuan.menus.menu.append(new MenuItem({ + id: "separator_2", type: "separator", }).element); tableMenus.removeMenus.forEach((menuItem) => { @@ -842,9 +883,11 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { }); } window.siyuan.menus.menu.append(new MenuItem({ + id: "separator_3", type: "separator", }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "more", type: "submenu", icon: "iconMore", label: window.siyuan.languages.more, @@ -1021,6 +1064,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme const html = nodeElement.outerHTML; if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "imageUrlAndTitleAndTooltipText", iconHTML: "", type: "readonly", label: `
@@ -1086,9 +1130,10 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }); } }).element); - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_1", type: "separator"}).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", label: window.siyuan.languages.copy, accelerator: "⌘C", icon: "iconCopy", @@ -1101,6 +1146,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }).element); if (protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "copyImageURL", label: window.siyuan.languages.copy + " " + window.siyuan.languages.imageURL, icon: "iconLink", click() { @@ -1109,6 +1155,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "copyAsPNG", label: window.siyuan.languages.copyAsPNG, accelerator: window.siyuan.config.keymap.editor.general.copyBlockRef.custom, icon: "iconImage", @@ -1118,6 +1165,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }).element); if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "cut", icon: "iconCut", accelerator: "⌘X", label: window.siyuan.languages.cut, @@ -1133,6 +1181,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "delete", icon: "iconTrashcan", accelerator: "⌫", label: window.siyuan.languages.delete, @@ -1143,10 +1192,11 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme focusByWbr(protyle.wysiwyg.element, range); } }).element); - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_2", type: "separator"}).element); const imagePath = imgElement.getAttribute("data-src"); if (imagePath.startsWith("assets/")) { window.siyuan.menus.menu.append(new MenuItem({ + id: "rename", label: window.siyuan.languages.rename, icon: "iconEdit", click() { @@ -1155,8 +1205,10 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "ocr", label: "OCR", submenu: [{ + id: "ocrResult", iconHTML: "", type: "readonly", label: ``, @@ -1173,6 +1225,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }, { type: "separator" }, { + id: "reOCR", iconHTML: "", label: window.siyuan.languages.reOCR, click() { @@ -1184,6 +1237,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }], }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "alignCenter", icon: "iconAlignCenter", label: window.siyuan.languages.alignCenter, accelerator: window.siyuan.config.keymap.editor.general.alignCenter.custom, @@ -1192,6 +1246,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "alignLeft", icon: "iconAlignLeft", label: window.siyuan.languages.alignLeft, accelerator: window.siyuan.config.keymap.editor.general.alignLeft.custom, @@ -1201,8 +1256,10 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }).element); let rangeElement: HTMLInputElement; window.siyuan.menus.menu.append(new MenuItem({ + id: "width", label: window.siyuan.languages.width, submenu: [{ + id: "widthInput", iconHTML: "", type: "readonly", label: `
@@ -1235,8 +1292,10 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme genImageWidthMenu("67%", imgElement, protyle, id, nodeElement, html), genImageWidthMenu("75%", imgElement, protyle, id, nodeElement, html), genImageWidthMenu("100%", imgElement, protyle, id, nodeElement, html), { + id: "separator_1", type: "separator", }, { + id: "widthDrag", iconHTML: "", type: "readonly", label: `
@@ -1258,6 +1317,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }); } }, { + id: "separator_2", type: "separator", }, genImageWidthMenu(window.siyuan.languages.default, imgElement, protyle, id, nodeElement, html), @@ -1265,8 +1325,10 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }).element); let rangeHeightElement: HTMLInputElement; window.siyuan.menus.menu.append(new MenuItem({ + id: "height", label: window.siyuan.languages.height, submenu: [{ + id: "heightInput", iconHTML: "", type: "readonly", label: `
@@ -1299,8 +1361,10 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme genImageHeightMenu("67%", imgElement, protyle, id, nodeElement, html), genImageHeightMenu("75%", imgElement, protyle, id, nodeElement, html), genImageHeightMenu("100%", imgElement, protyle, id, nodeElement, html), { + id: "separator_1", type: "separator", }, { + id: "heightDrag", iconHTML: "", type: "readonly", label: `
@@ -1322,6 +1386,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme }); } }, { + id: "separator_2", type: "separator", }, genImageHeightMenu(window.siyuan.languages.default, imgElement, protyle, id, nodeElement, html), @@ -1330,7 +1395,7 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme } const imgSrc = imgElement.getAttribute("src"); if (imgSrc) { - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_3", type: "separator"}).element); openMenu(protyle.app, imgSrc, false, false); } const dataSrc = imgElement.getAttribute("data-src"); @@ -1388,6 +1453,7 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText let inputElements: NodeListOf; if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "linkAndAnchorAndTitle", iconHTML: "", type: "readonly", label: `
@@ -1499,9 +1565,10 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText }); } }).element); - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_1", type: "separator"}).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", click() { @@ -1513,6 +1580,7 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText }).element); if (protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "copyAHref", label: window.siyuan.languages.copy + " " + window.siyuan.languages.replaceTypes.aHref, icon: "iconLink", click() { @@ -1522,6 +1590,7 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText } if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "cut", icon: "iconCut", label: window.siyuan.languages.cut, click() { @@ -1532,6 +1601,7 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "remove", icon: "iconTrashcan", label: window.siyuan.languages.remove, click() { @@ -1545,6 +1615,7 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText }).element); if (linkAddress?.startsWith("assets/")) { window.siyuan.menus.menu.append(new MenuItem({ + id: "rename", label: window.siyuan.languages.rename, icon: "iconEdit", click() { @@ -1554,6 +1625,7 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText } if (linkAddress?.startsWith("siyuan://blocks/")) { window.siyuan.menus.menu.append(new MenuItem({ + id: "turnIntoRef", label: `${window.siyuan.languages.turnInto} ${window.siyuan.languages.ref}`, icon: "iconRef", click() { @@ -1577,6 +1649,7 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "turnIntoText", label: `${window.siyuan.languages.turnInto} ${window.siyuan.languages.text}`, icon: "iconRefresh", click() { @@ -1591,7 +1664,7 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText } if (linkAddress) { - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_2", type: "separator"}).element); openMenu(protyle.app, linkAddress, false, true); if (linkAddress?.startsWith("assets/")) { window.siyuan.menus.menu.append(new MenuItem(exportAsset(linkAddress)).element); @@ -1659,6 +1732,7 @@ export const tagMenu = (protyle: IProtyle, tagElement: HTMLElement) => { const id = nodeElement.getAttribute("data-node-id"); let html = nodeElement.outerHTML; window.siyuan.menus.menu.append(new MenuItem({ + id: "tag", iconHTML: "", type: "readonly", label: ``, @@ -1701,9 +1775,10 @@ export const tagMenu = (protyle: IProtyle, tagElement: HTMLElement) => { }); } }).element); - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_1", type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "search", label: window.siyuan.languages.search, accelerator: window.siyuan.languages.click, icon: "iconSearch", @@ -1724,14 +1799,16 @@ export const tagMenu = (protyle: IProtyle, tagElement: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "rename", label: window.siyuan.languages.rename, icon: "iconEdit", click() { renameTag(tagElement.textContent.replace(Constants.ZWSP, "")); } }).element); - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_2", type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "turnIntoText", label: `${window.siyuan.languages.turnInto} ${window.siyuan.languages.text}`, icon: "iconRefresh", click() { @@ -1741,6 +1818,7 @@ export const tagMenu = (protyle: IProtyle, tagElement: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", click() { @@ -1751,6 +1829,7 @@ export const tagMenu = (protyle: IProtyle, tagElement: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "cut", label: window.siyuan.languages.cut, icon: "iconCut", click() { @@ -1761,6 +1840,7 @@ export const tagMenu = (protyle: IProtyle, tagElement: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "remove", icon: "iconTrashcan", label: window.siyuan.languages.remove, click() { @@ -1805,6 +1885,7 @@ export const inlineMathMenu = (protyle: IProtyle, element: Element) => { const id = nodeElement.getAttribute("data-node-id"); const html = nodeElement.outerHTML; window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", click() { @@ -1816,6 +1897,7 @@ export const inlineMathMenu = (protyle: IProtyle, element: Element) => { }).element); if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "cut", icon: "iconCut", label: window.siyuan.languages.cut, click() { @@ -1826,6 +1908,7 @@ export const inlineMathMenu = (protyle: IProtyle, element: Element) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "remove", icon: "iconTrashcan", label: window.siyuan.languages.remove, click() { @@ -1847,6 +1930,7 @@ export const inlineMathMenu = (protyle: IProtyle, element: Element) => { const genImageWidthMenu = (label: string, imgElement: HTMLElement, protyle: IProtyle, id: string, nodeElement: HTMLElement, html: string) => { return { + id: label === window.siyuan.languages.default ? "default" : "width_" + label, iconHTML: "", label, click() { @@ -1862,6 +1946,7 @@ const genImageWidthMenu = (label: string, imgElement: HTMLElement, protyle: IPro const genImageHeightMenu = (label: string, imgElement: HTMLElement, protyle: IProtyle, id: string, nodeElement: HTMLElement, html: string) => { return { + id: label === window.siyuan.languages.default ? "default" : "width_" + label, iconHTML: "", label, click() { @@ -1998,6 +2083,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: const colIndex = getColIndex(cellElement); if (cellElement.rowSpan > 1 || cellElement.colSpan > 1) { otherMenus.push({ + id: "cancelMerged", label: window.siyuan.languages.cancelMerged, click: () => { const oldHTML = nodeElement.outerHTML; @@ -2048,6 +2134,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: const thMatchElement = nodeElement.querySelectorAll("col")[colIndex]; if (thMatchElement.style.width || thMatchElement.style.minWidth) { otherMenus.push({ + id: "useDefaultWidth", label: window.siyuan.languages.useDefaultWidth, click: () => { const html = nodeElement.outerHTML; @@ -2059,6 +2146,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: } const isPinHead = nodeElement.getAttribute("custom-pinthead"); otherMenus.push({ + id: isPinHead ? "unpinTableHead" : "pinTableHead", icon: isPinHead ? "iconUnpin" : "iconPin", label: isPinHead ? window.siyuan.languages.unpinTableHead : window.siyuan.languages.pinTableHead, click: () => { @@ -2071,8 +2159,9 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: updateTransaction(protyle, nodeElement.getAttribute("data-node-id"), nodeElement.outerHTML, html); } }); - otherMenus.push({type: "separator"}); + otherMenus.push({id: "separator_1", type: "separator"}); otherMenus.push({ + id: "alignLeft", icon: "iconAlignLeft", accelerator: window.siyuan.config.keymap.editor.general.alignLeft.custom, label: window.siyuan.languages.alignLeft, @@ -2081,6 +2170,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: } }); otherMenus.push({ + id: "alignCenter", icon: "iconAlignCenter", label: window.siyuan.languages.alignCenter, accelerator: window.siyuan.config.keymap.editor.general.alignCenter.custom, @@ -2089,6 +2179,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: } }); otherMenus.push({ + id: "alignRight", icon: "iconAlignRight", label: window.siyuan.languages.alignRight, accelerator: window.siyuan.config.keymap.editor.general.alignRight.custom, @@ -2097,6 +2188,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: } }); otherMenus.push({ + id: "useDefaultAlign", icon: "", label: window.siyuan.languages.useDefaultAlign, click: () => { @@ -2182,6 +2274,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: }); const insertMenus = []; insertMenus.push({ + id: "insertRowAbove", icon: "iconBefore", label: window.siyuan.languages.insertRowAbove, accelerator: window.siyuan.config.keymap.editor.table.insertRowAbove.custom, @@ -2191,6 +2284,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: }); if (!nextHasNone || (nextHasNone && !nextHasRowSpan && nextHasColSpan)) { insertMenus.push({ + id: "insertRowBelow", icon: "iconAfter", label: window.siyuan.languages.insertRowBelow, accelerator: window.siyuan.config.keymap.editor.table.insertRowBelow.custom, @@ -2201,6 +2295,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: } if (colIsPure || previousColIsPure) { insertMenus.push({ + id: "insertColumnLeft", icon: "iconInsertLeft", label: window.siyuan.languages.insertColumnLeft, accelerator: window.siyuan.config.keymap.editor.table.insertColumnLeft.custom, @@ -2211,6 +2306,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: } if (colIsPure || nextColIsPure) { insertMenus.push({ + id: "insertColumnRight", icon: "iconInsertRight", label: window.siyuan.languages.insertColumnRight, accelerator: window.siyuan.config.keymap.editor.table.insertColumnRight.custom, @@ -2229,6 +2325,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: (colIsPure && nextColIsPure) ) { other2Menus.push({ + id: "separator_2", type: "separator" }); } @@ -2236,6 +2333,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: if ((!hasNone || (hasNone && !hasRowSpan && hasColSpan)) && (!previousHasNone || (previousHasNone && !previousHasRowSpan && previousHasColSpan))) { other2Menus.push({ + id: "moveToUp", icon: "iconUp", label: window.siyuan.languages.moveToUp, accelerator: window.siyuan.config.keymap.editor.table.moveToUp.custom, @@ -2247,6 +2345,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: if ((!hasNone || (hasNone && !hasRowSpan && hasColSpan)) && (!nextHasNone || (nextHasNone && !nextHasRowSpan && nextHasColSpan))) { other2Menus.push({ + id: "moveToDown", icon: "iconDown", label: window.siyuan.languages.moveToDown, accelerator: window.siyuan.config.keymap.editor.table.moveToDown.custom, @@ -2257,6 +2356,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: } if (colIsPure && previousColIsPure) { other2Menus.push({ + id: "moveToLeft", icon: "iconLeft", label: window.siyuan.languages.moveToLeft, accelerator: window.siyuan.config.keymap.editor.table.moveToLeft.custom, @@ -2267,6 +2367,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: } if (colIsPure && nextColIsPure) { other2Menus.push({ + id: "moveToRight", icon: "iconRight", label: window.siyuan.languages.moveToRight, accelerator: window.siyuan.config.keymap.editor.table.moveToRight.custom, @@ -2286,6 +2387,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: if (cellElement.parentElement.parentElement.tagName !== "THEAD" && ((!hasNone && !hasRowSpan) || (hasNone && !hasRowSpan && hasColSpan))) { removeMenus.push({ + id: "deleteRow", icon: "iconDeleteRow", label: window.siyuan.languages["delete-row"], accelerator: window.siyuan.config.keymap.editor.table["delete-row"].custom, @@ -2296,6 +2398,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement: } if (colIsPure) { removeMenus.push({ + id: "deleteColumn", icon: "iconDeleteColumn", label: window.siyuan.languages["delete-column"], accelerator: window.siyuan.config.keymap.editor.table["delete-column"].custom, diff --git a/app/src/menus/search.ts b/app/src/menus/search.ts index 3d6c53e87..38e9041af 100644 --- a/app/src/menus/search.ts +++ b/app/src/menus/search.ts @@ -4,6 +4,7 @@ import {copySubMenu} from "./commonMenuItem"; export const initSearchMenu = (id: string) => { window.siyuan.menus.menu.remove(); window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", label: window.siyuan.languages.copy, type: "submenu", submenu: copySubMenu([id]) diff --git a/app/src/menus/text.ts b/app/src/menus/text.ts index 07cbe0f47..4c3593d50 100644 --- a/app/src/menus/text.ts +++ b/app/src/menus/text.ts @@ -6,6 +6,7 @@ export const textMenu = (target: Element) => { return; } menu.addItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", click() { @@ -20,6 +21,7 @@ export const textMenu = (target: Element) => { } }); menu.addItem({ + id: "selectAll", label: window.siyuan.languages.selectAll, icon: "iconSelect", click() { diff --git a/app/src/menus/util.ts b/app/src/menus/util.ts index 106566287..83c9a96d9 100644 --- a/app/src/menus/util.ts +++ b/app/src/menus/util.ts @@ -14,6 +14,7 @@ import {checkFold} from "../util/noRelyPCFunction"; export const exportAsset = (src: string) => { return { + id: "export", label: window.siyuan.languages.export, icon: "iconUpload", async click() { diff --git a/app/src/plugin/Menu.ts b/app/src/plugin/Menu.ts index 96a67e59c..cc8db5e34 100644 --- a/app/src/plugin/Menu.ts +++ b/app/src/plugin/Menu.ts @@ -34,13 +34,16 @@ export class Menu { return this.menu.addItem(option); } - addSeparator(index?: number, ignore = false) { + addSeparator(index?: number, ignore = false, id?: string) { if (ignore) { return; } if (this.isOpen) { return; } + if (id) { + return this.menu.addSeparator(index, id); + } return this.menu.addSeparator(index); } diff --git a/app/src/protyle/gutter/index.ts b/app/src/protyle/gutter/index.ts index 78ad2c56f..a933864e5 100644 --- a/app/src/protyle/gutter/index.ts +++ b/app/src/protyle/gutter/index.ts @@ -2160,7 +2160,7 @@ export class Gutter { }); const width = firstElement.style.width.endsWith("%") ? parseInt(firstElement.style.width) : 0; window.siyuan.menus.menu.append(new MenuItem({ - id: "widthDrag", + id: "width", label: window.siyuan.languages.width, submenu: styles.concat([{ id: "widthDrag", diff --git a/app/src/protyle/header/Title.ts b/app/src/protyle/header/Title.ts index ec887df76..56f16e433 100644 --- a/app/src/protyle/header/Title.ts +++ b/app/src/protyle/header/Title.ts @@ -195,6 +195,7 @@ export class Title { const range = getEditorRange(this.editElement); if (range.toString() !== "") { window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", icon: "iconCopy", accelerator: "⌘C", label: window.siyuan.languages.copy, @@ -204,6 +205,7 @@ export class Title { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "cut", icon: "iconCut", accelerator: "⌘X", label: window.siyuan.languages.cut, @@ -216,6 +218,7 @@ export class Title { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "delete", icon: "iconTrashcan", accelerator: "⌫", label: window.siyuan.languages.delete, @@ -230,6 +233,7 @@ export class Title { }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "paste", label: window.siyuan.languages.paste, icon: "iconPaste", accelerator: "⌘V", @@ -249,6 +253,7 @@ export class Title { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "pasteAsPlainText", label: window.siyuan.languages.pasteAsPlainText, accelerator: "⇧⌘V", click: async () => { @@ -265,6 +270,7 @@ export class Title { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "selectAll", label: window.siyuan.languages.selectAll, icon: "iconSelect", accelerator: "⌘A", diff --git a/app/src/protyle/render/av/action.ts b/app/src/protyle/render/av/action.ts index 22ad57d9d..3b985ceec 100644 --- a/app/src/protyle/render/av/action.ts +++ b/app/src/protyle/render/av/action.ts @@ -287,6 +287,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi const openSubmenus = openEditorTab(protyle.app, [blockId], undefined, undefined, true); openSubmenus.push({id: "separator_3", type: "separator"}); openSubmenus.push({ + id: "attr", icon: "iconAttr", label: window.siyuan.languages.attr, click: () => { @@ -310,6 +311,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi } }); const copyMenu: IMenu[] = [{ + id: "copyKeyContent", iconHTML: "", label: window.siyuan.languages.copyKeyContent, click() { @@ -474,6 +476,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi } menu.addItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", type: "submenu", @@ -481,6 +484,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi }); if (!protyle.disabled) { menu.addItem({ + id: "addToDatabase", label: window.siyuan.languages.addToDatabase, icon: "iconDatabase", click() { @@ -518,9 +522,10 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi }); if (rowElements.length === 1) { if (keyCellElement.getAttribute("data-detached") !== "true") { - menu.addSeparator(); + menu.addSeparator(undefined, undefined, "1"); } menu.addItem({ + id: "insertRowBefore", icon: "iconBefore", label: `
${window.siyuan.languages.insertRowBefore.replace("${x}", ``)} @@ -543,6 +548,7 @@ ${window.siyuan.languages.insertRowBefore.replace("${x}", ` ${window.siyuan.languages.insertRowAfter.replace("${x}", ``)} @@ -564,9 +570,10 @@ ${window.siyuan.languages.insertRowAfter.replace("${x}", ` @@ -243,8 +244,9 @@ export const editAssetItem = (options: { }); } }); - menu.addSeparator(); + menu.addSeparator(undefined, undefined, "1"); menu.addItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", click() { @@ -253,6 +255,7 @@ export const editAssetItem = (options: { }); } else { menu.addItem({ + id: "link", iconHTML: "", type: "readonly", label: `
@@ -277,8 +280,9 @@ export const editAssetItem = (options: { }); } }); - menu.addSeparator(); + menu.addSeparator(undefined, undefined, "1"); menu.addItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", click() { @@ -286,6 +290,7 @@ export const editAssetItem = (options: { } }); menu.addItem({ + id: "copyAsPNG", label: window.siyuan.languages.copyAsPNG, icon: "iconImage", click() { @@ -294,6 +299,7 @@ export const editAssetItem = (options: { }); } menu.addItem({ + id: "delete", icon: "iconTrashcan", label: window.siyuan.languages.delete, click() { @@ -307,6 +313,7 @@ export const editAssetItem = (options: { }); if (linkAddress?.startsWith("assets/")) { menu.addItem({ + id: "rename", label: window.siyuan.languages.rename, icon: "iconEdit", click() { @@ -317,10 +324,11 @@ export const editAssetItem = (options: { } const openSubMenu = openMenu(options.protyle ? options.protyle.app : window.siyuan.ws.app, linkAddress, true, false); if (type !== "file" || openSubMenu.length > 0) { - menu.addSeparator(); + menu.addSeparator(undefined, undefined, "2"); } if (type !== "file") { menu.addItem({ + id: "cardPreview", icon: "iconPreview", label: window.siyuan.languages.cardPreview, click() { @@ -330,6 +338,7 @@ export const editAssetItem = (options: { } if (openSubMenu.length > 0) { window.siyuan.menus.menu.append(new MenuItem({ + id: "openBy", label: window.siyuan.languages.openBy, icon: "iconOpen", submenu: openSubMenu diff --git a/app/src/protyle/render/av/col.ts b/app/src/protyle/render/av/col.ts index cd97f4c98..138056040 100644 --- a/app/src/protyle/render/av/col.ts +++ b/app/src/protyle/render/av/col.ts @@ -86,7 +86,7 @@ export const getEditHTML = (options: { ${window.siyuan.languages.edit} - + `; if (["mSelect", "select"].includes(colData.type)) { - html += ` + html += ` `; }); } else if (colData.type === "number") { - html += ` + html += ` `; } else if (colData.type === "template") { - html += ` + html += ` `; } else if (colData.type === "relation") { const isSelf = colData.relation?.avID === options.data.id; - html += ` + html += `
`; } else if (colData.type === "rollup") { - html += '' + getRollupHTML({colData}); + html += '' + getRollupHTML({colData}); } else if (colData.type === "date") { - html += ` + html += ` `; } if (colData.type !== "block") { - html += ` + html += ` -