@angular/aria 21.0.0-rc.0 → 21.0.0-rc.2

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.
Files changed (48) hide show
  1. package/_adev_assets/aria-accordion.json +443 -59
  2. package/_adev_assets/aria-combobox.json +345 -37
  3. package/_adev_assets/aria-grid.json +408 -71
  4. package/_adev_assets/aria-listbox.json +115 -35
  5. package/_adev_assets/aria-menu.json +492 -167
  6. package/_adev_assets/aria-tabs.json +272 -88
  7. package/_adev_assets/aria-toolbar.json +151 -133
  8. package/_adev_assets/aria-tree.json +182 -35
  9. package/fesm2022/_widget-chunk.mjs +643 -190
  10. package/fesm2022/_widget-chunk.mjs.map +1 -1
  11. package/fesm2022/accordion.mjs +129 -77
  12. package/fesm2022/accordion.mjs.map +1 -1
  13. package/fesm2022/aria.mjs +1 -1
  14. package/fesm2022/aria.mjs.map +1 -1
  15. package/fesm2022/combobox.mjs +140 -27
  16. package/fesm2022/combobox.mjs.map +1 -1
  17. package/fesm2022/grid.mjs +254 -68
  18. package/fesm2022/grid.mjs.map +1 -1
  19. package/fesm2022/listbox.mjs +54 -44
  20. package/fesm2022/listbox.mjs.map +1 -1
  21. package/fesm2022/menu.mjs +270 -108
  22. package/fesm2022/menu.mjs.map +1 -1
  23. package/fesm2022/private.mjs +752 -785
  24. package/fesm2022/private.mjs.map +1 -1
  25. package/fesm2022/tabs.mjs +101 -71
  26. package/fesm2022/tabs.mjs.map +1 -1
  27. package/fesm2022/toolbar.mjs +87 -64
  28. package/fesm2022/toolbar.mjs.map +1 -1
  29. package/fesm2022/tree.mjs +105 -60
  30. package/fesm2022/tree.mjs.map +1 -1
  31. package/package.json +2 -10
  32. package/types/_grid-chunk.d.ts +326 -83
  33. package/types/accordion.d.ts +134 -35
  34. package/types/combobox.d.ts +146 -13
  35. package/types/grid.d.ts +159 -32
  36. package/types/listbox.d.ts +59 -28
  37. package/types/menu.d.ts +151 -55
  38. package/types/private.d.ts +449 -567
  39. package/types/tabs.d.ts +121 -41
  40. package/types/toolbar.d.ts +74 -51
  41. package/types/tree.d.ts +116 -45
  42. package/_adev_assets/aria-radio-group.json +0 -389
  43. package/fesm2022/deferred-content.mjs +0 -99
  44. package/fesm2022/deferred-content.mjs.map +0 -1
  45. package/fesm2022/radio-group.mjs +0 -338
  46. package/fesm2022/radio-group.mjs.map +0 -1
  47. package/types/deferred-content.d.ts +0 -38
  48. package/types/radio-group.d.ts +0 -84
@@ -1,8 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, contentChild, input, signal, computed, afterRenderEffect, Directive, model, untracked } from '@angular/core';
3
- import * as i1 from '@angular/aria/deferred-content';
4
- import { DeferredContentAware, DeferredContent } from '@angular/aria/deferred-content';
5
- import { ComboboxPattern } from '@angular/aria/private';
2
+ import { inject, ElementRef, contentChild, input, booleanAttribute, computed, signal, afterRenderEffect, Directive, model, untracked } from '@angular/core';
3
+ import * as i1 from '@angular/aria/private';
4
+ import { DeferredContentAware, ComboboxPattern, ComboboxDialogPattern, DeferredContent } from '@angular/aria/private';
6
5
  import { Directionality } from '@angular/cdk/bidi';
7
6
  import { toSignal } from '@angular/core/rxjs-interop';
8
7
 
