Skip to content
This repository was archived by the owner on Jan 13, 2025. It is now read-only.

Commit f4b0bf5

Browse files
authored
fix(menu): Switch from aria-selected to aria-checked for selected menu item. (#4779)
aria-checked is advised in ARIA spec for selectable menu items: * w3.org/TR/wai-aria-1.1/#menuitemcheckbox * w3.org/TR/wai-aria-1.1/#menuitemradio
1 parent f8c561c commit f4b0bf5

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

packages/mdc-menu/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const cssClasses = {
2828
};
2929

3030
const strings = {
31-
ARIA_SELECTED_ATTR: 'aria-selected',
31+
ARIA_CHECKED_ATTR: 'aria-checked',
3232
CHECKBOX_SELECTOR: 'input[type="checkbox"]',
3333
LIST_SELECTOR: '.mdc-list',
3434
SELECTED_EVENT: 'MDCMenu:selected',

packages/mdc-menu/foundation.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,12 @@ export class MDCMenuFoundation extends MDCFoundation<MDCMenuAdapter> {
142142

143143
const prevSelectedIndex = this.adapter_.getSelectedSiblingOfItemAtIndex(index);
144144
if (prevSelectedIndex >= 0) {
145-
this.adapter_.removeAttributeFromElementAtIndex(prevSelectedIndex, strings.ARIA_SELECTED_ATTR);
145+
this.adapter_.removeAttributeFromElementAtIndex(prevSelectedIndex, strings.ARIA_CHECKED_ATTR);
146146
this.adapter_.removeClassFromElementAtIndex(prevSelectedIndex, cssClasses.MENU_SELECTED_LIST_ITEM);
147147
}
148148

149149
this.adapter_.addClassToElementAtIndex(index, cssClasses.MENU_SELECTED_LIST_ITEM);
150-
this.adapter_.addAttributeToElementAtIndex(index, strings.ARIA_SELECTED_ATTR, 'true');
150+
this.adapter_.addAttributeToElementAtIndex(index, strings.ARIA_CHECKED_ATTR, 'true');
151151
}
152152

153153
private validatedIndex_(index: number): void {

test/unit/mdc-menu/menu.foundation.test.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,9 +279,9 @@ test('setSelectedIndex calls addClass and addAttribute only', () => {
279279
td.verify(mockAdapter.removeClassFromElementAtIndex(
280280
td.matchers.isA(Number), cssClasses.MENU_SELECTED_LIST_ITEM), {times: 0});
281281
td.verify(mockAdapter.removeAttributeFromElementAtIndex(td.matchers.isA(Number),
282-
strings.ARIA_SELECTED_ATTR), {times: 0});
282+
strings.ARIA_CHECKED_ATTR), {times: 0});
283283
td.verify(mockAdapter.addClassToElementAtIndex(0, cssClasses.MENU_SELECTED_LIST_ITEM), {times: 1});
284-
td.verify(mockAdapter.addAttributeToElementAtIndex(0, strings.ARIA_SELECTED_ATTR, 'true'), {times: 1});
284+
td.verify(mockAdapter.addAttributeToElementAtIndex(0, strings.ARIA_CHECKED_ATTR, 'true'), {times: 1});
285285
});
286286

287287
test('setSelectedIndex remove class and attribute, and adds class and attribute to newly selected item', () => {
@@ -295,9 +295,9 @@ test('setSelectedIndex remove class and attribute, and adds class and attribute
295295
foundation.setSelectedIndex(0);
296296
td.verify(mockAdapter.removeClassFromElementAtIndex(1, cssClasses.MENU_SELECTED_LIST_ITEM), {times: 1});
297297
td.verify(
298-
mockAdapter.removeAttributeFromElementAtIndex(1, strings.ARIA_SELECTED_ATTR), {times: 1});
298+
mockAdapter.removeAttributeFromElementAtIndex(1, strings.ARIA_CHECKED_ATTR), {times: 1});
299299
td.verify(mockAdapter.addClassToElementAtIndex(0, cssClasses.MENU_SELECTED_LIST_ITEM), {times: 1});
300-
td.verify(mockAdapter.addAttributeToElementAtIndex(0, strings.ARIA_SELECTED_ATTR, 'true'), {times: 1});
300+
td.verify(mockAdapter.addAttributeToElementAtIndex(0, strings.ARIA_CHECKED_ATTR, 'true'), {times: 1});
301301
});
302302

303303
test('setSelectedIndex throws error if index is not in range', () => {

0 commit comments

Comments
 (0)