feat(diagram): das Knoten-Fenster löst den nativen Tooltip überall ab
Das Fenster aus D52 war für Touch gebaut — damit standen zwei Darstellungen desselben Inhalts nebeneinander, und ausgerechnet die schlechtere bekam der Zeiger. Jetzt zeigt es überall: am Zeiger nach 350 ms beim Überfahren, bei Tastaturfokus sofort, auf Touch unverändert beim Tipp. Was ein `title` prinzipiell nicht kann: - keine Absätze (die Beschreibungen im Plan brechen bei ~76 Zeichen, das sah ausgefranst aus), - keine Linie (der Trennstrich war aus 24 `─` GEMALT, D40-Nachtrag), - nichts bei Tastaturfokus — wer mit Tab durch das Diagramm geht, sah bisher keine Beschreibung. Nachgemessen mit ECHTEM Tastendruck: Fokus von #not.line auf #not.status, Fenster folgt, 10 px unter dem Knoten, Ring am fokussierten Knoten. - Inhalt zieht von `title` nach `data-tip` (sonst zeigte der Browser seinen eigenen zusätzlich) — dasselbe Attribut unter anderem Namen, keine Verdopplung der 20 kB DOM-Text. - Die letzten drei nativen Tooltips IN Knoten mussten weichen: Das Warndreieck war redundant (Statusname steht in den Fakten), die Annahme „Größe fehlt, gilt als M" wandert in die Faktenzeile. Nachgemessen: 0 von 161 Knoten und 0 Kinder tragen noch einen `title`. - Absicht-Erkennung: 350 ms Verzögerung, beim Wechsel zwischen Knoten ohne Warten, 120 ms Nachfrist beim Verlassen (der Weg ins Fenster führt über einen Zwischenraum). - `aria-hidden` am Fenster: Der Inhalt steht schon im aria-label, sonst würde er doppelt vorgelesen; × und ↗ deshalb `tabindex="-1"`. Werkzeuggrenze notiert: `element.focus()` feuert ohne Fensterfokus keine Fokus-Ereignisse (`document.hasFocus()` false) — der erste Prüflauf zeigte fälschlich „öffnet nichts". SPEC §9 + D57; Plan: #ed.tipwindow [x] (161 Knoten, 0 Warnungen). 293 Tests grün, 5 Snapshots/Zusicherungen auf `data-tip` nachgezogen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f0fe877d45
commit
3fbc772d81
@@ -3974,3 +3974,74 @@ Rechnung wie D17-Nachtrag 5.** Nachgemessen statt geschätzt:
|
||||
|
||||
Ein `overflow` an der Kopfzeile bleibt weiterhin ausgeschlossen — es klippt die
|
||||
beiden Aufklapp-Menüs (D50).
|
||||
|
||||
## D57 — Das Knoten-Fenster löst den nativen Tooltip überall ab
|
||||
Das Fenster aus D52 war für Touch gebaut: Ohne Zeiger gibt es keinen `title`,
|
||||
und die Beschreibungen (D40) wären dort gar nicht zu sehen gewesen. Damit
|
||||
standen zwei Darstellungen desselben Inhalts nebeneinander — und ausgerechnet
|
||||
die schlechtere bekam der Zeiger. Jetzt zeigt das Fenster überall: am Zeiger
|
||||
nach kurzer Verzögerung beim Überfahren, bei **Tastaturfokus** sofort, auf
|
||||
Touch unverändert beim einfachen Tipp.
|
||||
|
||||
**Was der `title` nicht konnte, und zwar prinzipiell:**
|
||||
|
||||
- **Keine Absätze.** Die Beschreibungen im mitgelieferten Plan sind bei ~76
|
||||
Zeichen umgebrochen; ein `title` zeigt genau diese harten Umbrüche, in einem
|
||||
schmalen Fenster sah der Text ausgefranst aus. Das Fenster bricht um, wie es
|
||||
die Breite hergibt (D52 hatte das für Touch schon gelöst).
|
||||
- **Keine Linie.** Der Trennstrich zwischen Beschreibung und Kurz-Fakten musste
|
||||
aus 24 `─`-Zeichen **gemalt** werden (D40-Nachtrag) — im Fenster ist er eine
|
||||
echte Kante, und ohne Beschreibung entfällt er ganz.
|
||||
- **Nichts bei Tastaturfokus.** Kein Browser zeigt einen `title`, wenn man mit
|
||||
Tab auf ein Element springt. Wer das Diagramm mit der Tastatur durchgeht, sah
|
||||
bisher keine Beschreibung. Das ist der eigentliche Zugewinn und kein Beiwerk —
|
||||
nachgemessen mit einem **echten** Tastendruck: Fokus wandert von `#not.line`
|
||||
auf `#not.status`, das Fenster folgt mit dessen Text, 10 px unter dem Knoten,
|
||||
Petrol-Ring am fokussierten Knoten.
|
||||
|
||||
**Der Inhalt zieht von `title` nach `data-tip` um.** Bliebe er im `title`,
|
||||
zeigte der Browser seinen eigenen Tooltip **zusätzlich** — unterdrücken lässt er
|
||||
sich nicht. Es ist kein zweites Attribut, sondern dasselbe unter anderem Namen;
|
||||
die Sorge aus D52 („keine 20 kB DOM-Text verdoppeln") bleibt gewahrt.
|
||||
|
||||
**Dabei mussten die letzten drei nativen Tooltips *innerhalb* der Knoten
|
||||
weichen** — sonst wären sie neben dem Fenster ein zweites Mal erschienen:
|
||||
|
||||
- Das **Warndreieck** (`[!]`) trug „High Risk – Aufwand unklar". Das ist der
|
||||
Statusname und steht ohnehin in der Faktenzeile — der `title` war redundant
|
||||
und ist ersatzlos weg.
|
||||
- Das **implizite M-Badge** trug die Kostenannahme „Größe fehlt, gilt als M"
|
||||
(D18). Die ist nicht redundant, also wandert sie in die Faktenzeile und der
|
||||
`title` entfällt. Nachgemessen: `data-tip="st_geplant · implicitSizeTooltip ·
|
||||
jumpHint"`, Badge ohne Attribut.
|
||||
|
||||
Damit trägt im ganzen Diagramm kein Element mehr einen nativen Tooltip
|
||||
(nachgemessen: 0 von 160 Knoten, 0 Kinder) — außer dem Geister-Knoten, der kein
|
||||
`.node` ist.
|
||||
|
||||
**Absicht-Erkennung statt sofortigem Aufpoppen.** Über einen dichten Baum fährt
|
||||
man hinweg, ohne etwas wissen zu wollen: 350 ms Verzögerung. Steht schon ein
|
||||
Fenster offen, zeigt der nächste Knoten **ohne** Warten — wer liest, wartet
|
||||
nicht noch einmal. Beim Verlassen wird 120 ms gewartet, bevor zugemacht wird:
|
||||
Der Weg vom Knoten ins Fenster führt über einen Zwischenraum, in dem der Zeiger
|
||||
über keinem von beiden steht. Wer im Fenster ist, hält es offen (Text lässt
|
||||
sich markieren).
|
||||
|
||||
**Der ↗-Knopf bleibt Touch vorbehalten.** Am Zeiger ist der ganze Knoten der
|
||||
Link (§6) — ein Knopf im Fenster wäre ein zweiter Weg zum selben Ziel. Ebenso
|
||||
nennt die Faktenzeile nur auf Touch den langen Druck statt Alt+Klick.
|
||||
|
||||
**Für Screenreader ändert sich nichts, und das ist Absicht.** Das Fenster ist
|
||||
`aria-hidden`: Sein ganzer Inhalt steht bereits im `aria-label` des Knotens
|
||||
(SPEC §9), er würde sonst doppelt vorgelesen. Damit dürfen darin keine
|
||||
fokussierbaren Elemente liegen — × und ↗ tragen deshalb `tabindex="-1"`;
|
||||
erreichbar bleibt beides über den Knoten selbst und über Esc.
|
||||
|
||||
**Werkzeuggrenze, wieder dieselbe Sorte:** `element.focus()` setzt in einem
|
||||
nicht fokussierten Automatisierungsfenster zwar `document.activeElement`, feuert
|
||||
aber **keine** Fokus-Ereignisse (`document.hasFocus() === false`). Der erste
|
||||
Prüflauf zeigte deshalb „Tastaturfokus öffnet nichts", obwohl die Logik stimmte;
|
||||
mit synthetischem `focusin` öffnete es sofort. Erst das Fronten des Tabs samt
|
||||
echtem Klick und echter Tab-Taste hat es bewiesen. Wie D25 (synthetische
|
||||
`TouchEvent`s), D17-Nachtrag 4 (Bildschirmtastatur) und D53 (synthetisches
|
||||
Strg+Z): Was die Umgebung stellt, stellt der Emulator nicht.
|
||||
|
||||
Reference in New Issue
Block a user