mirror of
https://github.com/zadam/trilium.git
synced 2025-11-17 02:30:42 +01:00
chore(command_palette): hide jump to note / command palette
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
|
import { ActionKeyboardShortcut } from "@triliumnext/commons";
|
||||||
import appContext, { type CommandNames } from "../components/app_context.js";
|
import appContext, { type CommandNames } from "../components/app_context.js";
|
||||||
import type NoteTreeWidget from "../widgets/note_tree.js";
|
import type NoteTreeWidget from "../widgets/note_tree.js";
|
||||||
import { t, translationsInitializedPromise } from "./i18n.js";
|
import { t, translationsInitializedPromise } from "./i18n.js";
|
||||||
import keyboardActions, { Action } from "./keyboard_actions.js";
|
import keyboardActions from "./keyboard_actions.js";
|
||||||
import utils from "./utils.js";
|
import utils from "./utils.js";
|
||||||
|
|
||||||
export interface CommandDefinition {
|
export interface CommandDefinition {
|
||||||
@@ -15,7 +16,7 @@ export interface CommandDefinition {
|
|||||||
aliases?: string[];
|
aliases?: string[];
|
||||||
source?: "manual" | "keyboard-action";
|
source?: "manual" | "keyboard-action";
|
||||||
/** Reference to the original keyboard action for scope checking. */
|
/** Reference to the original keyboard action for scope checking. */
|
||||||
keyboardAction?: Action;
|
keyboardAction?: ActionKeyboardShortcut;
|
||||||
}
|
}
|
||||||
|
|
||||||
class CommandRegistry {
|
class CommandRegistry {
|
||||||
@@ -105,7 +106,7 @@ class CommandRegistry {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private registerKeyboardActions(actions: Action[]) {
|
private registerKeyboardActions(actions: ActionKeyboardShortcut[]) {
|
||||||
for (const action of actions) {
|
for (const action of actions) {
|
||||||
// Skip actions that we've already manually registered
|
// Skip actions that we've already manually registered
|
||||||
if (this.commands.has(action.actionName)) {
|
if (this.commands.has(action.actionName)) {
|
||||||
@@ -122,6 +123,11 @@ class CommandRegistry {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip actions that should not appear in the command palette
|
||||||
|
if (action.ignoreFromCommandPalette) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Get the primary shortcut (first one in the list)
|
// Get the primary shortcut (first one in the list)
|
||||||
const primaryShortcut = action.effectiveShortcuts?.[0];
|
const primaryShortcut = action.effectiveShortcuts?.[0];
|
||||||
|
|
||||||
|
|||||||
@@ -2,25 +2,15 @@ import server from "./server.js";
|
|||||||
import appContext, { type CommandNames } from "../components/app_context.js";
|
import appContext, { type CommandNames } from "../components/app_context.js";
|
||||||
import shortcutService from "./shortcuts.js";
|
import shortcutService from "./shortcuts.js";
|
||||||
import type Component from "../components/component.js";
|
import type Component from "../components/component.js";
|
||||||
|
import type { ActionKeyboardShortcut } from "@triliumnext/commons";
|
||||||
|
|
||||||
const keyboardActionRepo: Record<string, Action> = {};
|
const keyboardActionRepo: Record<string, ActionKeyboardShortcut> = {};
|
||||||
|
|
||||||
// TODO: Deduplicate with server.
|
const keyboardActionsLoaded = server.get<ActionKeyboardShortcut[]>("keyboard-actions").then((actions) => {
|
||||||
export interface Action {
|
|
||||||
actionName: CommandNames;
|
|
||||||
effectiveShortcuts: string[];
|
|
||||||
scope: string;
|
|
||||||
friendlyName: string;
|
|
||||||
description?: string;
|
|
||||||
iconClass?: string;
|
|
||||||
isElectronOnly?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const keyboardActionsLoaded = server.get<Action[]>("keyboard-actions").then((actions) => {
|
|
||||||
actions = actions.filter((a) => !!a.actionName); // filter out separators
|
actions = actions.filter((a) => !!a.actionName); // filter out separators
|
||||||
|
|
||||||
for (const action of actions) {
|
for (const action of actions) {
|
||||||
action.effectiveShortcuts = action.effectiveShortcuts.filter((shortcut) => !shortcut.startsWith("global:"));
|
action.effectiveShortcuts = (action.effectiveShortcuts ?? []).filter((shortcut) => !shortcut.startsWith("global:"));
|
||||||
|
|
||||||
keyboardActionRepo[action.actionName] = action;
|
keyboardActionRepo[action.actionName] = action;
|
||||||
}
|
}
|
||||||
@@ -42,7 +32,7 @@ async function setupActionsForElement(scope: string, $el: JQuery<HTMLElement>, c
|
|||||||
const actions = await getActionsForScope(scope);
|
const actions = await getActionsForScope(scope);
|
||||||
|
|
||||||
for (const action of actions) {
|
for (const action of actions) {
|
||||||
for (const shortcut of action.effectiveShortcuts) {
|
for (const shortcut of action.effectiveShortcuts ?? []) {
|
||||||
shortcutService.bindElShortcut($el, shortcut, () => component.triggerCommand(action.actionName, { ntxId: appContext.tabManager.activeNtxId }));
|
shortcutService.bindElShortcut($el, shortcut, () => component.triggerCommand(action.actionName, { ntxId: appContext.tabManager.activeNtxId }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -50,7 +40,7 @@ async function setupActionsForElement(scope: string, $el: JQuery<HTMLElement>, c
|
|||||||
|
|
||||||
getActionsForScope("window").then((actions) => {
|
getActionsForScope("window").then((actions) => {
|
||||||
for (const action of actions) {
|
for (const action of actions) {
|
||||||
for (const shortcut of action.effectiveShortcuts) {
|
for (const shortcut of action.effectiveShortcuts ?? []) {
|
||||||
shortcutService.bindGlobalShortcut(shortcut, () => appContext.triggerCommand(action.actionName, { ntxId: appContext.tabManager.activeNtxId }));
|
shortcutService.bindGlobalShortcut(shortcut, () => appContext.triggerCommand(action.actionName, { ntxId: appContext.tabManager.activeNtxId }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -84,7 +74,7 @@ function updateDisplayedShortcuts($container: JQuery<HTMLElement>) {
|
|||||||
const action = await getAction(actionName, true);
|
const action = await getAction(actionName, true);
|
||||||
|
|
||||||
if (action) {
|
if (action) {
|
||||||
const keyboardActions = action.effectiveShortcuts.join(", ");
|
const keyboardActions = (action.effectiveShortcuts ?? []).join(", ");
|
||||||
|
|
||||||
if (keyboardActions || $(el).text() !== "not set") {
|
if (keyboardActions || $(el).text() !== "not set") {
|
||||||
$(el).text(keyboardActions);
|
$(el).text(keyboardActions);
|
||||||
@@ -103,7 +93,7 @@ function updateDisplayedShortcuts($container: JQuery<HTMLElement>) {
|
|||||||
|
|
||||||
if (action) {
|
if (action) {
|
||||||
const title = $(el).attr("title");
|
const title = $(el).attr("title");
|
||||||
const shortcuts = action.effectiveShortcuts.join(", ");
|
const shortcuts = (action.effectiveShortcuts ?? []).join(", ");
|
||||||
|
|
||||||
if (title?.includes(shortcuts)) {
|
if (title?.includes(shortcuts)) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -36,18 +36,18 @@ function getDefaultKeyboardActions() {
|
|||||||
{
|
{
|
||||||
actionName: "jumpToNote",
|
actionName: "jumpToNote",
|
||||||
friendlyName: t("keyboard_action_names.jump-to-note"),
|
friendlyName: t("keyboard_action_names.jump-to-note"),
|
||||||
iconClass: "bx bx-send",
|
|
||||||
defaultShortcuts: ["CommandOrControl+J"],
|
defaultShortcuts: ["CommandOrControl+J"],
|
||||||
description: t("keyboard_actions.open-jump-to-note-dialog"),
|
description: t("keyboard_actions.open-jump-to-note-dialog"),
|
||||||
scope: "window"
|
scope: "window",
|
||||||
|
ignoreFromCommandPalette: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
actionName: "commandPalette",
|
actionName: "commandPalette",
|
||||||
friendlyName: t("keyboard_action_names.command-palette"),
|
friendlyName: t("keyboard_action_names.command-palette"),
|
||||||
iconClass: "bx bx-terminal",
|
|
||||||
defaultShortcuts: ["CommandOrControl+Shift+J"],
|
defaultShortcuts: ["CommandOrControl+Shift+J"],
|
||||||
description: t("keyboard_actions.open-command-palette"),
|
description: t("keyboard_actions.open-command-palette"),
|
||||||
scope: "window"
|
scope: "window",
|
||||||
|
ignoreFromCommandPalette: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
actionName: "scrollToActiveNote",
|
actionName: "scrollToActiveNote",
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ export interface ActionKeyboardShortcut {
|
|||||||
* An icon describing the action.
|
* An icon describing the action.
|
||||||
* This is currently only used in the command palette.
|
* This is currently only used in the command palette.
|
||||||
*/
|
*/
|
||||||
iconClass: string;
|
iconClass?: string;
|
||||||
/**
|
/**
|
||||||
* Scope here means on which element the keyboard shortcuts are attached - this means that for the shortcut to work,
|
* Scope here means on which element the keyboard shortcuts are attached - this means that for the shortcut to work,
|
||||||
* the focus has to be inside the element.
|
* the focus has to be inside the element.
|
||||||
@@ -127,6 +127,10 @@ export interface ActionKeyboardShortcut {
|
|||||||
* This is used to hide actions that are not available in the web version.
|
* This is used to hide actions that are not available in the web version.
|
||||||
*/
|
*/
|
||||||
isElectronOnly?: boolean;
|
isElectronOnly?: boolean;
|
||||||
|
/**
|
||||||
|
* If set to true, the action will not be shown in the command palette.
|
||||||
|
*/
|
||||||
|
ignoreFromCommandPalette?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type KeyboardShortcut = ActionKeyboardShortcut | KeyboardShortcutSeparator;
|
export type KeyboardShortcut = ActionKeyboardShortcut | KeyboardShortcutSeparator;
|
||||||
|
|||||||
Reference in New Issue
Block a user