From 8b0d10bbd462e15e7100a3f65b33b37cf9e928d3 Mon Sep 17 00:00:00 2001 From: Jeffrey Chen <78434827+TCOTC@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:18:52 +0800 Subject: [PATCH] Add `data-id` attribute to the button of the doc menu #12518 (#12608) * Add `data-id` attribute to the button of the common MenuItem * Add `data-id` attribute to the button of the common Menu Item * Add `data-id` attribute to the button of the common Menu Item * Add `data-id` attribute to the button of the common Menu Item * Add `data-id` attribute to the button of the doc tree menu * rename * openBy * sort menu * riff Card Menu --- app/src/menus/commonMenuItem.ts | 21 +++++++ app/src/menus/navigation.ts | 78 +++++++++++++++++++++---- app/src/menus/util.ts | 11 +++- app/src/plugin/EventBus.ts | 5 +- app/src/protyle/header/openTitleMenu.ts | 27 +++++++-- 5 files changed, 122 insertions(+), 20 deletions(-) diff --git a/app/src/menus/commonMenuItem.ts b/app/src/menus/commonMenuItem.ts index 678ea3e4c..cc2468ae7 100644 --- a/app/src/menus/commonMenuItem.ts +++ b/app/src/menus/commonMenuItem.ts @@ -447,10 +447,12 @@ export const copySubMenu = (id: string, accelerator = true, focusElement?: Eleme export const exportMd = (id: string) => { return new MenuItem({ + id: "export", label: window.siyuan.languages.export, type: "submenu", icon: "iconUpload", submenu: [{ + id: "exportTemplate", label: window.siyuan.languages.template, iconClass: "ft__error", icon: "iconMarkdown", @@ -520,6 +522,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportMarkdown", label: "Markdown", icon: "iconMarkdown", click: () => { @@ -532,6 +535,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportSiYuanZip", label: "SiYuan .sy.zip", icon: "iconSiYuan", click: () => { @@ -544,6 +548,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportImage", label: window.siyuan.languages.image, icon: "iconImage", click: () => { @@ -552,12 +557,14 @@ export const exportMd = (id: string) => { }, /// #if !BROWSER { + id: "exportPDF", label: "PDF", icon: "iconPDF", click: () => { saveExport({type: "pdf", id}); } }, { + id: "exportHTML_SiYuan", label: "HTML (SiYuan)", iconClass: "ft__error", icon: "iconHTML5", @@ -565,22 +572,26 @@ export const exportMd = (id: string) => { saveExport({type: "html", id}); } }, { + id: "exportHTML_Markdown", label: "HTML (Markdown)", icon: "iconHTML5", click: () => { saveExport({type: "htmlmd", id}); } }, { + id: "exportWord", label: "Word .docx", icon: "iconExact", click: () => { saveExport({type: "word", id}); } }, { + id: "exportMore", label: window.siyuan.languages.more, icon: "iconMore", type: "submenu", submenu: [{ + id: "exportReStructuredText", label: "reStructuredText", click: () => { const msgId = showMessage(window.siyuan.languages.exporting, -1); @@ -592,6 +603,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportAsciiDoc", label: "AsciiDoc", click: () => { const msgId = showMessage(window.siyuan.languages.exporting, -1); @@ -603,6 +615,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportTextile", label: "Textile", click: () => { const msgId = showMessage(window.siyuan.languages.exporting, -1); @@ -614,6 +627,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportOPML", label: "OPML", click: () => { const msgId = showMessage(window.siyuan.languages.exporting, -1); @@ -625,6 +639,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportOrgMode", label: "Org-Mode", click: () => { const msgId = showMessage(window.siyuan.languages.exporting, -1); @@ -636,6 +651,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportMediaWiki", label: "MediaWiki", click: () => { const msgId = showMessage(window.siyuan.languages.exporting, -1); @@ -647,6 +663,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportODT", label: "ODT", click: () => { const msgId = showMessage(window.siyuan.languages.exporting, -1); @@ -658,6 +675,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportRTF", label: "RTF", click: () => { const msgId = showMessage(window.siyuan.languages.exporting, -1); @@ -669,6 +687,7 @@ export const exportMd = (id: string) => { }); } }, { + id: "exportEPUB", label: "EPUB", click: () => { const msgId = showMessage(window.siyuan.languages.exporting, -1); @@ -814,6 +833,7 @@ export const renameMenu = (options: { type: "notebook" | "file" }) => { return new MenuItem({ + id: "rename", accelerator: window.siyuan.config.keymap.editor.general.rename.custom, icon: "iconEdit", label: window.siyuan.languages.rename, @@ -825,6 +845,7 @@ export const renameMenu = (options: { export const movePathToMenu = (paths: string[]) => { return new MenuItem({ + id: "move", label: window.siyuan.languages.move, icon: "iconMove", accelerator: window.siyuan.config.keymap.general.move.custom, diff --git a/app/src/menus/navigation.ts b/app/src/menus/navigation.ts index 3e3a65c3c..5f1c6fa7a 100644 --- a/app/src/menus/navigation.ts +++ b/app/src/menus/navigation.ts @@ -52,6 +52,7 @@ const initMultiMenu = (selectItemElements: NodeListOf, app: App) => { }); if (blockIDs.length > 0) { window.siyuan.menus.menu.append(new MenuItem({ + id: "addToDatabase", label: window.siyuan.languages.addToDatabase, accelerator: window.siyuan.config.keymap.general.addToDatabase.custom, icon: "iconDatabase", @@ -61,6 +62,7 @@ const initMultiMenu = (selectItemElements: NodeListOf, app: App) => { }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "delete", icon: "iconTrashcan", label: window.siyuan.languages.delete, accelerator: "⌦", @@ -72,9 +74,10 @@ const initMultiMenu = (selectItemElements: NodeListOf, app: App) => { if (blockIDs.length === 0) { return window.siyuan.menus.menu; } - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_1", type: "separator"}).element); if (!window.siyuan.config.readonly) { const riffCardMenu = [{ + id: "quickMakeCard", iconHTML: "", accelerator: window.siyuan.config.keymap.editor.general.quickMakeCard.custom, label: window.siyuan.languages.quickMakeCard, @@ -90,6 +93,7 @@ const initMultiMenu = (selectItemElements: NodeListOf, app: App) => { }]); } }, { + id: "removeCard", iconHTML: "", label: window.siyuan.languages.removeCard, click: () => { @@ -106,6 +110,7 @@ const initMultiMenu = (selectItemElements: NodeListOf, app: App) => { }]; if (window.siyuan.config.flashcard.deck) { riffCardMenu.push({ + id: "addToDeck", iconHTML: "", label: window.siyuan.languages.addToDeck, click: () => { @@ -114,11 +119,12 @@ const initMultiMenu = (selectItemElements: NodeListOf, app: App) => { }); } window.siyuan.menus.menu.append(new MenuItem({ + id: "riffCard", label: window.siyuan.languages.riffCard, icon: "iconRiffCard", submenu: riffCardMenu, }).element); - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_2", type: "separator"}).element); } openEditorTab(app, blockIDs); if (app.plugins) { @@ -163,6 +169,7 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { type: "notebook" })); window.siyuan.menus.menu.append(new MenuItem({ + id: "config", label: window.siyuan.languages.config, icon: "iconSettings", click: () => { @@ -197,6 +204,7 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { return true; }); window.siyuan.menus.menu.append(new MenuItem({ + id: "sort", icon: "iconSort", label: window.siyuan.languages.sort, type: "submenu", @@ -205,10 +213,12 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { } if (!window.siyuan.config.readonly) { window.siyuan.menus.menu.append(new MenuItem({ + id: "riffCard", label: window.siyuan.languages.riffCard, type: "submenu", icon: "iconRiffCard", submenu: [{ + id: "spaceRepetition", iconHTML: "", label: window.siyuan.languages.spaceRepetition, accelerator: window.siyuan.config.keymap.editor.general.spaceRepetition.custom, @@ -221,6 +231,7 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { /// #endif } }, { + id: "manage", iconHTML: "", label: window.siyuan.languages.manage, click: () => { @@ -233,6 +244,7 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "search", label: window.siyuan.languages.search, accelerator: window.siyuan.config.keymap.general.search.custom, icon: "iconSearch", @@ -255,6 +267,7 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { }).element); if (!window.siyuan.config.readonly) { window.siyuan.menus.menu.append(new MenuItem({ + id: "replace", label: window.siyuan.languages.replace, accelerator: window.siyuan.config.keymap.general.replace.custom, icon: "iconReplace", @@ -277,8 +290,9 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { }).element); } if (!window.siyuan.config.readonly) { - 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: "close", label: window.siyuan.languages.close, icon: "iconClose", click: () => { @@ -288,6 +302,7 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "delete", icon: "iconTrashcan", label: window.siyuan.languages.delete, accelerator: "⌦", @@ -296,9 +311,10 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { } }).element); } - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_2", type: "separator"}).element); /// #if !BROWSER window.siyuan.menus.menu.append(new MenuItem({ + id: "showInFolder", icon: "iconFolder", label: window.siyuan.languages.showInFolder, click: () => { @@ -309,10 +325,12 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { genImportMenu(notebookId, "/"); window.siyuan.menus.menu.append(new MenuItem({ + id: "export", label: window.siyuan.languages.export, type: "submenu", icon: "iconUpload", submenu: [{ + id: "exportMarkdown", label: "Markdown", icon: "iconMarkdown", click: () => { @@ -326,6 +344,7 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => { }); } }, { + id: "exportSiYuanZip", label: "SiYuan .sy.zip", icon: "iconSiYuan", click: () => { @@ -378,6 +397,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l const topElement = hasTopClosestByTag(liElement, "UL"); if (window.siyuan.config.fileTree.sort === 6 || (topElement && topElement.dataset.sortmode === "6")) { window.siyuan.menus.menu.append(new MenuItem({ + id: "newDocAbove", icon: "iconBefore", label: window.siyuan.languages.newDocAbove, click: () => { @@ -400,6 +420,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "newDocBelow", icon: "iconAfter", label: window.siyuan.languages.newDocBelow, click: () => { @@ -421,13 +442,15 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l }); } }).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, type: "submenu", icon: "iconCopy", submenu: (copySubMenu(id, false) as IMenu[]).concat([{ + id: "duplicate", iconHTML: "", label: window.siyuan.languages.duplicate, accelerator: window.siyuan.config.keymap.editor.general.duplicate.custom, @@ -442,6 +465,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l Array.from(fileElement.querySelectorAll(".b3-list-item--focus")) ))); window.siyuan.menus.menu.append(new MenuItem({ + id: "addToDatabase", label: window.siyuan.languages.addToDatabase, accelerator: window.siyuan.config.keymap.general.addToDatabase.custom, icon: "iconDatabase", @@ -450,6 +474,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "delete", icon: "iconTrashcan", label: window.siyuan.languages.delete, accelerator: "⌦", @@ -457,7 +482,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l deleteFiles(Array.from(fileElement.querySelectorAll(".b3-list-item--focus"))); } }).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(renameMenu({ path: pathString, notebookId, @@ -465,6 +490,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l type: "file" })); window.siyuan.menus.menu.append(new MenuItem({ + id: "attr", label: window.siyuan.languages.attr, icon: "iconAttr", click() { @@ -477,6 +503,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l }).element); if (!window.siyuan.config.readonly) { const riffCardMenu = [{ + id: "spaceRepetition", iconHTML: "", label: window.siyuan.languages.spaceRepetition, accelerator: window.siyuan.config.keymap.editor.general.spaceRepetition.custom, @@ -489,6 +516,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l /// #endif } }, { + id: "manage", iconHTML: "", label: window.siyuan.languages.manage, click: () => { @@ -502,6 +530,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l /// #endif } }, { + id: "quickMakeCard", iconHTML: "", accelerator: window.siyuan.config.keymap.editor.general.quickMakeCard.custom, label: window.siyuan.languages.quickMakeCard, @@ -517,6 +546,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l }]); } }, { + id: "removeCard", iconHTML: "", label: window.siyuan.languages.removeCard, click: () => { @@ -533,6 +563,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l }]; if (window.siyuan.config.flashcard.deck) { riffCardMenu.push({ + id: "addToDeck", iconHTML: "", label: window.siyuan.languages.addToDeck, click: () => { @@ -541,6 +572,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l }); } window.siyuan.menus.menu.append(new MenuItem({ + id: "riffCard", label: window.siyuan.languages.riffCard, type: "submenu", icon: "iconRiffCard", @@ -548,6 +580,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "search", label: window.siyuan.languages.search, icon: "iconSearch", accelerator: window.siyuan.config.keymap.general.search.custom, @@ -575,6 +608,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "replace", label: window.siyuan.languages.replace, accelerator: window.siyuan.config.keymap.general.replace.custom, icon: "iconReplace", @@ -601,11 +635,12 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l /// #endif } }).element); - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_3", type: "separator"}).element); } openEditorTab(app, [id], notebookId, pathString); if (!window.siyuan.config.readonly) { window.siyuan.menus.menu.append(new MenuItem({ + id: "fileHistory", label: window.siyuan.languages.fileHistory, icon: "iconHistory", click() { @@ -652,6 +687,7 @@ export const genImportMenu = (notebookId: string, pathString: string) => { /// #if !BROWSER const importstdmd = (label: string, isDoc?: boolean) => { return { + id: isDoc ? "importMarkdownDoc" : "importMarkdownFolder", icon: isDoc ? "iconMarkdown" : "iconFolder", label, click: async () => { @@ -680,9 +716,11 @@ export const genImportMenu = (notebookId: string, pathString: string) => { }; /// #endif window.siyuan.menus.menu.append(new MenuItem({ + id: "import", icon: "iconDownload", label: window.siyuan.languages.import, submenu: [{ + id: "importSiYuanZip", icon: "iconSiYuan", label: 'SiYuan .sy.zip', bind: (element) => { @@ -709,90 +747,105 @@ export const genImportMenu = (notebookId: string, pathString: string) => { export const sortMenu = (type: "notebooks" | "notebook", sortMode: number, clickEvent: (sort: number) => void) => { const sortMenu: IMenu[] = [{ + id: "fileNameASC", icon: sortMode === 0 ? "iconSelect" : undefined, label: window.siyuan.languages.fileNameASC, click: () => { clickEvent(0); } }, { + id: "fileNameDESC", icon: sortMode === 1 ? "iconSelect" : undefined, label: window.siyuan.languages.fileNameDESC, click: () => { clickEvent(1); } }, { + id: "fileNameNatASC", icon: sortMode === 4 ? "iconSelect" : undefined, label: window.siyuan.languages.fileNameNatASC, click: () => { clickEvent(4); } }, { + id: "fileNameNatDESC", icon: sortMode === 5 ? "iconSelect" : undefined, label: window.siyuan.languages.fileNameNatDESC, click: () => { clickEvent(5); } - }, {type: "separator"}, { + }, {id: "separator_1", type: "separator"}, { + id: "createdASC", icon: sortMode === 9 ? "iconSelect" : undefined, label: window.siyuan.languages.createdASC, click: () => { clickEvent(9); } }, { + id: "createdDESC", icon: sortMode === 10 ? "iconSelect" : undefined, label: window.siyuan.languages.createdDESC, click: () => { clickEvent(10); } }, { + id: "modifiedASC", icon: sortMode === 2 ? "iconSelect" : undefined, label: window.siyuan.languages.modifiedASC, click: () => { clickEvent(2); } }, { + id: "modifiedDESC", icon: sortMode === 3 ? "iconSelect" : undefined, label: window.siyuan.languages.modifiedDESC, click: () => { clickEvent(3); } - }, {type: "separator"}, { + }, {id: "separator_2", type: "separator"}, { + id: "refCountASC", icon: sortMode === 7 ? "iconSelect" : undefined, label: window.siyuan.languages.refCountASC, click: () => { clickEvent(7); } }, { + id: "refCountDESC", icon: sortMode === 8 ? "iconSelect" : undefined, label: window.siyuan.languages.refCountDESC, click: () => { clickEvent(8); } - }, {type: "separator"}, { + }, {id: "separator_3", type: "separator"}, { + id: "docSizeASC", icon: sortMode === 11 ? "iconSelect" : undefined, label: window.siyuan.languages.docSizeASC, click: () => { clickEvent(11); } }, { + id: "docSizeDESC", icon: sortMode === 12 ? "iconSelect" : undefined, label: window.siyuan.languages.docSizeDESC, click: () => { clickEvent(12); } - }, {type: "separator"}, { + }, {id: "separator_4", type: "separator"}, { + id: "subDocCountASC", icon: sortMode === 13 ? "iconSelect" : undefined, label: window.siyuan.languages.subDocCountASC, click: () => { clickEvent(13); } }, { + id: "subDocCountDESC", icon: sortMode === 14 ? "iconSelect" : undefined, label: window.siyuan.languages.subDocCountDESC, click: () => { clickEvent(14); } - }, {type: "separator"}, { + }, {id: "separator_5", type: "separator"}, { + id: "customSort", icon: sortMode === 6 ? "iconSelect" : undefined, label: window.siyuan.languages.customSort, click: () => { @@ -801,6 +854,7 @@ export const sortMenu = (type: "notebooks" | "notebook", sortMode: number, click }]; if (type === "notebook") { sortMenu.push({ + id: "sortByFiletree", icon: sortMode === 15 ? "iconSelect" : undefined, label: window.siyuan.languages.sortByFiletree, click: () => { diff --git a/app/src/menus/util.ts b/app/src/menus/util.ts index 69ffd579b..1713c6bed 100644 --- a/app/src/menus/util.ts +++ b/app/src/menus/util.ts @@ -36,6 +36,7 @@ export const exportAsset = (src: string) => { export const openEditorTab = (app: App, ids: string[], notebookId?: string, pathString?: string) => { /// #if !MOBILE const openSubmenus: IMenu[] = [{ + id: "insertRight", icon: "iconLayoutRight", label: window.siyuan.languages.insertRight, accelerator: ids.length === 1 ? `${updateHotkeyTip(window.siyuan.config.keymap.editor.general.insertRight.custom)}/${updateHotkeyTip("⌥" + window.siyuan.languages.click)}` : undefined, @@ -62,6 +63,7 @@ export const openEditorTab = (app: App, ids: string[], notebookId?: string, path } } }, { + id: "insertBottom", icon: "iconLayoutBottom", label: window.siyuan.languages.insertBottom, accelerator: ids.length === 1 ? "⇧" + window.siyuan.languages.click : "", @@ -90,6 +92,7 @@ export const openEditorTab = (app: App, ids: string[], notebookId?: string, path }]; if (window.siyuan.config.fileTree.openFilesUseCurrentTab) { openSubmenus.push({ + id: "openInNewTab", label: window.siyuan.languages.openInNewTab, accelerator: ids.length === 1 ? "⌥⌘" + window.siyuan.languages.click : undefined, click: () => { @@ -118,6 +121,7 @@ export const openEditorTab = (app: App, ids: string[], notebookId?: string, path } /// #if !BROWSER openSubmenus.push({ + id: "openByNewWindow", label: window.siyuan.languages.openByNewWindow, icon: "iconOpenWindow", click() { @@ -127,8 +131,9 @@ export const openEditorTab = (app: App, ids: string[], notebookId?: string, path } }); /// #endif - openSubmenus.push({type: "separator"}); + openSubmenus.push({id: "separator_1", type: "separator"}); openSubmenus.push({ + id: "preview", icon: "iconPreview", label: window.siyuan.languages.preview, click: () => { @@ -138,8 +143,9 @@ export const openEditorTab = (app: App, ids: string[], notebookId?: string, path } }); /// #if !BROWSER - openSubmenus.push({type: "separator"}); + openSubmenus.push({id: "separator_2", type: "separator"}); openSubmenus.push({ + id: "showInFolder", icon: "iconFolder", label: window.siyuan.languages.showInFolder, click: () => { @@ -156,6 +162,7 @@ export const openEditorTab = (app: App, ids: string[], notebookId?: string, path }); /// #endif window.siyuan.menus.menu.append(new MenuItem({ + id: "openBy", label: window.siyuan.languages.openBy, icon: "iconOpen", submenu: openSubmenus, diff --git a/app/src/plugin/EventBus.ts b/app/src/plugin/EventBus.ts index f470ada02..591d40b4a 100644 --- a/app/src/plugin/EventBus.ts +++ b/app/src/plugin/EventBus.ts @@ -40,16 +40,17 @@ export const emitOpenMenu = (options: { }); if (pluginSubMenu.menus.length > 0) { if (options.separatorPosition === "top") { - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_pluginTop", type: "separator"}).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "plugin", label: window.siyuan.languages.plugin, icon: "iconPlugin", type: "submenu", submenu: pluginSubMenu.menus, }).element); if (options.separatorPosition === "bottom") { - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_pluginBottom", type: "separator"}).element); } } }; diff --git a/app/src/protyle/header/openTitleMenu.ts b/app/src/protyle/header/openTitleMenu.ts index fa47f9ab3..8aca596e9 100644 --- a/app/src/protyle/header/openTitleMenu.ts +++ b/app/src/protyle/header/openTitleMenu.ts @@ -37,6 +37,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { window.siyuan.menus.menu.remove(); window.siyuan.menus.menu.element.setAttribute("data-name", "titleMenu"); window.siyuan.menus.menu.append(new MenuItem({ + id: "copy", label: window.siyuan.languages.copy, icon: "iconCopy", type: "submenu", @@ -46,6 +47,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { window.siyuan.menus.menu.append(movePathToMenu([protyle.path])); const range = getSelection().rangeCount > 0 ? getSelection().getRangeAt(0) : undefined; window.siyuan.menus.menu.append(new MenuItem({ + id: "addToDatabase", label: window.siyuan.languages.addToDatabase, accelerator: window.siyuan.config.keymap.general.addToDatabase.custom, icon: "iconDatabase", @@ -54,6 +56,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "delete", icon: "iconTrashcan", label: window.siyuan.languages.delete, click: () => { @@ -62,8 +65,9 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { }).element); } /// #if !MOBILE - 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: "outline", icon: "iconAlignCenter", label: window.siyuan.languages.outline, accelerator: window.siyuan.config.keymap.editor.general.outline.custom, @@ -72,6 +76,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { } }).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, @@ -86,6 +91,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { } }).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, @@ -100,8 +106,9 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { } }).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: "attr", label: window.siyuan.languages.attr, icon: "iconAttr", accelerator: window.siyuan.config.keymap.editor.general.attr.custom + "/" + updateHotkeyTip("⇧" + window.siyuan.languages.click), @@ -111,6 +118,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { }).element); if (!window.siyuan.config.readonly) { window.siyuan.menus.menu.append(new MenuItem({ + id: "wechatReminder", label: window.siyuan.languages.wechatReminder, icon: "iconMp", click() { @@ -118,6 +126,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { } }).element); const riffCardMenu: IMenu[] = [{ + id: "spaceRepetition", iconHTML: "", label: window.siyuan.languages.spaceRepetition, accelerator: window.siyuan.config.keymap.editor.general.spaceRepetition.custom, @@ -127,6 +136,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { }); } }, { + id: "manage", iconHTML: "", label: window.siyuan.languages.manage, click: () => { @@ -137,6 +147,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { }); } }, { + id: "quickMakeCard", iconHTML: "", label: window.siyuan.languages.quickMakeCard, accelerator: window.siyuan.config.keymap.editor.general.quickMakeCard.custom, @@ -152,6 +163,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { }]; if (window.siyuan.config.flashcard.deck) { riffCardMenu.push({ + id: "addToDeck", iconHTML: "", label: window.siyuan.languages.addToDeck, click: () => { @@ -160,6 +172,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { }); } window.siyuan.menus.menu.append(new MenuItem({ + id: "riffCard", label: window.siyuan.languages.riffCard, type: "submenu", icon: "iconRiffCard", @@ -167,6 +180,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { }).element); } window.siyuan.menus.menu.append(new MenuItem({ + id: "search", label: window.siyuan.languages.search, icon: "iconSearch", accelerator: window.siyuan.config.keymap.general.search.custom, @@ -196,10 +210,11 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { if (!protyle.disabled) { transferBlockRef(protyle.block.rootID); } - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_3", type: "separator"}).element); /// #if !MOBILE if (!protyle.model) { window.siyuan.menus.menu.append(new MenuItem({ + id: "openBy", label: window.siyuan.languages.openBy, icon: "iconOpen", click() { @@ -214,6 +229,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { /// #endif /// #if !BROWSER window.siyuan.menus.menu.append(new MenuItem({ + id: "openByNewWindow", label: window.siyuan.languages.openByNewWindow, icon: "iconOpenWindow", click() { @@ -221,6 +237,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { } }).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "showInFolder", icon: "iconFolder", label: window.siyuan.languages.showInFolder, click: () => { @@ -230,6 +247,7 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { /// #endif if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ + id: "fileHistory", label: window.siyuan.languages.fileHistory, icon: "iconHistory", click() { @@ -256,8 +274,9 @@ export const openTitleMenu = (protyle: IProtyle, position: IPosition) => { separatorPosition: "top", }); } - window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); + window.siyuan.menus.menu.append(new MenuItem({id: "separator_4", type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ + id: "updateAndCreatedAt", iconHTML: "", type: "readonly", // 不能换行,否则移动端间距过大