[Hoch] A11y: Fokus-Management fuer Dialoge und Such-Palette #162

Closed
opened 2026-07-21 13:01:18 +02:00 by fable-5 · 1 comment
Collaborator

Befunde A11Y-001, A11Y-009 (WCAG 2.4.3, 2.4.6). Bericht: Workspace doku/audit-barrierefreiheit-2026-07.md

Alle Modals und die Such-Palette haben keinen Fokus-Trap, keinen Initialfokus und keine Fokus-Rueckgabe. Messung: Im Verschieben-Dialog bleibt der Initialfokus auf body, 22 von 25 Tab-Schritten verlassen den Dialog, nach dem Schliessen landet der Fokus auf einem beliebigen Element. Die Dialoge haben ausserdem keinen zugaenglichen Namen (aria-labelledby fehlt).

Umsetzung:

  • Zentral in apps/web/src/lib/use-dismissable.ts bzw. einem gemeinsamen Modal-Wrapper: Tab/Shift-Tab zyklisch im Dialog halten, Initialfokus auf das erste sinnvolle Element, Fokus-Rueckgabe an den Ausloeser beim Schliessen.
  • aria-labelledby auf die vorhandene Dialog-Ueberschrift (h2) setzen.
  • Betroffen: MovePageDialog, DeletePageDialog, AccessRevokedDialog, SearchPalette, VaultImportSection.

Akzeptanz: Tab bleibt im offenen Dialog; Escape schliesst und der Ausloeser hat wieder den Fokus; axe-Regel aria-dialog-name ohne Treffer.

Befunde A11Y-001, A11Y-009 (WCAG 2.4.3, 2.4.6). Bericht: Workspace doku/audit-barrierefreiheit-2026-07.md Alle Modals und die Such-Palette haben keinen Fokus-Trap, keinen Initialfokus und keine Fokus-Rueckgabe. Messung: Im Verschieben-Dialog bleibt der Initialfokus auf body, 22 von 25 Tab-Schritten verlassen den Dialog, nach dem Schliessen landet der Fokus auf einem beliebigen Element. Die Dialoge haben ausserdem keinen zugaenglichen Namen (aria-labelledby fehlt). Umsetzung: - Zentral in apps/web/src/lib/use-dismissable.ts bzw. einem gemeinsamen Modal-Wrapper: Tab/Shift-Tab zyklisch im Dialog halten, Initialfokus auf das erste sinnvolle Element, Fokus-Rueckgabe an den Ausloeser beim Schliessen. - aria-labelledby auf die vorhandene Dialog-Ueberschrift (h2) setzen. - Betroffen: MovePageDialog, DeletePageDialog, AccessRevokedDialog, SearchPalette, VaultImportSection. Akzeptanz: Tab bleibt im offenen Dialog; Escape schliesst und der Ausloeser hat wieder den Fokus; axe-Regel aria-dialog-name ohne Treffer.
fable-5 added this to the Barrierefreiheit WCAG 2.1 AA milestone 2026-07-21 13:01:18 +02:00
Author
Collaborator

Umgesetzt in PR #172 (ein Commit je Issue), auf main gemerged und via CD auf Test+Int deployt. Verifikation: finaler Audit-Harness-Lauf ohne verbleibende axe-Verletzungen auf allen gescannten Screens; api-Vollsuite, shared-Tests und betroffene e2e-Packs gruen; Live-Spot-Check auf Test ok (u. a. lang=de dynamisch, Skip-Link als erster Tab-Stopp, Fokus-Trap gemessen). Details im Bericht doku/audit-barrierefreiheit-2026-07.md (Workspace).

Umgesetzt in PR #172 (ein Commit je Issue), auf main gemerged und via CD auf Test+Int deployt. Verifikation: finaler Audit-Harness-Lauf ohne verbleibende axe-Verletzungen auf allen gescannten Screens; api-Vollsuite, shared-Tests und betroffene e2e-Packs gruen; Live-Spot-Check auf Test ok (u. a. lang=de dynamisch, Skip-Link als erster Tab-Stopp, Fokus-Trap gemessen). Details im Bericht doku/audit-barrierefreiheit-2026-07.md (Workspace).
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stwaidele/dorfteich#162
No description provided.