|
7 | 7 | import { sineIn } from "svelte/easing";
|
8 | 8 | import clsx from "clsx";
|
9 | 9 |
|
10 |
| - const TRIGGER_DELAY = 200; |
11 |
| -
|
12 |
| - let { triggeredBy, trigger = "click", placement = "top", offset = 8, arrow = false, yOnly = false, strategy = "absolute", reference, middlewares = [dom.flip(), dom.shift()], onbeforetoggle: _onbeforetoggle, ontoggle: _ontoggle, class: className = "", arrowClass = "", isOpen = $bindable(false), transitionParams, transition = fade, children, ...restProps }: PopperProps = $props(); |
| 10 | + let { triggeredBy, triggerDelay = 200, trigger = "click", placement = "top", offset = 8, arrow = false, yOnly = false, strategy = "absolute", reference, middlewares = [dom.flip(), dom.shift()], onbeforetoggle: _onbeforetoggle, ontoggle: _ontoggle, class: className = "", arrowClass = "", isOpen = $bindable(false), transitionParams, transition = fade, children, ...restProps }: PopperProps = $props(); |
13 | 11 |
|
14 | 12 | let focusable: boolean = true;
|
15 | 13 | let clickable: boolean = $derived(trigger === "click");
|
16 | 14 | let hoverable: boolean = $derived(trigger === "hover");
|
17 |
| -
|
18 | 15 | let popover: HTMLElement | null = $state(null);
|
19 | 16 | let invoker: HTMLElement | null = null;
|
20 | 17 | let referenceElement: HTMLElement | null = null;
|
|
56 | 53 | async function open_popover(ev: Event) {
|
57 | 54 | // throttle
|
58 | 55 | isTriggered = true;
|
59 |
| - await new Promise((resolve) => setTimeout(resolve, TRIGGER_DELAY)); |
| 56 | + await new Promise((resolve) => setTimeout(resolve, triggerDelay)); |
60 | 57 | if (!isTriggered) return;
|
61 | 58 |
|
62 | 59 | ev.preventDefault();
|
|
65 | 62 | invoker = ev.target as HTMLElement;
|
66 | 63 | // if (invoker) invoker.popoverTargetElement = popover;
|
67 | 64 | isOpen = false;
|
68 |
| - await new Promise((resolve) => setTimeout(resolve, TRIGGER_DELAY)); |
| 65 | + await new Promise((resolve) => setTimeout(resolve, triggerDelay)); |
69 | 66 | }
|
70 | 67 |
|
71 | 68 | if (ev.type === "mousedown") {
|
|
77 | 74 |
|
78 | 75 | async function close_popover(ev: Event) {
|
79 | 76 | isTriggered = false;
|
80 |
| - await new Promise((resolve) => setTimeout(resolve, TRIGGER_DELAY)); |
| 77 | + await new Promise((resolve) => setTimeout(resolve, triggerDelay)); |
81 | 78 | if (isTriggered) return;
|
82 | 79 |
|
83 | 80 | // if popover has focus don't close when leaving the invoker
|
|
0 commit comments