diff options
| author | Fuwn <[email protected]> | 2026-05-22 14:04:16 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-05-22 14:04:16 +0000 |
| commit | 8574a97e7bbf2d2a67dc5c743f4d1eb67610e715 (patch) | |
| tree | d022a0e15f896da17000a78ff2207e1dfee8a749 /src/routes | |
| parent | fix(lists): stop slot buttons from toggling the list details (diff) | |
| download | due.moe-8574a97e7bbf2d2a67dc5c743f4d1eb67610e715.tar.xz due.moe-8574a97e7bbf2d2a67dc5c743f4d1eb67610e715.zip | |
The global animateDetails handler in +layout.svelte runs on every
window click, unconditionally finding the nearest <summary>,
preventDefault'ing the native toggle, and manually toggling the
parent <details>. 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.
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/+layout.svelte | 9 |
1 files changed, 8 insertions, 1 deletions
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<HTMLDetailsElement, Animation>(); 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; |