@@ -12,6 +11,7 @@ class Combobox {
12
11
  initialValue: this._directionality.value
13
12
  });
14
13
  _elementRef = inject(ElementRef);
14
+ element = this._elementRef.nativeElement;
15
15
  _deferredContentAware = inject(DeferredContentAware, {
16
16
  optional: true
17
17
  });
@@ -21,24 +21,30 @@ class Combobox {
21
21
  filterMode = input('manual', ...(ngDevMode ? [{
22
22
  debugName: "filterMode"
23
23
  }] : []));
24
- isFocused = signal(false, ...(ngDevMode ? [{
25
- debugName: "isFocused"
26
- }] : []));
27
- _hasBeenFocused = signal(false, ...(ngDevMode ? [{
28
- debugName: "_hasBeenFocused"
29
- }] : []));
30
24
  disabled = input(false, ...(ngDevMode ? [{
31
- debugName: "disabled"
32
- }] : []));
25
+ debugName: "disabled",
26
+ transform: booleanAttribute
27
+ }] : [{
28
+ transform: booleanAttribute
29
+ }]));
33
30
  readonly = input(false, ...(ngDevMode ? [{
34
- debugName: "readonly"
35
- }] : []));
31
+ debugName: "readonly",
32
+ transform: booleanAttribute
33
+ }] : [{
34
+ transform: booleanAttribute
35
+ }]));
36
36
  firstMatch = input(undefined, ...(ngDevMode ? [{
37
37
  debugName: "firstMatch"
38
38
  }] : []));
