@cdevhub/ngx-tw 0.2.0 → 0.3.0

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 (144) hide show
  1. package/README.md +264 -49
  2. package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
  3. package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
  4. package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
  5. package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
  6. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
  7. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
  8. package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
  9. package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
  10. package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
  11. package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
  12. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
  13. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
  14. package/fesm2022/cdevhub-ngx-tw-button.mjs +35 -22
  15. package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
  16. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
  17. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
  18. package/fesm2022/cdevhub-ngx-tw-calendar.mjs +416 -216
  19. package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
  20. package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
  21. package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
  22. package/fesm2022/cdevhub-ngx-tw-carousel.mjs +152 -81
  23. package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
  24. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
  25. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
  26. package/fesm2022/cdevhub-ngx-tw-code-block.mjs +42 -29
  27. package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
  28. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
  29. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
  30. package/fesm2022/cdevhub-ngx-tw-combobox.mjs +205 -110
  31. package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
  32. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +141 -74
  33. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
  34. package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
  35. package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
  36. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +395 -149
  37. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
  38. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
  39. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
  40. package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
  41. package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
  42. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
  43. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
  44. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
  45. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
  46. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
  47. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
  48. package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
  49. package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
  50. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
  51. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
  52. package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
  53. package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
  54. package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
  55. package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
  56. package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
  57. package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
  58. package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
  59. package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
  60. package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
  61. package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
  62. package/fesm2022/cdevhub-ngx-tw-paginator.mjs +142 -72
  63. package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
  64. package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
  65. package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
  66. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
  67. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
  68. package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
  69. package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
  70. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
  71. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
  72. package/fesm2022/cdevhub-ngx-tw-select.mjs +227 -122
  73. package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
  74. package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
  75. package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
  76. package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
  77. package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
  78. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
  79. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
  80. package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
  81. package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
  82. package/fesm2022/cdevhub-ngx-tw-sort.mjs +47 -25
  83. package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
  84. package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
  85. package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
  86. package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
  87. package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
  88. package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
  89. package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
  90. package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
  91. package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
  92. package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
  93. package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
  94. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
  95. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
  96. package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
  97. package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
  98. package/fesm2022/cdevhub-ngx-tw-tabs.mjs +102 -52
  99. package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
  100. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
  101. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
  102. package/fesm2022/cdevhub-ngx-tw-textarea.mjs +16 -8
  103. package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
  104. package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
  105. package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
  106. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
  107. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
  108. package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
  109. package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
  110. package/fesm2022/cdevhub-ngx-tw-toast.mjs +100 -55
  111. package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
  112. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
  113. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
  114. package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
  115. package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
  116. package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
  117. package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
  118. package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
  119. package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
  120. package/package.json +45 -17
  121. package/theme/_dark.css +16 -12
  122. package/theme/_semantic.css +3 -2
  123. package/theme/index.css +10 -2
  124. package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
  125. package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
  126. package/types/cdevhub-ngx-tw-code-block.d.ts +8 -7
  127. package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
  128. package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
  129. package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
  130. package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
  131. package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
  132. package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
  133. package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
  134. package/types/cdevhub-ngx-tw-select.d.ts +1 -1
  135. package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
  136. package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
  137. package/types/cdevhub-ngx-tw-table.d.ts +30 -1
  138. package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
  139. package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
  140. package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
  141. package/types/cdevhub-ngx-tw-toast.d.ts +1 -1
  142. package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
  143. package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
  144. package/types/cdevhub-ngx-tw.d.ts +7 -0
@@ -9,7 +9,7 @@ import { ComponentPortal } from '@angular/cdk/portal';
9
9
  import { Platform } from '@angular/cdk/platform';
10
10
  import { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';
11
11
  import { tv } from 'tailwind-variants';
12
- import { FormFieldComponent, TW_FORM_FIELD_CONTROL } from '@cdevhub/ngx-tw/form-field';
12
+ import { TW_FORM_FIELD, TW_FORM_FIELD_CONTROL } from '@cdevhub/ngx-tw/form-field';
13
13
  import { NgTemplateOutlet } from '@angular/common';
14
14
 
15
15
  /**
@@ -23,47 +23,65 @@ class ComboboxOverlayComponent {
23
23
  hostElement = inject((ElementRef));
24
24
  // ── Config signals pushed by the parent ──
25
25
  /** @internal */
26
- listboxId = signal('', ...(ngDevMode ? [{ debugName: "listboxId" }] : /* istanbul ignore next */ []));
26
+ listboxId = signal('', /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "listboxId" }] : /* istanbul ignore next */ []));
27
28
  /** @internal */
28
- labelledBy = signal('', ...(ngDevMode ? [{ debugName: "labelledBy" }] : /* istanbul ignore next */ []));
29
+ labelledBy = signal('', /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "labelledBy" }] : /* istanbul ignore next */ []));
29
31
  /** @internal */
30
- panelMaxHeight = signal(256, ...(ngDevMode ? [{ debugName: "panelMaxHeight" }] : /* istanbul ignore next */ []));
32
+ panelMaxHeight = signal(256, /* @ts-ignore */
33
+ ...(ngDevMode ? [{ debugName: "panelMaxHeight" }] : /* istanbul ignore next */ []));
31
34
  /** @internal */
