Vertical Grid: Accessibility
Zurück: Demo-Übersicht
1. Übersicht und Zweck
Status: [Live]-Basis, konsolidiert bestehende Fakten (Single-Source-Prinzip wie bei DataGrid → Accessibility).
2. Voraussetzungen
propertyGrid()- Basiskontrakt bereits verstanden.
3. Konzepte
Barrierefreiheit entsteht hier größtenteils kostenlos durch native
HTML-Elemente (<details>, <label for>) statt durch manuell
gesetzte ARIA-Attribute — dieselbe Native-zuerst-Haltung wie in der ganzen
Bibliothek.
4. Erste Schritte
Entfällt — konsolidierte Referenzseite.
5. Verwendung
Für eine Barrierefreiheits-Abnahme: Tabelle in Abschnitt 6 gegen die
tatsächlich gesetzten Zeilen-Schlüssel (required/section/
controlId) abgleichen.
6. API-Referenz: ARIA-Attribute im Überblick
| Attribut | Wann gesetzt | Quelle |
|---|---|---|
| Screenreader-Text am Pflichtfeld-Sternchen | immer bei required (über DokuWikis .a11y-Klasse, nicht nur visuelles Sternchen) | Grundlagen → Validierung und required |
| Sektions-Kopfzeile auf-/zuklappbar | natives <details> — kostenlose ARIA-Semantik, kein manuelles aria-expanded nötig | Grundlagen → Gruppen/Sektionen |
| Fehler-/Warnzeile | [Live]: mit gesetztem Zeilen-Schlüssel controlId erhält das Label for="<controlId>", die stateText-Zeile die ID <controlId>__statetext und das Control eine konservativ injizierte aria-describedby-Verknüpfung (nur bei genau einem id="<controlId>"-Treffer ohne bestehendes aria-describedby — sonst bleibt das Aufrufer-HTML unangetastet). Ohne controlId rendert die Zeile unverändert wie zuvor | Grundlagen → $rows (controlId-Schlüssel) |
7. Parameter, Optionen und Zustände
| Schlüssel | Auswirkung auf Accessibility |
|---|---|
controlId | aktiviert for/aria-describedby-Verknüpfung, s. Abschnitt 6 |
required | Sternchen + Screenreader-Text |
8. Vollständige Beispiele
echo $widgets->propertyGrid([ ['label' => 'Host', 'controlId' => 'host-input', 'controlHtml' => '<input type="text" id="host-input" name="host">', 'state' => 'error', 'stateText' => 'Pflichtfeld.'], ]);
9. Einschränkungen und Randfälle
Die controlId-Verknüpfung wirkt nur bei genau einem Treffer im
controlHtml — mehrere Elemente mit derselben ID oder ein bereits
vorhandenes aria-describedby verhindern die automatische Injektion (s.
Abschnitt 6).
10. Accessibility und Kompatibilität
Diese Seite ist der Accessibility-Überblick.
11. Troubleshooting
Symptom: aria-describedby fehlt trotz gesetztem controlId.
Ursache: controlHtml enthält entweder keinen oder mehr als einen
id="<controlId>"-Treffer, oder bereits ein eigenes
aria-describedby.
Lösung: controlHtml auf genau ein Element mit der passenden ID ohne
bestehendes aria-describedby prüfen.
12. Verwandte Themen
- Demo-Übersicht — alle Kategorien
- Eingabefelder: Accessibility — dieselbe
aria-describedby-Verkettung im Feld-Basiskontrakt (dort überfieldAttrs()fest eingebaut) - DataGrid: Accessibility — Konsolidierungsmuster