39
- expanded = computed(() => this._pattern.expanded(), ...(ngDevMode ? [{
39
+ expanded = computed(() => this.alwaysExpanded() || this._pattern.expanded(), ...(ngDevMode ? [{
40
40
  debugName: "expanded"
41
41
  }] : []));
42
+ alwaysExpanded = input(false, ...(ngDevMode ? [{
43
+ debugName: "alwaysExpanded",
44
+ transform: booleanAttribute
45
+ }] : [{
46
+ transform: booleanAttribute
47
+ }]));
42
48
  inputElement = computed(() => this._pattern.inputs.inputEl(), ...(ngDevMode ? [{
43
49
  debugName: "inputElement"
44
50
  }] : []));
@@ -54,16 +60,30 @@ class Combobox {
54
60
  });
55
61
  constructor() {
56
62
  afterRenderEffect(() => {
57
- if (!this._deferredContentAware?.contentVisible() && this._pattern.isFocused()) {
58
- this._deferredContentAware?.contentVisible.set(true);
63
+ if (this.alwaysExpanded()) {
64
+ this._pattern.expanded.set(true);
59
65
  }
60
66
  });
61
67
  afterRenderEffect(() => {
62
- if (!this._hasBeenFocused() && this._pattern.isFocused()) {
63
- this._hasBeenFocused.set(true);
68
+ if (!this._deferredContentAware?.contentVisible() && (this._pattern.isFocused() || this.alwaysExpanded())) {
69
+ this._deferredContentAware?.contentVisible.set(true);
64
70
  }
65
71
  });
66
72
  }
73
+ open() {
74
+ this._pattern.open({
75
+ selected: true
76
+ });
77
+ }
78
+ close() {
79
+ this._pattern.close();
80
+ }
81
+ expand() {
82
+ this._pattern.open();
83
+ }
84
+ collapse() {
85
+ this._pattern.close();
86
+ }
67
87
  static ɵfac = i0.ɵɵngDeclareFactory({
68
88
  minVersion: "12.0.0",
69
89
  version: "20.2.0-next.2",
@@ -106,13 +126,20 @@ class Combobox {
106
126
  isSignal: true,
107
127
  isRequired: false,
108
128
  transformFunction: null
129
+ },
130
+ alwaysExpanded: {
131
+ classPropertyName: "alwaysExpanded",
132
+ publicName: "alwaysExpanded",
133
+ isSignal: true,
134
+ isRequired: false,
135
+ transformFunction: null
109
136
  }
110
137
  },
111
138
  host: {
112
139
  listeners: {
113
140
  "input": "_pattern.onInput($event)",
114
141
  "keydown": "_pattern.onKeydown($event)",
115
- "pointerup": "_pattern.onPointerup($event)",
142
+ "click": "_pattern.onClick($event)",
116
143
  "focusin": "_pattern.onFocusIn()",
117
144
  "focusout": "_pattern.onFocusOut($event)"
118
145
  },
@@ -153,7 +180,7 @@ i0.ɵɵngDeclareClassMetadata({
153
180
  '[attr.data-expanded]': 'expanded()',
154
181
  '(input)': '_pattern.onInput($event)',
155
182
  '(keydown)': '_pattern.onKeydown($event)',
156
- '(pointerup)': '_pattern.onPointerup($event)',
183
+ '(click)': '_pattern.onClick($event)',
157
184
  '(focusin)': '_pattern.onFocusIn()',
158
185
  '(focusout)': '_pattern.onFocusOut($event)'
159
186
  }
@@ -163,6 +190,7 @@ i0.ɵɵngDeclareClassMetadata({
163
190
  });
164
191
  class ComboboxInput {
165
192
  _elementRef = inject(ElementRef);
193
+ element = this._elementRef.nativeElement;
166
194
  combobox = inject(Combobox);
167
195
  value = model('', ...(ngDevMode ? [{
168
196
  debugName: "value"
@@ -170,8 +198,13 @@ class ComboboxInput {
170
198
  constructor() {
171
199
  this.combobox._pattern.inputs.inputEl.set(this._elementRef.nativeElement);
172
200
  this.combobox._pattern.inputs.inputValue = this.value;
201
+ const controls = this.combobox.popup()?.controls();
202
+ if (controls instanceof ComboboxDialogPattern) {
203
+ return;
204
+ }
173
205
  afterRenderEffect(() => {
174
- this.combobox.popup()?.controls()?.items();
206
+ this.value();
207
+ controls?.items();
175
208
  untracked(() => this.combobox._pattern.onFilter());
176
209
  });
177
210
  }
@@ -207,11 +240,13 @@ class ComboboxInput {
207
240
  },
208
241
  properties: {
209
242
  "value": "value()",
243
+ "attr.aria-disabled": "combobox._pattern.disabled()",
210
244
  "attr.aria-expanded": "combobox._pattern.expanded()",
211
- "attr.aria-activedescendant": "combobox._pattern.activedescendant()",
245
+ "attr.aria-activedescendant": "combobox._pattern.activeDescendant()",
212
246
  "attr.aria-controls": "combobox._pattern.popupId()",
213
247
  "attr.aria-haspopup": "combobox._pattern.hasPopup()",
214
- "attr.aria-autocomplete": "combobox._pattern.autocomplete()"
248
+ "attr.aria-autocomplete": "combobox._pattern.autocomplete()",
249
+ "attr.readonly": "combobox._pattern.readonly()"
215
250
  }
216
251
  },
217
252
  exportAs: ["ngComboboxInput"],
@@ -231,11 +266,13 @@ i0.ɵɵngDeclareClassMetadata({
231
266
  host: {
232
267
  'role': 'combobox',
233
268
  '[value]': 'value()',
269
+ '[attr.aria-disabled]': 'combobox._pattern.disabled()',
234
270
  '[attr.aria-expanded]': 'combobox._pattern.expanded()',
235
- '[attr.aria-activedescendant]': 'combobox._pattern.activedescendant()',
271
+ '[attr.aria-activedescendant]': 'combobox._pattern.activeDescendant()',
236
272
  '[attr.aria-controls]': 'combobox._pattern.popupId()',
237
273
  '[attr.aria-haspopup]': 'combobox._pattern.hasPopup()',
238
- '[attr.aria-autocomplete]': 'combobox._pattern.autocomplete()'
274
+ '[attr.aria-autocomplete]': 'combobox._pattern.autocomplete()',
275
+ '[attr.readonly]': 'combobox._pattern.readonly()'
239
276
  }
240
277
  }]
241
278
  }],
@@ -315,6 +352,82 @@ i0.ɵɵngDeclareClassMetadata({
315
352
  }]
316
353
  }]
317
354
  });
355
+ class ComboboxDialog {
356
+ _elementRef = inject(ElementRef);
357
+ element = this._elementRef.nativeElement;
358
+ combobox = inject(Combobox);
359
+ _popup = inject(ComboboxPopup, {
360
+ optional: true
361
+ });
362
+ _pattern;
363
+ constructor() {
364
+ this._pattern = new ComboboxDialogPattern({
365
+ id: () => '',
366
+ element: () => this._elementRef.nativeElement,
367
+ combobox: this.combobox._pattern
368
+ });
369
+ if (this._popup) {
370
+ this._popup.controls.set(this._pattern);
371
+ }
372
+ afterRenderEffect(() => {
373
+ if (this._elementRef) {
374
+ this.combobox._pattern.expanded() ? this._elementRef.nativeElement.showModal() : this._elementRef.nativeElement.close();
375
+ }
376
+ });
377
+ }
378
+ close() {
379
+ this._popup?.combobox?._pattern.close();
380
+ }
381
+ static ɵfac = i0.ɵɵngDeclareFactory({
382
+ minVersion: "12.0.0",
383
+ version: "20.2.0-next.2",
384
+ ngImport: i0,
385
+ type: ComboboxDialog,
386
+ deps: [],
387
+ target: i0.ɵɵFactoryTarget.Directive
388
+ });
389
+ static ɵdir = i0.ɵɵngDeclareDirective({
390
+ minVersion: "14.0.0",
391
+ version: "20.2.0-next.2",
392
+ type: ComboboxDialog,
393
+ isStandalone: true,
394
+ selector: "dialog[ngComboboxDialog]",
395
+ host: {
396
+ listeners: {
397
+ "keydown": "_pattern.onKeydown($event)",
398
+ "click": "_pattern.onClick($event)"
399
+ },
400
+ properties: {
401
+ "attr.data-open": "combobox._pattern.expanded()"
402
+ }
403
+ },
404
+ exportAs: ["ngComboboxDialog"],
405
+ hostDirectives: [{
406
+ directive: ComboboxPopup
407
+ }],
408
+ ngImport: i0
409
+ });
410
+ }
411
+ i0.ɵɵngDeclareClassMetadata({
412
+ minVersion: "12.0.0",
413
+ version: "20.2.0-next.2",
414
+ ngImport: i0,
415
+ type: ComboboxDialog,
416
+ decorators: [{
417
+ type: Directive,
418
+ args: [{
419
+ selector: 'dialog[ngComboboxDialog]',
420
+ exportAs: 'ngComboboxDialog',
421
+ host: {
422
+ '[attr.data-open]': 'combobox._pattern.expanded()',
423
+ '(keydown)': '_pattern.onKeydown($event)',
424
+ '(click)': '_pattern.onClick($event)'
425
+ },
426
+ hostDirectives: [ComboboxPopup]
427
+ }]
428
+ }],
429
+ ctorParameters: () => []
430
+ });
318
431
 
319
- export { Combobox, ComboboxInput, ComboboxPopup, ComboboxPopupContainer };
432
+ export { Combobox, ComboboxDialog, ComboboxInput, ComboboxPopup, ComboboxPopupContainer };
320
433
  //# sourceMappingURL=combobox.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/aria/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 {\n afterRenderEffect,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n WritableSignal,\n} from '@angular/core';\nimport {DeferredContent, DeferredContentAware} from '@angular/aria/deferred-content';\nimport {\n ComboboxPattern,\n ComboboxListboxControls,\n ComboboxTreeControls,\n} from '@angular/aria/private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {toSignal} from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n host: {\n '[attr.data-expanded]': 'expanded()',\n '(input)': '_pattern.onInput($event)',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerup)': '_pattern.onPointerup($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class Combobox<V> {\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n private readonly _directionality = inject(Directionality);\n\n /** A signal wrapper for directionality. */\n protected textDirection = toSignal(this._directionality.change, {\n initialValue: this._directionality.value,\n });\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware, {optional: true});\n\n /** The combobox popup. */\n readonly popup = contentChild<ComboboxPopup<V>>(ComboboxPopup);\n\n /** The filter mode for the combobox. */\n filterMode = input<'manual' | 'auto-select' | 'highlight'>('manual');\n\n /** Whether the combobox is focused. */\n readonly isFocused = signal(false);\n\n /** Whether the listbox has received focus yet. */\n private _hasBeenFocused = signal(false);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false);\n\n /** Whether the combobox is read-only. */\n readonly readonly = input(false);\n\n /** The value of the first matching item in the popup. */\n readonly firstMatch = input<V | undefined>(undefined);\n\n /** Whether the combobox is expanded. */\n readonly expanded = computed(() => this._pattern.expanded());\n\n /** Input element connected to the combobox, if any. */\n readonly inputElement = computed(() => this._pattern.inputs.inputEl());\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern<any, V>({\n ...this,\n textDirection: this.textDirection,\n disabled: this.disabled,\n readonly: this.readonly,\n inputValue: signal(''),\n inputEl: signal(undefined),\n containerEl: () => this._elementRef.nativeElement,\n popupControls: () => this.popup()?.controls(),\n });\n\n constructor() {\n afterRenderEffect(() => {\n if (!this._deferredContentAware?.contentVisible() && this._pattern.isFocused()) {\n this._deferredContentAware?.contentVisible.set(true);\n }\n });\n\n afterRenderEffect(() => {\n if (!this._hasBeenFocused() && this._pattern.isFocused()) {\n this._hasBeenFocused.set(true);\n }\n });\n }\n}\n\n@Directive({\n selector: 'input[ngComboboxInput]',\n exportAs: 'ngComboboxInput',\n host: {\n 'role': 'combobox',\n '[value]': 'value()',\n '[attr.aria-expanded]': 'combobox._pattern.expanded()',\n '[attr.aria-activedescendant]': 'combobox._pattern.activedescendant()',\n '[attr.aria-controls]': 'combobox._pattern.popupId()',\n '[attr.aria-haspopup]': 'combobox._pattern.hasPopup()',\n '[attr.aria-autocomplete]': 'combobox._pattern.autocomplete()',\n },\n})\nexport class ComboboxInput {\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n /** The combobox that the input belongs to. */\n readonly combobox = inject(Combobox);\n\n /** The value of the input. */\n value = model<string>('');\n\n constructor() {\n (this.combobox._pattern.inputs.inputEl as WritableSignal<HTMLInputElement>).set(\n this._elementRef.nativeElement,\n );\n this.combobox._pattern.inputs.inputValue = this.value;\n\n /** Focuses & selects the first item in the combobox if the user changes the input value. */\n afterRenderEffect(() => {\n this.combobox.popup()?.controls()?.items();\n untracked(() => this.combobox._pattern.onFilter());\n });\n }\n}\n\n@Directive({\n selector: 'ng-template[ngComboboxPopupContainer]',\n exportAs: 'ngComboboxPopupContainer',\n hostDirectives: [DeferredContent],\n})\nexport class ComboboxPopupContainer {}\n\n@Directive({\n selector: '[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n})\nexport class ComboboxPopup<V> {\n /** The combobox that the popup belongs to. */\n readonly combobox = inject<Combobox<V>>(Combobox, {optional: true});\n\n /** The controls the popup exposes to the combobox. */\n readonly controls = signal<\n ComboboxListboxControls<any, V> | ComboboxTreeControls<any, V> | undefined\n >(undefined);\n}\n"],"names":["Combobox","inject","toSignal","_directionality","change","_elementRef","ElementRef","_deferredContentAware","DeferredContentAware","optional","contentChild","ComboboxPopup","ngDevMode","debugName","filterMode","input","isFocused","signal","disabled","readonly","firstMatch","undefined","expanded","computed","_pattern","inputElement","inputs","inputEl","ComboboxPattern","inputValue","containerEl","nativeElement","popupControls","popup","controls","contentVisible","set","ɵfac","i0","ɵɵngDeclareFactory","minVersion","version","ngImport","type","deps","target","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","listeners","properties","queries","propertyName","first","predicate","descendants","exportAs","hostDirectives","directive","i1","decorators","args","constructor","combobox","value","ComboboxPopupContainer","DeferredContent"],"mappings":"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"}
1
+ {"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/aria/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 {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n WritableSignal,\n} from '@angular/core';\nimport {\n DeferredContent,\n DeferredContentAware,\n ComboboxPattern,\n ComboboxListboxControls,\n ComboboxTreeControls,\n ComboboxDialogPattern,\n} from '@angular/aria/private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {toSignal} from '@angular/core/rxjs-interop';\n\n/**\n * The container element that wraps a combobox input and popup, and orchestrates its behavior.\n *\n * The `ngCombobox` directive is the main entry point for creating a combobox and customizing its\n * behavior. It coordinates the interactions between the `ngComboboxInput` and the popup, which\n * is defined by a `ng-template` with the `ngComboboxPopupContainer` directive. If using the\n * `CdkOverlay`, the `cdkConnectedOverlay` directive takes the place of `ngComboboxPopupContainer`.\n *\n * ```html\n * <div ngCombobox filterMode=\"highlight\">\n * <input\n * ngComboboxInput\n * placeholder=\"Search for a state...\"\n * [(value)]=\"searchString\"\n * />\n *\n * <ng-template ngComboboxPopupContainer>\n * <div ngListbox [(value)]=\"selectedValue\">\n * @for (option of filteredOptions(); track option) {\n * <div ngOption [value]=\"option\" [label]=\"option\">\n * <span>{{option}}</span>\n * </div>\n * }\n * </div>\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n host: {\n '[attr.data-expanded]': 'expanded()',\n '(input)': '_pattern.onInput($event)',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n})\nexport class Combobox<V> {\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n private readonly _directionality = inject(Directionality);\n\n /** A signal wrapper for directionality. */\n protected textDirection = toSignal(this._directionality.change, {\n initialValue: this._directionality.value,\n });\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the combobox element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware, {optional: true});\n\n /** The combobox popup. */\n readonly popup = contentChild<ComboboxPopup<V>>(ComboboxPopup);\n\n /**\n * The filter mode for the combobox.\n * - `manual`: The consumer is responsible for filtering the options.\n * - `auto-select`: The combobox automatically selects the first matching option.\n * - `highlight`: The combobox highlights matching text in the options without changing selection.\n */\n filterMode = input<'manual' | 'auto-select' | 'highlight'>('manual');\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is read-only. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** The value of the first matching item in the popup. */\n readonly firstMatch = input<V | undefined>(undefined);\n\n /** Whether the combobox is expanded. */\n readonly expanded = computed(() => this.alwaysExpanded() || this._pattern.expanded());\n\n // TODO: Maybe make expanded a signal that can be passed in?\n // Or an \"always expanded\" option?\n\n /** Whether the combobox popup should always be expanded, regardless of user interaction. */\n readonly alwaysExpanded = input(false, {transform: booleanAttribute});\n\n /** Input element connected to the combobox, if any. */\n readonly inputElement = computed(() => this._pattern.inputs.inputEl());\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern<any, V>({\n ...this,\n textDirection: this.textDirection,\n disabled: this.disabled,\n readonly: this.readonly,\n inputValue: signal(''),\n inputEl: signal(undefined),\n containerEl: () => this._elementRef.nativeElement,\n popupControls: () => this.popup()?.controls(),\n });\n\n constructor() {\n afterRenderEffect(() => {\n if (this.alwaysExpanded()) {\n this._pattern.expanded.set(true);\n }\n });\n\n afterRenderEffect(() => {\n if (\n !this._deferredContentAware?.contentVisible() &&\n (this._pattern.isFocused() || this.alwaysExpanded())\n ) {\n this._deferredContentAware?.contentVisible.set(true);\n }\n });\n }\n\n /** Opens the combobox to the selected item. */\n open() {\n this._pattern.open({selected: true});\n }\n\n /** Closes the combobox. */\n close() {\n this._pattern.close();\n }\n\n /** Expands the combobox popup. */\n expand() {\n this._pattern.open();\n }\n\n /** Collapses the combobox popup. */\n collapse() {\n this._pattern.close();\n }\n}\n\n/**\n * An input that is part of a combobox. It is responsible for displaying the\n * current value and handling user input for filtering and selection.\n *\n * This directive should be applied to an `<input>` element within an `ngCombobox`\n * container. It automatically handles keyboard interactions, such as opening the\n * popup and navigating through the options.\n *\n * ```html\n * <input\n * ngComboboxInput\n * placeholder=\"Search...\"\n * [(value)]=\"searchString\"\n * />\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: 'input[ngComboboxInput]',\n exportAs: 'ngComboboxInput',\n host: {\n 'role': 'combobox',\n '[value]': 'value()',\n '[attr.aria-disabled]': 'combobox._pattern.disabled()',\n '[attr.aria-expanded]': 'combobox._pattern.expanded()',\n '[attr.aria-activedescendant]': 'combobox._pattern.activeDescendant()',\n '[attr.aria-controls]': 'combobox._pattern.popupId()',\n '[attr.aria-haspopup]': 'combobox._pattern.hasPopup()',\n '[attr.aria-autocomplete]': 'combobox._pattern.autocomplete()',\n '[attr.readonly]': 'combobox._pattern.readonly()',\n },\n})\nexport class ComboboxInput {\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n /** A reference to the input element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The combobox that the input belongs to. */\n readonly combobox = inject(Combobox);\n\n /** The value of the input. */\n value = model<string>('');\n\n constructor() {\n (this.combobox._pattern.inputs.inputEl as WritableSignal<HTMLInputElement>).set(\n this._elementRef.nativeElement,\n );\n this.combobox._pattern.inputs.inputValue = this.value;\n\n const controls = this.combobox.popup()?.controls();\n if (controls instanceof ComboboxDialogPattern) {\n return;\n }\n\n /** Focuses & selects the first item in the combobox if the user changes the input value. */\n afterRenderEffect(() => {\n this.value();\n controls?.items();\n untracked(() => this.combobox._pattern.onFilter());\n });\n }\n}\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 a `ngListbox`, `ngTree`, or `role=\"dialog\"`, allowing for\n * flexible and complex combobox implementations. The consumer is responsible for\n * implementing the filtering logic based on the `ngComboboxInput`'s value.\n *\n * ```html\n * <ng-template ngComboboxPopupContainer>\n * <div ngListbox [(value)]=\"selectedValue\">\n * <!-- ... options ... -->\n * </div>\n * </ng-template>\n * ```\n *\n * When using CdkOverlay, this directive can be replaced by `cdkConnectedOverlay`.\n *\n * ```html\n * <ng-template\n * [cdkConnectedOverlay]=\"{origin: inputElement, usePopover: 'inline' matchWidth: true}\"\n * [cdkConnectedOverlayOpen]=\"combobox.expanded()\">\n * <div ngListbox [(value)]=\"selectedValue\">\n * <!-- ... options ... -->\n * </div>\n * </ng-template>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: 'ng-template[ngComboboxPopupContainer]',\n exportAs: 'ngComboboxPopupContainer',\n hostDirectives: [DeferredContent],\n})\nexport class ComboboxPopupContainer {}\n\n/**\n * Identifies an element as a popup for an `ngCombobox`.\n *\n * This directive acts as a bridge, allowing the `ngCombobox` to discover and interact\n * with the underlying control (e.g., `ngListbox`, `ngTree`, or `ngComboboxDialog`) that\n * manages the options. It's primarily used as a host directive and is responsible for\n * exposing the popup's control pattern to the parent combobox.\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n})\nexport class ComboboxPopup<V> {\n /** The combobox that the popup belongs to. */\n readonly combobox = inject<Combobox<V>>(Combobox, {optional: true});\n\n /** The popup controls exposed to the combobox. */\n readonly controls = signal<\n | ComboboxListboxControls<any, V>\n | ComboboxTreeControls<any, V>\n | ComboboxDialogPattern\n | undefined\n >(undefined);\n}\n\n/**\n * Integrates a native `<dialog>` element with the combobox, allowing for\n * a modal or non-modal popup experience. It handles the opening and closing of the dialog\n * based on the combobox's expanded state.\n *\n * ```html\n * <ng-template ngComboboxPopupContainer>\n * <dialog ngComboboxDialog class=\"example-dialog\">\n * <!-- ... dialog content ... -->\n * </dialog>\n * </ng-template>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: 'dialog[ngComboboxDialog]',\n exportAs: 'ngComboboxDialog',\n host: {\n '[attr.data-open]': 'combobox._pattern.expanded()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n },\n hostDirectives: [ComboboxPopup],\n})\nexport class ComboboxDialog {\n /** The dialog element. */\n private readonly _elementRef = inject(ElementRef<HTMLDialogElement>);\n\n /** A reference to the dialog element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The combobox that the dialog belongs to. */\n readonly combobox = inject(Combobox);\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<unknown>>(ComboboxPopup, {\n optional: true,\n });\n\n _pattern: ComboboxDialogPattern;\n\n constructor() {\n this._pattern = new ComboboxDialogPattern({\n id: () => '',\n element: () => this._elementRef.nativeElement,\n combobox: this.combobox._pattern,\n });\n\n if (this._popup) {\n this._popup.controls.set(this._pattern);\n }\n\n afterRenderEffect(() => {\n if (this._elementRef) {\n this.combobox._pattern.expanded()\n ? this._elementRef.nativeElement.showModal()\n : this._elementRef.nativeElement.close();\n }\n });\n }\n\n close() {\n this._popup?.combobox?._pattern.close();\n }\n}\n"],"names":["Combobox","_directionality","inject","Directionality","textDirection","toSignal","change","initialValue","value","_elementRef","ElementRef","element","nativeElement","_deferredContentAware","DeferredContentAware","optional","popup","contentChild","ComboboxPopup","filterMode","input","disabled","transform","booleanAttribute","readonly","firstMatch","undefined","expanded","computed","alwaysExpanded","_pattern","inputElement","inputs","inputEl","ComboboxPattern","inputValue","signal","containerEl","popupControls","controls","constructor","afterRenderEffect","set","contentVisible","isFocused","open","selected","close","expand","collapse","deps","target","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","descendants","isSignal","exportAs","hostDirectives","directive","i1","ngImport","decorators","args","selector","host","ComboboxInput","combobox","model","ComboboxDialogPattern","items","untracked","onFilter","isStandalone","classPropertyName","publicName","isRequired","transformFunction","outputs","attributes","properties","ComboboxPopupContainer","DeferredContent","ComboboxDialog","_popup","id","showModal"],"mappings":"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"}