Description
Is this a regression?
- Yes, this behavior used to work in the previous version
The previous version in which this bug was not present was
No response
Description
When an application uses routing, the application has its CDK Dialog
instance (A), and the route's component has its own CDK Dialog
instance (B), which has A as its parent.
When B opens a component in an overlay, it sets the aria-hidden attributes.
When the application provides a set of shared dialog components and a service to open them, they are opened from A, and aria-hidden attributes are not set because they are already present. (see Dialog._hideNonDialogContentFromAssistiveTechnology).
When B removes the last dialog (see Dialog._removeOpenDialog) while its parent (A) has dialogs open, the aria-hidden attributes are not removed.
This means that because the parent CDK dialog (A) doesn't know that the child dialog had any attributes set, the aria-hidden attributes are never removed again, and the application becomes inaccessible to assistive technologies.
Reproduction
StackBlitz link: https://stackblitz.com/edit/components-issue-starter-aa1qpb
Steps to reproduce:
- Click on Load Child
- Click on Show Dialog
- In the dialog click 'save and close'
- observe the 'wait dialog' being opened (before the Dialog is closed)
- the dialog is closed
- after the wait dialog is closed check the
Expected Behavior
All aria-hidden attributes set by dialogs are removed again.
Actual Behavior
The aria-hidden attributes set by CDK Dialog
B remain.
Environment
- Angular: 18.2.8
- CDK/Material: 18.2.8
- Browser(s): Any
- Operating System (e.g. Windows, macOS, Ubuntu): Any