@angular/aria 22.1.0-next.1 → 22.1.0-next.3

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.
@@ -10,7 +10,7 @@ class DeferredContentAware {
10
10
  }] : []));
11
11
  static ɵfac = i0.ɵɵngDeclareFactory({
12
12
  minVersion: "12.0.0",
13
- version: "22.1.0-next.0",
13
+ version: "22.1.0-next.4",
14
14
  ngImport: i0,
15
15
  type: DeferredContentAware,
16
16
  deps: [],
@@ -18,7 +18,7 @@ class DeferredContentAware {
18
18
  });
19
19
  static ɵdir = i0.ɵɵngDeclareDirective({
20
20
  minVersion: "17.1.0",
21
- version: "22.1.0-next.0",
21
+ version: "22.1.0-next.4",
22
22
  type: DeferredContentAware,
23
23
  isStandalone: true,
24
24
  inputs: {
@@ -38,7 +38,7 @@ class DeferredContentAware {
38
38
  }
39
39
  i0.ɵɵngDeclareClassMetadata({
40
40
  minVersion: "12.0.0",
41
- version: "22.1.0-next.0",
41
+ version: "22.1.0-next.4",
42
42
  ngImport: i0,
43
43
  type: DeferredContentAware,
44
44
  decorators: [{
@@ -97,7 +97,7 @@ class DeferredContent {
97
97
  }
98
98
  static ɵfac = i0.ɵɵngDeclareFactory({
99
99
  minVersion: "12.0.0",
100
- version: "22.1.0-next.0",
100
+ version: "22.1.0-next.4",
101
101
  ngImport: i0,
102
102
  type: DeferredContent,
103
103
  deps: [],
@@ -105,7 +105,7 @@ class DeferredContent {
105
105
  });
106
106
  static ɵdir = i0.ɵɵngDeclareDirective({
107
107
  minVersion: "14.0.0",
108
- version: "22.1.0-next.0",
108
+ version: "22.1.0-next.4",
109
109
  type: DeferredContent,
110
110
  isStandalone: true,
111
111
  ngImport: i0
@@ -113,7 +113,7 @@ class DeferredContent {
113
113
  }
114
114
  i0.ɵɵngDeclareClassMetadata({
115
115
  minVersion: "12.0.0",
116
- version: "22.1.0-next.0",
116
+ version: "22.1.0-next.4",
117
117
  ngImport: i0,
118
118
  type: DeferredContent,
119
119
  decorators: [{
@@ -13,7 +13,7 @@ import './_click-event-manager-chunk.mjs';
13
13
  class AccordionContent {
14
14
  static ɵfac = i0.ɵɵngDeclareFactory({
15
15
  minVersion: "12.0.0",
16
- version: "22.1.0-next.0",
16
+ version: "22.1.0-next.4",
17
17
  ngImport: i0,
18
18
  type: AccordionContent,
19
19
  deps: [],
@@ -21,7 +21,7 @@ class AccordionContent {
21
21
  });
22
22
  static ɵdir = i0.ɵɵngDeclareDirective({
23
23
  minVersion: "14.0.0",
24
- version: "22.1.0-next.0",
24
+ version: "22.1.0-next.4",
25
25
  type: AccordionContent,
26
26
  isStandalone: true,
27
27
  selector: "ng-template[ngAccordionContent]",
@@ -33,7 +33,7 @@ class AccordionContent {
33
33
  }
34
34
  i0.ɵɵngDeclareClassMetadata({
35
35
  minVersion: "12.0.0",
36
- version: "22.1.0-next.0",
36
+ version: "22.1.0-next.4",
37
37
  ngImport: i0,
38
38
  type: AccordionContent,
39
39
  decorators: [{
@@ -91,7 +91,7 @@ class AccordionPanel {
91
91
  }
92
92
  static ɵfac = i0.ɵɵngDeclareFactory({
93
93
  minVersion: "12.0.0",
94
- version: "22.1.0-next.0",
94
+ version: "22.1.0-next.4",
95
95
  ngImport: i0,
96
96
  type: AccordionPanel,
97
97
  deps: [],
@@ -99,7 +99,7 @@ class AccordionPanel {
99
99
  });
100
100
  static ɵdir = i0.ɵɵngDeclareDirective({
101
101
  minVersion: "17.2.0",
102
- version: "22.1.0-next.0",
102
+ version: "22.1.0-next.4",
103
103
  type: AccordionPanel,
104
104
  isStandalone: true,
105
105
  selector: "[ngAccordionPanel]",
@@ -139,7 +139,7 @@ class AccordionPanel {
139
139
  }
140
140
  i0.ɵɵngDeclareClassMetadata({
141
141
  minVersion: "12.0.0",
142
- version: "22.1.0-next.0",
142
+ version: "22.1.0-next.4",
143
143
  ngImport: i0,
144
144
  type: AccordionPanel,
145
145
  decorators: [{
@@ -244,7 +244,7 @@ class AccordionGroup {
244
244
  }
245
245
  static ɵfac = i0.ɵɵngDeclareFactory({
246
246
  minVersion: "12.0.0",
247
- version: "22.1.0-next.0",
247
+ version: "22.1.0-next.4",
248
248
  ngImport: i0,
249
249
  type: AccordionGroup,
250
250
  deps: [],
@@ -252,7 +252,7 @@ class AccordionGroup {
252
252
  });
253
253
  static ɵdir = i0.ɵɵngDeclareDirective({
254
254
  minVersion: "17.1.0",
255
- version: "22.1.0-next.0",
255
+ version: "22.1.0-next.4",
256
256
  type: AccordionGroup,
257
257
  isStandalone: true,
258
258
  selector: "[ngAccordionGroup]",
@@ -303,7 +303,7 @@ class AccordionGroup {
303
303
  }
304
304
  i0.ɵɵngDeclareClassMetadata({
305
305
  minVersion: "12.0.0",
306
- version: "22.1.0-next.0",
306
+ version: "22.1.0-next.4",
307
307
  ngImport: i0,
308
308
  type: AccordionGroup,
309
309
  decorators: [{
@@ -429,7 +429,7 @@ class AccordionTrigger {
429
429
  }
430
430
  static ɵfac = i0.ɵɵngDeclareFactory({
431
431
  minVersion: "12.0.0",
432
- version: "22.1.0-next.0",
432
+ version: "22.1.0-next.4",
433
433
  ngImport: i0,
434
434
  type: AccordionTrigger,
435
435
  deps: [],
@@ -437,7 +437,7 @@ class AccordionTrigger {
437
437
  });
438
438
  static ɵdir = i0.ɵɵngDeclareDirective({
439
439
  minVersion: "17.1.0",
440
- version: "22.1.0-next.0",
440
+ version: "22.1.0-next.4",
441
441
  type: AccordionTrigger,
442
442
  isStandalone: true,
443
443
  selector: "[ngAccordionTrigger]",
@@ -494,7 +494,7 @@ class AccordionTrigger {
494
494
  }
495
495
  i0.ɵɵngDeclareClassMetadata({
496
496
  minVersion: "12.0.0",
497
- version: "22.1.0-next.0",
497
+ version: "22.1.0-next.4",
498
498
  ngImport: i0,
499
499
  type: AccordionTrigger,
500
500
  decorators: [{
package/fesm2022/aria.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Version } from '@angular/core';
2
2
 
3
- const VERSION = new Version('22.1.0-next.1');
3
+ const VERSION = new Version('22.1.0-next.3');
4
4
 
5
5
  export { VERSION };
6
6
  //# sourceMappingURL=aria.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aria.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/version.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 {Version} from '@angular/core';\n\n/** Current version of the Aria package. */\nexport const VERSION = new Version('22.1.0-next.1');\n"],"names":["VERSION","Version"],"mappings":";;MAWaA,OAAO,GAAG,IAAIC,OAAO,CAAC,mBAAmB;;;;"}
1
+ {"version":3,"file":"aria.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/version.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 {Version} from '@angular/core';\n\n/** Current version of the Aria package. */\nexport const VERSION = new Version('22.1.0-next.3');\n"],"names":["VERSION","Version"],"mappings":";;MAWaA,OAAO,GAAG,IAAIC,OAAO,CAAC,mBAAmB;;;;"}
@@ -60,7 +60,9 @@ class Combobox extends DeferredContentAware {
60
60
  });
61
61
  constructor() {
62
62
  super();
63
- afterRenderEffect(() => this._pattern.keyboardEventRelayEffect());
63
+ afterRenderEffect({
64
+ write: () => this._pattern.keyboardEventRelayEffect()
65
+ });
64
66
  afterRenderEffect(() => this._pattern.closePopupOnBlurEffect());
65
67
  afterRenderEffect(() => {
66
68
  this.contentVisible.set(this._pattern.isExpanded());
@@ -87,7 +89,7 @@ class Combobox extends DeferredContentAware {
87
89
  }
88
90
  static ɵfac = i0.ɵɵngDeclareFactory({
89
91
  minVersion: "12.0.0",
90
- version: "22.1.0-next.0",
92
+ version: "22.1.0-next.4",
91
93
  ngImport: i0,
92
94
  type: Combobox,
93
95
  deps: [],
@@ -95,7 +97,7 @@ class Combobox extends DeferredContentAware {
95
97
  });
96
98
  static ɵdir = i0.ɵɵngDeclareDirective({
97
99
  minVersion: "17.1.0",
98
- version: "22.1.0-next.0",
100
+ version: "22.1.0-next.4",
99
101
  type: Combobox,
100
102
  isStandalone: true,
101
103
  selector: "[ngCombobox]",
@@ -192,7 +194,7 @@ class Combobox extends DeferredContentAware {
192
194
  }
193
195
  i0.ɵɵngDeclareClassMetadata({
194
196
  minVersion: "12.0.0",
195
- version: "22.1.0-next.0",
197
+ version: "22.1.0-next.4",
196
198
  ngImport: i0,
197
199
  type: Combobox,
198
200
  decorators: [{
@@ -335,7 +337,7 @@ class ComboboxPopup {
335
337
  }
336
338
  static ɵfac = i0.ɵɵngDeclareFactory({
337
339
  minVersion: "12.0.0",
338
- version: "22.1.0-next.0",
340
+ version: "22.1.0-next.4",
339
341
  ngImport: i0,
340
342
  type: ComboboxPopup,
341
343
  deps: [],
@@ -343,7 +345,7 @@ class ComboboxPopup {
343
345
  });
344
346
  static ɵdir = i0.ɵɵngDeclareDirective({
345
347
  minVersion: "17.1.0",
346
- version: "22.1.0-next.0",
348
+ version: "22.1.0-next.4",
347
349
  type: ComboboxPopup,
348
350
  isStandalone: true,
349
351
  selector: "ng-template[ngComboboxPopup]",
@@ -376,7 +378,7 @@ class ComboboxPopup {
376
378
  }
377
379
  i0.ɵɵngDeclareClassMetadata({
378
380
  minVersion: "12.0.0",
379
- version: "22.1.0-next.0",
381
+ version: "22.1.0-next.4",
380
382
  ngImport: i0,
381
383
  type: ComboboxPopup,
382
384
  decorators: [{
@@ -452,7 +454,7 @@ class ComboboxWidget {
452
454
  }
453
455
  static ɵfac = i0.ɵɵngDeclareFactory({
454
456
  minVersion: "12.0.0",
455
- version: "22.1.0-next.0",
457
+ version: "22.1.0-next.4",
456
458
  ngImport: i0,
457
459
  type: ComboboxWidget,
458
460
  deps: [],
@@ -460,7 +462,7 @@ class ComboboxWidget {
460
462
  });
461
463
  static ɵdir = i0.ɵɵngDeclareDirective({
462
464
  minVersion: "17.1.0",
463
- version: "22.1.0-next.0",
465
+ version: "22.1.0-next.4",
464
466
  type: ComboboxWidget,
465
467
  isStandalone: true,
466
468
  selector: "[ngComboboxWidget]",
@@ -485,7 +487,7 @@ class ComboboxWidget {
485
487
  }
486
488
  i0.ɵɵngDeclareClassMetadata({
487
489
  minVersion: "12.0.0",
488
- version: "22.1.0-next.0",
490
+ version: "22.1.0-next.4",
489
491
  ngImport: i0,
490
492
  type: ComboboxWidget,
491
493
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-popup.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-widget.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 {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnInit,\n signal,\n Renderer2,\n} from '@angular/core';\nimport {DeferredContentAware, ComboboxPattern, tabIndexTransform} from '@angular/aria/private';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/**\n * A directive that coordinates a combobox trigger element and its associated popup widget.\n *\n * The `ngCombobox` directive is applied directly to the interactive trigger element, which can be\n * either an editable `<input>` (for search/autocomplete behaviors) or a non-editable element like\n * a `<div>` (for custom select dropdowns). It manages focus and expansion states, coordinates autocomplete\n * suggestions (if editable), and forwards navigation keys down into the active popup.\n *\n * ### Example 1: Editable Autocomplete Input\n * ```html\n * <input ngCombobox #combobox=\"ngCombobox\" [(value)]=\"searchQuery\" [(expanded)]=\"isExpanded\" />\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n *\n * ### Example 2: Non-Editable Custom Select Dropdown\n * ```html\n * <div ngCombobox #combobox=\"ngCombobox\" [(expanded)]=\"isExpanded\" class=\"select-trigger\">\n * {{selectedValue}}\n * </div>\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n host: {\n 'role': 'combobox',\n '[attr.aria-autocomplete]': '_pattern.autocomplete()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-readonly]': '_pattern.ariaReadonly()',\n '[attr.aria-expanded]': '_pattern.isExpanded()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[attr.aria-controls]': '_pattern.popupId()',\n '[attr.aria-haspopup]': '_pattern.popupType()',\n '[attr.tabindex]':\n 'disabled() && !softDisabled() ? -1 : (tabIndex() !== undefined ? tabIndex() : 0)',\n '[attr.disabled]': '_pattern.nativeDisabled()',\n '[attr.readonly]': '_pattern.nativeReadonly()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusin)': '_pattern.onFocusin()',\n '(focusout)': '_pattern.onFocusout($event)',\n '(click)': '_pattern.onClick($event)',\n '(input)': '_pattern.onInput($event)',\n },\n})\nexport class Combobox extends DeferredContentAware implements OnInit {\n private readonly _renderer = inject(Renderer2);\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** A reference to the input element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The popup associated with the combobox. */\n readonly _popup = signal<ComboboxPopup | undefined>(undefined);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is soft disabled (remains focusable). */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** Whether the combobox should always remain expanded. */\n readonly alwaysExpanded = input(false, {transform: booleanAttribute});\n\n /** The tabindex of the combobox. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** Whether the combobox is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** The value of the combobox input. */\n readonly value = model<string>('');\n\n /** An inline suggestion to be displayed in the input. */\n readonly inlineSuggestion = input<string | undefined>(undefined);\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern({\n ...this,\n readonly: () => this.readonly(),\n element: () => this.element,\n expandable: () => true,\n popup: computed(() => this._popup()?._pattern),\n });\n\n constructor() {\n super();\n\n afterRenderEffect(() => this._pattern.keyboardEventRelayEffect());\n afterRenderEffect(() => this._pattern.closePopupOnBlurEffect());\n afterRenderEffect(() => {\n this.contentVisible.set(this._pattern.isExpanded());\n });\n\n if (this._pattern.isEditable()) {\n afterRenderEffect(() => {\n this._renderer.setProperty(this.element, 'value', this.value());\n });\n afterRenderEffect(() => {\n this._pattern.highlightEffect();\n });\n }\n }\n\n ngOnInit() {\n if (this.alwaysExpanded()) {\n this.expanded.set(true);\n }\n }\n\n /** Registers a popup with the combobox. */\n _registerPopup(popup: ComboboxPopup) {\n this._popup.set(popup);\n }\n\n /** Unregisters the popup from the combobox. */\n _unregisterPopup() {\n this._popup.set(undefined);\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 {InjectionToken} from '@angular/core';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/** Token used to expose the combobox popup. */\nexport const COMBOBOX_POPUP = new InjectionToken<ComboboxPopup>('COMBOBOX_POPUP');\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 {computed, Directive, inject, input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {DeferredContent, ComboboxPopupPattern} from '@angular/aria/private';\nimport type {Combobox} from './combobox';\nimport type {ComboboxWidget} from './combobox-widget';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * A structural directive that marks the `ng-template` to be used as the popup\n * for a combobox. This content is conditionally rendered.\n *\n * The content of the popup can be any element with the `ngComboboxWidget` directive.\n *\n * ```html\n * <ng-template ngComboboxPopup>\n * <div ngComboboxWidget>\n * <!-- ... options ... -->\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n hostDirectives: [DeferredContent],\n providers: [{provide: COMBOBOX_POPUP, useExisting: ComboboxPopup}],\n})\nexport class ComboboxPopup implements OnInit, OnDestroy {\n private readonly _deferredContent = inject(DeferredContent);\n\n /** The combobox that the popup belongs to. */\n readonly combobox = input.required<Combobox>();\n\n /** The widget contained within the popup. */\n readonly _widget = signal<ComboboxWidget | undefined>(undefined);\n\n /** The element that serves as the control target for the popup. */\n readonly controlTarget = computed(() => this._widget()?.element);\n\n /** The ID of the popup. */\n readonly popupId = computed(() => this._widget()?.popupId());\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = computed(() => this._widget()?.activeDescendant());\n\n /** The type of the popup (e.g., listbox, tree, grid, dialog). */\n readonly popupType = input<'listbox' | 'tree' | 'grid' | 'dialog'>('listbox');\n\n /** The popup pattern. */\n readonly _pattern = new ComboboxPopupPattern({\n ...this,\n });\n\n ngOnInit() {\n this.combobox()._registerPopup(this);\n this._deferredContent.deferredContentAware.set(this.combobox());\n }\n\n ngOnDestroy() {\n this.combobox()._unregisterPopup();\n }\n\n /** Registers a widget with the popup. */\n _registerWidget(widget: ComboboxWidget) {\n this._widget.set(widget);\n }\n\n /** Unregisters the widget from the popup. */\n _unregisterWidget() {\n this._widget.set(undefined);\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 {Directive, ElementRef, inject, input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * Identifies an element as a widget within a combobox popup.\n *\n * This directive should be applied to the element that contains the options or content\n * of the popup. It handles the communication of ID and active descendant information\n * to the combobox.\n */\n@Directive({\n selector: '[ngComboboxWidget]',\n exportAs: 'ngComboboxWidget',\n host: {\n '(focusin)': 'onFocusin()',\n '(focusout)': 'onFocusout($event)',\n },\n})\nexport class ComboboxWidget implements OnInit, OnDestroy {\n /** The element that the popup widget is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _popup = inject(COMBOBOX_POPUP);\n\n /** A reference to the popup widget element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The ID of the popup widget. */\n readonly popupId = signal<string | undefined>(undefined);\n\n /** The ID of the active descendant in the widget. */\n readonly activeDescendant = input<string | undefined>(undefined);\n\n private _observer: MutationObserver | undefined;\n\n constructor() {\n const el = this.element;\n this._observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.attributeName === 'id') {\n this.popupId.set(el.id);\n }\n }\n });\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: ['id'],\n });\n }\n\n ngOnInit() {\n this.popupId.set(this.element.id);\n this._popup._registerWidget(this);\n }\n\n ngOnDestroy(): void {\n this._observer?.disconnect();\n this._popup._unregisterWidget();\n }\n\n /** Handles focus in events for the widget. */\n onFocusin() {\n this._popup._pattern.onFocusin();\n }\n\n /** Handles focus out events for the widget. */\n onFocusout(event: FocusEvent) {\n this._popup._pattern.onFocusout(event);\n }\n}\n"],"names":["Combobox","DeferredContentAware","_renderer","inject","Renderer2","_elementRef","ElementRef","element","nativeElement","_popup","signal","undefined","disabled","input","transform","booleanAttribute","readonly","softDisabled","alwaysExpanded","tabIndex","ngDevMode","debugName","alias","tabIndexTransform","expanded","model","value","inlineSuggestion","_pattern","ComboboxPattern","expandable","popup","computed","constructor","afterRenderEffect","keyboardEventRelayEffect","closePopupOnBlurEffect","contentVisible","set","isExpanded","isEditable","setProperty","highlightEffect","ngOnInit","_registerPopup","_unregisterPopup","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","usesInheritance","ngImport","decorators","args","COMBOBOX_POPUP","InjectionToken","ComboboxPopup","_deferredContent","DeferredContent","combobox","required","_widget","controlTarget","popupId","activeDescendant","popupType","ComboboxPopupPattern","deferredContentAware","ngOnDestroy","_registerWidget","widget","_unregisterWidget","providers","provide","useExisting","hostDirectives","directive","i1","ComboboxWidget","_observer","el","MutationObserver","mutations","mutation","attributeName","id","observe","attributeFilter","disconnect","onFocusin","onFocusout","event"],"mappings":"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"}
1
+ {"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-popup.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-widget.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 {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnInit,\n signal,\n Renderer2,\n} from '@angular/core';\nimport {DeferredContentAware, ComboboxPattern, tabIndexTransform} from '@angular/aria/private';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/**\n * A directive that coordinates a combobox trigger element and its associated popup widget.\n *\n * The `ngCombobox` directive is applied directly to the interactive trigger element, which can be\n * either an editable `<input>` (for search/autocomplete behaviors) or a non-editable element like\n * a `<div>` (for custom select dropdowns). It manages focus and expansion states, coordinates autocomplete\n * suggestions (if editable), and forwards navigation keys down into the active popup.\n *\n * ### Example 1: Editable Autocomplete Input\n * ```html\n * <input ngCombobox #combobox=\"ngCombobox\" [(value)]=\"searchQuery\" [(expanded)]=\"isExpanded\" />\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n *\n * ### Example 2: Non-Editable Custom Select Dropdown\n * ```html\n * <div ngCombobox #combobox=\"ngCombobox\" [(expanded)]=\"isExpanded\" class=\"select-trigger\">\n * {{selectedValue}}\n * </div>\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n host: {\n 'role': 'combobox',\n '[attr.aria-autocomplete]': '_pattern.autocomplete()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-readonly]': '_pattern.ariaReadonly()',\n '[attr.aria-expanded]': '_pattern.isExpanded()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[attr.aria-controls]': '_pattern.popupId()',\n '[attr.aria-haspopup]': '_pattern.popupType()',\n '[attr.tabindex]':\n 'disabled() && !softDisabled() ? -1 : (tabIndex() !== undefined ? tabIndex() : 0)',\n '[attr.disabled]': '_pattern.nativeDisabled()',\n '[attr.readonly]': '_pattern.nativeReadonly()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusin)': '_pattern.onFocusin()',\n '(focusout)': '_pattern.onFocusout($event)',\n '(click)': '_pattern.onClick($event)',\n '(input)': '_pattern.onInput($event)',\n },\n})\nexport class Combobox extends DeferredContentAware implements OnInit {\n private readonly _renderer = inject(Renderer2);\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** A reference to the input element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The popup associated with the combobox. */\n readonly _popup = signal<ComboboxPopup | undefined>(undefined);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is soft disabled (remains focusable). */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** Whether the combobox should always remain expanded. */\n readonly alwaysExpanded = input(false, {transform: booleanAttribute});\n\n /** The tabindex of the combobox. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** Whether the combobox is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** The value of the combobox input. */\n readonly value = model<string>('');\n\n /** An inline suggestion to be displayed in the input. */\n readonly inlineSuggestion = input<string | undefined>(undefined);\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern({\n ...this,\n readonly: () => this.readonly(),\n element: () => this.element,\n expandable: () => true,\n popup: computed(() => this._popup()?._pattern),\n });\n\n constructor() {\n super();\n\n afterRenderEffect({write: () => this._pattern.keyboardEventRelayEffect()});\n afterRenderEffect(() => this._pattern.closePopupOnBlurEffect());\n afterRenderEffect(() => {\n this.contentVisible.set(this._pattern.isExpanded());\n });\n\n if (this._pattern.isEditable()) {\n afterRenderEffect(() => {\n this._renderer.setProperty(this.element, 'value', this.value());\n });\n afterRenderEffect(() => {\n this._pattern.highlightEffect();\n });\n }\n }\n\n ngOnInit() {\n if (this.alwaysExpanded()) {\n this.expanded.set(true);\n }\n }\n\n /** Registers a popup with the combobox. */\n _registerPopup(popup: ComboboxPopup) {\n this._popup.set(popup);\n }\n\n /** Unregisters the popup from the combobox. */\n _unregisterPopup() {\n this._popup.set(undefined);\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 {InjectionToken} from '@angular/core';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/** Token used to expose the combobox popup. */\nexport const COMBOBOX_POPUP = new InjectionToken<ComboboxPopup>('COMBOBOX_POPUP');\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 {computed, Directive, inject, input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {DeferredContent, ComboboxPopupPattern} from '@angular/aria/private';\nimport type {Combobox} from './combobox';\nimport type {ComboboxWidget} from './combobox-widget';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * A structural directive that marks the `ng-template` to be used as the popup\n * for a combobox. This content is conditionally rendered.\n *\n * The content of the popup can be any element with the `ngComboboxWidget` directive.\n *\n * ```html\n * <ng-template ngComboboxPopup>\n * <div ngComboboxWidget>\n * <!-- ... options ... -->\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n hostDirectives: [DeferredContent],\n providers: [{provide: COMBOBOX_POPUP, useExisting: ComboboxPopup}],\n})\nexport class ComboboxPopup implements OnInit, OnDestroy {\n private readonly _deferredContent = inject(DeferredContent);\n\n /** The combobox that the popup belongs to. */\n readonly combobox = input.required<Combobox>();\n\n /** The widget contained within the popup. */\n readonly _widget = signal<ComboboxWidget | undefined>(undefined);\n\n /** The element that serves as the control target for the popup. */\n readonly controlTarget = computed(() => this._widget()?.element);\n\n /** The ID of the popup. */\n readonly popupId = computed(() => this._widget()?.popupId());\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = computed(() => this._widget()?.activeDescendant());\n\n /** The type of the popup (e.g., listbox, tree, grid, dialog). */\n readonly popupType = input<'listbox' | 'tree' | 'grid' | 'dialog'>('listbox');\n\n /** The popup pattern. */\n readonly _pattern = new ComboboxPopupPattern({\n ...this,\n });\n\n ngOnInit() {\n this.combobox()._registerPopup(this);\n this._deferredContent.deferredContentAware.set(this.combobox());\n }\n\n ngOnDestroy() {\n this.combobox()._unregisterPopup();\n }\n\n /** Registers a widget with the popup. */\n _registerWidget(widget: ComboboxWidget) {\n this._widget.set(widget);\n }\n\n /** Unregisters the widget from the popup. */\n _unregisterWidget() {\n this._widget.set(undefined);\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 {Directive, ElementRef, inject, input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * Identifies an element as a widget within a combobox popup.\n *\n * This directive should be applied to the element that contains the options or content\n * of the popup. It handles the communication of ID and active descendant information\n * to the combobox.\n */\n@Directive({\n selector: '[ngComboboxWidget]',\n exportAs: 'ngComboboxWidget',\n host: {\n '(focusin)': 'onFocusin()',\n '(focusout)': 'onFocusout($event)',\n },\n})\nexport class ComboboxWidget implements OnInit, OnDestroy {\n /** The element that the popup widget is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _popup = inject(COMBOBOX_POPUP);\n\n /** A reference to the popup widget element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The ID of the popup widget. */\n readonly popupId = signal<string | undefined>(undefined);\n\n /** The ID of the active descendant in the widget. */\n readonly activeDescendant = input<string | undefined>(undefined);\n\n private _observer: MutationObserver | undefined;\n\n constructor() {\n const el = this.element;\n this._observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.attributeName === 'id') {\n this.popupId.set(el.id);\n }\n }\n });\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: ['id'],\n });\n }\n\n ngOnInit() {\n this.popupId.set(this.element.id);\n this._popup._registerWidget(this);\n }\n\n ngOnDestroy(): void {\n this._observer?.disconnect();\n this._popup._unregisterWidget();\n }\n\n /** Handles focus in events for the widget. */\n onFocusin() {\n this._popup._pattern.onFocusin();\n }\n\n /** Handles focus out events for the widget. */\n onFocusout(event: FocusEvent) {\n this._popup._pattern.onFocusout(event);\n }\n}\n"],"names":["Combobox","DeferredContentAware","_renderer","inject","Renderer2","_elementRef","ElementRef","element","nativeElement","_popup","signal","undefined","disabled","input","transform","booleanAttribute","readonly","softDisabled","alwaysExpanded","tabIndex","ngDevMode","debugName","alias","tabIndexTransform","expanded","model","value","inlineSuggestion","_pattern","ComboboxPattern","expandable","popup","computed","constructor","afterRenderEffect","write","keyboardEventRelayEffect","closePopupOnBlurEffect","contentVisible","set","isExpanded","isEditable","setProperty","highlightEffect","ngOnInit","_registerPopup","_unregisterPopup","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","exportAs","usesInheritance","ngImport","decorators","args","COMBOBOX_POPUP","InjectionToken","ComboboxPopup","_deferredContent","DeferredContent","combobox","required","_widget","controlTarget","popupId","activeDescendant","popupType","ComboboxPopupPattern","deferredContentAware","ngOnDestroy","_registerWidget","widget","_unregisterWidget","providers","provide","useExisting","hostDirectives","directive","i1","ComboboxWidget","_observer","el","MutationObserver","mutations","mutation","attributeName","id","observe","attributeFilter","disconnect","onFocusin","onFocusout","event"],"mappings":";;;;;;AAiFM,MAAOA,QAAS,SAAQC,oBAAoB,CAAA;AAC/BC,EAAAA,SAAS,GAAGC,MAAM,CAACC,SAAS,CAAC;AAG7BC,EAAAA,WAAW,GAAGF,MAAM,CAA0BG,UAAU,CAAC;AAGjEC,EAAAA,OAAO,GAAG,IAAI,CAACF,WAAW,CAACG,aAAa;EAGxCC,MAAM,GAAGC,MAAM,CAA4BC,SAAS;;WAAC;AAGrDC,EAAAA,QAAQ,GAAGC,KAAK,CAAC,KAAK;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;AAGtDC,EAAAA,QAAQ,GAAGH,KAAK,CAAC,KAAK;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;AAGtDE,EAAAA,YAAY,GAAGJ,KAAK,CAAC,IAAI;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;AAGzDG,EAAAA,cAAc,GAAGL,KAAK,CAAC,KAAK;;;;AAAGC,IAAAA,SAAS,EAAEC;AAAgB,GAAA,CAAE;AAG5DI,EAAAA,QAAQ,GAAGN,KAAK,CAACF,SAAS,EAAA;AAAA,IAAA,IAAAS,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;AACjCC,IAAAA,KAAK,EAAE,UAAU;AACjBR,IAAAA,SAAS,EAAES;AAAiB,GAAA,CAC5B;EAGOC,QAAQ,GAAGC,KAAK,CAAU,KAAK;;WAAC;EAGhCC,KAAK,GAAGD,KAAK,CAAS,EAAE;;WAAC;EAGzBE,gBAAgB,GAAGd,KAAK,CAAqBF,SAAS;;WAAC;EAGvDiB,QAAQ,GAAG,IAAIC,eAAe,CAAC;AACtC,IAAA,GAAG,IAAI;AACPb,IAAAA,QAAQ,EAAEA,MAAM,IAAI,CAACA,QAAQ,EAAE;AAC/BT,IAAAA,OAAO,EAAEA,MAAM,IAAI,CAACA,OAAO;IAC3BuB,UAAU,EAAEA,MAAM,IAAI;IACtBC,KAAK,EAAEC,QAAQ,CAAC,MAAM,IAAI,CAACvB,MAAM,EAAE,EAAEmB,QAAQ;AAC9C,GAAA,CAAC;AAEFK,EAAAA,WAAAA,GAAA;AACE,IAAA,KAAK,EAAE;AAEPC,IAAAA,iBAAiB,CAAC;MAACC,KAAK,EAAEA,MAAM,IAAI,CAACP,QAAQ,CAACQ,wBAAwB;AAAE,KAAC,CAAC;IAC1EF,iBAAiB,CAAC,MAAM,IAAI,CAACN,QAAQ,CAACS,sBAAsB,EAAE,CAAC;AAC/DH,IAAAA,iBAAiB,CAAC,MAAK;AACrB,MAAA,IAAI,CAACI,cAAc,CAACC,GAAG,CAAC,IAAI,CAACX,QAAQ,CAACY,UAAU,EAAE,CAAC;AACrD,IAAA,CAAC,CAAC;AAEF,IAAA,IAAI,IAAI,CAACZ,QAAQ,CAACa,UAAU,EAAE,EAAE;AAC9BP,MAAAA,iBAAiB,CAAC,MAAK;AACrB,QAAA,IAAI,CAAChC,SAAS,CAACwC,WAAW,CAAC,IAAI,CAACnC,OAAO,EAAE,OAAO,EAAE,IAAI,CAACmB,KAAK,EAAE,CAAC;AACjE,MAAA,CAAC,CAAC;AACFQ,MAAAA,iBAAiB,CAAC,MAAK;AACrB,QAAA,IAAI,CAACN,QAAQ,CAACe,eAAe,EAAE;AACjC,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;AAEAC,EAAAA,QAAQA,GAAA;AACN,IAAA,IAAI,IAAI,CAAC1B,cAAc,EAAE,EAAE;AACzB,MAAA,IAAI,CAACM,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAC;AACzB,IAAA;AACF,EAAA;EAGAM,cAAcA,CAACd,KAAoB,EAAA;AACjC,IAAA,IAAI,CAACtB,MAAM,CAAC8B,GAAG,CAACR,KAAK,CAAC;AACxB,EAAA;AAGAe,EAAAA,gBAAgBA,GAAA;AACd,IAAA,IAAI,CAACrC,MAAM,CAAC8B,GAAG,CAAC5B,SAAS,CAAC;AAC5B,EAAA;;;;;UAjFWX,QAAQ;AAAA+C,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAARnD,QAAQ;AAAAoD,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,cAAA;AAAAC,IAAAA,MAAA,EAAA;AAAA1C,MAAAA,QAAA,EAAA;AAAA2C,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAA3C,MAAAA,QAAA,EAAA;AAAAuC,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAA1C,MAAAA,YAAA,EAAA;AAAAsC,QAAAA,iBAAA,EAAA,cAAA;AAAAC,QAAAA,UAAA,EAAA,cAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAzC,MAAAA,cAAA,EAAA;AAAAqC,QAAAA,iBAAA,EAAA,gBAAA;AAAAC,QAAAA,UAAA,EAAA,gBAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAxC,MAAAA,QAAA,EAAA;AAAAoC,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAnC,MAAAA,QAAA,EAAA;AAAA+B,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAjC,MAAAA,KAAA,EAAA;AAAA6B,QAAAA,iBAAA,EAAA,OAAA;AAAAC,QAAAA,UAAA,EAAA,OAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAhC,MAAAA,gBAAA,EAAA;AAAA4B,QAAAA,iBAAA,EAAA,kBAAA;AAAAC,QAAAA,UAAA,EAAA,kBAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAAC,IAAAA,OAAA,EAAA;AAAApC,MAAAA,QAAA,EAAA,gBAAA;AAAAE,MAAAA,KAAA,EAAA;KAAA;AAAAmC,IAAAA,IAAA,EAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,MAAA,EAAA;OAAA;AAAAC,MAAAA,SAAA,EAAA;AAAA,QAAA,SAAA,EAAA,4BAAA;AAAA,QAAA,SAAA,EAAA,sBAAA;AAAA,QAAA,UAAA,EAAA,6BAAA;AAAA,QAAA,OAAA,EAAA,0BAAA;AAAA,QAAA,OAAA,EAAA;OAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,wBAAA,EAAA,yBAAA;AAAA,QAAA,oBAAA,EAAA,qBAAA;AAAA,QAAA,oBAAA,EAAA,yBAAA;AAAA,QAAA,oBAAA,EAAA,uBAAA;AAAA,QAAA,4BAAA,EAAA,6BAAA;AAAA,QAAA,oBAAA,EAAA,oBAAA;AAAA,QAAA,oBAAA,EAAA,sBAAA;AAAA,QAAA,eAAA,EAAA,kFAAA;AAAA,QAAA,eAAA,EAAA,2BAAA;AAAA,QAAA,eAAA,EAAA;AAAA;KAAA;IAAAC,QAAA,EAAA,CAAA,YAAA,CAAA;AAAAC,IAAAA,eAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAAlB;AAAA,GAAA,CAAA;;;;;;QAARjD,QAAQ;AAAAoE,EAAAA,UAAA,EAAA,CAAA;UAvBpBjB,SAAS;AAACkB,IAAAA,IAAA,EAAA,CAAA;AACThB,MAAAA,QAAQ,EAAE,cAAc;AACxBY,MAAAA,QAAQ,EAAE,YAAY;AACtBJ,MAAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,0BAA0B,EAAE,yBAAyB;AACrD,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,sBAAsB,EAAE,yBAAyB;AACjD,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,8BAA8B,EAAE,6BAA6B;AAC7D,QAAA,sBAAsB,EAAE,oBAAoB;AAC5C,QAAA,sBAAsB,EAAE,sBAAsB;AAC9C,QAAA,iBAAiB,EACf,kFAAkF;AACpF,QAAA,iBAAiB,EAAE,2BAA2B;AAC9C,QAAA,iBAAiB,EAAE,2BAA2B;AAC9C,QAAA,WAAW,EAAE,4BAA4B;AACzC,QAAA,WAAW,EAAE,sBAAsB;AACnC,QAAA,YAAY,EAAE,6BAA6B;AAC3C,QAAA,SAAS,EAAE,0BAA0B;AACrC,QAAA,SAAS,EAAE;AACZ;KACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpEM,MAAMS,cAAc,GAAG,IAAIC,cAAc,CAAgB,gBAAgB,CAAC;;MCsBpEC,aAAa,CAAA;AACPC,EAAAA,gBAAgB,GAAGtE,MAAM,CAACuE,eAAe,CAAC;EAGlDC,QAAQ,GAAG9D,KAAK,CAAC+D,QAAQ;;WAAY;EAGrCC,OAAO,GAAGnE,MAAM,CAA6BC,SAAS;;WAAC;AAGvDmE,EAAAA,aAAa,GAAG9C,QAAQ,CAAC,MAAM,IAAI,CAAC6C,OAAO,EAAE,EAAEtE,OAAO;;WAAC;AAGvDwE,EAAAA,OAAO,GAAG/C,QAAQ,CAAC,MAAM,IAAI,CAAC6C,OAAO,EAAE,EAAEE,OAAO,EAAE;;WAAC;AAGnDC,EAAAA,gBAAgB,GAAGhD,QAAQ,CAAC,MAAM,IAAI,CAAC6C,OAAO,EAAE,EAAEG,gBAAgB,EAAE;;WAAC;EAGrEC,SAAS,GAAGpE,KAAK,CAAyC,SAAS;;WAAC;EAGpEe,QAAQ,GAAG,IAAIsD,oBAAoB,CAAC;IAC3C,GAAG;AACJ,GAAA,CAAC;AAEFtC,EAAAA,QAAQA,GAAA;IACN,IAAI,CAAC+B,QAAQ,EAAE,CAAC9B,cAAc,CAAC,IAAI,CAAC;AACpC,IAAA,IAAI,CAAC4B,gBAAgB,CAACU,oBAAoB,CAAC5C,GAAG,CAAC,IAAI,CAACoC,QAAQ,EAAE,CAAC;AACjE,EAAA;AAEAS,EAAAA,WAAWA,GAAA;AACT,IAAA,IAAI,CAACT,QAAQ,EAAE,CAAC7B,gBAAgB,EAAE;AACpC,EAAA;EAGAuC,eAAeA,CAACC,MAAsB,EAAA;AACpC,IAAA,IAAI,CAACT,OAAO,CAACtC,GAAG,CAAC+C,MAAM,CAAC;AAC1B,EAAA;AAGAC,EAAAA,iBAAiBA,GAAA;AACf,IAAA,IAAI,CAACV,OAAO,CAACtC,GAAG,CAAC5B,SAAS,CAAC;AAC7B,EAAA;;;;;UA3CW6D,aAAa;AAAAzB,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAbqB,aAAa;AAAApB,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,8BAAA;AAAAC,IAAAA,MAAA,EAAA;AAAAqB,MAAAA,QAAA,EAAA;AAAApB,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,IAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAsB,MAAAA,SAAA,EAAA;AAAA1B,QAAAA,iBAAA,EAAA,WAAA;AAAAC,QAAAA,UAAA,EAAA,WAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAA6B,IAAAA,SAAA,EAFb,CAAC;AAACC,MAAAA,OAAO,EAAEnB,cAAc;AAAEoB,MAAAA,WAAW,EAAElB;AAAa,KAAC,CAAC;IAAAP,QAAA,EAAA,CAAA,iBAAA,CAAA;AAAA0B,IAAAA,cAAA,EAAA,CAAA;MAAAC,SAAA,EAAAC,EAAA,CAAAnB;AAAA,KAAA,CAAA;AAAAP,IAAAA,QAAA,EAAAlB;AAAA,GAAA,CAAA;;;;;;QAEvDuB,aAAa;AAAAJ,EAAAA,UAAA,EAAA,CAAA;UANzBjB,SAAS;AAACkB,IAAAA,IAAA,EAAA,CAAA;AACThB,MAAAA,QAAQ,EAAE,8BAA8B;AACxCY,MAAAA,QAAQ,EAAE,iBAAiB;MAC3B0B,cAAc,EAAE,CAACjB,eAAe,CAAC;AACjCc,MAAAA,SAAS,EAAE,CAAC;AAACC,QAAAA,OAAO,EAAEnB,cAAc;AAAEoB,QAAAA,WAAW,EAAAlB;OAAgB;KAClE;;;;;;;;;;;;;;;;;;;;;;MCPYsB,cAAc,CAAA;AAERzF,EAAAA,WAAW,GAAGF,MAAM,CAA0BG,UAAU,CAAC;AACzDG,EAAAA,MAAM,GAAGN,MAAM,CAACmE,cAAc,CAAC;AAGvC/D,EAAAA,OAAO,GAAG,IAAI,CAACF,WAAW,CAACG,aAAa;EAGxCuE,OAAO,GAAGrE,MAAM,CAAqBC,SAAS;;WAAC;EAG/CqE,gBAAgB,GAAGnE,KAAK,CAAqBF,SAAS;;WAAC;EAExDoF,SAAS;AAEjB9D,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAM+D,EAAE,GAAG,IAAI,CAACzF,OAAO;AACvB,IAAA,IAAI,CAACwF,SAAS,GAAG,IAAIE,gBAAgB,CAACC,SAAS,IAAG;AAChD,MAAA,KAAK,MAAMC,QAAQ,IAAID,SAAS,EAAE;AAChC,QAAA,IAAIC,QAAQ,CAACC,aAAa,KAAK,IAAI,EAAE;UACnC,IAAI,CAACrB,OAAO,CAACxC,GAAG,CAACyD,EAAE,CAACK,EAAE,CAAC;AACzB,QAAA;AACF,MAAA;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,IAAI,CAACN,SAAS,CAACO,OAAO,CAACN,EAAE,EAAE;AACzBlC,MAAAA,UAAU,EAAE,IAAI;MAChByC,eAAe,EAAE,CAAC,IAAI;AACvB,KAAA,CAAC;AACJ,EAAA;AAEA3D,EAAAA,QAAQA,GAAA;IACN,IAAI,CAACmC,OAAO,CAACxC,GAAG,CAAC,IAAI,CAAChC,OAAO,CAAC8F,EAAE,CAAC;AACjC,IAAA,IAAI,CAAC5F,MAAM,CAAC4E,eAAe,CAAC,IAAI,CAAC;AACnC,EAAA;AAEAD,EAAAA,WAAWA,GAAA;AACT,IAAA,IAAI,CAACW,SAAS,EAAES,UAAU,EAAE;AAC5B,IAAA,IAAI,CAAC/F,MAAM,CAAC8E,iBAAiB,EAAE;AACjC,EAAA;AAGAkB,EAAAA,SAASA,GAAA;AACP,IAAA,IAAI,CAAChG,MAAM,CAACmB,QAAQ,CAAC6E,SAAS,EAAE;AAClC,EAAA;EAGAC,UAAUA,CAACC,KAAiB,EAAA;IAC1B,IAAI,CAAClG,MAAM,CAACmB,QAAQ,CAAC8E,UAAU,CAACC,KAAK,CAAC;AACxC,EAAA;;;;;UAlDWb,cAAc;AAAA/C,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAd2C,cAAc;AAAA1C,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,oBAAA;AAAAC,IAAAA,MAAA,EAAA;AAAA0B,MAAAA,gBAAA,EAAA;AAAAzB,QAAAA,iBAAA,EAAA,kBAAA;AAAAC,QAAAA,UAAA,EAAA,kBAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAAE,IAAAA,IAAA,EAAA;AAAAE,MAAAA,SAAA,EAAA;AAAA,QAAA,SAAA,EAAA,aAAA;AAAA,QAAA,UAAA,EAAA;AAAA;KAAA;IAAAE,QAAA,EAAA,CAAA,kBAAA,CAAA;AAAAE,IAAAA,QAAA,EAAAlB;AAAA,GAAA,CAAA;;;;;;QAAd6C,cAAc;AAAA1B,EAAAA,UAAA,EAAA,CAAA;UAR1BjB,SAAS;AAACkB,IAAAA,IAAA,EAAA,CAAA;AACThB,MAAAA,QAAQ,EAAE,oBAAoB;AAC9BY,MAAAA,QAAQ,EAAE,kBAAkB;AAC5BJ,MAAAA,IAAI,EAAE;AACJ,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,YAAY,EAAE;AACf;KACF;;;;;;;;;;;;;;;;;"}
package/fesm2022/grid.mjs CHANGED
@@ -123,7 +123,7 @@ class Grid {
123
123
  }
124
124
  static ɵfac = i0.ɵɵngDeclareFactory({
125
125
  minVersion: "12.0.0",
126
- version: "22.1.0-next.0",
126
+ version: "22.1.0-next.4",
127
127
  ngImport: i0,
128
128
  type: Grid,
129
129
  deps: [],
@@ -131,7 +131,7 @@ class Grid {
131
131
  });
132
132
  static ɵdir = i0.ɵɵngDeclareDirective({
133
133
  minVersion: "17.1.0",
134
- version: "22.1.0-next.0",
134
+ version: "22.1.0-next.4",
135
135
  type: Grid,
136
136
  isStandalone: true,
137
137
  selector: "[ngGrid]",
@@ -227,7 +227,7 @@ class Grid {
227
227
  }
228
228
  i0.ɵɵngDeclareClassMetadata({
229
229
  minVersion: "12.0.0",
230
- version: "22.1.0-next.0",
230
+ version: "22.1.0-next.4",
231
231
  ngImport: i0,
232
232
  type: Grid,
233
233
  decorators: [{
@@ -385,7 +385,7 @@ class GridCellWidget {
385
385
  }
386
386
  static ɵfac = i0.ɵɵngDeclareFactory({
387
387
  minVersion: "12.0.0",
388
- version: "22.1.0-next.0",
388
+ version: "22.1.0-next.4",
389
389
  ngImport: i0,
390
390
  type: GridCellWidget,
391
391
  deps: [],
@@ -393,7 +393,7 @@ class GridCellWidget {
393
393
  });
394
394
  static ɵdir = i0.ɵɵngDeclareDirective({
395
395
  minVersion: "17.1.0",
396
- version: "22.1.0-next.0",
396
+ version: "22.1.0-next.4",
397
397
  type: GridCellWidget,
398
398
  isStandalone: true,
399
399
  selector: "[ngGridCellWidget]",
@@ -452,7 +452,7 @@ class GridCellWidget {
452
452
  }
453
453
  i0.ɵɵngDeclareClassMetadata({
454
454
  minVersion: "12.0.0",
455
- version: "22.1.0-next.0",
455
+ version: "22.1.0-next.4",
456
456
  ngImport: i0,
457
457
  type: GridCellWidget,
458
458
  decorators: [{
@@ -635,7 +635,7 @@ class GridCell {
635
635
  }
636
636
  static ɵfac = i0.ɵɵngDeclareFactory({
637
637
  minVersion: "12.0.0",
638
- version: "22.1.0-next.0",
638
+ version: "22.1.0-next.4",
639
639
  ngImport: i0,
640
640
  type: GridCell,
641
641
  deps: [],
@@ -643,7 +643,7 @@ class GridCell {
643
643
  });
644
644
  static ɵdir = i0.ɵɵngDeclareDirective({
645
645
  minVersion: "17.2.0",
646
- version: "22.1.0-next.0",
646
+ version: "22.1.0-next.4",
647
647
  type: GridCell,
648
648
  isStandalone: true,
649
649
  selector: "[ngGridCell]",
@@ -739,7 +739,7 @@ class GridCell {
739
739
  }
740
740
  i0.ɵɵngDeclareClassMetadata({
741
741
  minVersion: "12.0.0",
742
- version: "22.1.0-next.0",
742
+ version: "22.1.0-next.4",
743
743
  ngImport: i0,
744
744
  type: GridCell,
745
745
  decorators: [{
@@ -883,7 +883,7 @@ class GridRow {
883
883
  }
884
884
  static ɵfac = i0.ɵɵngDeclareFactory({
885
885
  minVersion: "12.0.0",
886
- version: "22.1.0-next.0",
886
+ version: "22.1.0-next.4",
887
887
  ngImport: i0,
888
888
  type: GridRow,
889
889
  deps: [],
@@ -891,7 +891,7 @@ class GridRow {
891
891
  });
892
892
  static ɵdir = i0.ɵɵngDeclareDirective({
893
893
  minVersion: "17.1.0",
894
- version: "22.1.0-next.0",
894
+ version: "22.1.0-next.4",
895
895
  type: GridRow,
896
896
  isStandalone: true,
897
897
  selector: "[ngGridRow]",
@@ -922,7 +922,7 @@ class GridRow {
922
922
  }
923
923
  i0.ɵɵngDeclareClassMetadata({
924
924
  minVersion: "12.0.0",
925
- version: "22.1.0-next.0",
925
+ version: "22.1.0-next.4",
926
926
  ngImport: i0,
927
927
  type: GridRow,
928
928
  decorators: [{
@@ -75,14 +75,14 @@ class Listbox {
75
75
  }] : []));
76
76
  _pattern;
77
77
  activeDescendant;
78
+ _orderedItemPatterns = computed(() => this._collection.orderedItems().map(option => option._pattern), ...(ngDevMode ? [{
79
+ debugName: "_orderedItemPatterns"
80
+ }] : []));
78
81
  constructor() {
79
- const orderedItemPatterns = computed(() => this._collection.orderedItems().map(option => option._pattern), ...(ngDevMode ? [{
80
- debugName: "orderedItemPatterns"
81
- }] : []));
82
82
  const inputs = {
83
83
  ...this,
84
84
  id: this.id,
85
- items: orderedItemPatterns,
85
+ items: this._orderedItemPatterns,
86
86
  activeItem: signal(undefined),
87
87
  textDirection: this.textDirection,
88
88
  element: () => this._elementRef.nativeElement
@@ -135,9 +135,16 @@ class Listbox {
135
135
  gotoFirst() {
136
136
  this._pattern.listBehavior.first();
137
137
  }
138
+ gotoIndex(index) {
139
+ const patterns = this._orderedItemPatterns();
140
+ const item = patterns[Math.min(Math.max(index, 0), patterns.length - 1)];
141
+ if (item) {
142
+ this._pattern.listBehavior.goto(item);
143
+ }
144
+ }
138
145
  static ɵfac = i0.ɵɵngDeclareFactory({
139
146
  minVersion: "12.0.0",
140
- version: "22.1.0-next.0",
147
+ version: "22.1.0-next.4",
141
148
  ngImport: i0,
142
149
  type: Listbox,
143
150
  deps: [],
@@ -145,7 +152,7 @@ class Listbox {
145
152
  });
146
153
  static ɵdir = i0.ɵɵngDeclareDirective({
147
154
  minVersion: "17.1.0",
148
- version: "22.1.0-next.0",
155
+ version: "22.1.0-next.4",
149
156
  type: Listbox,
150
157
  isStandalone: true,
151
158
  selector: "[ngListbox]",
@@ -267,7 +274,7 @@ class Listbox {
267
274
  }
268
275
  i0.ɵɵngDeclareClassMetadata({
269
276
  minVersion: "12.0.0",
270
- version: "22.1.0-next.0",
277
+ version: "22.1.0-next.4",
271
278
  ngImport: i0,
272
279
  type: Listbox,
273
280
  decorators: [{
@@ -441,7 +448,7 @@ class Option {
441
448
  }
442
449
  static ɵfac = i0.ɵɵngDeclareFactory({
443
450
  minVersion: "12.0.0",
444
- version: "22.1.0-next.0",
451
+ version: "22.1.0-next.4",
445
452
  ngImport: i0,
446
453
  type: Option,
447
454
  deps: [],
@@ -449,7 +456,7 @@ class Option {
449
456
  });
450
457
  static ɵdir = i0.ɵɵngDeclareDirective({
451
458
  minVersion: "17.1.0",
452
- version: "22.1.0-next.0",
459
+ version: "22.1.0-next.4",
453
460
  type: Option,
454
461
  isStandalone: true,
455
462
  selector: "[ngOption]",
@@ -501,7 +508,7 @@ class Option {
501
508
  }
502
509
  i0.ɵɵngDeclareClassMetadata({
503
510
  minVersion: "12.0.0",
504
- version: "22.1.0-next.0",
511
+ version: "22.1.0-next.4",
505
512
  ngImport: i0,
506
513
  type: Option,
507
514
  decorators: [{
@@ -1 +1 @@
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/listbox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.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 {\n afterRenderEffect,\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n signal,\n Signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ListboxPattern, SortedCollection, tabIndexTransform, reportViolations} from '../private';\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 * @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 providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> implements OnDestroy {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\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 collection of Options. */\n readonly _collection = new SortedCollection<Option<V>>();\n\n /** A signal wrapper for directionality. */\n protected readonly textDirection = inject(Directionality).valueSignal.asReadonly();\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 alias: 'tabindex',\n transform: tabIndexTransform,\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 // Map directives to their patterns for the ListboxPattern\n const orderedItemPatterns = computed(() =>\n this._collection.orderedItems().map(option => option._pattern),\n );\n\n const inputs = {\n ...this,\n id: this.id,\n items: orderedItemPatterns,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n };\n\n this._pattern = new ListboxPattern<V>(inputs);\n\n this.activeDescendant = computed(() => this._pattern.activeDescendant());\n\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n\n // Check for any violations after the DOM has been updated.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n afterRenderEffect({\n read: () => {\n reportViolations(this._pattern.validate(), this.element);\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 (activeItem && !items.some(i => i === activeItem)) {\n this._pattern.listBehavior.unfocus();\n this._pattern.setDefaultState();\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 ngOnDestroy() {\n this._collection.stopObserving();\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","/**\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 booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnInit,\n OnDestroy,\n} 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 * @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> implements OnInit, OnDestroy {\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 ngOnInit() {\n this._listbox._collection.register(this);\n }\n\n ngOnDestroy() {\n this._listbox._collection.unregister(this);\n }\n}\n"],"names":["LISTBOX","InjectionToken","Listbox","id","input","inject","_IdGenerator","getId","_elementRef","ElementRef","element","nativeElement","_collection","SortedCollection","textDirection","Directionality","valueSignal","asReadonly","orientation","multi","transform","booleanAttribute","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","ngDevMode","debugName","disabled","readonly","tabIndex","undefined","alias","tabIndexTransform","value","model","_pattern","activeDescendant","constructor","orderedItemPatterns","computed","orderedItems","map","option","inputs","items","activeItem","signal","ListboxPattern","afterNextRender","startObserving","afterRenderEffect","read","reportViolations","validate","write","setDefaultStateEffect","untracked","some","i","listBehavior","unfocus","setDefaultState","v","set","filter","ngOnDestroy","stopObserving","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","providers","provide","useExisting","exportAs","ngImport","decorators","args","Option","active","_listbox","_listboxPattern","required","label","selected","OptionPattern","listbox","searchTerm","ngOnInit","register","unregister"],"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/listbox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.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 {\n afterRenderEffect,\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n signal,\n Signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ListboxPattern, SortedCollection, tabIndexTransform, reportViolations} from '../private';\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 * @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 providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> implements OnDestroy {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\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 collection of Options. */\n readonly _collection = new SortedCollection<Option<V>>();\n\n /** A signal wrapper for directionality. */\n protected readonly textDirection = inject(Directionality).valueSignal.asReadonly();\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 alias: 'tabindex',\n transform: tabIndexTransform,\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 private readonly _orderedItemPatterns = computed(() =>\n this._collection.orderedItems().map(option => option._pattern),\n );\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this._orderedItemPatterns,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n };\n\n this._pattern = new ListboxPattern<V>(inputs);\n\n this.activeDescendant = computed(() => this._pattern.activeDescendant());\n\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n\n // Check for any violations after the DOM has been updated.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n afterRenderEffect({\n read: () => {\n reportViolations(this._pattern.validate(), this.element);\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 (activeItem && !items.some(i => i === activeItem)) {\n this._pattern.listBehavior.unfocus();\n this._pattern.setDefaultState();\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 ngOnDestroy() {\n this._collection.stopObserving();\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 /** Navigates to an item at a specific index in the listbox. */\n gotoIndex(index: number) {\n const patterns = this._orderedItemPatterns();\n const item = patterns[Math.min(Math.max(index, 0), patterns.length - 1)];\n\n if (item) {\n this._pattern.listBehavior.goto(item);\n }\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 booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnInit,\n OnDestroy,\n} 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 * @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> implements OnInit, OnDestroy {\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 ngOnInit() {\n this._listbox._collection.register(this);\n }\n\n ngOnDestroy() {\n this._listbox._collection.unregister(this);\n }\n}\n"],"names":["LISTBOX","InjectionToken","Listbox","id","input","inject","_IdGenerator","getId","_elementRef","ElementRef","element","nativeElement","_collection","SortedCollection","textDirection","Directionality","valueSignal","asReadonly","orientation","multi","transform","booleanAttribute","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","ngDevMode","debugName","disabled","readonly","tabIndex","undefined","alias","tabIndexTransform","value","model","_pattern","activeDescendant","_orderedItemPatterns","computed","orderedItems","map","option","constructor","inputs","items","activeItem","signal","ListboxPattern","afterNextRender","startObserving","afterRenderEffect","read","reportViolations","validate","write","setDefaultStateEffect","untracked","some","i","listBehavior","unfocus","setDefaultState","v","set","filter","ngOnDestroy","stopObserving","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","gotoIndex","index","patterns","item","Math","min","max","length","goto","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","providers","provide","useExisting","exportAs","ngImport","decorators","args","Option","active","_listbox","_listboxPattern","required","label","selected","OptionPattern","listbox","searchTerm","ngOnInit","register","unregister"],"mappings":"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"}
package/fesm2022/menu.mjs CHANGED
@@ -58,7 +58,7 @@ class MenuTrigger {
58
58
  }
59
59
  static ɵfac = i0.ɵɵngDeclareFactory({
60
60
  minVersion: "12.0.0",
61
- version: "22.1.0-next.0",
61
+ version: "22.1.0-next.4",
62
62
  ngImport: i0,
63
63
  type: MenuTrigger,
64
64
  deps: [],
@@ -66,7 +66,7 @@ class MenuTrigger {
66
66
  });
67
67
  static ɵdir = i0.ɵɵngDeclareDirective({
68
68
  minVersion: "17.1.0",
69
- version: "22.1.0-next.0",
69
+ version: "22.1.0-next.4",
70
70
  type: MenuTrigger,
71
71
  isStandalone: true,
72
72
  selector: "[ngMenuTrigger]",
@@ -115,7 +115,7 @@ class MenuTrigger {
115
115
  }
116
116
  i0.ɵɵngDeclareClassMetadata({
117
117
  minVersion: "12.0.0",
118
- version: "22.1.0-next.0",
118
+ version: "22.1.0-next.4",
119
119
  ngImport: i0,
120
120
  type: MenuTrigger,
121
121
  decorators: [{
@@ -241,7 +241,7 @@ class MenuItem {
241
241
  }
242
242
  static ɵfac = i0.ɵɵngDeclareFactory({
243
243
  minVersion: "12.0.0",
244
- version: "22.1.0-next.0",
244
+ version: "22.1.0-next.4",
245
245
  ngImport: i0,
246
246
  type: MenuItem,
247
247
  deps: [],
@@ -249,7 +249,7 @@ class MenuItem {
249
249
  });
250
250
  static ɵdir = i0.ɵɵngDeclareDirective({
251
251
  minVersion: "17.1.0",
252
- version: "22.1.0-next.0",
252
+ version: "22.1.0-next.4",
253
253
  type: MenuItem,
254
254
  isStandalone: true,
255
255
  selector: "[ngMenuItem]",
@@ -320,7 +320,7 @@ class MenuItem {
320
320
  }
321
321
  i0.ɵɵngDeclareClassMetadata({
322
322
  minVersion: "12.0.0",
323
- version: "22.1.0-next.0",
323
+ version: "22.1.0-next.4",
324
324
  ngImport: i0,
325
325
  type: MenuItem,
326
326
  decorators: [{
@@ -458,7 +458,7 @@ class MenuBar {
458
458
  }
459
459
  static ɵfac = i0.ɵɵngDeclareFactory({
460
460
  minVersion: "12.0.0",
461
- version: "22.1.0-next.0",
461
+ version: "22.1.0-next.4",
462
462
  ngImport: i0,
463
463
  type: MenuBar,
464
464
  deps: [],
@@ -466,7 +466,7 @@ class MenuBar {
466
466
  });
467
467
  static ɵdir = i0.ɵɵngDeclareDirective({
468
468
  minVersion: "17.1.0",
469
- version: "22.1.0-next.0",
469
+ version: "22.1.0-next.4",
470
470
  type: MenuBar,
471
471
  isStandalone: true,
472
472
  selector: "[ngMenuBar]",
@@ -538,7 +538,7 @@ class MenuBar {
538
538
  }
539
539
  i0.ɵɵngDeclareClassMetadata({
540
540
  minVersion: "12.0.0",
541
- version: "22.1.0-next.0",
541
+ version: "22.1.0-next.4",
542
542
  ngImport: i0,
543
543
  type: MenuBar,
544
544
  decorators: [{
@@ -723,7 +723,7 @@ class Menu {
723
723
  }
724
724
  static ɵfac = i0.ɵɵngDeclareFactory({
725
725
  minVersion: "12.0.0",
726
- version: "22.1.0-next.0",
726
+ version: "22.1.0-next.4",
727
727
  ngImport: i0,
728
728
  type: Menu,
729
729
  deps: [],
@@ -731,7 +731,7 @@ class Menu {
731
731
  });
732
732
  static ɵdir = i0.ɵɵngDeclareDirective({
733
733
  minVersion: "17.1.0",
734
- version: "22.1.0-next.0",
734
+ version: "22.1.0-next.4",
735
735
  type: Menu,
736
736
  isStandalone: true,
737
737
  selector: "[ngMenu]",
@@ -815,7 +815,7 @@ class Menu {
815
815
  }
816
816
  i0.ɵɵngDeclareClassMetadata({
817
817
  minVersion: "12.0.0",
818
- version: "22.1.0-next.0",
818
+ version: "22.1.0-next.4",
819
819
  ngImport: i0,
820
820
  type: Menu,
821
821
  decorators: [{
@@ -906,7 +906,7 @@ i0.ɵɵngDeclareClassMetadata({
906
906
  class MenuContent {
907
907
  static ɵfac = i0.ɵɵngDeclareFactory({
908
908
  minVersion: "12.0.0",
909
- version: "22.1.0-next.0",
909
+ version: "22.1.0-next.4",
910
910
  ngImport: i0,
911
911
  type: MenuContent,
912
912
  deps: [],
@@ -914,7 +914,7 @@ class MenuContent {
914
914
  });
915
915
  static ɵdir = i0.ɵɵngDeclareDirective({
916
916
  minVersion: "14.0.0",
917
- version: "22.1.0-next.0",
917
+ version: "22.1.0-next.4",
918
918
  type: MenuContent,
919
919
  isStandalone: true,
920
920
  selector: "ng-template[ngMenuContent]",
@@ -927,7 +927,7 @@ class MenuContent {
927
927
  }
928
928
  i0.ɵɵngDeclareClassMetadata({
929
929
  minVersion: "12.0.0",
930
- version: "22.1.0-next.0",
930
+ version: "22.1.0-next.4",
931
931
  ngImport: i0,
932
932
  type: MenuContent,
933
933
  decorators: [{
@@ -150,7 +150,8 @@ class ComboboxPattern {
150
150
  untracked(() => {
151
151
  const popup = this.inputs.popup();
152
152
  if (this.isExpanded()) {
153
- popup?.controlTarget()?.dispatchEvent(event);
153
+ const relayedEvent = new KeyboardEvent(event.type, event);
154
+ popup?.controlTarget()?.dispatchEvent(relayedEvent);
154
155
  }
155
156
  });
156
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"private.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/combobox/combobox.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 {KeyboardEventManager, ClickEventManager, Modifier} from '../behaviors/event-manager';\nimport {computed, signal, untracked} from '@angular/core';\nimport {SignalLike, WritableSignalLike} from '../behaviors/signal-like/signal-like';\nimport {ExpansionItem} from '../behaviors/expansion/expansion';\n\n/** Represents the required inputs for a simple combobox. */\nexport interface ComboboxInputs extends ExpansionItem {\n /** Whether the combobox should always remain expanded. */\n alwaysExpanded: SignalLike<boolean>;\n\n /** The value of the combobox. */\n value: WritableSignalLike<string>;\n\n /** The element that the combobox is attached to. */\n element: SignalLike<HTMLElement>;\n\n /** The popup associated with the combobox. */\n popup: SignalLike<ComboboxPopupPattern | undefined>;\n\n /** An inline suggestion to be displayed in the input. */\n inlineSuggestion: SignalLike<string | undefined>;\n\n /** Whether the combobox is disabled. */\n disabled: SignalLike<boolean>;\n\n /** Whether the combobox is readonly. */\n readonly: SignalLike<boolean>;\n\n /** Whether the combobox is soft disabled. */\n softDisabled?: SignalLike<boolean>;\n}\n\n/** Controls the state of a simple combobox. */\nexport class ComboboxPattern {\n /** The expanded state of the combobox. */\n readonly isExpanded = computed(() => this.inputs.alwaysExpanded() || this.inputs.expanded());\n\n /** The value of the combobox. */\n readonly value: WritableSignalLike<string>;\n\n /** The element that the combobox is attached to. */\n readonly element = () => this.inputs.element();\n\n /** Whether the combobox is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Whether the combobox is readonly. */\n readonly readonly = () => this.inputs.readonly();\n\n /** Whether the combobox is soft disabled. */\n readonly softDisabled = () => this.inputs.softDisabled?.() ?? true;\n\n /** An inline suggestion to be displayed in the input. */\n readonly inlineSuggestion = () => this.inputs.inlineSuggestion();\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = computed(() => this.inputs.popup()?.activeDescendant());\n\n /** The ID of the popup. */\n readonly popupId = computed(() => this.inputs.popup()?.popupId());\n\n /** The type of the popup. */\n readonly popupType = computed(() => this.inputs.popup()?.popupType());\n\n /** The autocomplete behavior of the combobox. */\n readonly autocomplete = computed<'none' | 'inline' | 'list' | 'both'>(() => {\n const popupType = this.popupType();\n const hasAutocompletePopup = !!this.inputs.popup() && popupType !== 'dialog';\n const hasInlineSuggestion = !!this.inlineSuggestion();\n if (hasAutocompletePopup && hasInlineSuggestion) {\n return 'both';\n }\n if (hasAutocompletePopup) {\n return 'list';\n }\n if (hasInlineSuggestion) {\n return 'inline';\n }\n return 'none';\n });\n\n /** A relay for keyboard events to the popup. */\n readonly keyboardEventRelay = signal<KeyboardEvent | undefined>(undefined);\n\n /** Whether the combobox is focused. */\n readonly isFocused = signal(false);\n\n /** Whether the most recent input event was a deletion. */\n readonly isDeleting = signal(false);\n\n /** Whether the combobox is editable (i.e., an input or textarea). */\n readonly isEditable = computed(\n () =>\n this.element().tagName.toLowerCase() === 'input' ||\n this.element().tagName.toLowerCase() === 'textarea',\n );\n\n /** The aria-readonly attribute value for non-editable comboboxes. */\n readonly ariaReadonly = computed(() => (this.readonly() && !this.isEditable() ? 'true' : null));\n\n /** The native readonly attribute value for editable comboboxes. */\n readonly nativeReadonly = computed(() =>\n (this.readonly() || this.disabled()) && this.isEditable() ? '' : null,\n );\n\n /** The native disabled attribute value for hard-disabled comboboxes. */\n readonly nativeDisabled = computed(() => (this.disabled() && !this.softDisabled() ? '' : null));\n\n /** The keydown event manager for the combobox. */\n // TODO(tjshiu): Allow combo keys in combobox (#33101).\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n if (!this.isExpanded()) {\n if (!this.readonly()) {\n manager.on('ArrowDown', () => this.inputs.expanded.set(true));\n\n if (!this.isEditable()) {\n manager.on('Enter', () => this.inputs.expanded.set(true));\n manager.on(' ', () => this.inputs.expanded.set(true));\n }\n }\n\n return manager;\n }\n\n manager\n .on(\n 'ArrowLeft',\n e => {\n this.keyboardEventRelay.set(e);\n },\n {preventDefault: this.popupType() !== 'listbox', ignoreRepeat: false},\n )\n .on(\n 'ArrowRight',\n e => {\n this.keyboardEventRelay.set(e);\n },\n {preventDefault: this.popupType() !== 'listbox', ignoreRepeat: false},\n )\n .on('ArrowUp', e => this.keyboardEventRelay.set(e), {ignoreRepeat: false})\n .on('ArrowDown', e => this.keyboardEventRelay.set(e), {ignoreRepeat: false})\n .on(Modifier.Shift, 'ArrowUp', e => this.keyboardEventRelay.set(e), {ignoreRepeat: false})\n .on(Modifier.Shift, 'ArrowDown', e => this.keyboardEventRelay.set(e), {ignoreRepeat: false})\n .on('Home', e => this.keyboardEventRelay.set(e))\n .on('End', e => this.keyboardEventRelay.set(e))\n .on('PageUp', e => this.keyboardEventRelay.set(e))\n .on('PageDown', e => this.keyboardEventRelay.set(e))\n .on('Escape', () => {\n if (!this.inputs.alwaysExpanded()) {\n this.inputs.expanded.set(false);\n }\n });\n\n if (!this.readonly()) {\n manager.on('Enter', e => this.keyboardEventRelay.set(e));\n }\n\n if (!this.isEditable() && !this.readonly()) {\n manager\n .on(' ', e => this.keyboardEventRelay.set(e))\n .on([Modifier.Ctrl, Modifier.Meta], 'a', e => this.keyboardEventRelay.set(e))\n .on([Modifier.Ctrl, Modifier.Meta], 'A', e => this.keyboardEventRelay.set(e))\n .on(Modifier.Shift, 'Home', e => this.keyboardEventRelay.set(e))\n .on(Modifier.Shift, 'End', e => this.keyboardEventRelay.set(e))\n .on(/^.$/, e => {\n this.keyboardEventRelay.set(e);\n });\n }\n\n return manager;\n });\n\n /** The click event manager for the combobox. */\n click = computed(() => {\n const manager = new ClickEventManager<PointerEvent>();\n\n if (this.isEditable() || this.readonly()) return manager;\n\n manager.on(() => this.inputs.expanded.update(v => !v));\n\n return manager;\n });\n\n constructor(readonly inputs: ComboboxInputs) {\n this.value = inputs.value;\n }\n\n /** Handles keydown events for the combobox. */\n onKeydown(event: KeyboardEvent) {\n if (!this.inputs.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** Handles click events for the combobox. */\n onClick(event: PointerEvent) {\n if (!this.disabled()) {\n this.click().handle(event);\n }\n }\n\n /** Handles focus in events for the combobox. */\n onFocusin() {\n this.isFocused.set(true);\n }\n\n /** Handles focus out events for the combobox. */\n onFocusout(event: FocusEvent) {\n this.isFocused.set(false);\n }\n\n /** Handles input events for the combobox. */\n onInput(event: Event) {\n if (!(event.target instanceof HTMLInputElement)) return;\n if (this.disabled() || this.readonly()) return;\n\n this.inputs.expanded.set(true);\n this.value.set(event.target.value);\n this.isDeleting.set(event instanceof InputEvent && !!event.inputType.match(/^delete/));\n }\n\n /** Highlights the currently selected item in the combobox. */\n highlightEffect() {\n const value = this.value();\n const inlineSuggestion = this.inlineSuggestion();\n\n const isDeleting = untracked(() => this.isDeleting());\n const isFocused = untracked(() => this.isFocused());\n const isExpanded = this.isExpanded();\n\n if (!inlineSuggestion || !isFocused || !isExpanded || isDeleting || this.readonly()) return;\n\n const inputEl = this.element() as HTMLInputElement;\n const isHighlightable = inlineSuggestion.toLowerCase().startsWith(value.toLowerCase());\n\n if (isHighlightable) {\n inputEl.value = value + inlineSuggestion.slice(value.length);\n inputEl.setSelectionRange(value.length, inlineSuggestion.length);\n }\n }\n\n /** Relays keyboard events to the popup. */\n keyboardEventRelayEffect() {\n const event = this.keyboardEventRelay();\n if (event === undefined) return;\n\n // Reset isDeleting when the user navigates, so that the highlight effect can run again.\n this.isDeleting.set(false);\n\n untracked(() => {\n const popup = this.inputs.popup();\n if (this.isExpanded()) {\n popup?.controlTarget()?.dispatchEvent(event);\n }\n });\n }\n\n /** Closes the popup when focus leaves the combobox and popup. */\n closePopupOnBlurEffect() {\n const expanded = this.isExpanded();\n const comboboxFocused = this.isFocused();\n const popupFocused = !!this.inputs.popup()?.isFocused();\n if (expanded && !this.inputs.alwaysExpanded() && !comboboxFocused && !popupFocused) {\n this.inputs.expanded.set(false);\n }\n }\n}\n\n/** Represents the required inputs for a simple combobox popup. */\nexport interface ComboboxPopupInputs {\n /** The type of the popup. */\n popupType: SignalLike<'listbox' | 'tree' | 'grid' | 'dialog'>;\n\n /** The element that serves as the control target for the popup. */\n controlTarget: SignalLike<HTMLElement | undefined>;\n\n /** The ID of the active descendant in the popup. */\n activeDescendant: SignalLike<string | undefined>;\n\n /** The ID of the popup. */\n popupId: SignalLike<string | undefined>;\n}\n\n/** Controls the state of a simple combobox popup. */\nexport class ComboboxPopupPattern {\n /** The type of the popup. */\n readonly popupType = () => this.inputs.popupType();\n\n /** The element that serves as the control target for the popup. */\n readonly controlTarget = () => this.inputs.controlTarget();\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = () => this.inputs.activeDescendant();\n\n /** The ID of the popup. */\n readonly popupId = () => this.inputs.popupId();\n\n /** Whether the popup is focused. */\n readonly isFocused = signal(false);\n\n constructor(readonly inputs: ComboboxPopupInputs) {}\n\n /** Handles focus in events for the popup. */\n onFocusin() {\n this.isFocused.set(true);\n }\n\n /** Handles focus out events for the popup. */\n onFocusout(event: FocusEvent) {\n const focusTarget = event.relatedTarget as Element | null;\n if (this.controlTarget()?.contains(focusTarget)) return;\n\n this.isFocused.set(false);\n }\n}\n"],"names":["ComboboxPattern","inputs","isExpanded","computed","alwaysExpanded","expanded","value","element","disabled","readonly","softDisabled","inlineSuggestion","activeDescendant","popup","popupId","popupType","autocomplete","hasAutocompletePopup","hasInlineSuggestion","keyboardEventRelay","signal","undefined","isFocused","isDeleting","isEditable","tagName","toLowerCase","ariaReadonly","nativeReadonly","nativeDisabled","keydown","manager","KeyboardEventManager","on","set","e","preventDefault","ignoreRepeat","Modifier","Shift","Ctrl","Meta","click","ClickEventManager","update","v","constructor","onKeydown","event","handle","onClick","onFocusin","onFocusout","onInput","target","HTMLInputElement","InputEvent","inputType","match","highlightEffect","untracked","inputEl","isHighlightable","startsWith","slice","length","setSelectionRange","keyboardEventRelayEffect","controlTarget","dispatchEvent","closePopupOnBlurEffect","comboboxFocused","popupFocused","ComboboxPopupPattern","focusTarget","relatedTarget","contains"],"mappings":";;;;;;;;;;;;;;;;;;;MAyCaA,eAAe,CAAA;EAwJLC,MAAA;AAtJZC,EAAAA,UAAU,GAAGC,QAAQ,CAAC,MAAM,IAAI,CAACF,MAAM,CAACG,cAAc,EAAE,IAAI,IAAI,CAACH,MAAM,CAACI,QAAQ,EAAE,CAAC;EAGnFC,KAAK;EAGLC,OAAO,GAAGA,MAAM,IAAI,CAACN,MAAM,CAACM,OAAO,EAAE;EAGrCC,QAAQ,GAAGA,MAAM,IAAI,CAACP,MAAM,CAACO,QAAQ,EAAE;EAGvCC,QAAQ,GAAGA,MAAM,IAAI,CAACR,MAAM,CAACQ,QAAQ,EAAE;EAGvCC,YAAY,GAAGA,MAAM,IAAI,CAACT,MAAM,CAACS,YAAY,IAAI,IAAI,IAAI;EAGzDC,gBAAgB,GAAGA,MAAM,IAAI,CAACV,MAAM,CAACU,gBAAgB,EAAE;AAGvDC,EAAAA,gBAAgB,GAAGT,QAAQ,CAAC,MAAM,IAAI,CAACF,MAAM,CAACY,KAAK,EAAE,EAAED,gBAAgB,EAAE,CAAC;AAG1EE,EAAAA,OAAO,GAAGX,QAAQ,CAAC,MAAM,IAAI,CAACF,MAAM,CAACY,KAAK,EAAE,EAAEC,OAAO,EAAE,CAAC;AAGxDC,EAAAA,SAAS,GAAGZ,QAAQ,CAAC,MAAM,IAAI,CAACF,MAAM,CAACY,KAAK,EAAE,EAAEE,SAAS,EAAE,CAAC;EAG5DC,YAAY,GAAGb,QAAQ,CAAsC,MAAK;AACzE,IAAA,MAAMY,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;AAClC,IAAA,MAAME,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAChB,MAAM,CAACY,KAAK,EAAE,IAAIE,SAAS,KAAK,QAAQ;IAC5E,MAAMG,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAACP,gBAAgB,EAAE;IACrD,IAAIM,oBAAoB,IAAIC,mBAAmB,EAAE;AAC/C,MAAA,OAAO,MAAM;AACf,IAAA;AACA,IAAA,IAAID,oBAAoB,EAAE;AACxB,MAAA,OAAO,MAAM;AACf,IAAA;AACA,IAAA,IAAIC,mBAAmB,EAAE;AACvB,MAAA,OAAO,QAAQ;AACjB,IAAA;AACA,IAAA,OAAO,MAAM;AACf,EAAA,CAAC,CAAC;AAGOC,EAAAA,kBAAkB,GAAGC,MAAM,CAA4BC,SAAS,CAAC;AAGjEC,EAAAA,SAAS,GAAGF,MAAM,CAAC,KAAK,CAAC;AAGzBG,EAAAA,UAAU,GAAGH,MAAM,CAAC,KAAK,CAAC;AAG1BI,EAAAA,UAAU,GAAGrB,QAAQ,CAC5B,MACE,IAAI,CAACI,OAAO,EAAE,CAACkB,OAAO,CAACC,WAAW,EAAE,KAAK,OAAO,IAChD,IAAI,CAACnB,OAAO,EAAE,CAACkB,OAAO,CAACC,WAAW,EAAE,KAAK,UAAU,CACtD;EAGQC,YAAY,GAAGxB,QAAQ,CAAC,MAAO,IAAI,CAACM,QAAQ,EAAE,IAAI,CAAC,IAAI,CAACe,UAAU,EAAE,GAAG,MAAM,GAAG,IAAK,CAAC;EAGtFI,cAAc,GAAGzB,QAAQ,CAAC,MACjC,CAAC,IAAI,CAACM,QAAQ,EAAE,IAAI,IAAI,CAACD,QAAQ,EAAE,KAAK,IAAI,CAACgB,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI,CACtE;EAGQK,cAAc,GAAG1B,QAAQ,CAAC,MAAO,IAAI,CAACK,QAAQ,EAAE,IAAI,CAAC,IAAI,CAACE,YAAY,EAAE,GAAG,EAAE,GAAG,IAAK,CAAC;EAI/FoB,OAAO,GAAG3B,QAAQ,CAAC,MAAK;AACtB,IAAA,MAAM4B,OAAO,GAAG,IAAIC,oBAAoB,EAAE;AAE1C,IAAA,IAAI,CAAC,IAAI,CAAC9B,UAAU,EAAE,EAAE;AACtB,MAAA,IAAI,CAAC,IAAI,CAACO,QAAQ,EAAE,EAAE;AACpBsB,QAAAA,OAAO,CAACE,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,CAAChC,MAAM,CAACI,QAAQ,CAAC6B,GAAG,CAAC,IAAI,CAAC,CAAC;AAE7D,QAAA,IAAI,CAAC,IAAI,CAACV,UAAU,EAAE,EAAE;AACtBO,UAAAA,OAAO,CAACE,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,CAAChC,MAAM,CAACI,QAAQ,CAAC6B,GAAG,CAAC,IAAI,CAAC,CAAC;AACzDH,UAAAA,OAAO,CAACE,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,CAAChC,MAAM,CAACI,QAAQ,CAAC6B,GAAG,CAAC,IAAI,CAAC,CAAC;AACvD,QAAA;AACF,MAAA;AAEA,MAAA,OAAOH,OAAO;AAChB,IAAA;AAEAA,IAAAA,OAAA,CACGE,EAAE,CACD,WAAW,EACXE,CAAC,IAAG;AACF,MAAA,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC;AAChC,IAAA,CAAC,EACD;AAACC,MAAAA,cAAc,EAAE,IAAI,CAACrB,SAAS,EAAE,KAAK,SAAS;AAAEsB,MAAAA,YAAY,EAAE;KAAM,CAAA,CAEtEJ,EAAE,CACD,YAAY,EACZE,CAAC,IAAG;AACF,MAAA,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC;AAChC,IAAA,CAAC,EACD;AAACC,MAAAA,cAAc,EAAE,IAAI,CAACrB,SAAS,EAAE,KAAK,SAAS;AAAEsB,MAAAA,YAAY,EAAE;KAAM,CAAA,CAEtEJ,EAAE,CAAC,SAAS,EAAEE,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,EAAE;AAACE,MAAAA,YAAY,EAAE;AAAK,KAAC,CAAA,CACxEJ,EAAE,CAAC,WAAW,EAAEE,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,EAAE;AAACE,MAAAA,YAAY,EAAE;KAAM,CAAA,CAC1EJ,EAAE,CAACK,QAAQ,CAACC,KAAK,EAAE,SAAS,EAAEJ,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,EAAE;AAACE,MAAAA,YAAY,EAAE;KAAM,CAAA,CACxFJ,EAAE,CAACK,QAAQ,CAACC,KAAK,EAAE,WAAW,EAAEJ,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,EAAE;AAACE,MAAAA,YAAY,EAAE;AAAK,KAAC,CAAA,CAC1FJ,EAAE,CAAC,MAAM,EAAEE,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAA,CAC9CF,EAAE,CAAC,KAAK,EAAEE,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAA,CAC7CF,EAAE,CAAC,QAAQ,EAAEE,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAA,CAChDF,EAAE,CAAC,UAAU,EAAEE,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAA,CAClDF,EAAE,CAAC,QAAQ,EAAE,MAAK;MACjB,IAAI,CAAC,IAAI,CAAChC,MAAM,CAACG,cAAc,EAAE,EAAE;QACjC,IAAI,CAACH,MAAM,CAACI,QAAQ,CAAC6B,GAAG,CAAC,KAAK,CAAC;AACjC,MAAA;AACF,IAAA,CAAC,CAAC;AAEJ,IAAA,IAAI,CAAC,IAAI,CAACzB,QAAQ,EAAE,EAAE;AACpBsB,MAAAA,OAAO,CAACE,EAAE,CAAC,OAAO,EAAEE,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAC;AAC1D,IAAA;AAEA,IAAA,IAAI,CAAC,IAAI,CAACX,UAAU,EAAE,IAAI,CAAC,IAAI,CAACf,QAAQ,EAAE,EAAE;MAC1CsB,OAAA,CACGE,EAAE,CAAC,GAAG,EAAEE,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAA,CAC3CF,EAAE,CAAC,CAACK,QAAQ,CAACE,IAAI,EAAEF,QAAQ,CAACG,IAAI,CAAC,EAAE,GAAG,EAAEN,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAA,CAC3EF,EAAE,CAAC,CAACK,QAAQ,CAACE,IAAI,EAAEF,QAAQ,CAACG,IAAI,CAAC,EAAE,GAAG,EAAEN,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAA,CAC3EF,EAAE,CAACK,QAAQ,CAACC,KAAK,EAAE,MAAM,EAAEJ,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAA,CAC9DF,EAAE,CAACK,QAAQ,CAACC,KAAK,EAAE,KAAK,EAAEJ,CAAC,IAAI,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC,CAAA,CAC7DF,EAAE,CAAC,KAAK,EAAEE,CAAC,IAAG;AACb,QAAA,IAAI,CAAChB,kBAAkB,CAACe,GAAG,CAACC,CAAC,CAAC;AAChC,MAAA,CAAC,CAAC;AACN,IAAA;AAEA,IAAA,OAAOJ,OAAO;AAChB,EAAA,CAAC,CAAC;EAGFW,KAAK,GAAGvC,QAAQ,CAAC,MAAK;AACpB,IAAA,MAAM4B,OAAO,GAAG,IAAIY,iBAAiB,EAAgB;AAErD,IAAA,IAAI,IAAI,CAACnB,UAAU,EAAE,IAAI,IAAI,CAACf,QAAQ,EAAE,EAAE,OAAOsB,OAAO;AAExDA,IAAAA,OAAO,CAACE,EAAE,CAAC,MAAM,IAAI,CAAChC,MAAM,CAACI,QAAQ,CAACuC,MAAM,CAACC,CAAC,IAAI,CAACA,CAAC,CAAC,CAAC;AAEtD,IAAA,OAAOd,OAAO;AAChB,EAAA,CAAC,CAAC;EAEFe,WAAAA,CAAqB7C,MAAsB,EAAA;IAAtB,IAAA,CAAAA,MAAM,GAANA,MAAM;AACzB,IAAA,IAAI,CAACK,KAAK,GAAGL,MAAM,CAACK,KAAK;AAC3B,EAAA;EAGAyC,SAASA,CAACC,KAAoB,EAAA;IAC5B,IAAI,CAAC,IAAI,CAAC/C,MAAM,CAACO,QAAQ,EAAE,EAAE;MAC3B,IAAI,CAACsB,OAAO,EAAE,CAACmB,MAAM,CAACD,KAAK,CAAC;AAC9B,IAAA;AACF,EAAA;EAGAE,OAAOA,CAACF,KAAmB,EAAA;AACzB,IAAA,IAAI,CAAC,IAAI,CAACxC,QAAQ,EAAE,EAAE;MACpB,IAAI,CAACkC,KAAK,EAAE,CAACO,MAAM,CAACD,KAAK,CAAC;AAC5B,IAAA;AACF,EAAA;AAGAG,EAAAA,SAASA,GAAA;AACP,IAAA,IAAI,CAAC7B,SAAS,CAACY,GAAG,CAAC,IAAI,CAAC;AAC1B,EAAA;EAGAkB,UAAUA,CAACJ,KAAiB,EAAA;AAC1B,IAAA,IAAI,CAAC1B,SAAS,CAACY,GAAG,CAAC,KAAK,CAAC;AAC3B,EAAA;EAGAmB,OAAOA,CAACL,KAAY,EAAA;AAClB,IAAA,IAAI,EAAEA,KAAK,CAACM,MAAM,YAAYC,gBAAgB,CAAC,EAAE;IACjD,IAAI,IAAI,CAAC/C,QAAQ,EAAE,IAAI,IAAI,CAACC,QAAQ,EAAE,EAAE;IAExC,IAAI,CAACR,MAAM,CAACI,QAAQ,CAAC6B,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC5B,KAAK,CAAC4B,GAAG,CAACc,KAAK,CAACM,MAAM,CAAChD,KAAK,CAAC;AAClC,IAAA,IAAI,CAACiB,UAAU,CAACW,GAAG,CAACc,KAAK,YAAYQ,UAAU,IAAI,CAAC,CAACR,KAAK,CAACS,SAAS,CAACC,KAAK,CAAC,SAAS,CAAC,CAAC;AACxF,EAAA;AAGAC,EAAAA,eAAeA,GAAA;AACb,IAAA,MAAMrD,KAAK,GAAG,IAAI,CAACA,KAAK,EAAE;AAC1B,IAAA,MAAMK,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,EAAE;IAEhD,MAAMY,UAAU,GAAGqC,SAAS,CAAC,MAAM,IAAI,CAACrC,UAAU,EAAE,CAAC;IACrD,MAAMD,SAAS,GAAGsC,SAAS,CAAC,MAAM,IAAI,CAACtC,SAAS,EAAE,CAAC;AACnD,IAAA,MAAMpB,UAAU,GAAG,IAAI,CAACA,UAAU,EAAE;AAEpC,IAAA,IAAI,CAACS,gBAAgB,IAAI,CAACW,SAAS,IAAI,CAACpB,UAAU,IAAIqB,UAAU,IAAI,IAAI,CAACd,QAAQ,EAAE,EAAE;AAErF,IAAA,MAAMoD,OAAO,GAAG,IAAI,CAACtD,OAAO,EAAsB;AAClD,IAAA,MAAMuD,eAAe,GAAGnD,gBAAgB,CAACe,WAAW,EAAE,CAACqC,UAAU,CAACzD,KAAK,CAACoB,WAAW,EAAE,CAAC;AAEtF,IAAA,IAAIoC,eAAe,EAAE;AACnBD,MAAAA,OAAO,CAACvD,KAAK,GAAGA,KAAK,GAAGK,gBAAgB,CAACqD,KAAK,CAAC1D,KAAK,CAAC2D,MAAM,CAAC;MAC5DJ,OAAO,CAACK,iBAAiB,CAAC5D,KAAK,CAAC2D,MAAM,EAAEtD,gBAAgB,CAACsD,MAAM,CAAC;AAClE,IAAA;AACF,EAAA;AAGAE,EAAAA,wBAAwBA,GAAA;AACtB,IAAA,MAAMnB,KAAK,GAAG,IAAI,CAAC7B,kBAAkB,EAAE;IACvC,IAAI6B,KAAK,KAAK3B,SAAS,EAAE;AAGzB,IAAA,IAAI,CAACE,UAAU,CAACW,GAAG,CAAC,KAAK,CAAC;AAE1B0B,IAAAA,SAAS,CAAC,MAAK;MACb,MAAM/C,KAAK,GAAG,IAAI,CAACZ,MAAM,CAACY,KAAK,EAAE;AACjC,MAAA,IAAI,IAAI,CAACX,UAAU,EAAE,EAAE;QACrBW,KAAK,EAAEuD,aAAa,EAAE,EAAEC,aAAa,CAACrB,KAAK,CAAC;AAC9C,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AAGAsB,EAAAA,sBAAsBA,GAAA;AACpB,IAAA,MAAMjE,QAAQ,GAAG,IAAI,CAACH,UAAU,EAAE;AAClC,IAAA,MAAMqE,eAAe,GAAG,IAAI,CAACjD,SAAS,EAAE;AACxC,IAAA,MAAMkD,YAAY,GAAG,CAAC,CAAC,IAAI,CAACvE,MAAM,CAACY,KAAK,EAAE,EAAES,SAAS,EAAE;AACvD,IAAA,IAAIjB,QAAQ,IAAI,CAAC,IAAI,CAACJ,MAAM,CAACG,cAAc,EAAE,IAAI,CAACmE,eAAe,IAAI,CAACC,YAAY,EAAE;MAClF,IAAI,CAACvE,MAAM,CAACI,QAAQ,CAAC6B,GAAG,CAAC,KAAK,CAAC;AACjC,IAAA;AACF,EAAA;AACD;MAkBYuC,oBAAoB,CAAA;EAgBVxE,MAAA;EAdZc,SAAS,GAAGA,MAAM,IAAI,CAACd,MAAM,CAACc,SAAS,EAAE;EAGzCqD,aAAa,GAAGA,MAAM,IAAI,CAACnE,MAAM,CAACmE,aAAa,EAAE;EAGjDxD,gBAAgB,GAAGA,MAAM,IAAI,CAACX,MAAM,CAACW,gBAAgB,EAAE;EAGvDE,OAAO,GAAGA,MAAM,IAAI,CAACb,MAAM,CAACa,OAAO,EAAE;AAGrCQ,EAAAA,SAAS,GAAGF,MAAM,CAAC,KAAK,CAAC;EAElC0B,WAAAA,CAAqB7C,MAA2B,EAAA;IAA3B,IAAA,CAAAA,MAAM,GAANA,MAAM;AAAwB,EAAA;AAGnDkD,EAAAA,SAASA,GAAA;AACP,IAAA,IAAI,CAAC7B,SAAS,CAACY,GAAG,CAAC,IAAI,CAAC;AAC1B,EAAA;EAGAkB,UAAUA,CAACJ,KAAiB,EAAA;AAC1B,IAAA,MAAM0B,WAAW,GAAG1B,KAAK,CAAC2B,aAA+B;IACzD,IAAI,IAAI,CAACP,aAAa,EAAE,EAAEQ,QAAQ,CAACF,WAAW,CAAC,EAAE;AAEjD,IAAA,IAAI,CAACpD,SAAS,CAACY,GAAG,CAAC,KAAK,CAAC;AAC3B,EAAA;AACD;;;;"}
1
+ {"version":3,"file":"private.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/combobox/combobox.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 {KeyboardEventManager, ClickEventManager, Modifier} from '../behaviors/event-manager';\nimport {computed, signal, untracked} from '@angular/core';\nimport {SignalLike, WritableSignalLike} from '../behaviors/signal-like/signal-like';\nimport {ExpansionItem} from '../behaviors/expansion/expansion';\n\n/** Represents the required inputs for a simple combobox. */\nexport interface ComboboxInputs extends ExpansionItem {\n /** Whether the combobox should always remain expanded. */\n alwaysExpanded: SignalLike<boolean>;\n\n /** The value of the combobox. */\n value: WritableSignalLike<string>;\n\n /** The element that the combobox is attached to. */\n element: SignalLike<HTMLElement>;\n\n /** The popup associated with the combobox. */\n popup: SignalLike<ComboboxPopupPattern | undefined>;\n\n /** An inline suggestion to be displayed in the input. */\n inlineSuggestion: SignalLike<string | undefined>;\n\n /** Whether the combobox is disabled. */\n disabled: SignalLike<boolean>;\n\n /** Whether the combobox is readonly. */\n readonly: SignalLike<boolean>;\n\n /** Whether the combobox is soft disabled. */\n softDisabled?: SignalLike<boolean>;\n}\n\n/** Controls the state of a simple combobox. */\nexport class ComboboxPattern {\n /** The expanded state of the combobox. */\n readonly isExpanded = computed(() => this.inputs.alwaysExpanded() || this.inputs.expanded());\n\n /** The value of the combobox. */\n readonly value: WritableSignalLike<string>;\n\n /** The element that the combobox is attached to. */\n readonly element = () => this.inputs.element();\n\n /** Whether the combobox is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Whether the combobox is readonly. */\n readonly readonly = () => this.inputs.readonly();\n\n /** Whether the combobox is soft disabled. */\n readonly softDisabled = () => this.inputs.softDisabled?.() ?? true;\n\n /** An inline suggestion to be displayed in the input. */\n readonly inlineSuggestion = () => this.inputs.inlineSuggestion();\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = computed(() => this.inputs.popup()?.activeDescendant());\n\n /** The ID of the popup. */\n readonly popupId = computed(() => this.inputs.popup()?.popupId());\n\n /** The type of the popup. */\n readonly popupType = computed(() => this.inputs.popup()?.popupType());\n\n /** The autocomplete behavior of the combobox. */\n readonly autocomplete = computed<'none' | 'inline' | 'list' | 'both'>(() => {\n const popupType = this.popupType();\n const hasAutocompletePopup = !!this.inputs.popup() && popupType !== 'dialog';\n const hasInlineSuggestion = !!this.inlineSuggestion();\n if (hasAutocompletePopup && hasInlineSuggestion) {\n return 'both';\n }\n if (hasAutocompletePopup) {\n return 'list';\n }\n if (hasInlineSuggestion) {\n return 'inline';\n }\n return 'none';\n });\n\n /** A relay for keyboard events to the popup. */\n readonly keyboardEventRelay = signal<KeyboardEvent | undefined>(undefined);\n\n /** Whether the combobox is focused. */\n readonly isFocused = signal(false);\n\n /** Whether the most recent input event was a deletion. */\n readonly isDeleting = signal(false);\n\n /** Whether the combobox is editable (i.e., an input or textarea). */\n readonly isEditable = computed(\n () =>\n this.element().tagName.toLowerCase() === 'input' ||\n this.element().tagName.toLowerCase() === 'textarea',\n );\n\n /** The aria-readonly attribute value for non-editable comboboxes. */\n readonly ariaReadonly = computed(() => (this.readonly() && !this.isEditable() ? 'true' : null));\n\n /** The native readonly attribute value for editable comboboxes. */\n readonly nativeReadonly = computed(() =>\n (this.readonly() || this.disabled()) && this.isEditable() ? '' : null,\n );\n\n /** The native disabled attribute value for hard-disabled comboboxes. */\n readonly nativeDisabled = computed(() => (this.disabled() && !this.softDisabled() ? '' : null));\n\n /** The keydown event manager for the combobox. */\n // TODO(tjshiu): Allow combo keys in combobox (#33101).\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n if (!this.isExpanded()) {\n if (!this.readonly()) {\n manager.on('ArrowDown', () => this.inputs.expanded.set(true));\n\n if (!this.isEditable()) {\n manager.on('Enter', () => this.inputs.expanded.set(true));\n manager.on(' ', () => this.inputs.expanded.set(true));\n }\n }\n\n return manager;\n }\n\n manager\n .on(\n 'ArrowLeft',\n e => {\n this.keyboardEventRelay.set(e);\n },\n {preventDefault: this.popupType() !== 'listbox', ignoreRepeat: false},\n )\n .on(\n 'ArrowRight',\n e => {\n this.keyboardEventRelay.set(e);\n },\n {preventDefault: this.popupType() !== 'listbox', ignoreRepeat: false},\n )\n .on('ArrowUp', e => this.keyboardEventRelay.set(e), {ignoreRepeat: false})\n .on('ArrowDown', e => this.keyboardEventRelay.set(e), {ignoreRepeat: false})\n .on(Modifier.Shift, 'ArrowUp', e => this.keyboardEventRelay.set(e), {ignoreRepeat: false})\n .on(Modifier.Shift, 'ArrowDown', e => this.keyboardEventRelay.set(e), {ignoreRepeat: false})\n .on('Home', e => this.keyboardEventRelay.set(e))\n .on('End', e => this.keyboardEventRelay.set(e))\n .on('PageUp', e => this.keyboardEventRelay.set(e))\n .on('PageDown', e => this.keyboardEventRelay.set(e))\n .on('Escape', () => {\n if (!this.inputs.alwaysExpanded()) {\n this.inputs.expanded.set(false);\n }\n });\n\n if (!this.readonly()) {\n manager.on('Enter', e => this.keyboardEventRelay.set(e));\n }\n\n if (!this.isEditable() && !this.readonly()) {\n manager\n .on(' ', e => this.keyboardEventRelay.set(e))\n .on([Modifier.Ctrl, Modifier.Meta], 'a', e => this.keyboardEventRelay.set(e))\n .on([Modifier.Ctrl, Modifier.Meta], 'A', e => this.keyboardEventRelay.set(e))\n .on(Modifier.Shift, 'Home', e => this.keyboardEventRelay.set(e))\n .on(Modifier.Shift, 'End', e => this.keyboardEventRelay.set(e))\n .on(/^.$/, e => {\n this.keyboardEventRelay.set(e);\n });\n }\n\n return manager;\n });\n\n /** The click event manager for the combobox. */\n click = computed(() => {\n const manager = new ClickEventManager<PointerEvent>();\n\n if (this.isEditable() || this.readonly()) return manager;\n\n manager.on(() => this.inputs.expanded.update(v => !v));\n\n return manager;\n });\n\n constructor(readonly inputs: ComboboxInputs) {\n this.value = inputs.value;\n }\n\n /** Handles keydown events for the combobox. */\n onKeydown(event: KeyboardEvent) {\n if (!this.inputs.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** Handles click events for the combobox. */\n onClick(event: PointerEvent) {\n if (!this.disabled()) {\n this.click().handle(event);\n }\n }\n\n /** Handles focus in events for the combobox. */\n onFocusin() {\n this.isFocused.set(true);\n }\n\n /** Handles focus out events for the combobox. */\n onFocusout(event: FocusEvent) {\n this.isFocused.set(false);\n }\n\n /** Handles input events for the combobox. */\n onInput(event: Event) {\n if (!(event.target instanceof HTMLInputElement)) return;\n if (this.disabled() || this.readonly()) return;\n\n this.inputs.expanded.set(true);\n this.value.set(event.target.value);\n this.isDeleting.set(event instanceof InputEvent && !!event.inputType.match(/^delete/));\n }\n\n /** Highlights the currently selected item in the combobox. */\n highlightEffect() {\n const value = this.value();\n const inlineSuggestion = this.inlineSuggestion();\n\n const isDeleting = untracked(() => this.isDeleting());\n const isFocused = untracked(() => this.isFocused());\n const isExpanded = this.isExpanded();\n\n if (!inlineSuggestion || !isFocused || !isExpanded || isDeleting || this.readonly()) return;\n\n const inputEl = this.element() as HTMLInputElement;\n const isHighlightable = inlineSuggestion.toLowerCase().startsWith(value.toLowerCase());\n\n if (isHighlightable) {\n inputEl.value = value + inlineSuggestion.slice(value.length);\n inputEl.setSelectionRange(value.length, inlineSuggestion.length);\n }\n }\n\n /** Relays keyboard events to the popup. */\n keyboardEventRelayEffect() {\n const event = this.keyboardEventRelay();\n if (event === undefined) return;\n\n // Reset isDeleting when the user navigates, so that the highlight effect can run again.\n this.isDeleting.set(false);\n\n untracked(() => {\n const popup = this.inputs.popup();\n if (this.isExpanded()) {\n const relayedEvent = new KeyboardEvent(event.type, event);\n popup?.controlTarget()?.dispatchEvent(relayedEvent);\n }\n });\n }\n\n /** Closes the popup when focus leaves the combobox and popup. */\n closePopupOnBlurEffect() {\n const expanded = this.isExpanded();\n const comboboxFocused = this.isFocused();\n const popupFocused = !!this.inputs.popup()?.isFocused();\n if (expanded && !this.inputs.alwaysExpanded() && !comboboxFocused && !popupFocused) {\n this.inputs.expanded.set(false);\n }\n }\n}\n\n/** Represents the required inputs for a simple combobox popup. */\nexport interface ComboboxPopupInputs {\n /** The type of the popup. */\n popupType: SignalLike<'listbox' | 'tree' | 'grid' | 'dialog'>;\n\n /** The element that serves as the control target for the popup. */\n controlTarget: SignalLike<HTMLElement | undefined>;\n\n /** The ID of the active descendant in the popup. */\n activeDescendant: SignalLike<string | undefined>;\n\n /** The ID of the popup. */\n popupId: SignalLike<string | undefined>;\n}\n\n/** Controls the state of a simple combobox popup. */\nexport class ComboboxPopupPattern {\n /** The type of the popup. */\n readonly popupType = () => this.inputs.popupType();\n\n /** The element that serves as the control target for the popup. */\n readonly controlTarget = () => this.inputs.controlTarget();\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = () => this.inputs.activeDescendant();\n\n /** The ID of the popup. */\n readonly popupId = () => this.inputs.popupId();\n\n /** Whether the popup is focused. */\n readonly isFocused = signal(false);\n\n constructor(readonly inputs: ComboboxPopupInputs) {}\n\n /** Handles focus in events for the popup. */\n onFocusin() {\n this.isFocused.set(true);\n }\n\n /** Handles focus out events for the popup. */\n onFocusout(event: FocusEvent) {\n const focusTarget = event.relatedTarget as Element | null;\n if (this.controlTarget()?.contains(focusTarget)) return;\n\n this.isFocused.set(false);\n }\n}\n"],"names":["ComboboxPattern","inputs","isExpanded","computed","alwaysExpanded","expanded","value","element","disabled","readonly","softDisabled","inlineSuggestion","activeDescendant","popup","popupId","popupType","autocomplete","hasAutocompletePopup","hasInlineSuggestion","keyboardEventRelay","signal","undefined","isFocused","isDeleting","isEditable","tagName","toLowerCase","ariaReadonly","nativeReadonly","nativeDisabled","keydown","manager","KeyboardEventManager","on","set","e","preventDefault","ignoreRepeat","Modifier","Shift","Ctrl","Meta","click","ClickEventManager","update","v","constructor","onKeydown","event","handle","onClick","onFocusin","onFocusout","onInput","target","HTMLInputElement","InputEvent","inputType","match","highlightEffect","untracked","inputEl","isHighlightable","startsWith","slice","length","setSelectionRange","keyboardEventRelayEffect","relayedEvent","KeyboardEvent","type","controlTarget","dispatchEvent","closePopupOnBlurEffect","comboboxFocused","popupFocused","ComboboxPopupPattern","focusTarget","relatedTarget","contains"],"mappings":"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"}
package/fesm2022/tabs.mjs CHANGED
@@ -63,7 +63,7 @@ class Tabs {
63
63
  }
64
64
  static ɵfac = i0.ɵɵngDeclareFactory({
65
65
  minVersion: "12.0.0",
66
- version: "22.1.0-next.0",
66
+ version: "22.1.0-next.4",
67
67
  ngImport: i0,
68
68
  type: Tabs,
69
69
  deps: [],
@@ -71,7 +71,7 @@ class Tabs {
71
71
  });
72
72
  static ɵdir = i0.ɵɵngDeclareDirective({
73
73
  minVersion: "14.0.0",
74
- version: "22.1.0-next.0",
74
+ version: "22.1.0-next.4",
75
75
  type: Tabs,
76
76
  isStandalone: true,
77
77
  selector: "[ngTabs]",
@@ -85,7 +85,7 @@ class Tabs {
85
85
  }
86
86
  i0.ɵɵngDeclareClassMetadata({
87
87
  minVersion: "12.0.0",
88
- version: "22.1.0-next.0",
88
+ version: "22.1.0-next.4",
89
89
  ngImport: i0,
90
90
  type: Tabs,
91
91
  decorators: [{
@@ -197,7 +197,7 @@ class TabList {
197
197
  }
198
198
  static ɵfac = i0.ɵɵngDeclareFactory({
199
199
  minVersion: "12.0.0",
200
- version: "22.1.0-next.0",
200
+ version: "22.1.0-next.4",
201
201
  ngImport: i0,
202
202
  type: TabList,
203
203
  deps: [],
@@ -205,7 +205,7 @@ class TabList {
205
205
  });
206
206
  static ɵdir = i0.ɵɵngDeclareDirective({
207
207
  minVersion: "17.1.0",
208
- version: "22.1.0-next.0",
208
+ version: "22.1.0-next.4",
209
209
  type: TabList,
210
210
  isStandalone: true,
211
211
  selector: "[ngTabList]",
@@ -289,7 +289,7 @@ class TabList {
289
289
  }
290
290
  i0.ɵɵngDeclareClassMetadata({
291
291
  minVersion: "12.0.0",
292
- version: "22.1.0-next.0",
292
+ version: "22.1.0-next.4",
293
293
  ngImport: i0,
294
294
  type: TabList,
295
295
  decorators: [{
@@ -439,7 +439,7 @@ class Tab {
439
439
  }
440
440
  static ɵfac = i0.ɵɵngDeclareFactory({
441
441
  minVersion: "12.0.0",
442
- version: "22.1.0-next.0",
442
+ version: "22.1.0-next.4",
443
443
  ngImport: i0,
444
444
  type: Tab,
445
445
  deps: [],
@@ -447,7 +447,7 @@ class Tab {
447
447
  });
448
448
  static ɵdir = i0.ɵɵngDeclareDirective({
449
449
  minVersion: "17.1.0",
450
- version: "22.1.0-next.0",
450
+ version: "22.1.0-next.4",
451
451
  type: Tab,
452
452
  isStandalone: true,
453
453
  selector: "[ngTab]",
@@ -493,7 +493,7 @@ class Tab {
493
493
  }
494
494
  i0.ɵɵngDeclareClassMetadata({
495
495
  minVersion: "12.0.0",
496
- version: "22.1.0-next.0",
496
+ version: "22.1.0-next.4",
497
497
  ngImport: i0,
498
498
  type: Tab,
499
499
  decorators: [{
@@ -544,7 +544,7 @@ i0.ɵɵngDeclareClassMetadata({
544
544
  class TabContent {
545
545
  static ɵfac = i0.ɵɵngDeclareFactory({
546
546
  minVersion: "12.0.0",
547
- version: "22.1.0-next.0",
547
+ version: "22.1.0-next.4",
548
548
  ngImport: i0,
549
549
  type: TabContent,
550
550
  deps: [],
@@ -552,7 +552,7 @@ class TabContent {
552
552
  });
553
553
  static ɵdir = i0.ɵɵngDeclareDirective({
554
554
  minVersion: "14.0.0",
555
- version: "22.1.0-next.0",
555
+ version: "22.1.0-next.4",
556
556
  type: TabContent,
557
557
  isStandalone: true,
558
558
  selector: "ng-template[ngTabContent]",
@@ -565,7 +565,7 @@ class TabContent {
565
565
  }
566
566
  i0.ɵɵngDeclareClassMetadata({
567
567
  minVersion: "12.0.0",
568
- version: "22.1.0-next.0",
568
+ version: "22.1.0-next.4",
569
569
  ngImport: i0,
570
570
  type: TabContent,
571
571
  decorators: [{
@@ -633,7 +633,7 @@ class TabPanel {
633
633
  }
634
634
  static ɵfac = i0.ɵɵngDeclareFactory({
635
635
  minVersion: "12.0.0",
636
- version: "22.1.0-next.0",
636
+ version: "22.1.0-next.4",
637
637
  ngImport: i0,
638
638
  type: TabPanel,
639
639
  deps: [],
@@ -641,7 +641,7 @@ class TabPanel {
641
641
  });
642
642
  static ɵdir = i0.ɵɵngDeclareDirective({
643
643
  minVersion: "17.2.0",
644
- version: "22.1.0-next.0",
644
+ version: "22.1.0-next.4",
645
645
  type: TabPanel,
646
646
  isStandalone: true,
647
647
  selector: "[ngTabPanel]",
@@ -689,7 +689,7 @@ class TabPanel {
689
689
  }
690
690
  i0.ɵɵngDeclareClassMetadata({
691
691
  minVersion: "12.0.0",
692
- version: "22.1.0-next.0",
692
+ version: "22.1.0-next.4",
693
693
  ngImport: i0,
694
694
  type: TabPanel,
695
695
  decorators: [{
@@ -73,7 +73,7 @@ class Toolbar {
73
73
  }
74
74
  static ɵfac = i0.ɵɵngDeclareFactory({
75
75
  minVersion: "12.0.0",
76
- version: "22.1.0-next.0",
76
+ version: "22.1.0-next.4",
77
77
  ngImport: i0,
78
78
  type: Toolbar,
79
79
  deps: [],
@@ -81,7 +81,7 @@ class Toolbar {
81
81
  });
82
82
  static ɵdir = i0.ɵɵngDeclareDirective({
83
83
  minVersion: "17.1.0",
84
- version: "22.1.0-next.0",
84
+ version: "22.1.0-next.4",
85
85
  type: Toolbar,
86
86
  isStandalone: true,
87
87
  selector: "[ngToolbar]",
@@ -147,7 +147,7 @@ class Toolbar {
147
147
  }
148
148
  i0.ɵɵngDeclareClassMetadata({
149
149
  minVersion: "12.0.0",
150
- version: "22.1.0-next.0",
150
+ version: "22.1.0-next.4",
151
151
  ngImport: i0,
152
152
  type: Toolbar,
153
153
  decorators: [{
@@ -263,7 +263,7 @@ class ToolbarWidget {
263
263
  }
264
264
  static ɵfac = i0.ɵɵngDeclareFactory({
265
265
  minVersion: "12.0.0",
266
- version: "22.1.0-next.0",
266
+ version: "22.1.0-next.4",
267
267
  ngImport: i0,
268
268
  type: ToolbarWidget,
269
269
  deps: [],
@@ -271,7 +271,7 @@ class ToolbarWidget {
271
271
  });
272
272
  static ɵdir = i0.ɵɵngDeclareDirective({
273
273
  minVersion: "17.1.0",
274
- version: "22.1.0-next.0",
274
+ version: "22.1.0-next.4",
275
275
  type: ToolbarWidget,
276
276
  isStandalone: true,
277
277
  selector: "[ngToolbarWidget]",
@@ -317,7 +317,7 @@ class ToolbarWidget {
317
317
  }
318
318
  i0.ɵɵngDeclareClassMetadata({
319
319
  minVersion: "12.0.0",
320
- version: "22.1.0-next.0",
320
+ version: "22.1.0-next.4",
321
321
  ngImport: i0,
322
322
  type: ToolbarWidget,
323
323
  decorators: [{
@@ -412,7 +412,7 @@ class ToolbarWidgetGroup {
412
412
  }
413
413
  static ɵfac = i0.ɵɵngDeclareFactory({
414
414
  minVersion: "12.0.0",
415
- version: "22.1.0-next.0",
415
+ version: "22.1.0-next.4",
416
416
  ngImport: i0,
417
417
  type: ToolbarWidgetGroup,
418
418
  deps: [],
@@ -420,7 +420,7 @@ class ToolbarWidgetGroup {
420
420
  });
421
421
  static ɵdir = i0.ɵɵngDeclareDirective({
422
422
  minVersion: "17.2.0",
423
- version: "22.1.0-next.0",
423
+ version: "22.1.0-next.4",
424
424
  type: ToolbarWidgetGroup,
425
425
  isStandalone: true,
426
426
  selector: "[ngToolbarWidgetGroup]",
@@ -456,7 +456,7 @@ class ToolbarWidgetGroup {
456
456
  }
457
457
  i0.ɵɵngDeclareClassMetadata({
458
458
  minVersion: "12.0.0",
459
- version: "22.1.0-next.0",
459
+ version: "22.1.0-next.4",
460
460
  ngImport: i0,
461
461
  type: ToolbarWidgetGroup,
462
462
  decorators: [{
package/fesm2022/tree.mjs CHANGED
@@ -123,7 +123,7 @@ class Tree {
123
123
  }
124
124
  static ɵfac = i0.ɵɵngDeclareFactory({
125
125
  minVersion: "12.0.0",
126
- version: "22.1.0-next.0",
126
+ version: "22.1.0-next.4",
127
127
  ngImport: i0,
128
128
  type: Tree,
129
129
  deps: [],
@@ -131,7 +131,7 @@ class Tree {
131
131
  });
132
132
  static ɵdir = i0.ɵɵngDeclareDirective({
133
133
  minVersion: "17.1.0",
134
- version: "22.1.0-next.0",
134
+ version: "22.1.0-next.4",
135
135
  type: Tree,
136
136
  isStandalone: true,
137
137
  selector: "[ngTree]",
@@ -255,7 +255,7 @@ class Tree {
255
255
  }
256
256
  i0.ɵɵngDeclareClassMetadata({
257
257
  minVersion: "12.0.0",
258
- version: "22.1.0-next.0",
258
+ version: "22.1.0-next.4",
259
259
  ngImport: i0,
260
260
  type: Tree,
261
261
  decorators: [{
@@ -419,7 +419,7 @@ class TreeItemGroup {
419
419
  }
420
420
  static ɵfac = i0.ɵɵngDeclareFactory({
421
421
  minVersion: "12.0.0",
422
- version: "22.1.0-next.0",
422
+ version: "22.1.0-next.4",
423
423
  ngImport: i0,
424
424
  type: TreeItemGroup,
425
425
  deps: [],
@@ -427,7 +427,7 @@ class TreeItemGroup {
427
427
  });
428
428
  static ɵdir = i0.ɵɵngDeclareDirective({
429
429
  minVersion: "17.1.0",
430
- version: "22.1.0-next.0",
430
+ version: "22.1.0-next.4",
431
431
  type: TreeItemGroup,
432
432
  isStandalone: true,
433
433
  selector: "ng-template[ngTreeItemGroup]",
@@ -449,7 +449,7 @@ class TreeItemGroup {
449
449
  }
450
450
  i0.ɵɵngDeclareClassMetadata({
451
451
  minVersion: "12.0.0",
452
- version: "22.1.0-next.0",
452
+ version: "22.1.0-next.4",
453
453
  ngImport: i0,
454
454
  type: TreeItemGroup,
455
455
  decorators: [{
@@ -577,7 +577,7 @@ class TreeItem extends DeferredContentAware {
577
577
  }
578
578
  static ɵfac = i0.ɵɵngDeclareFactory({
579
579
  minVersion: "12.0.0",
580
- version: "22.1.0-next.0",
580
+ version: "22.1.0-next.4",
581
581
  ngImport: i0,
582
582
  type: TreeItem,
583
583
  deps: [],
@@ -585,7 +585,7 @@ class TreeItem extends DeferredContentAware {
585
585
  });
586
586
  static ɵdir = i0.ɵɵngDeclareDirective({
587
587
  minVersion: "17.1.0",
588
- version: "22.1.0-next.0",
588
+ version: "22.1.0-next.4",
589
589
  type: TreeItem,
590
590
  isStandalone: true,
591
591
  selector: "[ngTreeItem]",
@@ -667,7 +667,7 @@ class TreeItem extends DeferredContentAware {
667
667
  }
668
668
  i0.ɵɵngDeclareClassMetadata({
669
669
  minVersion: "12.0.0",
670
- version: "22.1.0-next.0",
670
+ version: "22.1.0-next.4",
671
671
  ngImport: i0,
672
672
  type: TreeItem,
673
673
  decorators: [{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/aria",
3
- "version": "22.1.0-next.1",
3
+ "version": "22.1.0-next.3",
4
4
  "description": "Angular Aria",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "homepage": "https://github.com/angular/components#readme",
14
14
  "peerDependencies": {
15
- "@angular/cdk": "22.1.0-next.1",
15
+ "@angular/cdk": "22.1.0-next.3",
16
16
  "@angular/core": "^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0"
17
17
  },
18
18
  "devDependencies": {
@@ -123,11 +123,14 @@ declare class Listbox<V> implements OnDestroy {
123
123
  readonly _pattern: ListboxPattern<V>;
124
124
  /** The ID of the active descendant in the listbox. */
125
125
  readonly activeDescendant: Signal<string | undefined>;
126
+ private readonly _orderedItemPatterns;
126
127
  constructor();
127
128
  ngOnDestroy(): void;
128
129
  scrollActiveItemIntoView(options?: ScrollIntoViewOptions): void;
129
130
  /** Navigates to the first item in the listbox. */
130
131
  gotoFirst(): void;
132
+ /** Navigates to an item at a specific index in the listbox. */
133
+ gotoIndex(index: number): void;
131
134
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Listbox<any>, never>;
132
135
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Listbox<any>, "[ngListbox]", ["ngListbox"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "softDisabled": { "alias": "softDisabled"; "required": false; "isSignal": true; }; "focusMode": { "alias": "focusMode"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "typeaheadDelay": { "alias": "typeaheadDelay"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabindex"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
133
136
  }