Skip to content

Commit d85c44b

Browse files
crisbetojelbourn
authored andcommitted
fix(select): remove aria-owns when options aren't in the DOM (#9091)
Removes the select's `aria-owns` attribute when the options aren't in the DOM, in order to avoid pointing non-existing elements. Fixes #7023.
1 parent bc27fea commit d85c44b

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/lib/select/select.spec.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1739,6 +1739,22 @@ describe('MatSelect', () => {
17391739
.toContain(options[1].id, `Expected aria-owns to contain IDs of its child options.`);
17401740
}));
17411741

1742+
it('should remove aria-owns when the options are not visible', fakeAsync(() => {
1743+
const select = fixture.debugElement.query(By.css('mat-select'));
1744+
1745+
expect(select.nativeElement.hasAttribute('aria-owns'))
1746+
.toBe(true, 'Expected select to have aria-owns while open.');
1747+
1748+
const backdrop =
1749+
overlayContainerElement.querySelector('.cdk-overlay-backdrop') as HTMLElement;
1750+
backdrop.click();
1751+
fixture.detectChanges();
1752+
flush();
1753+
1754+
expect(select.nativeElement.hasAttribute('aria-owns'))
1755+
.toBe(false, 'Expected select not to have aria-owns when closed.');
1756+
}));
1757+
17421758
it('should set the option id properly', fakeAsync(() => {
17431759
let firstOptionID = options[0].id;
17441760

src/lib/select/select.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ export class MatSelectTrigger {}
188188
'[attr.aria-required]': 'required.toString()',
189189
'[attr.aria-disabled]': 'disabled.toString()',
190190
'[attr.aria-invalid]': 'errorState',
191-
'[attr.aria-owns]': '_optionIds',
191+
'[attr.aria-owns]': 'panelOpen ? _optionIds : null',
192192
'[attr.aria-multiselectable]': 'multiple',
193193
'[attr.aria-describedby]': '_ariaDescribedby || null',
194194
'[attr.aria-activedescendant]': '_getAriaActiveDescendant()',

0 commit comments

Comments
 (0)