Skip to content

Commit e708cb3

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

3 files changed

Lines changed: 8 additions & 3 deletions

File tree

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: 4 additions & 0 deletions
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()',
@@ -57,6 +58,9 @@ export class MenuItem<V> {
5758
/** The value of the menu item. */
5859
readonly value = input.required<V>();
5960

61+
/** The label for the menu item. */
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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
>
1919
<div ngMenu #fileMenu="ngMenu">
2020
<ng-template ngMenuContent>
21-
<div ngMenuItem value="New">
21+
<div ngMenuItem value="New" label="New Article">
2222
<span class="example-icon material-symbols-outlined" translate="no">article</span>
2323
<span class="example-label">New</span>
2424
<span class="example-shortcut">⌘N</span>
@@ -37,7 +37,7 @@
3737

3838
<div role="separator" class="example-separator"></div>
3939

40-
<div ngMenuItem #shareEl value="Share" [submenu]="shareMenu()">
40+
<div ngMenuItem #shareEl value="Share" [submenu]="shareMenu()" aria-label="Share">
4141
<span class="example-icon material-symbols-outlined" translate="no">person_add</span>
4242
<span class="example-label">Share</span>
4343
<span class="example-icon example-arrow material-symbols-outlined" translate="no">arrow_right</span>

0 commit comments

Comments
 (0)