Radio und RadioGroup Barrierefreiheit
Implementierte Verbesserungen
Die Radio- und RadioGroup-Komponenten wurden mit folgenden Barrierefreiheitsverbesserungen aktualisiert:
ARIA-Attribute für Radio
aria-checked
- Gibt an, ob die Radio-Option ausgewählt istaria-label
- Bietet eine Beschreibung der Radio-Optionaria-describedby
- Verknüpft eine ausführliche Beschreibung mit der Radio-Optionaria-errormessage
- Verknüpft eine Fehlermeldung mit der Radio-Optionaria-invalid
- Zeigt an, ob die Radio-Option ungültig istaria-required
- Zeigt an, ob die Radio-Option erforderlich ist
ARIA-Attribute für RadioGroup
role="radiogroup"
- Definiert die Gruppe als Radiogruppearia-label
- Bietet eine Beschreibung der Radiogruppearia-labelledby
- Verknüpft ein Label mit der Radiogruppearia-describedby
- Verknüpft eine ausführliche Beschreibung mit der Radiogruppearia-errormessage
- Verknüpft eine Fehlermeldung mit der Radiogruppearia-invalid
- Zeigt an, ob die Radiogruppe ungültig istaria-required
- Zeigt an, ob die Radiogruppe erforderlich istaria-busy
- Zeigt an, ob die Radiogruppe im Ladezustand istaria-live
- Definiert, wie Änderungen in der Radiogruppe von Screenreadern angekündigt werden
Tastaturunterstützung
- Vollständige Tastaturnavigation mit Tab-Taste
- Auswahl mit Leertaste oder Enter-Taste
- Visuelle Fokus-Indikatoren
- Unterstützung für Tastatur-Events (keydown, keyup)
- Unterstützung für Fokus-Management
Screenreader-Unterstützung
- Versteckte Beschreibungen für zusätzliche Informationen
- Ankündigung des Auswahlzustands (ausgewählt/nicht ausgewählt)
- Benutzerdefinierte Texte für Auswahlzustände
- Live-Regionen für Statusänderungen
- Korrekte Ankündigung von Fehlermeldungen
Zusätzliche Funktionen
- Benutzerdefinierte Labels für Radio-Optionen
- Benutzerdefinierte Beschreibungen für Screenreader
- Unterstützung für verschiedene Größen und Farben
- Unterstützung für verschiedene Label-Positionen
- Unterstützung für vertikale und horizontale Layouts
Beispiel-Implementierung
// Einzelne Radio-Option
<RadioA11y
name="option"
value="option1"
label="Option 1"
ariaLabel="Erste Option"
description="Dies ist die erste Option"
/>
// RadioGroup mit mehreren Optionen
<RadioGroupA11y
name="options"
label="Wählen Sie eine Option"
value={selectedOption}
onChange={(e) => setSelectedOption(e.target.value)}
ariaLabel="Optionsauswahl"
description="Bitte wählen Sie eine der folgenden Optionen"
>
<RadioA11y value="option1" label="Option 1" />
<RadioA11y value="option2" label="Option 2" />
<RadioA11y value="option3" label="Option 3" />
</RadioGroupA11y>
// RadioGroup mit horizontalem Layout
<RadioGroupA11y
name="layout"
label="Layout-Optionen"
layout="horizontal"
required
ariaLabel="Layout-Auswahl"
>
<RadioA11y value="grid" label="Grid" />
<RadioA11y value="list" label="Liste" />
<RadioA11y value="table" label="Tabelle" />
</RadioGroupA11y>
Barrierefreiheitstests
Die Radio- und RadioGroup-Komponenten wurden 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 Komponenten unterstützen derzeit keine Gruppierung mit Fieldset und Legend
- Die Komponenten unterstützen derzeit keine automatische Fokussierung auf die erste Option
- Die Komponenten unterstützen derzeit keine Pfeiltasten-Navigation innerhalb der Gruppe
- Die Komponenten unterstützen derzeit keine automatische Auswahl beim Fokussieren