Wrap each popover menu and give it a caller-named id
CI / full-gate (push) Successful in 2m43s

This commit is contained in:
2026-08-05 01:58:11 +02:00
parent 5d9bdebf59
commit cfeee10fa8
12 changed files with 99 additions and 58 deletions
+4 -3
View File
@@ -915,9 +915,10 @@ set of reusable EJS partials + TS helpers, fully styled and zero-JS:
The core and all building blocks **work with zero JavaScript** — theme switching and filtering
are pure CSS + GET forms, and menus are the platform's own [popover
API](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API): a `<button popovertarget>`
opens the panel and the browser dismisses it on a click outside or `Esc`. A browser too old for
that (before mid-2024) shows each panel inline instead, so nothing is stranded behind an inert
button. On the [low-end, low-bandwidth targets](#overview)
opens the panel and the browser dismisses it on a click outside or `Esc`; CSS anchor positioning
places it. On a browser too old for either the trigger is inert, so each panel falls back to
flowing inline underneath it — cramped inside a table cell, but nothing is unreachable. That path
is deliberately untested: no browser that supports popovers can render it. On the [low-end, low-bandwidth targets](#overview)
we care about this is usually *faster*: a round-trip returning a small, pre-rendered HTML
page beats a client-side runtime that must boot, fetch JSON, and re-render before anything
shows. List state (`?q=…&status=…&sort=…&page=…`) lives **in the URL**, so a view is