32
- emptyMessage = signal('No results', ...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
35
+ emptyMessage = signal('No results', /* @ts-ignore */
36
+ ...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
33
37
  /** @internal */
34
- query = signal('', ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
38
+ query = signal('', /* @ts-ignore */
39
+ ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
35
40
  /** @internal */
36
- loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
41
+ loading = signal(false, /* @ts-ignore */
42
+ ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
37
43
  /** @internal */
38
- activeIndex = signal(-1, ...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
44
+ activeIndex = signal(-1, /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
39
46
  /** @internal */
40
- renderedRows = signal([], ...(ngDevMode ? [{ debugName: "renderedRows" }] : /* istanbul ignore next */ []));
47
+ renderedRows = signal([], /* @ts-ignore */
48
+ ...(ngDevMode ? [{ debugName: "renderedRows" }] : /* istanbul ignore next */ []));
41
49
  /** @internal */
42
- isSelected = signal(() => false, ...(ngDevMode ? [{ debugName: "isSelected" }] : /* istanbul ignore next */ []));
50
+ isSelected = signal(() => false, /* @ts-ignore */
51
+ ...(ngDevMode ? [{ debugName: "isSelected" }] : /* istanbul ignore next */ []));
43
52
  /** @internal */
44
- optionIdFn = signal((i) => `option-${i}`, ...(ngDevMode ? [{ debugName: "optionIdFn" }] : /* istanbul ignore next */ []));
53
+ optionIdFn = signal((i) => `option-${i}`, /* @ts-ignore */
54
+ ...(ngDevMode ? [{ debugName: "optionIdFn" }] : /* istanbul ignore next */ []));
45
55
  /** @internal */
46
- groupHeaderIdFn = signal((g) => `group-${g}`, ...(ngDevMode ? [{ debugName: "groupHeaderIdFn" }] : /* istanbul ignore next */ []));
56
+ groupHeaderIdFn = signal((g) => `group-${g}`, /* @ts-ignore */
57
+ ...(ngDevMode ? [{ debugName: "groupHeaderIdFn" }] : /* istanbul ignore next */ []));
47
58
  /** @internal */
48
- customPanelClass = signal('', ...(ngDevMode ? [{ debugName: "customPanelClass" }] : /* istanbul ignore next */ []));
59
+ customPanelClass = signal('', /* @ts-ignore */
60
+ ...(ngDevMode ? [{ debugName: "customPanelClass" }] : /* istanbul ignore next */ []));
49
61
  /** @internal */
50
- optionTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "optionTemplate" }] : /* istanbul ignore next */ []));
62
+ optionTemplate = signal(undefined, /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "optionTemplate" }] : /* istanbul ignore next */ []));
51
64
  /** @internal */
52
- emptyTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "emptyTemplate" }] : /* istanbul ignore next */ []));
65
+ emptyTemplate = signal(undefined, /* @ts-ignore */
66
+ ...(ngDevMode ? [{ debugName: "emptyTemplate" }] : /* istanbul ignore next */ []));
53
67
  /** @internal */
54
- loadingTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "loadingTemplate" }] : /* istanbul ignore next */ []));
68
+ loadingTemplate = signal(undefined, /* @ts-ignore */
69
+ ...(ngDevMode ? [{ debugName: "loadingTemplate" }] : /* istanbul ignore next */ []));
55
70
  // ── Callbacks pushed by the parent ──
56
71
  /** @internal */
57
- onOptionPick = signal(() => { }, ...(ngDevMode ? [{ debugName: "onOptionPick" }] : /* istanbul ignore next */ []));
72
+ onOptionPick = signal(() => { }, /* @ts-ignore */
73
+ ...(ngDevMode ? [{ debugName: "onOptionPick" }] : /* istanbul ignore next */ []));
58
74
  /** @internal */
59
- onOptionHover = signal(() => { }, ...(ngDevMode ? [{ debugName: "onOptionHover" }] : /* istanbul ignore next */ []));
75
+ onOptionHover = signal(() => { }, /* @ts-ignore */
76
+ ...(ngDevMode ? [{ debugName: "onOptionHover" }] : /* istanbul ignore next */ []));
60
77
  // ── Computed classes ──
61
78
  /** @internal */
62
79
  panelClasses = computed(() => {
63
80
  const base = 'block w-full bg-surface-overlay border border-border rounded-md shadow-md overflow-hidden';
64
81
  const custom = this.customPanelClass();
65
82
  return custom ? `${base} ${custom}` : base;
66
- }, ...(ngDevMode ? [{ debugName: "panelClasses" }] : /* istanbul ignore next */ []));
83
+ }, /* @ts-ignore */
84
+ ...(ngDevMode ? [{ debugName: "panelClasses" }] : /* istanbul ignore next */ []));
67
85
  /** @internal */
68
86
  optionClass(index, disabled) {
69
87
  const base = 'flex cursor-pointer items-center gap-2 px-3 py-2 text-sm text-fg select-none transition-colors duration-normal motion-reduce:transition-none';
@@ -119,8 +137,8 @@ class ComboboxOverlayComponent {
119
137
  return;
120
138
  this.onOptionHover()(index);
121
139
  }
122
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
123
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: ComboboxOverlayComponent, isStandalone: true, selector: "tw-combobox-overlay", host: { properties: { "class": "panelClasses()", "animate.enter": "\"scale-in\"", "animate.leave": "\"scale-out\"" } }, ngImport: i0, template: `
140
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
141
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: ComboboxOverlayComponent, isStandalone: true, selector: "tw-combobox-overlay", host: { properties: { "class": "panelClasses()", "animate.enter": "\"scale-in\"", "animate.leave": "\"scale-out\"" } }, ngImport: i0, template: `
124
142
  @if (loading()) {
125
143
  @if (loadingTemplate(); as tpl) {
126
144
  <ng-container *ngTemplateOutlet="tpl" />
@@ -177,6 +195,11 @@ class ComboboxOverlayComponent {
177
195
  </div>
178
196
  </li>
179
197
  } @else {
198
+ <!-- ARIA activedescendant listbox: keyboard navigation lives on the
199
+ parent combobox input (via aria-activedescendant). Options are
200
+ click-targets only and never receive DOM focus, so neither a
201
+ keydown nor a tabindex applies here. -->
202
+ <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->
180
203
  <li
181
204
  role="option"
182
205
  [id]="optionIdFn()(row.index)"
@@ -209,7 +232,7 @@ class ComboboxOverlayComponent {
209
232
  </ul>
210
233
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
211
234
  }
212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxOverlayComponent, decorators: [{
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxOverlayComponent, decorators: [{
213
236
  type: Component,
214
237
  args: [{
215
238
  selector: 'tw-combobox-overlay',
@@ -277,6 +300,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
277
300
  </div>
278
301
  </li>
279
302
  } @else {
303
+ <!-- ARIA activedescendant listbox: keyboard navigation lives on the
304
+ parent combobox input (via aria-activedescendant). Options are
305
+ click-targets only and never receive DOM focus, so neither a
306
+ keydown nor a tabindex applies here. -->
307
+ <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->
280
308
  <li
281
309
  role="option"
282
310
  [id]="optionIdFn()(row.index)"
@@ -417,10 +445,10 @@ class ComboboxOptionTemplateDirective {
417
445
  static ngTemplateContextGuard(_dir, _ctx) {
418
446
  return true;
419
447
  }
420
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxOptionTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
421
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: ComboboxOptionTemplateDirective, isStandalone: true, selector: "[twComboboxOption]", ngImport: i0 });
448
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxOptionTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
449
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ComboboxOptionTemplateDirective, isStandalone: true, selector: "[twComboboxOption]", ngImport: i0 });
422
450
  }
423
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxOptionTemplateDirective, decorators: [{
451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxOptionTemplateDirective, decorators: [{
424
452
  type: Directive,
425
453
  args: [{ selector: '[twComboboxOption]' }]
426
454
  }] });
@@ -432,10 +460,10 @@ class ComboboxEmptyTemplateDirective {
432
460
  static ngTemplateContextGuard(_dir, _ctx) {
433
461
  return true;
434
462
  }
435
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxEmptyTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
436
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: ComboboxEmptyTemplateDirective, isStandalone: true, selector: "[twComboboxEmpty]", ngImport: i0 });
463
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxEmptyTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
464
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ComboboxEmptyTemplateDirective, isStandalone: true, selector: "[twComboboxEmpty]", ngImport: i0 });
437
465
  }
438
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxEmptyTemplateDirective, decorators: [{
466
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxEmptyTemplateDirective, decorators: [{
439
467
  type: Directive,
440
468
  args: [{ selector: '[twComboboxEmpty]' }]
441
469
  }] });
@@ -443,19 +471,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
443
471
  class ComboboxLoadingTemplateDirective {
444
472
  /** @internal */
445
473
  templateRef = inject((TemplateRef));
446
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxLoadingTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
447
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: ComboboxLoadingTemplateDirective, isStandalone: true, selector: "[twComboboxLoading]", ngImport: i0 });
474
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxLoadingTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
475
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ComboboxLoadingTemplateDirective, isStandalone: true, selector: "[twComboboxLoading]", ngImport: i0 });
448
476
  }
