@angular/aria 22.0.0-next.6 → 22.0.0-next.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/_accordion-chunk.mjs.map +1 -1
- package/fesm2022/_click-event-manager-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-chunk.mjs +51 -2
- package/fesm2022/_combobox-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-listbox-chunk.mjs +3 -0
- package/fesm2022/_combobox-listbox-chunk.mjs.map +1 -1
- package/fesm2022/_combobox-tree-chunk.mjs.map +1 -1
- package/fesm2022/_deferred-content-chunk.mjs +16 -14
- package/fesm2022/_deferred-content-chunk.mjs.map +1 -1
- package/fesm2022/_element-chunk.mjs.map +1 -1
- package/fesm2022/_expansion-chunk.mjs.map +1 -1
- package/fesm2022/_list-chunk.mjs.map +1 -1
- package/fesm2022/_list-navigation-chunk.mjs +3 -1
- package/fesm2022/_list-navigation-chunk.mjs.map +1 -1
- package/fesm2022/_list-typeahead-chunk.mjs.map +1 -1
- package/fesm2022/_menu-chunk.mjs.map +1 -1
- package/fesm2022/_signal-like-chunk.mjs +0 -1
- package/fesm2022/_signal-like-chunk.mjs.map +1 -1
- package/fesm2022/_tabs-chunk.mjs +22 -47
- package/fesm2022/_tabs-chunk.mjs.map +1 -1
- package/fesm2022/_toolbar-widget-group-chunk.mjs.map +1 -1
- package/fesm2022/_widget-chunk.mjs +55 -13
- package/fesm2022/_widget-chunk.mjs.map +1 -1
- package/fesm2022/accordion-testing.mjs.map +1 -1
- package/fesm2022/accordion.mjs +16 -14
- package/fesm2022/accordion.mjs.map +1 -1
- package/fesm2022/aria.mjs +1 -1
- package/fesm2022/aria.mjs.map +1 -1
- package/fesm2022/combobox.mjs +59 -34
- package/fesm2022/combobox.mjs.map +1 -1
- package/fesm2022/grid-testing.mjs +72 -0
- package/fesm2022/grid-testing.mjs.map +1 -0
- package/fesm2022/grid.mjs +83 -37
- package/fesm2022/grid.mjs.map +1 -1
- package/fesm2022/listbox-testing.mjs.map +1 -1
- package/fesm2022/listbox.mjs +58 -31
- package/fesm2022/listbox.mjs.map +1 -1
- package/fesm2022/menu-testing.mjs.map +1 -1
- package/fesm2022/menu.mjs +41 -35
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/private.mjs +156 -5
- package/fesm2022/private.mjs.map +1 -1
- package/fesm2022/simple-combobox.mjs +443 -0
- package/fesm2022/simple-combobox.mjs.map +1 -0
- package/fesm2022/tabs-testing.mjs.map +1 -1
- package/fesm2022/tabs.mjs +243 -218
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/toolbar-testing.mjs.map +1 -1
- package/fesm2022/toolbar.mjs +11 -11
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tree-testing.mjs.map +1 -1
- package/fesm2022/tree.mjs +65 -33
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +10 -2
- package/types/_combobox-chunk.d.ts +32 -2
- package/types/_grid-chunk.d.ts +16 -8
- package/types/_tabs-chunk.d.ts +7 -42
- package/types/combobox.d.ts +4 -3
- package/types/grid-testing.d.ts +79 -0
- package/types/grid.d.ts +14 -6
- package/types/listbox.d.ts +8 -6
- package/types/menu.d.ts +7 -4
- package/types/private.d.ts +106 -10
- package/types/simple-combobox.d.ts +124 -0
- package/types/tabs.d.ts +79 -74
- package/types/tree.d.ts +5 -2
- package/fesm2022/_pointer-event-manager-chunk.mjs +0 -54
- package/fesm2022/_pointer-event-manager-chunk.mjs.map +0 -1
- package/resources/code-examples.db +0 -0
- package/types/_pointer-event-manager-chunk.d.ts +0 -34
package/fesm2022/listbox.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, ElementRef, computed, input, booleanAttribute, Directive, contentChildren, model, signal, afterRenderEffect, untracked } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, ElementRef, computed, input, booleanAttribute, Directive, contentChildren, numberAttribute, model, signal, afterRenderEffect, untracked } from '@angular/core';
|
|
3
3
|
import { Directionality } from '@angular/cdk/bidi';
|
|
4
4
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
5
5
|
import { OptionPattern, ComboboxListboxPattern, ListboxPattern } from './_combobox-listbox-chunk.mjs';
|
|
@@ -13,7 +13,6 @@ import './_list-typeahead-chunk.mjs';
|
|
|
13
13
|
import './_click-event-manager-chunk.mjs';
|
|
14
14
|
import './_deferred-content-chunk.mjs';
|
|
15
15
|
import './_combobox-chunk.mjs';
|
|
16
|
-
import './_pointer-event-manager-chunk.mjs';
|
|
17
16
|
|
|
18
17
|
const LISTBOX = new InjectionToken('LISTBOX');
|
|
19
18
|
|
|
@@ -26,9 +25,6 @@ class Option {
|
|
|
26
25
|
id = input(inject(_IdGenerator).getId('ng-option-', true), ...(ngDevMode ? [{
|
|
27
26
|
debugName: "id"
|
|
28
27
|
}] : []));
|
|
29
|
-
searchTerm = computed(() => this.label() ?? this.element.textContent, ...(ngDevMode ? [{
|
|
30
|
-
debugName: "searchTerm"
|
|
31
|
-
}] : []));
|
|
32
28
|
_listboxPattern = computed(() => this._listbox._pattern, ...(ngDevMode ? [{
|
|
33
29
|
debugName: "_listboxPattern"
|
|
34
30
|
}] : []));
|
|
@@ -53,11 +49,11 @@ class Option {
|
|
|
53
49
|
value: this.value,
|
|
54
50
|
listbox: this._listboxPattern,
|
|
55
51
|
element: () => this.element,
|
|
56
|
-
searchTerm: () => this.
|
|
52
|
+
searchTerm: () => this.label() ?? ''
|
|
57
53
|
});
|
|
58
54
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
59
55
|
minVersion: "12.0.0",
|
|
60
|
-
version: "22.0.0-next.
|
|
56
|
+
version: "22.0.0-next.9",
|
|
61
57
|
ngImport: i0,
|
|
62
58
|
type: Option,
|
|
63
59
|
deps: [],
|
|
@@ -65,7 +61,7 @@ class Option {
|
|
|
65
61
|
});
|
|
66
62
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
67
63
|
minVersion: "17.1.0",
|
|
68
|
-
version: "22.0.0-next.
|
|
64
|
+
version: "22.0.0-next.9",
|
|
69
65
|
type: Option,
|
|
70
66
|
isStandalone: true,
|
|
71
67
|
selector: "[ngOption]",
|
|
@@ -117,7 +113,7 @@ class Option {
|
|
|
117
113
|
}
|
|
118
114
|
i0.ɵɵngDeclareClassMetadata({
|
|
119
115
|
minVersion: "12.0.0",
|
|
120
|
-
version: "22.0.0-next.
|
|
116
|
+
version: "22.0.0-next.9",
|
|
121
117
|
ngImport: i0,
|
|
122
118
|
type: Option,
|
|
123
119
|
decorators: [{
|
|
@@ -232,10 +228,17 @@ class Listbox {
|
|
|
232
228
|
} : {}),
|
|
233
229
|
transform: booleanAttribute
|
|
234
230
|
});
|
|
231
|
+
tabIndex = input(undefined, {
|
|
232
|
+
...(ngDevMode ? {
|
|
233
|
+
debugName: "tabIndex"
|
|
234
|
+
} : {}),
|
|
235
|
+
transform: v => v === undefined ? undefined : numberAttribute(v)
|
|
236
|
+
});
|
|
235
237
|
value = model([], ...(ngDevMode ? [{
|
|
236
238
|
debugName: "value"
|
|
237
239
|
}] : []));
|
|
238
240
|
_pattern;
|
|
241
|
+
activeDescendant;
|
|
239
242
|
constructor() {
|
|
240
243
|
const inputs = {
|
|
241
244
|
...this,
|
|
@@ -247,32 +250,41 @@ class Listbox {
|
|
|
247
250
|
combobox: () => this._popup?.combobox?._pattern
|
|
248
251
|
};
|
|
249
252
|
this._pattern = this._popup?.combobox ? new ComboboxListboxPattern(inputs) : new ListboxPattern(inputs);
|
|
253
|
+
this.activeDescendant = computed(() => this._pattern.activeDescendant(), ...(ngDevMode ? [{
|
|
254
|
+
debugName: "activeDescendant"
|
|
255
|
+
}] : []));
|
|
250
256
|
if (this._popup) {
|
|
251
257
|
this._popup._controls.set(this._pattern);
|
|
252
258
|
}
|
|
253
|
-
afterRenderEffect(
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
259
|
+
afterRenderEffect({
|
|
260
|
+
read: () => {
|
|
261
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
262
|
+
const violations = this._pattern.validate();
|
|
263
|
+
for (const violation of violations) {
|
|
264
|
+
console.error(violation);
|
|
265
|
+
}
|
|
258
266
|
}
|
|
259
267
|
}
|
|
260
268
|
});
|
|
261
|
-
afterRenderEffect(
|
|
262
|
-
this._pattern.setDefaultStateEffect()
|
|
269
|
+
afterRenderEffect({
|
|
270
|
+
write: () => this._pattern.setDefaultStateEffect()
|
|
263
271
|
});
|
|
264
|
-
afterRenderEffect(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
272
|
+
afterRenderEffect({
|
|
273
|
+
write: () => {
|
|
274
|
+
const items = inputs.items();
|
|
275
|
+
const activeItem = untracked(() => inputs.activeItem());
|
|
276
|
+
if (!items.some(i => i === activeItem) && activeItem) {
|
|
277
|
+
this._pattern.listBehavior.unfocus();
|
|
278
|
+
}
|
|
269
279
|
}
|
|
270
280
|
});
|
|
271
|
-
afterRenderEffect(
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
281
|
+
afterRenderEffect({
|
|
282
|
+
write: () => {
|
|
283
|
+
const items = inputs.items();
|
|
284
|
+
const value = untracked(() => this.value());
|
|
285
|
+
if (items && value.some(v => !items.some(i => i.value() === v))) {
|
|
286
|
+
this.value.set(value.filter(v => items.some(i => i.value() === v)));
|
|
287
|
+
}
|
|
276
288
|
}
|
|
277
289
|
});
|
|
278
290
|
}
|
|
@@ -286,7 +298,7 @@ class Listbox {
|
|
|
286
298
|
}
|
|
287
299
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
288
300
|
minVersion: "12.0.0",
|
|
289
|
-
version: "22.0.0-next.
|
|
301
|
+
version: "22.0.0-next.9",
|
|
290
302
|
ngImport: i0,
|
|
291
303
|
type: Listbox,
|
|
292
304
|
deps: [],
|
|
@@ -294,7 +306,7 @@ class Listbox {
|
|
|
294
306
|
});
|
|
295
307
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
296
308
|
minVersion: "17.2.0",
|
|
297
|
-
version: "22.0.0-next.
|
|
309
|
+
version: "22.0.0-next.9",
|
|
298
310
|
type: Listbox,
|
|
299
311
|
isStandalone: true,
|
|
300
312
|
selector: "[ngListbox]",
|
|
@@ -369,6 +381,13 @@ class Listbox {
|
|
|
369
381
|
isRequired: false,
|
|
370
382
|
transformFunction: null
|
|
371
383
|
},
|
|
384
|
+
tabIndex: {
|
|
385
|
+
classPropertyName: "tabIndex",
|
|
386
|
+
publicName: "tabIndex",
|
|
387
|
+
isSignal: true,
|
|
388
|
+
isRequired: false,
|
|
389
|
+
transformFunction: null
|
|
390
|
+
},
|
|
372
391
|
value: {
|
|
373
392
|
classPropertyName: "value",
|
|
374
393
|
publicName: "value",
|
|
@@ -391,7 +410,7 @@ class Listbox {
|
|
|
391
410
|
},
|
|
392
411
|
properties: {
|
|
393
412
|
"attr.id": "id()",
|
|
394
|
-
"attr.tabindex": "_pattern.tabIndex()",
|
|
413
|
+
"attr.tabindex": "tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()",
|
|
395
414
|
"attr.aria-readonly": "_pattern.readonly()",
|
|
396
415
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
397
416
|
"attr.aria-orientation": "_pattern.orientation()",
|
|
@@ -418,7 +437,7 @@ class Listbox {
|
|
|
418
437
|
}
|
|
419
438
|
i0.ɵɵngDeclareClassMetadata({
|
|
420
439
|
minVersion: "12.0.0",
|
|
421
|
-
version: "22.0.0-next.
|
|
440
|
+
version: "22.0.0-next.9",
|
|
422
441
|
ngImport: i0,
|
|
423
442
|
type: Listbox,
|
|
424
443
|
decorators: [{
|
|
@@ -429,7 +448,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
429
448
|
host: {
|
|
430
449
|
'role': 'listbox',
|
|
431
450
|
'[attr.id]': 'id()',
|
|
432
|
-
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
451
|
+
'[attr.tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',
|
|
433
452
|
'[attr.aria-readonly]': '_pattern.readonly()',
|
|
434
453
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
435
454
|
'[attr.aria-orientation]': '_pattern.orientation()',
|
|
@@ -537,6 +556,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
537
556
|
required: false
|
|
538
557
|
}]
|
|
539
558
|
}],
|
|
559
|
+
tabIndex: [{
|
|
560
|
+
type: i0.Input,
|
|
561
|
+
args: [{
|
|
562
|
+
isSignal: true,
|
|
563
|
+
alias: "tabIndex",
|
|
564
|
+
required: false
|
|
565
|
+
}]
|
|
566
|
+
}],
|
|
540
567
|
value: [{
|
|
541
568
|
type: i0.Input,
|
|
542
569
|
args: [{
|
package/fesm2022/listbox.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listbox.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/tokens.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/listbox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Listbox} from './listbox';\n\nexport const LISTBOX = new InjectionToken<Listbox<any>>('LISTBOX');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {booleanAttribute, computed, Directive, ElementRef, inject, input} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {OptionPattern} from '../private';\nimport {LISTBOX} from './tokens';\n\n/**\n * A selectable option in an `ngListbox`.\n *\n * This directive should be applied to an element (e.g., `<li>`, `<div>`) within an\n * `ngListbox`. The `value` input is used to identify the option, and the `label` input provides\n * the accessible name for the option.\n *\n * ```html\n * <li ngOption value=\"item-id\" label=\"Item Name\">\n * Item Name\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> {\n /** A reference to the host element. */\n readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n /** Whether the option is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent Listbox. */\n private readonly _listbox = inject(LISTBOX);\n\n /** A unique identifier for the option. */\n readonly id = input(inject(_IdGenerator).getId('ng-option-', true));\n\n // TODO(wagnermaciel): See if we want to change how we handle this since textContent is not\n // reactive. See https://github.com/angular/components/pull/30495#discussion_r1961260216.\n /** The text used by the typeahead search. */\n protected readonly searchTerm = computed(() => this.label() ?? this.element.textContent);\n\n /** The parent Listbox UIPattern. */\n private readonly _listboxPattern = computed(() => this._listbox._pattern);\n\n /** The value of the option. */\n readonly value = input.required<V>();\n\n /** Whether an item is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n readonly label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this._listboxPattern,\n element: () => this.element,\n searchTerm: () => this.searchTerm() ?? '',\n });\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxListboxPattern, ListboxPattern, OptionPattern} from '../private';\nimport {ComboboxPopup} from '../combobox';\nimport {Option} from './option';\nimport {LISTBOX} from './tokens';\n\n/**\n * Represents a container used to display a list of items for a user to select from.\n *\n * The `ngListbox` is meant to be used in conjunction with `ngOption` directives to create a\n * selectable list. It supports single and multiple selection modes, as well as various focus and\n * orientation strategies.\n *\n * ```html\n * <ul ngListbox [(value)]=\"selectedItems\" [multi]=\"true\" orientation=\"vertical\">\n * @for (item of items; track item.id) {\n * <li ngOption [value]=\"item.id\" [label]=\"item.name\" [disabled]=\"item.disabled\">\n * {{item.name}}\n * </li>\n * }\n * </ul>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n hostDirectives: [ComboboxPopup],\n providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The Options nested inside of the Listbox. */\n private readonly _options = contentChildren(Option, {descendants: true});\n\n /** A signal wrapper for directionality. */\n protected readonly textDirection = inject(Directionality).valueSignal.asReadonly();\n\n /** The Option UIPatterns of the child Options. */\n protected readonly items = computed<OptionPattern<V>[]>(() =>\n this._options().map(option => option._pattern),\n );\n\n /** Whether the list is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the list.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the listbox container, and `aria-activedescendant` is used to indicate the active item.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the list.\n * - `follow`: The focused item is automatically selected.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n readonly typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** The values of the currently selected items. */\n readonly value = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this.items,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n combobox: () => this._popup?.combobox?._pattern,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxListboxPattern<V>(inputs)\n : new ListboxPattern<V>(inputs);\n\n if (this._popup) {\n this._popup._controls.set(this._pattern as ComboboxListboxPattern<V>);\n }\n\n afterRenderEffect(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n });\n\n afterRenderEffect(() => {\n this._pattern.setDefaultStateEffect();\n });\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect(() => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n });\n\n // Ensure that the value is always in sync with the available options.\n afterRenderEffect(() => {\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n\n /** Navigates to the first item in the listbox. */\n gotoFirst() {\n this._pattern.listBehavior.first();\n }\n}\n"],"names":["LISTBOX","InjectionToken","Option","element","inject","ElementRef","nativeElement","active","computed","_pattern","_listbox","id","input","_IdGenerator","getId","searchTerm","label","textContent","_listboxPattern","value","required","disabled","transform","booleanAttribute","selected","OptionPattern","listbox","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","attributes","properties","exportAs","ngImport","decorators","args","Listbox","_popup","ComboboxPopup","optional","_elementRef","_options","contentChildren","descendants","textDirection","Directionality","valueSignal","asReadonly","items","map","option","orientation","multi","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","ngDevMode","debugName","readonly","model","constructor","activeItem","signal","undefined","combobox","ComboboxListboxPattern","ListboxPattern","_controls","set","afterRenderEffect","violations","validate","violation","console","error","setDefaultStateEffect","untracked","some","i","listBehavior","unfocus","v","filter","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","outputs","listeners","providers","provide","useExisting","hostDirectives","directive","i1","ctorParameters","propDecorators","Input","alias","ContentChildren","forwardRef","Output"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"listbox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/listbox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Listbox} from './listbox';\n\nexport const LISTBOX = new InjectionToken<Listbox<any>>('LISTBOX');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {booleanAttribute, computed, Directive, ElementRef, inject, input} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {OptionPattern} from '../private';\nimport {LISTBOX} from './tokens';\n\n/**\n * A selectable option in an `ngListbox`.\n *\n * This directive should be applied to an element (e.g., `<li>`, `<div>`) within an\n * `ngListbox`. The `value` input is used to identify the option, and the `label` input provides\n * the accessible name for the option.\n *\n * ```html\n * <li ngOption value=\"item-id\" label=\"Item Name\">\n * Item Name\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> {\n /** A reference to the host element. */\n readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n /** Whether the option is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent Listbox. */\n private readonly _listbox = inject(LISTBOX);\n\n /** A unique identifier for the option. */\n readonly id = input(inject(_IdGenerator).getId('ng-option-', true));\n\n /** The parent Listbox UIPattern. */\n private readonly _listboxPattern = computed(() => this._listbox._pattern);\n\n /** The value of the option. */\n readonly value = input.required<V>();\n\n /** Whether an item is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n readonly label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this._listboxPattern,\n element: () => this.element,\n searchTerm: () => this.label() ?? '',\n });\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n numberAttribute,\n signal,\n Signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxListboxPattern, ListboxPattern, OptionPattern} from '../private';\nimport {ComboboxPopup} from '../combobox';\nimport {Option} from './option';\nimport {LISTBOX} from './tokens';\n\n/**\n * Represents a container used to display a list of items for a user to select from.\n *\n * The `ngListbox` is meant to be used in conjunction with `ngOption` directives to create a\n * selectable list. It supports single and multiple selection modes, as well as various focus and\n * orientation strategies.\n *\n * ```html\n * <ul ngListbox [(value)]=\"selectedItems\" [multi]=\"true\" orientation=\"vertical\">\n * @for (item of items; track item.id) {\n * <li ngOption [value]=\"item.id\" [label]=\"item.name\" [disabled]=\"item.disabled\">\n * {{item.name}}\n * </li>\n * }\n * </ul>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n hostDirectives: [ComboboxPopup],\n providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The Options nested inside of the Listbox. */\n private readonly _options = contentChildren(Option, {descendants: true});\n\n /** A signal wrapper for directionality. */\n protected readonly textDirection = inject(Directionality).valueSignal.asReadonly();\n\n /** The Option UIPatterns of the child Options. */\n protected readonly items = computed<OptionPattern<V>[]>(() =>\n this._options().map((option: Option<V>) => option._pattern),\n );\n\n /** Whether the list is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the list.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the listbox container, and `aria-activedescendant` is used to indicate the active item.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the list.\n * - `follow`: The focused item is automatically selected.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n readonly typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** The tabindex of the listbox. */\n readonly tabIndex = input(undefined, {\n transform: (v: string | number | undefined) =>\n v === undefined ? undefined : numberAttribute(v),\n });\n\n /** The values of the currently selected items. */\n readonly value = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n /** The ID of the active descendant in the listbox. */\n readonly activeDescendant: Signal<string | undefined>;\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this.items,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n combobox: () => this._popup?.combobox?._pattern,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxListboxPattern<V>(inputs)\n : new ListboxPattern<V>(inputs);\n\n this.activeDescendant = computed(() => this._pattern.activeDescendant());\n\n if (this._popup) {\n this._popup._controls.set(this._pattern as ComboboxListboxPattern<V>);\n }\n\n // Check for any violationns after the DOM has been updated.\n afterRenderEffect({\n read: () => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n },\n });\n\n afterRenderEffect({write: () => this._pattern.setDefaultStateEffect()});\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect({\n write: () => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n },\n });\n\n // Ensure that the value is always in sync with the available options.\n // This needs to be after the render for the value to always be available.\n afterRenderEffect({\n write: () => {\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n },\n });\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n\n /** Navigates to the first item in the listbox. */\n gotoFirst() {\n this._pattern.listBehavior.first();\n }\n}\n"],"names":["LISTBOX","InjectionToken","Option","element","inject","ElementRef","nativeElement","active","computed","_pattern","_listbox","id","input","_IdGenerator","getId","_listboxPattern","value","required","disabled","transform","booleanAttribute","label","selected","OptionPattern","listbox","searchTerm","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","attributes","properties","exportAs","ngImport","decorators","args","Listbox","_popup","ComboboxPopup","optional","_elementRef","_options","contentChildren","descendants","textDirection","Directionality","valueSignal","asReadonly","items","map","option","orientation","multi","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","ngDevMode","debugName","readonly","tabIndex","undefined","v","numberAttribute","model","activeDescendant","constructor","activeItem","signal","combobox","ComboboxListboxPattern","ListboxPattern","_controls","set","afterRenderEffect","read","violations","validate","violation","console","error","write","setDefaultStateEffect","untracked","some","i","listBehavior","unfocus","filter","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","outputs","listeners","providers","provide","useExisting","hostDirectives","directive","i1","ctorParameters","propDecorators","Input","alias","ContentChildren","forwardRef","Output"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-testing.mjs","sources":["../../../../../
|
|
1
|
+
{"version":3,"file":"menu-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/testing/menu-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarness, HarnessPredicate, TestElement} from '@angular/cdk/testing';\nimport {MenuHarnessFilters, MenuItemHarnessFilters} from './menu-harness-filters';\n\n/** Harness for interacting with a standard ngMenuItem in tests. */\nexport class MenuItemHarness extends ComponentHarness {\n static hostSelector = '[ngMenuItem]';\n\n static with(options: MenuItemHarnessFilters = {}): HarnessPredicate<MenuItemHarness> {\n return new HarnessPredicate(MenuItemHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n )\n .addOption(\n 'expanded',\n options.expanded,\n async (harness, expanded) => (await harness.isExpanded()) === expanded,\n );\n }\n\n /** Gets the text content of the menu item. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Whether the menu item is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the menu item is expanded (contains an open submenu). */\n async isExpanded(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-expanded')) === 'true';\n }\n\n /** Clicks the menu item to trigger its action or toggle its submenu. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Resolves the nested submenu panel associated with this menu item, if any exists. */\n async getSubmenu(): Promise<MenuHarness | null> {\n const controlsId = await (await this.host()).getAttribute('aria-controls');\n if (controlsId) {\n return this.documentRootLocatorFactory().locatorFor(\n MenuHarness.with({selector: `#${controlsId}`}),\n )();\n }\n return null;\n }\n}\n\n/** Harness for interacting with a standard ngMenu or ngMenuBar in tests. */\nexport class MenuHarness extends ComponentHarness {\n static hostSelector = '[ngMenu], [ngMenuBar]';\n\n static with(options: MenuHarnessFilters = {}): HarnessPredicate<MenuHarness> {\n return new HarnessPredicate(MenuHarness, options).addOption(\n 'triggerText',\n options.triggerText,\n async (harness, text) => {\n const trigger = await harness._getTrigger();\n if (!trigger) return false;\n return HarnessPredicate.stringMatches(await trigger.text(), text);\n },\n );\n }\n\n /** Resolves the trigger associated with this menu container via aria-controls inversion. */\n async _getTrigger(): Promise<TestElement | null> {\n const id = await (await this.host()).getAttribute('id');\n if (!id) return null;\n return this.documentRootLocatorFactory().locatorForOptional(`[aria-controls=\"${id}\"]`)();\n }\n\n /** Checks whether the menu container is visible. */\n async isOpen(): Promise<boolean> {\n const host = await this.host();\n // Menu bars are always visible persistently.\n if (await host.matchesSelector('[ngMenuBar]')) {\n return true;\n }\n return (await host.getAttribute('data-visible')) === 'true';\n }\n\n /** Opens the menu if it is currently closed. */\n async open(): Promise<void> {\n if (!(await this.isOpen())) {\n const trigger = await this._getTrigger();\n if (trigger) {\n await trigger.click();\n }\n }\n }\n\n /** Closes the menu if it is currently open. */\n async close(): Promise<void> {\n if (await this.isOpen()) {\n const trigger = await this._getTrigger();\n if (trigger) {\n await trigger.click();\n }\n }\n }\n\n /** Queries all menu items inside this menu container. */\n async getItems(filters: MenuItemHarnessFilters = {}): Promise<MenuItemHarness[]> {\n return this.locatorForAll(MenuItemHarness.with(filters))();\n }\n}\n"],"names":["MenuItemHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","disabled","isDisabled","expanded","isExpanded","host","getAttribute","click","getSubmenu","controlsId","documentRootLocatorFactory","locatorFor","MenuHarness","selector","triggerText","trigger","_getTrigger","id","locatorForOptional","isOpen","matchesSelector","open","close","getItems","filters","locatorForAll"],"mappings":"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"}
|
package/fesm2022/menu.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, input, computed, booleanAttribute, effect, Directive, InjectionToken, model, contentChildren,
|
|
2
|
+
import { inject, ElementRef, input, computed, booleanAttribute, effect, Directive, InjectionToken, model, contentChildren, output, signal, afterRenderEffect, untracked } from '@angular/core';
|
|
3
3
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
4
4
|
import { Directionality } from '@angular/cdk/bidi';
|
|
5
5
|
import { MenuTriggerPattern, MenuItemPattern, MenuBarPattern, MenuPattern } from './_menu-chunk.mjs';
|
|
@@ -54,7 +54,7 @@ class MenuTrigger {
|
|
|
54
54
|
}
|
|
55
55
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
56
56
|
minVersion: "12.0.0",
|
|
57
|
-
version: "22.0.0-next.
|
|
57
|
+
version: "22.0.0-next.9",
|
|
58
58
|
ngImport: i0,
|
|
59
59
|
type: MenuTrigger,
|
|
60
60
|
deps: [],
|
|
@@ -62,7 +62,7 @@ class MenuTrigger {
|
|
|
62
62
|
});
|
|
63
63
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
64
64
|
minVersion: "17.1.0",
|
|
65
|
-
version: "22.0.0-next.
|
|
65
|
+
version: "22.0.0-next.9",
|
|
66
66
|
type: MenuTrigger,
|
|
67
67
|
isStandalone: true,
|
|
68
68
|
selector: "[ngMenuTrigger]",
|
|
@@ -111,7 +111,7 @@ class MenuTrigger {
|
|
|
111
111
|
}
|
|
112
112
|
i0.ɵɵngDeclareClassMetadata({
|
|
113
113
|
minVersion: "12.0.0",
|
|
114
|
-
version: "22.0.0-next.
|
|
114
|
+
version: "22.0.0-next.9",
|
|
115
115
|
ngImport: i0,
|
|
116
116
|
type: MenuTrigger,
|
|
117
117
|
decorators: [{
|
|
@@ -216,7 +216,7 @@ class MenuItem {
|
|
|
216
216
|
}
|
|
217
217
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
218
218
|
minVersion: "12.0.0",
|
|
219
|
-
version: "22.0.0-next.
|
|
219
|
+
version: "22.0.0-next.9",
|
|
220
220
|
ngImport: i0,
|
|
221
221
|
type: MenuItem,
|
|
222
222
|
deps: [],
|
|
@@ -224,7 +224,7 @@ class MenuItem {
|
|
|
224
224
|
});
|
|
225
225
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
226
226
|
minVersion: "17.1.0",
|
|
227
|
-
version: "22.0.0-next.
|
|
227
|
+
version: "22.0.0-next.9",
|
|
228
228
|
type: MenuItem,
|
|
229
229
|
isStandalone: true,
|
|
230
230
|
selector: "[ngMenuItem]",
|
|
@@ -291,7 +291,7 @@ class MenuItem {
|
|
|
291
291
|
}
|
|
292
292
|
i0.ɵɵngDeclareClassMetadata({
|
|
293
293
|
minVersion: "12.0.0",
|
|
294
|
-
version: "22.0.0-next.
|
|
294
|
+
version: "22.0.0-next.9",
|
|
295
295
|
ngImport: i0,
|
|
296
296
|
type: MenuItem,
|
|
297
297
|
decorators: [{
|
|
@@ -396,7 +396,7 @@ class MenuBar {
|
|
|
396
396
|
debugName: "typeaheadDelay"
|
|
397
397
|
}] : []));
|
|
398
398
|
_pattern;
|
|
399
|
-
_itemPatterns =
|
|
399
|
+
_itemPatterns = computed(() => this._items().map(i => i._pattern), ...(ngDevMode ? [{
|
|
400
400
|
debugName: "_itemPatterns"
|
|
401
401
|
}] : []));
|
|
402
402
|
itemSelected = output();
|
|
@@ -413,11 +413,8 @@ class MenuBar {
|
|
|
413
413
|
activeItem: signal(undefined),
|
|
414
414
|
element: computed(() => this._elementRef.nativeElement)
|
|
415
415
|
});
|
|
416
|
-
afterRenderEffect(
|
|
417
|
-
|
|
418
|
-
});
|
|
419
|
-
afterRenderEffect(() => {
|
|
420
|
-
this._pattern.setDefaultStateEffect();
|
|
416
|
+
afterRenderEffect({
|
|
417
|
+
write: () => this._pattern.setDefaultStateEffect()
|
|
421
418
|
});
|
|
422
419
|
}
|
|
423
420
|
close() {
|
|
@@ -425,7 +422,7 @@ class MenuBar {
|
|
|
425
422
|
}
|
|
426
423
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
427
424
|
minVersion: "12.0.0",
|
|
428
|
-
version: "22.0.0-next.
|
|
425
|
+
version: "22.0.0-next.9",
|
|
429
426
|
ngImport: i0,
|
|
430
427
|
type: MenuBar,
|
|
431
428
|
deps: [],
|
|
@@ -433,7 +430,7 @@ class MenuBar {
|
|
|
433
430
|
});
|
|
434
431
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
435
432
|
minVersion: "17.2.0",
|
|
436
|
-
version: "22.0.0-next.
|
|
433
|
+
version: "22.0.0-next.9",
|
|
437
434
|
type: MenuBar,
|
|
438
435
|
isStandalone: true,
|
|
439
436
|
selector: "[ngMenuBar]",
|
|
@@ -511,7 +508,7 @@ class MenuBar {
|
|
|
511
508
|
}
|
|
512
509
|
i0.ɵɵngDeclareClassMetadata({
|
|
513
510
|
minVersion: "12.0.0",
|
|
514
|
-
version: "22.0.0-next.
|
|
511
|
+
version: "22.0.0-next.9",
|
|
515
512
|
ngImport: i0,
|
|
516
513
|
type: MenuBar,
|
|
517
514
|
decorators: [{
|
|
@@ -635,7 +632,12 @@ class Menu {
|
|
|
635
632
|
debugName: "parent"
|
|
636
633
|
}] : []));
|
|
637
634
|
_pattern;
|
|
638
|
-
_itemPatterns = (
|
|
635
|
+
_itemPatterns = computed(() => {
|
|
636
|
+
this._pattern.visible();
|
|
637
|
+
return this._items().map(i => i._pattern);
|
|
638
|
+
}, ...(ngDevMode ? [{
|
|
639
|
+
debugName: "_itemPatterns"
|
|
640
|
+
}] : []));
|
|
639
641
|
visible = computed(() => this._pattern.visible(), ...(ngDevMode ? [{
|
|
640
642
|
debugName: "visible"
|
|
641
643
|
}] : []));
|
|
@@ -660,22 +662,26 @@ class Menu {
|
|
|
660
662
|
element: computed(() => this._elementRef.nativeElement),
|
|
661
663
|
itemSelected: value => this.itemSelected.emit(value)
|
|
662
664
|
});
|
|
663
|
-
afterRenderEffect(
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
665
|
+
afterRenderEffect({
|
|
666
|
+
write: () => {
|
|
667
|
+
const parent = this.parent();
|
|
668
|
+
if (parent instanceof MenuItem && parent.parent instanceof MenuBar) {
|
|
669
|
+
this._deferredContentAware?.contentVisible.set(true);
|
|
670
|
+
} else {
|
|
671
|
+
this._deferredContentAware?.contentVisible.set(this._pattern.visible() || !!this.parent()?._pattern.hasBeenInteracted());
|
|
672
|
+
}
|
|
669
673
|
}
|
|
670
674
|
});
|
|
671
|
-
afterRenderEffect(
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
+
afterRenderEffect({
|
|
676
|
+
write: () => {
|
|
677
|
+
if (this.visible()) {
|
|
678
|
+
const activeItem = untracked(() => this._pattern.inputs.activeItem());
|
|
679
|
+
this._pattern.listBehavior.goto(activeItem);
|
|
680
|
+
}
|
|
675
681
|
}
|
|
676
682
|
});
|
|
677
|
-
afterRenderEffect(
|
|
678
|
-
this._pattern.setDefaultStateEffect()
|
|
683
|
+
afterRenderEffect({
|
|
684
|
+
write: () => this._pattern.setDefaultStateEffect()
|
|
679
685
|
});
|
|
680
686
|
}
|
|
681
687
|
close() {
|
|
@@ -683,7 +689,7 @@ class Menu {
|
|
|
683
689
|
}
|
|
684
690
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
685
691
|
minVersion: "12.0.0",
|
|
686
|
-
version: "22.0.0-next.
|
|
692
|
+
version: "22.0.0-next.9",
|
|
687
693
|
ngImport: i0,
|
|
688
694
|
type: Menu,
|
|
689
695
|
deps: [],
|
|
@@ -691,7 +697,7 @@ class Menu {
|
|
|
691
697
|
});
|
|
692
698
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
693
699
|
minVersion: "17.2.0",
|
|
694
|
-
version: "22.0.0-next.
|
|
700
|
+
version: "22.0.0-next.9",
|
|
695
701
|
type: Menu,
|
|
696
702
|
isStandalone: true,
|
|
697
703
|
selector: "[ngMenu]",
|
|
@@ -774,7 +780,7 @@ class Menu {
|
|
|
774
780
|
}
|
|
775
781
|
i0.ɵɵngDeclareClassMetadata({
|
|
776
782
|
minVersion: "12.0.0",
|
|
777
|
-
version: "22.0.0-next.
|
|
783
|
+
version: "22.0.0-next.9",
|
|
778
784
|
ngImport: i0,
|
|
779
785
|
type: Menu,
|
|
780
786
|
decorators: [{
|
|
@@ -866,7 +872,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
866
872
|
class MenuContent {
|
|
867
873
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
868
874
|
minVersion: "12.0.0",
|
|
869
|
-
version: "22.0.0-next.
|
|
875
|
+
version: "22.0.0-next.9",
|
|
870
876
|
ngImport: i0,
|
|
871
877
|
type: MenuContent,
|
|
872
878
|
deps: [],
|
|
@@ -874,7 +880,7 @@ class MenuContent {
|
|
|
874
880
|
});
|
|
875
881
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
876
882
|
minVersion: "14.0.0",
|
|
877
|
-
version: "22.0.0-next.
|
|
883
|
+
version: "22.0.0-next.9",
|
|
878
884
|
type: MenuContent,
|
|
879
885
|
isStandalone: true,
|
|
880
886
|
selector: "ng-template[ngMenuContent]",
|
|
@@ -887,7 +893,7 @@ class MenuContent {
|
|
|
887
893
|
}
|
|
888
894
|
i0.ɵɵngDeclareClassMetadata({
|
|
889
895
|
minVersion: "12.0.0",
|
|
890
|
-
version: "22.0.0-next.
|
|
896
|
+
version: "22.0.0-next.9",
|
|
891
897
|
ngImport: i0,
|
|
892
898
|
type: MenuContent,
|
|
893
899
|
decorators: [{
|