addImageBlobHook: Function,
});
-const emit = defineEmits(["change"]);
+const emit = defineEmits(["change", "keydown"]);
const editorElement = ref();
let toastEditor;
change: () => {
emit("change");
},
+ keydown: (_, event) => {
+ emit("keydown", event);
+ },
},
hooks: props.addImageBlobHook
? { addImageBlobHook: props.addImageBlobHook }
:initialEditType="loadDefaultEditorMode()"
:addImageBlobHook="addImageBlobHook"
@change="startContentChangedTimeout"
+ @keydown="keydownHandler"
/>
</div>
</LoadingIndicator>
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) {
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(