Save before opening Fields/Cards

This commit is contained in:
Abdo 2025-10-18 03:55:03 +03:00
parent 71dfb6350d
commit bdbafb1f6e
3 changed files with 23 additions and 5 deletions

View file

@ -24,6 +24,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
toolbar: EditorToolbarAPI;
state: Writable<EditorState>;
lastIOImagePath: Writable<string | null>;
saveNow: () => Promise<void>;
}
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}
<EditorToolbar {size} {wrap} {isLegacy} api={toolbar}>
<EditorToolbar noteEditor={api} {size} {wrap} {isLegacy} api={toolbar}>
<svelte:fragment slot="notetypeButtons">
{#if mode === "browser"}
<ButtonGroupItem>

View file

@ -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
<ButtonToolbar {size} {wrap}>
<DynamicallySlottable slotHost={Item} api={toolbar}>
<Item id="notetype">
<NotetypeButtons api={notetypeButtons}>
<NotetypeButtons {noteEditor} api={notetypeButtons}>
<slot name="notetypeButtons" />
</NotetypeButtons>
</Item>

View file

@ -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";
</script>
@ -33,7 +35,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
<ButtonGroupItem>
<LabelButton
tooltip={tr.editingCustomizeFields()}
on:click={() => bridgeCommand("fields")}
on:click={async () => {
await noteEditor.saveNow();
bridgeCommand("fields");
}}
>
{tr.editingFields()}...
</LabelButton>
@ -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()}...
</LabelButton>
<Shortcut {keyCombination} on:action={() => bridgeCommand("cards")} />
<Shortcut
{keyCombination}
on:action={async () => {
await noteEditor.saveNow();
bridgeCommand("cards");
}}
/>
</ButtonGroupItem>
<slot />