From: Adam Dullage Date: Wed, 3 Jul 2024 20:28:18 +0000 (+0100) Subject: Add keyboard shortcuts for save and close note X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=9399e45f1a07b67ba04dec9d5afa32d677eb7c0c;p=flatnotes.git Add keyboard shortcuts for save and close note --- diff --git a/client/components/toastui/ToastEditor.vue b/client/components/toastui/ToastEditor.vue index 5971607..f5f3150 100644 --- a/client/components/toastui/ToastEditor.vue +++ b/client/components/toastui/ToastEditor.vue @@ -17,7 +17,7 @@ const props = defineProps({ addImageBlobHook: Function, }); -const emit = defineEmits(["change"]); +const emit = defineEmits(["change", "keydown"]); const editorElement = ref(); let toastEditor; @@ -32,6 +32,9 @@ onMounted(() => { change: () => { emit("change"); }, + keydown: (_, event) => { + emit("keydown", event); + }, }, hooks: props.addImageBlobHook ? { addImageBlobHook: props.addImageBlobHook } diff --git a/client/views/Note.vue b/client/views/Note.vue index a6be6b3..b9718cc 100644 --- a/client/views/Note.vue +++ b/client/views/Note.vue @@ -102,6 +102,7 @@ :initialEditType="loadDefaultEditorMode()" :addImageBlobHook="addImageBlobHook" @change="startContentChangedTimeout" + @keydown="keydownHandler" /> @@ -165,13 +166,6 @@ const toast = useToast(); const toastEditor = ref(); const unsavedChanges = ref(false); -// 'e' to edit -Mousetrap.bind("e", () => { - if (editMode.value === false && canModify.value) { - editHandler(); - } -}); - function init() { // Return if we already have the note e.g. When we rename a note, the route prop would change but we’d already have the note. if (props.title && props.title == note.value.title) { @@ -451,6 +445,25 @@ function loadDraft() { return localStorage.getItem(note.value.title); } +// Keyboard Shortcuts +// 'e' to edit +Mousetrap.bind("e", () => { + if (editMode.value === false && canModify.value) { + editHandler(); + } +}); + +function keydownHandler(event) { + // Ctrl + Alt + S to save + if (event.ctrlKey && event.altKey && event.key == "s") { + saveHandler((close = false)); + } + // Escape to exit edit mode + if (event.key == "Escape") { + closeHandler(); + } +} + // Helpers function entityTooLargeToast(entityName) { toast.add(