feat(diagram): Knoten-Fenster öffnet nur noch auf Klick, nicht mehr bei Hover (D92, SPEC §6/§9)

Der einfache Klick toggelt das Fenster überall — wie der Tipp auf Touch
(D52); der Link eines Knotens ist damit auch am Zeiger der ↗-Knopf im
Fenster, Enter und Strg+Klick öffnen die URL weiterhin direkt. Tastatur-
fokus öffnet nur noch echten (:focus-visible), focusout schließt nicht in
das Fenster hinein, und die Fokus-Rückgabe nach dem Falten ruft das
Fenster ausdrücklich nie.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-28 16:43:01 +02:00
co-authored by Claude Fable 5
parent a223e6af57
commit 0fe4c07851
5 changed files with 154 additions and 71 deletions
+9
View File
@@ -654,6 +654,15 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der
Es schließt bei allem, was seine Aussage hinfällig macht — Tipp daneben,
zweiter Tipp, Esc, ×, Diagramm-Scroll, Bereichswechsel, Sprung in den Text,
`render()`. Die letzten drei sind beim Bauen zuerst vergessen worden.
- **Das Knoten-Fenster öffnet auf Klick, nie auf Hover (D92):** Der einfache
Klick toggelt es überall (auch auf Link-Knoten — die URL ist der ↗-Knopf im
Fenster; Enter kommt als Klick mit `e.detail === 0` und wird durchgelassen).
Zwei Fallen: `focusin` öffnet nur bei `:focus-visible` — der Mausklick
fokussiert den Knoten ebenfalls, und ohne die Weiche schlösse der
Klick-Toggle das vom focusin geöffnete Fenster sofort wieder. Und
`focusout` schließt nicht, wenn `relatedTarget` im Fenster liegt — die
Knöpfe darin sind trotz `tabindex="-1"` klick-fokussierbar, sonst stirbt
der Knopf-Klick zwischen mousedown und mouseup.
- **Taiga-Ticket-Anlage (D91):** Die entscheidbaren Regeln liegen headless in
`taiga.js` (`ticketRefOf` = Idempotenz-Marker, `taskCandidates` =
Dialog-Vorbelegung, `storyAncestor` = der nächste Vorfahr mit Story-Ref,