Spaces:
Sleeping
Sleeping
<script lang="ts"> | |
import { tick } from "svelte"; | |
import { killDialog } from "$lib/state/dialogs"; | |
import DialogBackdropClose from "$components/dialog/DialogBackdropClose.svelte"; | |
export let id: string; | |
export let dismissable = true; | |
let dialogParent: HTMLDialogElement; | |
let open = false; | |
let closing = false; | |
export const close = () => { | |
if (dialogParent) { | |
closing = true; | |
open = false; | |
setTimeout(() => { | |
dialogParent.close(); | |
killDialog(); | |
}, 150); | |
} | |
}; | |
$: if (dialogParent) { | |
dialogParent.showModal(); | |
tick().then(() => { | |
open = true; | |
}); | |
} | |
</script> | |
<dialog id="dialog-{id}" bind:this={dialogParent} class:closing class:open> | |
<slot></slot> | |
<DialogBackdropClose closeFunc={dismissable ? close : () => {}} /> | |
</dialog> | |