aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-02-04 23:08:29 -0800
committerFuwn <[email protected]>2024-02-04 23:08:29 -0800
commitd3fd29f21145a68314ad9315342f6e4ff2fb6ab9 (patch)
treed04e6ca54b81199fb6e9c89393eb44777d745c2d /src/lib
parentfeat(badges): import replies (diff)
downloaddue.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.svelte27
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}