Spaces:
Paused
Paused
| <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> | |