mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 10:26:08 +01:00 
			
		
		
		
	feat(command_palette): add keyboard shortcut
This commit is contained in:
		| @@ -262,6 +262,7 @@ export type CommandMappings = { | |||||||
|     closeThisNoteSplit: CommandData; |     closeThisNoteSplit: CommandData; | ||||||
|     moveThisNoteSplit: CommandData & { isMovingLeft: boolean }; |     moveThisNoteSplit: CommandData & { isMovingLeft: boolean }; | ||||||
|     jumpToNote: CommandData; |     jumpToNote: CommandData; | ||||||
|  |     commandPalette: CommandData; | ||||||
|  |  | ||||||
|     // Geomap |     // Geomap | ||||||
|     deleteFromMap: { noteId: string }; |     deleteFromMap: { noteId: string }; | ||||||
|   | |||||||
| @@ -56,6 +56,14 @@ export default class JumpToNoteDialog extends BasicWidget { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     async jumpToNoteEvent() { |     async jumpToNoteEvent() { | ||||||
|  |         await this.openDialog(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     async commandPaletteEvent() { | ||||||
|  |         await this.openDialog(true); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private async openDialog(commandMode = false) { | ||||||
|         const dialogPromise = openDialog(this.$widget); |         const dialogPromise = openDialog(this.$widget); | ||||||
|         if (utils.isMobile()) { |         if (utils.isMobile()) { | ||||||
|             dialogPromise.then(($dialog) => { |             dialogPromise.then(($dialog) => { | ||||||
| @@ -82,12 +90,12 @@ export default class JumpToNoteDialog extends BasicWidget { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         // first open dialog, then refresh since refresh is doing focus which should be visible |         // first open dialog, then refresh since refresh is doing focus which should be visible | ||||||
|         this.refresh(); |         this.refresh(commandMode); | ||||||
|  |  | ||||||
|         this.lastOpenedTs = Date.now(); |         this.lastOpenedTs = Date.now(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     async refresh() { |     async refresh(commandMode = false) { | ||||||
|         noteAutocompleteService |         noteAutocompleteService | ||||||
|             .initNoteAutocomplete(this.$autoComplete, { |             .initNoteAutocomplete(this.$autoComplete, { | ||||||
|                 allowCreatingNotes: true, |                 allowCreatingNotes: true, | ||||||
| @@ -115,19 +123,27 @@ export default class JumpToNoteDialog extends BasicWidget { | |||||||
|                 this.modal.hide(); |                 this.modal.hide(); | ||||||
|             }); |             }); | ||||||
|  |  | ||||||
|         // if you open the Jump To dialog soon after using it previously, it can often mean that you |         if (commandMode) { | ||||||
|         // actually want to search for the same thing (e.g., you opened the wrong note at first try) |             // Start in command mode | ||||||
|         // so we'll keep the content. |  | ||||||
|         // if it's outside of this time limit, then we assume it's a completely new search and show recent notes instead. |  | ||||||
|         if (Date.now() - this.lastOpenedTs > KEEP_LAST_SEARCH_FOR_X_SECONDS * 1000) { |  | ||||||
|             noteAutocompleteService.showRecentNotes(this.$autoComplete); |  | ||||||
|         } else { |  | ||||||
|             this.$autoComplete |             this.$autoComplete | ||||||
|                 // hack, the actual search value is stored in <pre> element next to the search input |                 .autocomplete("val", ">") | ||||||
|                 // this is important because the search input value is replaced with the suggestion note's title |  | ||||||
|                 .autocomplete("val", this.$autoComplete.next().text()) |  | ||||||
|                 .trigger("focus") |                 .trigger("focus") | ||||||
|                 .trigger("select"); |                 .trigger("select"); | ||||||
|  |         } else { | ||||||
|  |             // if you open the Jump To dialog soon after using it previously, it can often mean that you | ||||||
|  |             // actually want to search for the same thing (e.g., you opened the wrong note at first try) | ||||||
|  |             // so we'll keep the content. | ||||||
|  |             // if it's outside of this time limit, then we assume it's a completely new search and show recent notes instead. | ||||||
|  |             if (Date.now() - this.lastOpenedTs > KEEP_LAST_SEARCH_FOR_X_SECONDS * 1000) { | ||||||
|  |                 noteAutocompleteService.showRecentNotes(this.$autoComplete); | ||||||
|  |             } else { | ||||||
|  |                 this.$autoComplete | ||||||
|  |                     // hack, the actual search value is stored in <pre> element next to the search input | ||||||
|  |                     // this is important because the search input value is replaced with the suggestion note's title | ||||||
|  |                     .autocomplete("val", this.$autoComplete.next().text()) | ||||||
|  |                     .trigger("focus") | ||||||
|  |                     .trigger("select"); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ | |||||||
|     "back-in-note-history": "Navigate to previous note in history", |     "back-in-note-history": "Navigate to previous note in history", | ||||||
|     "forward-in-note-history": "Navigate to next note in history", |     "forward-in-note-history": "Navigate to next note in history", | ||||||
|     "open-jump-to-note-dialog": "Open \"Jump to note\" dialog", |     "open-jump-to-note-dialog": "Open \"Jump to note\" dialog", | ||||||
|  |     "open-command-palette": "Open command palette", | ||||||
|     "scroll-to-active-note": "Scroll note tree to active note", |     "scroll-to-active-note": "Scroll note tree to active note", | ||||||
|     "quick-search": "Activate quick search bar", |     "quick-search": "Activate quick search bar", | ||||||
|     "search-in-subtree": "Search for notes in the active note's subtree", |     "search-in-subtree": "Search for notes in the active note's subtree", | ||||||
|   | |||||||
| @@ -35,6 +35,12 @@ function getDefaultKeyboardActions() { | |||||||
|             description: t("keyboard_actions.open-jump-to-note-dialog"), |             description: t("keyboard_actions.open-jump-to-note-dialog"), | ||||||
|             scope: "window" |             scope: "window" | ||||||
|         }, |         }, | ||||||
|  |         { | ||||||
|  |             actionName: "commandPalette", | ||||||
|  |             defaultShortcuts: ["CommandOrControl+Shift+J"], | ||||||
|  |             description: t("keyboard_actions.open-command-palette"), | ||||||
|  |             scope: "window" | ||||||
|  |         }, | ||||||
|         { |         { | ||||||
|             actionName: "scrollToActiveNote", |             actionName: "scrollToActiveNote", | ||||||
|             defaultShortcuts: ["CommandOrControl+."], |             defaultShortcuts: ["CommandOrControl+."], | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ const enum KeyboardActionNamesEnum { | |||||||
|     backInNoteHistory, |     backInNoteHistory, | ||||||
|     forwardInNoteHistory, |     forwardInNoteHistory, | ||||||
|     jumpToNote, |     jumpToNote, | ||||||
|  |     commandPalette, | ||||||
|     scrollToActiveNote, |     scrollToActiveNote, | ||||||
|     quickSearch, |     quickSearch, | ||||||
|     searchInSubtree, |     searchInSubtree, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user