diff --git a/app/src/menus/toolbar.ts b/app/src/menus/toolbar.ts deleted file mode 100644 index 26f7a766e..000000000 --- a/app/src/menus/toolbar.ts +++ /dev/null @@ -1,38 +0,0 @@ -import {MenuItem} from "./Menu"; -import {openSetting} from "../config"; -/// #if !BROWSER -import {getCurrentWindow} from "@electron/remote"; -/// #endif -import {openHistory} from "../util/history"; - -export const initToolbarMore = () => { - window.siyuan.menus.menu.remove(); - if (!window.siyuan.config.readonly) { - window.siyuan.menus.menu.append(new MenuItem({ - icon: "iconSettings", - accelerator: window.siyuan.config.keymap.general.config.custom, - label: window.siyuan.languages.config, - click: () => { - openSetting(); - } - }).element); - } - window.siyuan.menus.menu.append(new MenuItem({ - label: window.siyuan.languages.dataHistory, - icon: "iconVideo", - accelerator: window.siyuan.config.keymap.general.history.custom, - click: () => { - openHistory(); - } - }).element); - /// #if !BROWSER - window.siyuan.menus.menu.append(new MenuItem({ - icon: "iconBug", - label: window.siyuan.languages.debug, - click: () => { - getCurrentWindow().webContents.openDevTools({mode: "bottom"}); - } - }).element); - /// #endif - return window.siyuan.menus.menu; -}; diff --git a/app/src/util/onGetConfig.ts b/app/src/util/onGetConfig.ts index 93e0ed243..62b6b01b3 100644 --- a/app/src/util/onGetConfig.ts +++ b/app/src/util/onGetConfig.ts @@ -7,7 +7,6 @@ import {getCurrentWindow} from "@electron/remote"; /// #endif import {Constants} from "../constants"; import {appearance} from "../config/appearance"; -import {initToolbarMore} from "../menus/toolbar"; import {globalShortcut} from "./globalShortcut"; import {fetchPost} from "./fetch"; import {mountHelp, newDailyNote} from "./mount"; @@ -24,6 +23,7 @@ import {openSetting} from "../config"; import {getSearch} from "./functions"; import {getAllDocks} from "../layout/getAll"; import {hasClosestByClassName} from "../protyle/util/hasClosest"; +import {openHistory} from "./history"; const matchKeymap = (keymap: Record, key1: "general" | "editor", key2?: "general" | "insert" | "heading" | "list" | "table") => { if (key1 === "general") { @@ -284,9 +284,19 @@ const initBar = () => { -
+
- + + +
+
+ + + +
+
+ +
开发版,使用前请进行备份 Development version, please backup before use
`; - document.getElementById("barBack").addEventListener("click", () => { - goBack(); - }); - document.getElementById("barForward").addEventListener("click", () => { - goForward(); - }); - document.getElementById("barMore").addEventListener("click", (event) => { - initToolbarMore().popup({x: event.clientX, y: event.clientY}); - }); - const barThemeModeElement = document.getElementById("barThemeMode"); - barThemeModeElement.addEventListener("click", () => { - if (barThemeModeElement.getAttribute("disabled")) { - return; - } - if (barThemeModeElement.classList.contains("toolbar__item--active")) { - barThemeModeElement.classList.remove("toolbar__item--active"); - barThemeModeElement.setAttribute("aria-label", window.siyuan.languages.themeDark); - } else { - barThemeModeElement.classList.add("toolbar__item--active"); - barThemeModeElement.setAttribute("aria-label", window.siyuan.languages.themeLight); - } - barThemeModeElement.setAttribute("disabled", "disabled"); - fetchPost("/api/system/setAppearanceMode", { - mode: barThemeModeElement.classList.contains("toolbar__item--active") ? 1 : 0 - }, response => { - if (window.siyuan.config.appearance.themeJS) { - exportLayout(true); - return; - } - window.siyuan.config.appearance = response.data.appearance; - barThemeModeElement.removeAttribute("disabled"); - /// #if !BROWSER - ipcRenderer.send(Constants.SIYUAN_CONFIG_THEME, response.data.mode === 1 ? "dark" : "light"); - /// #endif - loadAssets(response.data.appearance); - }); - }); - document.getElementById("toolbarVIP").addEventListener("click", () => { - const dialogSetting = openSetting(); - dialogSetting.element.querySelector('.b3-tab-bar [data-name="account"]').dispatchEvent(new CustomEvent("click")); - }); - document.getElementById("barDailyNote").addEventListener("click", (event) => { - if (getOpenNotebookCount() < 2) { - newDailyNote(); - } else { - window.siyuan.menus.menu.remove(); - window.siyuan.notebooks.forEach(item => { - if (!item.closed) { - window.siyuan.menus.menu.append(new MenuItem({ - label: item.name, - click: () => { - fetchPost("/api/filetree/createDailyNote", { - notebook: item.id - }); - window.localStorage.setItem(Constants.LOCAL_DAILYNOTEID, item.id); - } - }).element); + /// #if !BROWSER + document.querySelector("#barDebug").classList.remove("fn__none"); + /// #endif + document.querySelector(".toolbar").addEventListener("click", (event: MouseEvent) => { + let target = event.target as HTMLElement; + while (!target.classList.contains("toolbar")) { + if (target.id === "barBack") { + goBack(); + event.stopPropagation(); + break; + } else if (target.id === "barForward") { + goForward(); + event.stopPropagation(); + break; + } else if (target.id === "barHistory") { + openHistory(); + event.stopPropagation(); + break; + } else if (target.id === "barSetting") { + openSetting(); + event.stopPropagation(); + break; + } else if (target.id === "barDebug") { + /// #if !BROWSER + getCurrentWindow().webContents.openDevTools({mode: "bottom"}); + /// #endif + event.stopPropagation(); + break; + } else if (target.id === "toolbarVIP") { + const dialogSetting = openSetting(); + dialogSetting.element.querySelector('.b3-tab-bar [data-name="account"]').dispatchEvent(new CustomEvent("click")); + event.stopPropagation(); + break; + } else if (target.id === "barSearch") { + openSearch(window.siyuan.config.keymap.general.globalSearch.custom); + event.stopPropagation(); + break; + } else if (target.id === "barThemeMode") { + if (target.getAttribute("disabled")) { + return; } - }); - window.siyuan.menus.menu.popup({x: event.clientX, y: event.clientY}); + if (target.classList.contains("toolbar__item--active")) { + target.classList.remove("toolbar__item--active"); + target.setAttribute("aria-label", window.siyuan.languages.themeDark); + } else { + target.classList.add("toolbar__item--active"); + target.setAttribute("aria-label", window.siyuan.languages.themeLight); + } + target.setAttribute("disabled", "disabled"); + fetchPost("/api/system/setAppearanceMode", { + mode: target.classList.contains("toolbar__item--active") ? 1 : 0 + }, response => { + if (window.siyuan.config.appearance.themeJS) { + exportLayout(true); + return; + } + window.siyuan.config.appearance = response.data.appearance; + target.removeAttribute("disabled"); + /// #if !BROWSER + ipcRenderer.send(Constants.SIYUAN_CONFIG_THEME, response.data.mode === 1 ? "dark" : "light"); + /// #endif + loadAssets(response.data.appearance); + }); + event.stopPropagation(); + break; + } else if (target.id === "barDailyNote") { + if (getOpenNotebookCount() < 2) { + newDailyNote(); + } else { + window.siyuan.menus.menu.remove(); + window.siyuan.notebooks.forEach(item => { + if (!item.closed) { + window.siyuan.menus.menu.append(new MenuItem({ + label: item.name, + click: () => { + fetchPost("/api/filetree/createDailyNote", { + notebook: item.id + }); + window.localStorage.setItem(Constants.LOCAL_DAILYNOTEID, item.id); + } + }).element); + } + }); + window.siyuan.menus.menu.popup({x: event.clientX, y: event.clientY}); + } + event.stopPropagation(); + break; + } + target = target.parentElement; } }); - document.getElementById("barSearch").addEventListener("click", () => { - openSearch(window.siyuan.config.keymap.general.globalSearch.custom); - }); setProxy(); };