fix(cdk/a11y): allow for origin of already focused element to be changed #20966
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.
The way
FocusMonitor.focusVia
works is by callingfocus
on the specified element and waiting for afocus
event to trigger so the origin is applied. The problem is that iffocusVia
is called on an element that already has focus, the event won't be dispatched and the origin won't be updated which can cause the UI to look stuck.These changes make it so that if we detect that an element is focused already, we update its classes and dispatch the relevant event without trying to focus it.
Related to #20965.