diff options
| author | Fuwn <[email protected]> | 2024-02-04 23:08:29 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-02-04 23:08:29 -0800 |
| commit | d3fd29f21145a68314ad9315342f6e4ff2fb6ab9 (patch) | |
| tree | d04e6ca54b81199fb6e9c89393eb44777d745c2d /src/lib | |
| parent | feat(badges): import replies (diff) | |
| download | due.moe-d3fd29f21145a68314ad9315342f6e4ff2fb6ab9.tar.xz due.moe-d3fd29f21145a68314ad9315342f6e4ff2fb6ab9.zip | |
feat(popup): close on outer click
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/Popup.svelte | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/lib/Popup.svelte b/src/lib/Popup.svelte new file mode 100644 index 00000000..3d31a66e --- /dev/null +++ b/src/lib/Popup.svelte @@ -0,0 +1,27 @@ +<script lang="ts"> + export let onLeave = () => { + return; + }; + export let card = true; + export let smallCard = false; + export let fullscreen = false; + export let show = true; + + const handleClickOutside = (event: any) => { + if (event.target.classList.contains('popup')) { + show = false; + + onLeave(); + } + }; +</script> + +<svelte:window on:click={handleClickOutside} /> + +{#if show} + <div class={`popup ${fullscreen ? 'popup-fullscreen' : ''}`}> + <span class={card ? `card ${smallCard ? 'card-small' : ''}` : ''}> + <slot /> + </span> + </div> +{/if} |