trilium/src/public/javascripts/widgets/global_menu.js

114 lines
4 KiB
JavaScript
Raw Normal View History

2020-01-16 02:40:17 +08:00
import BasicWidget from "./basic_widget.js";
import keyboardActionService from "../services/keyboard_actions.js";
import utils from "../services/utils.js";
import syncService from "../services/sync.js";
const TPL = `
<div class="global-menu-wrapper">
<style>
.global-menu-wrapper {
height: 35px;
border-bottom: 1px solid var(--main-border-color);
}
.global-menu button {
margin-right: 10px;
height: 33px;
border-bottom: none;
}
.global-menu .dropdown-menu {
width: 20em;
}
</style>
<div class="dropdown global-menu">
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="btn btn-sm dropdown-toggle">
<span class="bx bx-menu"></span>
Menu
<span class="caret"></span>
</button>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item options-button">
<span class="bx bx-slider"></span>
Options
</a>
<a class="dropdown-item sync-now-button" title="Trigger sync">
<span class="bx bx-recycle"></span>
Sync (<span id="outstanding-syncs-count">0</span>)
</a>
2020-01-23 02:41:19 +08:00
<a class="dropdown-item open-dev-tools-button" data-trigger-event="openDevTools">
2020-01-16 02:40:17 +08:00
<span class="bx bx-terminal"></span>
Open Dev Tools
<kbd data-kb-action="OpenDevTools"></kbd>
</a>
2020-01-23 02:41:19 +08:00
<a class="dropdown-item open-sql-console-button" data-trigger-event="showSQLConsole">
2020-01-16 02:40:17 +08:00
<span class="bx bx-data"></span>
Open SQL Console
<kbd data-kb-action="ShowSQLConsole"></kbd>
</a>
2020-01-23 02:41:19 +08:00
<a class="dropdown-item show-backend-log-button" data-trigger-event="showBackendLog">
2020-01-16 02:40:17 +08:00
<span class="bx bx-empty"></span>
Show backend log
<kbd data-kb-action="ShowBackendLog"></kbd>
</a>
2020-01-23 02:41:19 +08:00
<a class="dropdown-item reload-frontend-button" data-trigger-event="reloadFrontendApp"
title="Reload can help with some visual glitches without restarting the whole app.">
2020-01-16 02:40:17 +08:00
<span class="bx bx-empty"></span>
Reload frontend
<kbd data-kb-action="ReloadFrontendApp"></kbd>
</a>
2020-01-23 02:41:19 +08:00
<a class="dropdown-item toggle-zen-mode-button" data-trigger-event="toggleZenMode">
2020-01-16 02:40:17 +08:00
<span class="bx bx-empty"></span>
Toggle Zen mode
<kbd data-kb-action="ToggleZenMode"></kbd>
</a>
2020-01-23 02:41:19 +08:00
<a class="dropdown-item toggle-fullscreen-button" data-trigger-event="toggleFullscreen">
2020-01-16 02:40:17 +08:00
<span class="bx bx-empty"></span>
Toggle fullscreen
<kbd data-kb-action="ToggleFullscreen"></kbd>
</a>
2020-01-23 02:41:19 +08:00
<a class="dropdown-item show-help-button" data-trigger-event="showHelp">
2020-01-16 02:40:17 +08:00
<span class="bx bx-info-circle"></span>
Show Help
<kbd data-kb-action="ShowHelp"></kbd>
</a>
<a class="dropdown-item show-about-dialog-button">
<span class="bx bx-empty"></span>
About Trilium Notes
</a>
2020-01-23 02:41:19 +08:00
<a class="dropdown-item logout-button" data-trigger-event="logout">
2020-01-16 02:40:17 +08:00
<span class="bx bx-log-out"></span>
Logout
</a>
</div>
</div>
</div>
`;
export default class GlobalMenuWidget extends BasicWidget {
render() {
this.$widget = $(TPL);
2020-01-23 02:41:19 +08:00
this.$widget.find(".show-about-dialog-button").on('click',
() => import("../dialogs/about.js").then(d => d.showDialog()));
2020-01-16 02:40:17 +08:00
this.$widget.find(".sync-now-button").on('click', () => syncService.syncNow());
2020-01-23 02:41:19 +08:00
this.$widget.find(".logout-button").toggle(!utils.isElectron());
2020-01-16 02:40:17 +08:00
2020-01-23 02:41:19 +08:00
this.$widget.find(".open-dev-tools-button").toggle(utils.isElectron());
2020-01-16 02:40:17 +08:00
return this.$widget;
}
}