39 lines
893 B
TypeScript
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);
|
|
}
|