angular / angular/components

Add a "focus on first tab" option to FocusTrap in CDK

Offen
#10,156 7 Kommentare 4 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area: cdk/a11y feature P4
Vorherrschende Sprache
TypeScript
Sterne
25k
Forks
6.8k
Ø Merge
1 T. 8 Std.
Gemergte PRs (30 T.)
91

Beschreibung

#### Bug, feature request, or proposal:
Proposal

#### What is the expected behavior?
For dialogs and other containers such as drawers, menus etc. When the dialog or container is initialized to receive focus, instead of focusing the first tabbable element or the cdkFocusInitial directive's element, do not focus any element. Instead focus the first element upon the first tab or the last element upon shift-tab.

#### What is the current behavior?
Currently when using cdkFocusRegionStart and cdkFocusRegionEnd, the first tabbable element with the focus trap region receives initial focus. The cdkFocusInitial directive allows changing which component, but there is no mechanism to have no element initially focused. There are often use cases when no initial focus is a preferred behavior (e.g. dialogs where the primary action is non-reversible such as a delete operation).

#### What is the use-case or motivation for changing an existing behavior?
To support use cases where no initial focus is an important UX concern.

#### Is there anything else we should know?
This could be low effort. It appears that the wiring already in FocusTrap could easily support this. A new directive such as 'cdkFocusInitialTab' could be added to be the focus target on initial tab, and code changes made so that initial focus to the first tabbable element is not automatically applied when that directive is used. Usage could be something like:
```
First
...
Last
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der FocusTrap-Implementierung von CDK und der im Issue beschriebenen Anbindung von cdkFocusRegionStart/cdkFocusRegionEnd und cdkFocusInitial. Verfolge, wie der anfängliche Fokus ausgewählt wird, und definiere und teste dann das vorgeschlagene cdkFocusInitialTab-Verhalten, sodass Tab vorwärts zum ersten Element und Umschalt-Tab zum letzten Element gelangt, ohne zunächst ein Element zu fokussieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
angular, typescript
Bereich
accessibility, frontend
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.