449
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxLoadingTemplateDirective, decorators: [{
477
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxLoadingTemplateDirective, decorators: [{
450
478
  type: Directive,
451
479
  args: [{ selector: '[twComboboxLoading]' }]
452
480
  }] });
453
481
  /** Attribute directive marking a leading adornment projected inside the input row. */
454
482
  class ComboboxPrefixDirective {
455
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxPrefixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
456
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: ComboboxPrefixDirective, isStandalone: true, selector: "[twComboboxPrefix]", host: { classAttribute: "flex items-center shrink-0 text-fg-muted" }, ngImport: i0 });
483
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxPrefixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
484
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ComboboxPrefixDirective, isStandalone: true, selector: "[twComboboxPrefix]", host: { classAttribute: "flex items-center shrink-0 text-fg-muted" }, ngImport: i0 });
457
485
  }
458
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxPrefixDirective, decorators: [{
486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxPrefixDirective, decorators: [{
459
487
  type: Directive,
460
488
  args: [{
461
489
  selector: '[twComboboxPrefix]',
@@ -464,10 +492,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
464
492
  }] });
465
493
  /** Attribute directive marking a trailing adornment projected inside the input row, before the clear button. */
466
494
  class ComboboxSuffixDirective {
467
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxSuffixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
468
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: ComboboxSuffixDirective, isStandalone: true, selector: "[twComboboxSuffix]", host: { classAttribute: "flex items-center shrink-0 text-fg-muted" }, ngImport: i0 });
495
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxSuffixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
496
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ComboboxSuffixDirective, isStandalone: true, selector: "[twComboboxSuffix]", host: { classAttribute: "flex items-center shrink-0 text-fg-muted" }, ngImport: i0 });
469
497
  }
