diff --git a/web/src/lib/components/ui/Tooltip.svelte b/web/src/lib/components/ui/Tooltip.svelte index c75bc21a7..d476761c2 100644 --- a/web/src/lib/components/ui/Tooltip.svelte +++ b/web/src/lib/components/ui/Tooltip.svelte @@ -1,12 +1,13 @@ @@ -318,28 +318,4 @@ translate: 0 -50%; clip-path: polygon(0 50%, 100% 0, 100% 100%); } - - .tooltip-bubble { - opacity: 0; - transition: - opacity 100ms ease-out, - overlay 100ms allow-discrete, - display 100ms allow-discrete; - } - - .tooltip-bubble:popover-open { - opacity: 1; - } - - @starting-style { - .tooltip-bubble:popover-open { - opacity: 0; - } - } - - @media (prefers-reduced-motion: reduce) { - .tooltip-bubble { - transition: none; - } - } diff --git a/web/src/lib/components/ui/popover.svelte.ts b/web/src/lib/components/ui/popover.svelte.ts new file mode 100644 index 000000000..3d16c1114 --- /dev/null +++ b/web/src/lib/components/ui/popover.svelte.ts @@ -0,0 +1,17 @@ +export function popoverSingleton() { + let openHide: (() => void) | undefined; + + return { + claim(hide: () => void) { + if (openHide && openHide !== hide) openHide(); + openHide = hide; + }, + release(hide: () => void) { + if (openHide === hide) openHide = undefined; + } + }; +} + +export function popoverAnchorName(prefix: string, id: string) { + return `--${prefix}-${id.replace(/[^a-zA-Z0-9_-]/g, "-")}`; +}