diff --git a/ts/routes/editor/NoteEditor.svelte b/ts/routes/editor/NoteEditor.svelte index e999ca966..6f3b36340 100644 --- a/ts/routes/editor/NoteEditor.svelte +++ b/ts/routes/editor/NoteEditor.svelte @@ -24,6 +24,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html toolbar: EditorToolbarAPI; state: Writable; lastIOImagePath: Writable; + saveNow: () => Promise; } interface LoadNoteArgs { @@ -1343,6 +1344,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html fields, state: editorState, lastIOImagePath, + saveNow, }; setContextProperty(api); @@ -1394,7 +1396,7 @@ components and functionality for general note editing. /> {/if} - + {#if mode === "browser"} diff --git a/ts/routes/editor/editor-toolbar/EditorToolbar.svelte b/ts/routes/editor/editor-toolbar/EditorToolbar.svelte index 95fa29bcd..10e731d27 100644 --- a/ts/routes/editor/editor-toolbar/EditorToolbar.svelte +++ b/ts/routes/editor/editor-toolbar/EditorToolbar.svelte @@ -63,10 +63,12 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import RichTextClozeButtons from "./RichTextClozeButtons.svelte"; import TemplateButtons from "./TemplateButtons.svelte"; import type { InlineButtonsAPI } from "./InlineButtons.svelte"; + import type { NoteEditorAPI } from "../NoteEditor.svelte"; export let isLegacy = false; export let size: number; export let wrap: boolean; + export let noteEditor: NoteEditorAPI; const toolbar = {} as DefaultSlotInterface; const notetypeButtons = {} as DefaultSlotInterface; @@ -100,7 +102,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - + diff --git a/ts/routes/editor/editor-toolbar/NotetypeButtons.svelte b/ts/routes/editor/editor-toolbar/NotetypeButtons.svelte index 3f484d298..0ca571494 100644 --- a/ts/routes/editor/editor-toolbar/NotetypeButtons.svelte +++ b/ts/routes/editor/editor-toolbar/NotetypeButtons.svelte @@ -16,8 +16,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import DynamicallySlottable from "$lib/components/DynamicallySlottable.svelte"; import LabelButton from "$lib/components/LabelButton.svelte"; import Shortcut from "$lib/components/Shortcut.svelte"; + import type { NoteEditorAPI } from "../NoteEditor.svelte"; export let api = {}; + export let noteEditor: NoteEditorAPI; const keyCombination = "Control+L"; @@ -33,7 +35,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html bridgeCommand("fields")} + on:click={async () => { + await noteEditor.saveNow(); + bridgeCommand("fields"); + }} > {tr.editingFields()}... @@ -44,11 +49,20 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html tooltip="{tr.editingCustomizeCardTemplates()} ({getPlatformString( keyCombination, )})" - on:click={() => bridgeCommand("cards")} + on:click={async () => { + await noteEditor.saveNow(); + bridgeCommand("cards"); + }} > {tr.editingCards()}... - bridgeCommand("cards")} /> + { + await noteEditor.saveNow(); + bridgeCommand("cards"); + }} + />