470
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxSuffixDirective, decorators: [{
498
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxSuffixDirective, decorators: [{
471
499
  type: Directive,
472
500
  args: [{
473
501
  selector: '[twComboboxSuffix]',
@@ -486,63 +514,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
486
514
  class ComboboxComponent {
487
515
  // ── Inputs ──
488
516
  /** Array of options to render in the popover. Accepts plain records or `TwComboboxOption<T>`. */
489
- options = input([], ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
517
+ options = input([], /* @ts-ignore */
518
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
490
519
  /** Accessor returning the visible label for an option. Used by the default filter and the trigger label resolver. */
491
- optionLabel = input(defaultOptionLabel, ...(ngDevMode ? [{ debugName: "optionLabel" }] : /* istanbul ignore next */ []));
520
+ optionLabel = input(defaultOptionLabel, /* @ts-ignore */
521
+ ...(ngDevMode ? [{ debugName: "optionLabel" }] : /* istanbul ignore next */ []));
492
522
  /** Accessor returning the value emitted via `valueCommit` when this option is picked. */
493
- optionValue = input(defaultOptionValue, ...(ngDevMode ? [{ debugName: "optionValue" }] : /* istanbul ignore next */ []));
523
+ optionValue = input(defaultOptionValue, /* @ts-ignore */
524
+ ...(ngDevMode ? [{ debugName: "optionValue" }] : /* istanbul ignore next */ []));
494
525
  /** Accessor returning whether an option is non-interactive. */
495
- optionDisabled = input(defaultOptionDisabled, ...(ngDevMode ? [{ debugName: "optionDisabled" }] : /* istanbul ignore next */ []));
526
+ optionDisabled = input(defaultOptionDisabled, /* @ts-ignore */
527
+ ...(ngDevMode ? [{ debugName: "optionDisabled" }] : /* istanbul ignore next */ []));
496
528
  /** Accessor returning a group label. Options sharing a group render under a labelled `role="group"` region. */
497
- optionGroup = input(defaultOptionGroup, ...(ngDevMode ? [{ debugName: "optionGroup" }] : /* istanbul ignore next */ []));
529
+ optionGroup = input(defaultOptionGroup, /* @ts-ignore */
530
+ ...(ngDevMode ? [{ debugName: "optionGroup" }] : /* istanbul ignore next */ []));
498
531
  /** Accessor returning an optional secondary description rendered under the label in the default option row. */
499
- optionDescription = input(defaultOptionDescription, ...(ngDevMode ? [{ debugName: "optionDescription" }] : /* istanbul ignore next */ []));
532
+ optionDescription = input(defaultOptionDescription, /* @ts-ignore */
533
+ ...(ngDevMode ? [{ debugName: "optionDescription" }] : /* istanbul ignore next */ []));
500
534
  /** Filter function applied client-side whenever `inputValue` changes. Pass `null` to disable client filtering (async mode). Defaults to case-insensitive `startsWith` on the label. */
501
- filterFn = input(defaultStartsWithFilter, ...(ngDevMode ? [{ debugName: "filterFn" }] : /* istanbul ignore next */ []));
535
+ filterFn = input(defaultStartsWithFilter, /* @ts-ignore */
536
+ ...(ngDevMode ? [{ debugName: "filterFn" }] : /* istanbul ignore next */ []));
502
537
  /** When `true`, free-text commits are rejected — the input reverts to the last committed label on blur. */
503
- strict = input(false, ...(ngDevMode ? [{ debugName: "strict" }] : /* istanbul ignore next */ []));
538
+ strict = input(false, /* @ts-ignore */
539
+ ...(ngDevMode ? [{ debugName: "strict" }] : /* istanbul ignore next */ []));
504
540
  /** Placeholder shown when the input is empty. */
505
- placeholder = input(undefined, ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
541
+ placeholder = input(undefined, /* @ts-ignore */
542
+ ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
506
543
  /** Disables the input and prevents the popover from opening. */
507
544
  disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled' });
508
545
  /** Sets `aria-required="true"` on the input. */
509
546
  requiredInput = input(false, { ...(ngDevMode ? { debugName: "requiredInput" } : /* istanbul ignore next */ {}), alias: 'required' });
510
547
  /** Controls trigger padding and font size per the inline padding scale. */
511
- size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
548
+ size = input('md', /* @ts-ignore */
549
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
512
550
  /** Semantic color for the focus ring. */
513
- color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
551
+ color = input('primary', /* @ts-ignore */
552
+ ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
514
553
  /** Whether the trailing chevron affordance is rendered. */
515
554
  // TRUE-default: the chevron signals the dropdown affordance; without it the
516
555
  // combobox reads as a plain input. Opt-out is for inline search inputs.
517
- showChevron = input(true, ...(ngDevMode ? [{ debugName: "showChevron" }] : /* istanbul ignore next */ []));
556
+ showChevron = input(true, /* @ts-ignore */
557
+ ...(ngDevMode ? [{ debugName: "showChevron" }] : /* istanbul ignore next */ []));
518
558
  /** Whether the inline clear (×) button appears while `inputValue` is non-empty. */
519
559
  // TRUE-default: the clear affordance is the expected combobox UX once a value
520
560
  // is set; opt-out is for required-only flows.
521
- clearable = input(true, ...(ngDevMode ? [{ debugName: "clearable" }] : /* istanbul ignore next */ []));
561
+ clearable = input(true, /* @ts-ignore */
562
+ ...(ngDevMode ? [{ debugName: "clearable" }] : /* istanbul ignore next */ []));
522
563
  /** When `true`, shows an in-popover spinner and an inline spinner in the trigger while the popover is open. */
523
- loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
564
+ loading = input(false, /* @ts-ignore */
565
+ ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
524
566
  /** Debounce window (ms) before `queryChange` emits. Local filtering is not debounced. */
525
- queryDebounce = input(150, ...(ngDevMode ? [{ debugName: "queryDebounce" }] : /* istanbul ignore next */ []));
567
+ queryDebounce = input(150, /* @ts-ignore */
568
+ ...(ngDevMode ? [{ debugName: "queryDebounce" }] : /* istanbul ignore next */ []));
526
569
  /** Minimum query length before the popover opens automatically. `0` opens on focus. */
527
- minQueryLength = input(0, ...(ngDevMode ? [{ debugName: "minQueryLength" }] : /* istanbul ignore next */ []));
570
+ minQueryLength = input(0, /* @ts-ignore */
571
+ ...(ngDevMode ? [{ debugName: "minQueryLength" }] : /* istanbul ignore next */ []));
528
572
  /** Whether the popover opens automatically when the input receives focus. */
529
573
  // TRUE-default: clicking into a combobox opens the dropdown — standard select-
530
574
  // like UX. Opt-out is for command-palette-style flows triggered only by typing.
531
- openOnFocus = input(true, ...(ngDevMode ? [{ debugName: "openOnFocus" }] : /* istanbul ignore next */ []));
575
+ openOnFocus = input(true, /* @ts-ignore */
576
+ ...(ngDevMode ? [{ debugName: "openOnFocus" }] : /* istanbul ignore next */ []));
532
577
  /** Maximum height (px) of the popover scroll region. */
533
- panelMaxHeight = input(256, ...(ngDevMode ? [{ debugName: "panelMaxHeight" }] : /* istanbul ignore next */ []));
578
+ panelMaxHeight = input(256, /* @ts-ignore */
579
+ ...(ngDevMode ? [{ debugName: "panelMaxHeight" }] : /* istanbul ignore next */ []));
534
580
  /** Overlay width strategy. `'trigger'` matches input width; `'auto'` lets content decide; a number is applied as px; a string is passed as a CSS length. */
535
- panelWidth = input('trigger', ...(ngDevMode ? [{ debugName: "panelWidth" }] : /* istanbul ignore next */ []));
581
+ panelWidth = input('trigger', /* @ts-ignore */
582
+ ...(ngDevMode ? [{ debugName: "panelWidth" }] : /* istanbul ignore next */ []));
536
583
  /** Extra class(es) appended to the overlay panel for consumer customization. */
537
- panelClass = input('', ...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
584
+ panelClass = input('', /* @ts-ignore */
585
+ ...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
538
586
  /** CDK overlay scroll strategy. */
539
- scrollStrategy = input('reposition', ...(ngDevMode ? [{ debugName: "scrollStrategy" }] : /* istanbul ignore next */ []));
587
+ scrollStrategy = input('reposition', /* @ts-ignore */
588
+ ...(ngDevMode ? [{ debugName: "scrollStrategy" }] : /* istanbul ignore next */ []));
540
589
  /** Pixel offset between the input and the popover. */
541
- offset = input(4, ...(ngDevMode ? [{ debugName: "offset" }] : /* istanbul ignore next */ []));
590
+ offset = input(4, /* @ts-ignore */
591
+ ...(ngDevMode ? [{ debugName: "offset" }] : /* istanbul ignore next */ []));
542
592
  /** Fallback empty-state message when no `*twComboboxEmpty` template is projected. */
543
- emptyMessage = input('No results', ...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
593
+ emptyMessage = input('No results', /* @ts-ignore */
594
+ ...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
544
595
  /** Equality comparator used to reconcile `value` with options during `writeValue`. */
545
- compareWith = input(Object.is, ...(ngDevMode ? [{ debugName: "compareWith" }] : /* istanbul ignore next */ []));
596
+ compareWith = input(Object.is, /* @ts-ignore */
597
+ ...(ngDevMode ? [{ debugName: "compareWith" }] : /* istanbul ignore next */ []));
546
598
  /** Accessible name for the combobox input. */
547
599
  ariaLabel = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
548
600
  /** ID of an external label element. */
@@ -550,14 +602,18 @@ class ComboboxComponent {
550
602
  /** ID of an external descriptor element. */
551
603
  ariaDescribedby = input(undefined, { ...(ngDevMode ? { debugName: "ariaDescribedby" } : /* istanbul ignore next */ {}), alias: 'aria-describedby' });
552
604
  /** Per-instance override of the {@link ErrorStateMatcher}. When omitted, the combobox uses the `TW_ERROR_STATE_MATCHER` token's value. */
553
- errorStateMatcher = input(undefined, ...(ngDevMode ? [{ debugName: "errorStateMatcher" }] : /* istanbul ignore next */ []));
605
+ errorStateMatcher = input(undefined, /* @ts-ignore */
606
+ ...(ngDevMode ? [{ debugName: "errorStateMatcher" }] : /* istanbul ignore next */ []));
554
607
  // ── Models ──
555
608
  /** Two-way bound committed value. May be an option's value (`T`), a typed string (free-text mode), or `null`. */
556
- value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
609
+ value = model(null, /* @ts-ignore */
610
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
557
611
  /** Two-way bound visible text in the input. Bound separately from `value` so async consumers can drive the query. */
558
- inputValue = model('', ...(ngDevMode ? [{ debugName: "inputValue" }] : /* istanbul ignore next */ []));
612
+ inputValue = model('', /* @ts-ignore */
613
+ ...(ngDevMode ? [{ debugName: "inputValue" }] : /* istanbul ignore next */ []));
559
614
  /** Two-way bound open state of the popover. */
560
- open = model(false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
615
+ open = model(false, /* @ts-ignore */
616
+ ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
561
617
  // ── Outputs ──
562
618
  /** Fires after the query text changes, debounced by `queryDebounce`. Async-mode consumers subscribe to this to fetch results. */
563
619
  queryChange = output();
@@ -569,14 +625,19 @@ class ComboboxComponent {
569
625
  openedChange = output();
570
626
  // ── Content queries ──
571
627
  /** @internal */
572
- optionTemplateChild = contentChild(ComboboxOptionTemplateDirective, ...(ngDevMode ? [{ debugName: "optionTemplateChild" }] : /* istanbul ignore next */ []));
628
+ optionTemplateChild = contentChild(ComboboxOptionTemplateDirective, /* @ts-ignore */
629
+ ...(ngDevMode ? [{ debugName: "optionTemplateChild" }] : /* istanbul ignore next */ []));
573
630
  /** @internal */
574
- emptyTemplateChild = contentChild(ComboboxEmptyTemplateDirective, ...(ngDevMode ? [{ debugName: "emptyTemplateChild" }] : /* istanbul ignore next */ []));
631
+ emptyTemplateChild = contentChild(ComboboxEmptyTemplateDirective, /* @ts-ignore */
632
+ ...(ngDevMode ? [{ debugName: "emptyTemplateChild" }] : /* istanbul ignore next */ []));
575
633
  /** @internal */
576
- loadingTemplateChild = contentChild(ComboboxLoadingTemplateDirective, ...(ngDevMode ? [{ debugName: "loadingTemplateChild" }] : /* istanbul ignore next */ []));
634
+ loadingTemplateChild = contentChild(ComboboxLoadingTemplateDirective, /* @ts-ignore */
635
+ ...(ngDevMode ? [{ debugName: "loadingTemplateChild" }] : /* istanbul ignore next */ []));
577
636
  // ── View queries ──
578
- inputRef = viewChild('inputEl', ...(ngDevMode ? [{ debugName: "inputRef" }] : /* istanbul ignore next */ []));
579
- triggerSurfaceRef = viewChild('triggerSurface', ...(ngDevMode ? [{ debugName: "triggerSurfaceRef" }] : /* istanbul ignore next */ []));
637
+ inputRef = viewChild('inputEl', /* @ts-ignore */
638
+ ...(ngDevMode ? [{ debugName: "inputRef" }] : /* istanbul ignore next */ []));
639
+ triggerSurfaceRef = viewChild('triggerSurface', /* @ts-ignore */
640
+ ...(ngDevMode ? [{ debugName: "triggerSurfaceRef" }] : /* istanbul ignore next */ []));
580
641
  // ── Injected deps ──
581
642
  overlayService = inject(Overlay);
582
643
  elementRef = inject((ElementRef));
@@ -586,7 +647,7 @@ class ComboboxComponent {
586
647
  focusMonitor = inject(FocusMonitor);
587
648
  liveAnnouncer = inject(LiveAnnouncer);
588
649
  platform = inject(Platform);
589
- formField = inject(FormFieldComponent, { optional: true });
650
+ formField = inject(TW_FORM_FIELD, { optional: true });
590
651
  ngControl = inject(NgControl, { optional: true, self: true });
591
652
  parentForm = inject(NgForm, { optional: true });
592
653
  parentFormGroup = inject(FormGroupDirective, { optional: true });
@@ -603,24 +664,35 @@ class ComboboxComponent {
603
664
  groupHeaderId = (group) => `${this.hostId}-group-${group.replace(/\s+/g, '-').toLowerCase()}`;
604
665
  // ── Internal state signals ──
605
666
  /** @internal */
606
- composing = signal(false, ...(ngDevMode ? [{ debugName: "composing" }] : /* istanbul ignore next */ []));
607
- /** @internal */
608
- focusedSignal = signal(false, ...(ngDevMode ? [{ debugName: "focusedSignal" }] : /* istanbul ignore next */ []));
609
- cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
610
- _ngControlRev = signal(0, ...(ngDevMode ? [{ debugName: "_ngControlRev" }] : /* istanbul ignore next */ []));
611
- _formSubmitRev = signal(0, ...(ngDevMode ? [{ debugName: "_formSubmitRev" }] : /* istanbul ignore next */ []));
612
- describedByIdsSignal = signal([], ...(ngDevMode ? [{ debugName: "describedByIdsSignal" }] : /* istanbul ignore next */ []));
613
- labelledByIdsSignal = signal([], ...(ngDevMode ? [{ debugName: "labelledByIdsSignal" }] : /* istanbul ignore next */ []));
614
- /** @internal */
615
- lastCommittedLabel = signal('', ...(ngDevMode ? [{ debugName: "lastCommittedLabel" }] : /* istanbul ignore next */ []));
616
- pendingWriteValue = signal(UNRESOLVED, ...(ngDevMode ? [{ debugName: "pendingWriteValue" }] : /* istanbul ignore next */ []));
617
- closingSignal = signal(false, ...(ngDevMode ? [{ debugName: "closingSignal" }] : /* istanbul ignore next */ []));
667
+ composing = signal(false, /* @ts-ignore */
668
+ ...(ngDevMode ? [{ debugName: "composing" }] : /* istanbul ignore next */ []));
669
+ /** @internal */
670
+ focusedSignal = signal(false, /* @ts-ignore */
671
+ ...(ngDevMode ? [{ debugName: "focusedSignal" }] : /* istanbul ignore next */ []));
672
+ cvaDisabled = signal(false, /* @ts-ignore */
673
+ ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
674
+ _ngControlRev = signal(0, /* @ts-ignore */
675
+ ...(ngDevMode ? [{ debugName: "_ngControlRev" }] : /* istanbul ignore next */ []));
676
+ _formSubmitRev = signal(0, /* @ts-ignore */
677
+ ...(ngDevMode ? [{ debugName: "_formSubmitRev" }] : /* istanbul ignore next */ []));
678
+ describedByIdsSignal = signal([], /* @ts-ignore */
679
+ ...(ngDevMode ? [{ debugName: "describedByIdsSignal" }] : /* istanbul ignore next */ []));
680
+ labelledByIdsSignal = signal([], /* @ts-ignore */
681
+ ...(ngDevMode ? [{ debugName: "labelledByIdsSignal" }] : /* istanbul ignore next */ []));
682
+ /** @internal */
683
+ lastCommittedLabel = signal('', /* @ts-ignore */
684
+ ...(ngDevMode ? [{ debugName: "lastCommittedLabel" }] : /* istanbul ignore next */ []));
685
+ pendingWriteValue = signal(UNRESOLVED, /* @ts-ignore */
686
+ ...(ngDevMode ? [{ debugName: "pendingWriteValue" }] : /* istanbul ignore next */ []));
687
+ closingSignal = signal(false, /* @ts-ignore */
688
+ ...(ngDevMode ? [{ debugName: "closingSignal" }] : /* istanbul ignore next */ []));
618
689
  /** Re-runs the input handler once after IME composition ends. */
619
690
  composingPendingValue = null;
620
691
  onChange = () => { };
621
692
  onTouched = () => { };
622
693
  overlayRef = null;
623
- overlayInstanceSignal = signal(null, ...(ngDevMode ? [{ debugName: "overlayInstanceSignal" }] : /* istanbul ignore next */ []));
694
+ overlayInstanceSignal = signal(null, /* @ts-ignore */
695
+ ...(ngDevMode ? [{ debugName: "overlayInstanceSignal" }] : /* istanbul ignore next */ []));
624
696
  closeTimer = null;
625
697
  queryDebounceTimer = null;
626
698
  announceTimer = null;
@@ -630,9 +702,11 @@ class ComboboxComponent {
630
702
  }
631
703
  // ── Derived state ──
632
704
  /** @internal */
633
- isDisabled = computed(() => this.disabledInput() || this.cvaDisabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
705
+ isDisabled = computed(() => this.disabledInput() || this.cvaDisabled(), /* @ts-ignore */
706
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
634
707
  /** @internal Auto-naked when wrapped in tw-form-field. */
635
- naked = computed(() => !!this.formField, ...(ngDevMode ? [{ debugName: "naked" }] : /* istanbul ignore next */ []));
708
+ naked = computed(() => !!this.formField, /* @ts-ignore */
709
+ ...(ngDevMode ? [{ debugName: "naked" }] : /* istanbul ignore next */ []));
636
710
  /** @internal Resolved visible options (after filter, with derived view fields). */
637
711
  visibleOptions = computed(() => {
638
712
  const opts = this.options();
@@ -652,7 +726,8 @@ class ComboboxComponent {
652
726
  group: groupFn(option),
653
727
  description: descFn(option),
654
728
  }));
655
- }, ...(ngDevMode ? [{ debugName: "visibleOptions" }] : /* istanbul ignore next */ []));
729
+ }, /* @ts-ignore */
730
+ ...(ngDevMode ? [{ debugName: "visibleOptions" }] : /* istanbul ignore next */ []));
656
731
  /** @internal Rendered rows (group headers + option rows). */
657
732
  renderedRows = computed(() => {
658
733
  const visible = this.visibleOptions();
@@ -668,7 +743,8 @@ class ComboboxComponent {
668
743
  rows.push({ kind: 'option', option: v, index });
669
744
  });
670
745
  return rows;
671
- }, ...(ngDevMode ? [{ debugName: "renderedRows" }] : /* istanbul ignore next */ []));
746
+ }, /* @ts-ignore */
747
+ ...(ngDevMode ? [{ debugName: "renderedRows" }] : /* istanbul ignore next */ []));
672
748
  /** Returns the index of the first enabled option, or -1 when none. */
673
749
  firstEnabledIndex(visible = this.visibleOptions()) {
674
750
  for (let i = 0; i < visible.length; i++) {
@@ -701,20 +777,25 @@ class ComboboxComponent {
701
777
  if (idx < 0 || idx >= visible.length)
702
778
  return null;
703
779
  return visible[idx];
704
- }, ...(ngDevMode ? [{ debugName: "activeOption" }] : /* istanbul ignore next */ []));
780
+ }, /* @ts-ignore */
781
+ ...(ngDevMode ? [{ debugName: "activeOption" }] : /* istanbul ignore next */ []));
705
782
  /** @internal */
706
783
  activeOptionId = computed(() => {
707
784
  const idx = this.activeIndex();
708
785
  if (idx < 0 || idx >= this.visibleOptions().length)
709
786
  return null;
710
787
  return this.optionId(idx);
711
- }, ...(ngDevMode ? [{ debugName: "activeOptionId" }] : /* istanbul ignore next */ []));
788
+ }, /* @ts-ignore */
789
+ ...(ngDevMode ? [{ debugName: "activeOptionId" }] : /* istanbul ignore next */ []));
712
790
  /** @internal */
713
- isEmpty = computed(() => this.inputValue().length === 0 && this.value() == null, ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
791
+ isEmpty = computed(() => this.inputValue().length === 0 && this.value() == null, /* @ts-ignore */
792
+ ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
714
793
  /** @internal */
715
- showClearButton = computed(() => this.clearable() && !this.isDisabled() && this.inputValue().length > 0, ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
794
+ showClearButton = computed(() => this.clearable() && !this.isDisabled() && this.inputValue().length > 0, /* @ts-ignore */
795
+ ...(ngDevMode ? [{ debugName: "showClearButton" }] : /* istanbul ignore next */ []));
716
796
  /** @internal */
717
- showSpinner = computed(() => this.loading(), ...(ngDevMode ? [{ debugName: "showSpinner" }] : /* istanbul ignore next */ []));
797
+ showSpinner = computed(() => this.loading(), /* @ts-ignore */
798
+ ...(ngDevMode ? [{ debugName: "showSpinner" }] : /* istanbul ignore next */ []));
718
799
  /** @internal */
719
800
  resolvedDescribedBy = computed(() => {
720
801
  const extra = this.describedByIdsSignal();
@@ -723,7 +804,8 @@ class ComboboxComponent {
723
804
  if (user)
724
805
  merged.push(...user.split(/\s+/).filter(Boolean));
725
806
  return merged.length ? merged.join(' ') : '';
726
- }, ...(ngDevMode ? [{ debugName: "resolvedDescribedBy" }] : /* istanbul ignore next */ []));
807
+ }, /* @ts-ignore */
808
+ ...(ngDevMode ? [{ debugName: "resolvedDescribedBy" }] : /* istanbul ignore next */ []));
727
809
  /** @internal */
728
810
  resolvedLabelledBy = computed(() => {
729
811
  const extra = this.labelledByIdsSignal();
@@ -732,7 +814,8 @@ class ComboboxComponent {
732
814
  if (user)
733
815
  merged.push(...user.split(/\s+/).filter(Boolean));
734
816
  return merged.length ? merged.join(' ') : '';
735
- }, ...(ngDevMode ? [{ debugName: "resolvedLabelledBy" }] : /* istanbul ignore next */ []));
817
+ }, /* @ts-ignore */
818
+ ...(ngDevMode ? [{ debugName: "resolvedLabelledBy" }] : /* istanbul ignore next */ []));
736
819
  /** @internal Error-state per the configured `ErrorStateMatcher`. Reads the bound `NgControl.invalid` through the matcher. */
737
820
  errorState = computed(() => {
738
821
  this._ngControlRev();
@@ -741,7 +824,8 @@ class ComboboxComponent {
741
824
  const form = this.parentFormGroup ??
742
825
  this.parentForm;
743
826
  return matcher.isErrorState(this.ngControl?.control ?? null, form);
744
- }, ...(ngDevMode ? [{ debugName: "errorState" }] : /* istanbul ignore next */ []));
827
+ }, /* @ts-ignore */
828
+ ...(ngDevMode ? [{ debugName: "errorState" }] : /* istanbul ignore next */ []));
745
829
  // ── tv() output ──
746
830
  variantResult = computed(() => comboboxVariants({
747
831
  size: this.size(),
@@ -750,22 +834,30 @@ class ComboboxComponent {
750
834
  open: this.open(),
751
835
  naked: this.naked(),
752
836
  errorState: this.errorState(),
753
- }), ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
837
+ }), /* @ts-ignore */
838
+ ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
754
839
  /** @internal */
755
- rootClasses = computed(() => this.variantResult().root(), ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
840
+ rootClasses = computed(() => this.variantResult().root(), /* @ts-ignore */
841
+ ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
756
842
  /** @internal */
757
- triggerClasses = computed(() => this.variantResult().trigger(), ...(ngDevMode ? [{ debugName: "triggerClasses" }] : /* istanbul ignore next */ []));
843
+ triggerClasses = computed(() => this.variantResult().trigger(), /* @ts-ignore */
844
+ ...(ngDevMode ? [{ debugName: "triggerClasses" }] : /* istanbul ignore next */ []));
758
845
  /** @internal */
759
- inputClasses = computed(() => this.variantResult().input(), ...(ngDevMode ? [{ debugName: "inputClasses" }] : /* istanbul ignore next */ []));
846
+ inputClasses = computed(() => this.variantResult().input(), /* @ts-ignore */
847
+ ...(ngDevMode ? [{ debugName: "inputClasses" }] : /* istanbul ignore next */ []));
760
848
  /** @internal */
761
- clearButtonClasses = computed(() => this.variantResult().clearButton(), ...(ngDevMode ? [{ debugName: "clearButtonClasses" }] : /* istanbul ignore next */ []));
849
+ clearButtonClasses = computed(() => this.variantResult().clearButton(), /* @ts-ignore */
850
+ ...(ngDevMode ? [{ debugName: "clearButtonClasses" }] : /* istanbul ignore next */ []));
762
851
  /** @internal */
763
- chevronClasses = computed(() => this.variantResult().chevron(), ...(ngDevMode ? [{ debugName: "chevronClasses" }] : /* istanbul ignore next */ []));
852
+ chevronClasses = computed(() => this.variantResult().chevron(), /* @ts-ignore */
853
+ ...(ngDevMode ? [{ debugName: "chevronClasses" }] : /* istanbul ignore next */ []));
764
854
  /** @internal */
765
- spinnerClasses = computed(() => this.variantResult().spinner(), ...(ngDevMode ? [{ debugName: "spinnerClasses" }] : /* istanbul ignore next */ []));
855
+ spinnerClasses = computed(() => this.variantResult().spinner(), /* @ts-ignore */
856
+ ...(ngDevMode ? [{ debugName: "spinnerClasses" }] : /* istanbul ignore next */ []));
766
857
  // ── FormFieldControl impl ──
767
858
  /** @internal */
768
- id = computed(() => this.hostId, ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
859
+ id = computed(() => this.hostId, /* @ts-ignore */
860
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
769
861
  /** @internal */
770
862
  focused = this.focusedSignal.asReadonly();
771
863
  /** @internal */
@@ -773,13 +865,16 @@ class ComboboxComponent {
773
865
  /** @internal */
774
866
  disabled = this.isDisabled;
775
867
  /** @internal */
776
- required = computed(() => this.requiredInput(), ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
868
+ required = computed(() => this.requiredInput(), /* @ts-ignore */
869
+ ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
777
870
  /** @internal */
778
871
  controlType = 'combobox';
779
872
  /** @internal */
780
- userAriaDescribedBy = computed(() => this.ariaDescribedby(), ...(ngDevMode ? [{ debugName: "userAriaDescribedBy" }] : /* istanbul ignore next */ []));
873
+ userAriaDescribedBy = computed(() => this.ariaDescribedby(), /* @ts-ignore */
874
+ ...(ngDevMode ? [{ debugName: "userAriaDescribedBy" }] : /* istanbul ignore next */ []));
781
875
  /** @internal */
782
- userAriaLabelledby = computed(() => this.ariaLabelledby(), ...(ngDevMode ? [{ debugName: "userAriaLabelledby" }] : /* istanbul ignore next */ []));
876
+ userAriaLabelledby = computed(() => this.ariaLabelledby(), /* @ts-ignore */
877
+ ...(ngDevMode ? [{ debugName: "userAriaLabelledby" }] : /* istanbul ignore next */ []));
783
878
  // ── Constructor ──
784
879
  constructor() {
785
880
  // Material-style CVA wiring: declare ourselves as the value accessor on any
@@ -1509,8 +1604,8 @@ class ComboboxComponent {
1509
1604
  .subscribe(() => this._formSubmitRev.update((n) => n + 1));
1510
1605
  }
1511
1606
  }
1512
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1513
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: ComboboxComponent, isStandalone: true, selector: "tw-combobox", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: true, isRequired: false, transformFunction: null }, optionGroup: { classPropertyName: "optionGroup", publicName: "optionGroup", isSignal: true, isRequired: false, transformFunction: null }, optionDescription: { classPropertyName: "optionDescription", publicName: "optionDescription", isSignal: true, isRequired: false, transformFunction: null }, filterFn: { classPropertyName: "filterFn", publicName: "filterFn", isSignal: true, isRequired: false, transformFunction: null }, strict: { classPropertyName: "strict", publicName: "strict", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, requiredInput: { classPropertyName: "requiredInput", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, showChevron: { classPropertyName: "showChevron", publicName: "showChevron", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, queryDebounce: { classPropertyName: "queryDebounce", publicName: "queryDebounce", isSignal: true, isRequired: false, transformFunction: null }, minQueryLength: { classPropertyName: "minQueryLength", publicName: "minQueryLength", isSignal: true, isRequired: false, transformFunction: null }, openOnFocus: { classPropertyName: "openOnFocus", publicName: "openOnFocus", isSignal: true, isRequired: false, transformFunction: null }, panelMaxHeight: { classPropertyName: "panelMaxHeight", publicName: "panelMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, panelWidth: { classPropertyName: "panelWidth", publicName: "panelWidth", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, scrollStrategy: { classPropertyName: "scrollStrategy", publicName: "scrollStrategy", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, inputValue: { classPropertyName: "inputValue", publicName: "inputValue", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", inputValue: "inputValueChange", open: "openChange", queryChange: "queryChange", optionSelected: "optionSelected", valueCommit: "valueCommit", openedChange: "openedChange" }, host: { properties: { "class": "rootClasses()" } }, providers: [
1607
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1608
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: ComboboxComponent, isStandalone: true, selector: "tw-combobox", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: true, isRequired: false, transformFunction: null }, optionGroup: { classPropertyName: "optionGroup", publicName: "optionGroup", isSignal: true, isRequired: false, transformFunction: null }, optionDescription: { classPropertyName: "optionDescription", publicName: "optionDescription", isSignal: true, isRequired: false, transformFunction: null }, filterFn: { classPropertyName: "filterFn", publicName: "filterFn", isSignal: true, isRequired: false, transformFunction: null }, strict: { classPropertyName: "strict", publicName: "strict", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, requiredInput: { classPropertyName: "requiredInput", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, showChevron: { classPropertyName: "showChevron", publicName: "showChevron", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, queryDebounce: { classPropertyName: "queryDebounce", publicName: "queryDebounce", isSignal: true, isRequired: false, transformFunction: null }, minQueryLength: { classPropertyName: "minQueryLength", publicName: "minQueryLength", isSignal: true, isRequired: false, transformFunction: null }, openOnFocus: { classPropertyName: "openOnFocus", publicName: "openOnFocus", isSignal: true, isRequired: false, transformFunction: null }, panelMaxHeight: { classPropertyName: "panelMaxHeight", publicName: "panelMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, panelWidth: { classPropertyName: "panelWidth", publicName: "panelWidth", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, scrollStrategy: { classPropertyName: "scrollStrategy", publicName: "scrollStrategy", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, inputValue: { classPropertyName: "inputValue", publicName: "inputValue", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", inputValue: "inputValueChange", open: "openChange", queryChange: "queryChange", optionSelected: "optionSelected", valueCommit: "valueCommit", openedChange: "openedChange" }, host: { properties: { "class": "rootClasses()" } }, providers: [
1514
1609
  {
1515
1610
  provide: TW_FORM_FIELD_CONTROL,
1516
1611
  useExisting: forwardRef(() => ComboboxComponent),
@@ -1606,7 +1701,7 @@ class ComboboxComponent {
1606
1701
  </span>
1607
1702
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1608
1703
  }
1609
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComboboxComponent, decorators: [{
1704
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ComboboxComponent, decorators: [{
1610
1705
  type: Component,
1611
1706
  args: [{
1612
1707
  selector: 'tw-combobox',