Files
EMLy/frontend/src/lib/utils/unsaved-changes-toast.ts
Lyz Coote d6a5cb8a67 v1.0.0
2026-02-02 18:41:13 +01:00

39 lines
893 B
TypeScript

import { toast } from "svelte-sonner";
import UnsavedBar from "$lib/components/UnsavedBar.svelte";
const UNSAVED_CHANGES_TOAST_ID = "unsaved-changes";
const ONE_YEAR_MS = 1000 * 60 * 60 * 24 * 365;
export type UnsavedChangesToastHandlers = {
onSave: () => void;
onReset: () => void;
};
export function showUnsavedChangesToast(handlers: UnsavedChangesToastHandlers) {
let toastId: string | number = UNSAVED_CHANGES_TOAST_ID;
toastId = toast.custom(UnsavedBar, {
id: toastId,
duration: ONE_YEAR_MS,
dismissable: false,
unstyled: true,
componentProps: {
onSave: () => {
handlers.onSave();
toast.dismiss(toastId);
},
onReset: () => {
handlers.onReset();
toast.dismiss(toastId);
},
},
});
return toastId;
}
export function dismissUnsavedChangesToast() {
toast.dismiss(UNSAVED_CHANGES_TOAST_ID);
}