TabView Barrierefreiheit
Implementierte Verbesserungen
Die TabView-Komponente wurde mit folgenden Barrierefreiheitsverbesserungen aktualisiert:
ARIA-Attribute
role="tablist"
- Definiert die Gruppe von Tabs als Tablisterole="tab"
- Definiert jedes Tab-Element als Tabrole="tabpanel"
- Definiert den Inhaltsbereich als Tab-Panelaria-orientation
- Gibt die Ausrichtung der Tabs an (horizontal/vertikal)aria-selected
- Zeigt an, welcher Tab ausgewählt istaria-controls
- Verknüpft jeden Tab mit seinem Panelaria-labelledby
- Verknüpft jedes Panel mit seinem Tabaria-disabled
- Zeigt an, ob ein Tab deaktiviert istaria-label
- Bietet eine Beschreibung der Tablistearia-describedby
- Verknüpft eine ausführliche Beschreibung mit der Tablistearia-errormessage
- Verknüpft eine Fehlermeldung mit der Tablistearia-invalid
- Zeigt an, ob die Tabliste ungültig istaria-busy
- Zeigt an, ob die Tabliste im Ladezustand ist
Tastaturunterstützung
- Vollständige Tastaturnavigation mit Tab-Taste
- Navigation zwischen Tabs mit Pfeiltasten
- Aktivierung von Tabs mit Enter oder Leertaste
- Sprung zum ersten Tab mit Home-Taste
- Sprung zum letzten Tab mit End-Taste
- Tastaturkürzel für direkten Zugriff auf Tabs (1-9)
- Zirkuläre Navigation (vom letzten zum ersten Tab und umgekehrt)
- Automatische oder manuelle Aktivierung von Tabs
- Überspringen von deaktivierten Tabs
Screenreader-Unterstützung
- Versteckte Beschreibungen für zusätzliche Informationen
- Live-Regionen für Statusänderungen
- Ankündigung von Tab-Wechseln
- Korrekte Ankündigung von Fehlermeldungen
- Unterstützung für benutzerdefinierte ARIA-Labels
Zusätzliche Funktionen
- Unterstützung für vertikale und horizontale Tabs
- Unterstützung für verschiedene Tab-Positionen (oben, unten, links, rechts)
- Unterstützung für verschiedene Tab-Varianten (default, pills, buttons, underline, minimal)
- Unterstützung für verschiedene Tab-Größen
- Unterstützung für Icons und Badges in Tabs
- Unterstützung für Fehler-, Erfolgs- und Ladezustände
- Unterstützung für Hilfetext und Beschreibungen
Beispiel-Implementierung
// Einfache Tabs
<TabViewA11y
tabs={[
{ id: 'tab1', label: 'Tab 1', content: <div>Inhalt von Tab 1</div> },
{ id: 'tab2', label: 'Tab 2', content: <div>Inhalt von Tab 2</div> }
]}
ariaLabel="Beispiel-Tabs"
/>
// Tabs mit Icons und Badges
<TabViewA11y
tabs={[
{
id: 'home',
label: 'Home',
content: <div>Startseite</div>,
icon: <HomeIcon />,
badge: 'Neu',
badgeColor: 'primary'
},
{
id: 'profile',
label: 'Profil',
content: <div>Benutzerprofil</div>,
icon: <UserIcon />
}
]}
ariaLabel="Navigation"
/>
// Vertikale Tabs
<TabViewA11y
tabs={[
{ id: 'tab1', label: 'Tab 1', content: <div>Inhalt von Tab 1</div> },
{ id: 'tab2', label: 'Tab 2', content: <div>Inhalt von Tab 2</div> }
]}
ariaLabel="Vertikale Tabs"
vertical
position="left"
/>
// Tabs mit manueller Aktivierung
<TabViewA11y
tabs={[
{ id: 'tab1', label: 'Tab 1', content: <div>Inhalt von Tab 1</div> },
{ id: 'tab2', label: 'Tab 2', content: <div>Inhalt von Tab 2</div> }
]}
ariaLabel="Manuelle Tabs"
manual
description="Drücken Sie die Leertaste oder Enter, um einen Tab zu aktivieren"
/>
Barrierefreiheitstests
Die TabView-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 verschachtelten Tabs
- Die Komponente unterstützt derzeit keine dynamische Änderung der Tab-Anzahl
- Die Komponente unterstützt derzeit keine Drag-and-Drop-Umordnung von Tabs
- Die Komponente unterstützt derzeit keine Tabs mit Formularelementen
- Die Komponente unterstützt derzeit keine Tabs mit komplexen Inhalten wie Tabellen oder Listen