fix(material/list): Selection List element should not be focusable. #18445
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, the
MatSelectionList
listbox
element itself receives focus on keyboard navigation. This does not follow the Listbox Design Pattern recommendation on the 1.1 ARIA practices (https://www.w3.org/TR/wai-aria-practices-1.1/#Listbox). Per their guidance:This PR changes the keyboard interaction of
MatSelectionList
to follow the guidance above.I would prefer to use the "roving tabindex" pattern, but given the list options are content-projected, I ran into issues keeping tabindices updated without ExpressionChangedAfter... errors. Thus, I instead essentially followed the implementation used in
MatChipList
. Thelistbox
element hastabindex="0"
, and theoption
elements havetabindex="-1"
. When thelistbox
is focused, it redirects focus to the properoption
element.tabindex
is temporarily set to-1
to allow focus to escape (MatChipList
does this as well).[tabIndex]
input onMatSelectionList
is now unused and should eventually be removed.