Skip to content

Commit ee239a9

Browse files
committed
fix(aria/menu): Add label property for proper aria-label
1 parent e78587f commit ee239a9

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

goldens/aria/menu/index.api.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,15 @@ export class MenuItem<V> {
7373
readonly expanded: _angular_core.Signal<boolean | null>;
7474
readonly hasPopup: _angular_core.Signal<boolean>;
7575
readonly id: _angular_core.InputSignal<string>;
76+
readonly label: _angular_core.InputSignal<string | null>;
7677
open(): void;
7778
readonly parent: Menu<V> | MenuBar<V> | null;
7879
readonly _pattern: MenuItemPattern<V>;
7980
readonly searchTerm: _angular_core.ModelSignal<string>;
8081
readonly submenu: _angular_core.InputSignal<Menu<V> | undefined>;
8182
readonly value: _angular_core.InputSignal<V>;
8283
// (undocumented)
83-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuItem<any>, "[ngMenuItem]", ["ngMenuItem"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "submenu": { "alias": "submenu"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; }, never, never, true, never>;
84+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuItem<any>, "[ngMenuItem]", ["ngMenuItem"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "submenu": { "alias": "submenu"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; }, never, never, true, never>;
8485
// (undocumented)
8586
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItem<any>, never>;
8687
}

src/aria/menu/menu-item.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import type {MenuBar} from './menu-bar';
3838
'(focusin)': '_pattern.onFocusIn()',
3939
'[attr.tabindex]': '_pattern.tabIndex()',
4040
'[attr.data-active]': 'active()',
41+
'[attr.aria-label]': 'label() || value()',
4142
'[attr.aria-haspopup]': 'hasPopup()',
4243
'[attr.aria-expanded]': 'expanded()',
4344
'[attr.aria-disabled]': '_pattern.disabled()',
@@ -54,9 +55,12 @@ export class MenuItem<V> {
5455
/** The unique ID of the menu item. */
5556
readonly id = input(inject(_IdGenerator).getId('ng-menu-item-', true));
5657

57-
/** The value of the menu item. */
58+
/** The value of the menu item, used as the default aria-label */
5859
readonly value = input.required<V>();
5960

61+
/** The label for the menu item, used as the aria-label. */
62+
readonly label = input<string | null>(null);
63+
6064
/** Whether the menu item is disabled. */
6165
readonly disabled = input<boolean>(false);
6266

src/components-examples/aria/menubar/menubar/menubar-example.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<span class="example-shortcut">⌘O</span>
3131
</div>
3232

33-
<div ngMenuItem value="Make a copy">
33+
<div ngMenuItem label="Make a copy" value="copy">
3434
<span class="example-icon material-symbols-outlined" translate="no">file_copy</span>
3535
<span class="example-label">Make a copy</span>
3636
</div>

0 commit comments

Comments
 (0)