TimePicker Barrierefreiheit
Implementierte Verbesserungen
Die TimePicker-Komponente wurde mit folgenden Barrierefreiheitsverbesserungen aktualisiert:
ARIA-Attribute
aria-label
- Bietet eine Beschreibung des TimePickersaria-labelledby
- Verknüpft ein Label mit dem TimePickeraria-describedby
- Verknüpft eine ausführliche Beschreibung mit dem TimePickeraria-expanded
- Zeigt an, ob das Popup geöffnet istaria-haspopup
- Zeigt an, dass der TimePicker ein Popup hataria-controls
- Verknüpft den TimePicker mit dem Popuparia-invalid
- Zeigt an, ob der TimePicker ungültig istaria-required
- Zeigt an, ob der TimePicker erforderlich istaria-readonly
- Zeigt an, ob der TimePicker schreibgeschützt istaria-busy
- Zeigt an, ob der TimePicker im Ladezustand istrole="dialog"
- Definiert das Popup als Dialogrole="listbox"
- Definiert die Listen im Popup als Listboxenrole="option"
- Definiert die Elemente in den Listen als Optionenaria-selected
- Zeigt an, welche Option ausgewählt istaria-activedescendant
- Verknüpft die Listbox mit der aktuell fokussierten Option
Tastaturunterstützung
- Öffnen des Popups mit Enter oder Leertaste
- Schließen des Popups mit Escape
- Navigation zwischen den Abschnitten (Stunden, Minuten, Sekunden, Periode) mit Tab
- Navigation innerhalb der Abschnitte mit Pfeiltasten
- Sprung zum Anfang/Ende der Liste mit Home/End
- Auswahl einer Option mit Enter oder Leertaste
- Visuelle Fokus-Indikatoren für alle interaktiven Elemente
Screenreader-Unterstützung
- Versteckte Beschreibungen für zusätzliche Informationen
- Live-Regionen für Statusänderungen
- Ankündigung von Zeitänderungen
- Korrekte Ankündigung von Fehlermeldungen
- Screenreader-Anweisungen zur Bedienung des TimePickers
- Korrekte Beschriftung aller Abschnitte und Optionen
Zusätzliche Funktionen
- Unterstützung für 12h- und 24h-Format
- Unterstützung für verschiedene Größen
- Unterstützung für Fehler-, Erfolgs- und Ladezustände
- Unterstützung für Hilfetext und Beschreibungen
- Unterstützung für benutzerdefinierte Icons
- Unterstützung für Zeitintervalle (minuteStep, secondStep)
- Unterstützung für Min- und Max-Zeit
- Unterstützung für optionale Sekunden (hideSeconds)
Beispiel-Implementierung
// Einfacher TimePicker
<TimePickerA11y
label="Uhrzeit"
format="24h"
onChange={(time) => console.log(time)}
ariaLabel="Uhrzeit auswählen"
/>
// TimePicker mit 12h-Format
<TimePickerA11y
label="Uhrzeit"
format="12h"
onChange={(time) => console.log(time)}
ariaLabel="Uhrzeit auswählen"
helperText="Format: HH:MM AM/PM"
/>
// TimePicker ohne Sekunden
<TimePickerA11y
label="Uhrzeit"
hideSeconds
onChange={(time) => console.log(time)}
ariaLabel="Uhrzeit auswählen"
helperText="Format: HH:MM"
/>
// TimePicker mit Zeitintervallen
<TimePickerA11y
label="Uhrzeit"
minuteStep={15}
secondStep={15}
onChange={(time) => console.log(time)}
ariaLabel="Uhrzeit auswählen"
helperText="15-Minuten-Intervalle"
/>
// TimePicker mit Min- und Max-Zeit
<TimePickerA11y
label="Uhrzeit"
minTime="09:00"
maxTime="17:00"
onChange={(time) => console.log(time)}
ariaLabel="Uhrzeit auswählen"
helperText="Geschäftszeiten: 9:00 - 17:00 Uhr"
/>
// TimePicker mit Icon
<TimePickerA11y
label="Uhrzeit"
leftIcon={<ClockIcon />}
onChange={(time) => console.log(time)}
ariaLabel="Uhrzeit auswählen"
/>
// TimePicker mit Fehlermeldung
<TimePickerA11y
label="Uhrzeit"
error="Bitte geben Sie eine gültige Uhrzeit ein"
onChange={(time) => console.log(time)}
ariaLabel="Uhrzeit auswählen"
/>
Barrierefreiheitstests
Die TimePicker-Komponente wurde mit folgenden Tests auf Barrierefreiheit geprüft:
- Automatisierte Tests mit jest-axe zur Überprüfung der ARIA-Attribute
- Tastatur-Tests zur Überprüfung der Tastaturnavigation und -bedienung
- Screenreader-Tests zur Überprüfung der korrekten Ankündigungen
- Visuelle Tests zur Überprüfung der Farbkontraste und Fokus-Indikatoren
Bekannte Einschränkungen
- Die Komponente unterstützt derzeit keine Eingabe per Tastatur direkt im Input-Feld
- Die Komponente unterstützt derzeit keine Zeitzonen
- Die Komponente unterstützt derzeit keine Millisekunden
- Die Komponente unterstützt derzeit keine Kombination mit DatePicker
- Die Komponente unterstützt derzeit keine Lokalisierung der Beschriftungen