-
Notifications
You must be signed in to change notification settings - Fork 6.8k
fix(cdk/a11y): allow for multiple browser-generated description containers #23507
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
andrewseguin
merged 1 commit into
angular:master
from
crisbeto:23499/aria-describer-multiple
Jan 31, 2022
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The same ID would be assigned twice if the aria-describer.ts file is packaged twice :

There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, how would that happen? We're keeping the counter for unique IDs outside of the class so it'll be global for all instances: https://github.com/angular/components/blob/master/src/cdk/a11y/aria-describer/aria-describer.ts#L36. The only way I can see this happening is if the script was somehow loaded twice.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes having the library loaded twice may happend (even if not recommended for performance).
My use case is the following: I'm developing a prebuilt UI component that can handle payment with various payment methods in a secure way. It's a full angular application wrapped inside a single Javascript file, and that can be used in any website, no matter the framework it uses.
If the website is also using Angular CDK, the AriaDescriber script will be loaded twice.
( Having the CDK_DESCRIBEDBY_ID_PREFIX variable customizable would be enough to work around this issue )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Supporting this won't be practical on our end, because even if we did handle it in the
AriaDescriber
, we have many more places that are set up in a similar way and which could break by generating duplicate IDs.