fix(multiple): change aria keyboard manager to only handle repeated events in correct places#32728
Merged
adolgachev merged 1 commit intoangular:mainfrom Feb 10, 2026
Merged
Conversation
366dfa3 to
4c5c3e0
Compare
4c5c3e0 to
f75d2e2
Compare
e65f6c8 to
35c6305
Compare
tjshiu
reviewed
Feb 9, 2026
| * This library has not yet had a need for stopPropagationImmediate. | ||
| */ | ||
| export interface EventHandlerOptions { | ||
| handleRepeat?: boolean; |
Contributor
There was a problem hiding this comment.
I might prefer preventRepeat instead. It makes it clearer what it is doing. I wasn't sure at first what handleRepeat was doing.
Contributor
Author
There was a problem hiding this comment.
I originally had ignoreRepeat but then I changed the default to ignore the repeat, and it is generally better to have defaults be false.
But we actually do default the others as true already, so I'll go back to that.
2df86f6 to
ee8f248
Compare
tjshiu
approved these changes
Feb 10, 2026
…vents in correct places
d898b53 to
c617fd7
Compare
Contributor
Author
jermowery
added a commit
to jermowery/components
that referenced
this pull request
Feb 23, 2026
…nside the button Add a new API, testing API, and docs for allowing progress indicators to be projected into a button and have them shown in an accessible manner Fixes angular#13667 undo Use more specific selector refactor(cdk/overlay): add way to only handle specific events in overlay We dispatch keyboard events to the different overlays depending on their attachment order and if they're listening for keyboard events. This works fine for the most part, but can lead to unexpected behavior where an overlay only cares about one type of event which ends up blocking the event from reaching other overlays. These changes add an `eventPredicate` option that overlay can use to allow some events to pass through. fix(material/tooltip): do not block events to other overlays Fixes that the tooltip was blocking keyboard events to other overlays, even if it doesn't care about them. Fixes angular#32760. fix(multiple): change aria keyboard manager to only handle repeated events in correct places (angular#32728) perf(aria/grid): performance when selecting in a large grid (angular#32766) Fixes that the grid cell's host bindings were slowing down the page significantly during selection when placed in a large grid. The issue seems to come from the fact that there's a non-zero cost to the signal reads in the directive's host bindings which can add up. These changes address the issue by batching the reads together in an effect. Fixes angular#32759. fix(material/radio): hide empty labels (angular#32754) We have similar logic in the checkbox and slide toggle so these changes apply it to the radio button: hiding the label when it's empty so it doesn't affect the layout. build: bump stackblitz template to 21.1 (angular#32752) Updates the template for Stackblitz examples to the latest version of Angular. docs: release notes for the v21.1.4 release release: cut the v21.2.0-next.4 release fix(aria/combobox): fix autocomplete examples and add comments explaining combobox selection behavior (angular#32714) fix(material/select): disable position locking (angular#32772) In angular#9789 we enabled locked positioning for `mat-select` due to the previous of laying out the panel. Then in angular#30628 we enabled flexible dimensions so it's able to shrink. This combination can cause the panel to shrink when the user scrolls it out of view. These changes remove the locked positioning since it's not necessary anymore. Fixes angular#32771. build: update cross-repo angular dependencies (angular#32684) See associated pull request for more information. fix(google-maps): fix mismatch in clusterer types (angular#32778) Fixes that the clusterer types seem to no longer match with the ones on npm, causing a type error. Fixes angular#32696. refactor(material/select): remove dependency on NgClass (angular#32776) Drops the dependency on `NgClass` from the select component since we can achieve the same with class bindings. fix(cdk/tree): no nodes focusable if data is replaced (angular#32781) Fixes that none of the tree nodes were focusable if the data is swapped out after initialization. Fixes angular#32779. build: update bazel dependencies (angular#32689) See associated pull request for more information. build: update all github actions (angular#32722) See associated pull request for more information. build: lock file maintenance (angular#32737) See associated pull request for more information. build: update pnpm to v10.29.3 (angular#32755) See associated pull request for more information. build: update cross-repo angular dependencies (angular#32784) See associated pull request for more information. docs: release notes for the v21.1.5 release release: cut the v21.2.0-next.5 release release: bump the next branch to v21.3.0-next.0 docs: release notes for the v21.2.0-rc.0 release build: update cross-repo angular dependencies (angular#32794) See associated pull request for more information. fix(aria/combobox): Adjust AutoComplete examples to properly announce no results text (angular#32786) build: update pnpm to v10.30.0 (angular#32803) See associated pull request for more information. build: update cross-repo angular dependencies (angular#32801) See associated pull request for more information. build: update dependencies and resolve breaking change (angular#32799) Takes over the dependency bump from angular#32690 and resolves a breaking change. fix(material/core): expose strong focus indicator structural styles (angular#32808) Exposes the structural styles for strong focus indicators so users can use them in their own components. Fixes angular#32773. build: set up schematics for v22 (angular#32806) One of the pre-requisites to release the next version of v22 is to have schematics set up. These changes add them ahead of time so we don't run into any issues when we go to release. fix(material/datepicker): drop dependency on NgClass (angular#32810) Drops the dependency on `NgClass` from the datepicker in favor of a direct `class` binding.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 angular-aria keyboard manager ignores the event.repeat parameter so holding down a key will cause it to loop even when that behavior is not desired. In general, repeated events should only be handled when navigating with arrow keys, and especially not when toggling (as then it just goes from off to on to off and so on).
Another issue is that the browser can interpret a keyboard space or enter as a click in certain cases. This is true with the toolbar so added check for a proper mouse event to handle the click (else already handled with keyboard) as well as updated spec to pass a proper event.
Note: we are missing tests for this but they probably need to be added at a higher level so that we can catch for not just the repeat issue but also issues like the click above. Else can just add explicit repeat but keyDown events but that isn't as useful.
Fixes b/479281429.