From 8574a97e7bbf2d2a67dc5c743f4d1eb67610e715 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Fri, 22 May 2026 14:04:16 +0000 Subject: fix(layout): preserve list panel when clicking action buttons in summary The global animateDetails handler in +layout.svelte runs on every window click, unconditionally finding the nearest , preventDefault'ing the native toggle, and manually toggling the parent
. That left no way for child handlers to opt out -- clicking Roulette or Refresh inside the list title still toggled the panel. Skip the takeover (and stop the native toggle) when the click target is an interactive element. Reverts the now-unneeded slot wrapper in ListTitle from 0d46fa54. --- src/routes/+layout.svelte | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/routes/+layout.svelte') diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 9ad33ca9..71d74adb 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -143,8 +143,15 @@ const handleScroll = () => { const detailsAnimations = new WeakMap(); const animateDetails = (e: MouseEvent) => { - const summary = (e.target as HTMLElement | null)?.closest("summary"); + const target = e.target as HTMLElement | null; + const summary = target?.closest("summary"); if (!summary) return; + + if (target?.closest("button, a, input, select, textarea, label")) { + e.preventDefault(); + return; + } + const details = summary.parentElement as HTMLDetailsElement | null; if (!details || details.tagName !== "DETAILS") return; if (reducesMotion()) return; -- cgit v1.2.3