@cdevhub/ngx-tw 0.2.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 (171) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -0
  3. package/fesm2022/cdevhub-ngx-tw-accordion.mjs +108 -0
  4. package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -0
  5. package/fesm2022/cdevhub-ngx-tw-alert.mjs +240 -0
  6. package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -0
  7. package/fesm2022/cdevhub-ngx-tw-avatar.mjs +287 -0
  8. package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -0
  9. package/fesm2022/cdevhub-ngx-tw-badge.mjs +332 -0
  10. package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -0
  11. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +452 -0
  12. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -0
  13. package/fesm2022/cdevhub-ngx-tw-button.mjs +227 -0
  14. package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -0
  15. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +417 -0
  16. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -0
  17. package/fesm2022/cdevhub-ngx-tw-calendar-testing.mjs +232 -0
  18. package/fesm2022/cdevhub-ngx-tw-calendar-testing.mjs.map +1 -0
  19. package/fesm2022/cdevhub-ngx-tw-calendar.mjs +4482 -0
  20. package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -0
  21. package/fesm2022/cdevhub-ngx-tw-card.mjs +157 -0
  22. package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -0
  23. package/fesm2022/cdevhub-ngx-tw-carousel.mjs +1454 -0
  24. package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -0
  25. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +593 -0
  26. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -0
  27. package/fesm2022/cdevhub-ngx-tw-code-block.mjs +228 -0
  28. package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -0
  29. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +510 -0
  30. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -0
  31. package/fesm2022/cdevhub-ngx-tw-combobox.mjs +1721 -0
  32. package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -0
  33. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +721 -0
  34. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -0
  35. package/fesm2022/cdevhub-ngx-tw-core.mjs +861 -0
  36. package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -0
  37. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +1558 -0
  38. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -0
  39. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +1833 -0
  40. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -0
  41. package/fesm2022/cdevhub-ngx-tw-dialog.mjs +693 -0
  42. package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -0
  43. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +331 -0
  44. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -0
  45. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +289 -0
  46. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -0
  47. package/fesm2022/cdevhub-ngx-tw-form-field.mjs +572 -0
  48. package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -0
  49. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +36 -0
  50. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -0
  51. package/fesm2022/cdevhub-ngx-tw-icon.mjs +278 -0
  52. package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -0
  53. package/fesm2022/cdevhub-ngx-tw-input.mjs +355 -0
  54. package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -0
  55. package/fesm2022/cdevhub-ngx-tw-item.mjs +241 -0
  56. package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -0
  57. package/fesm2022/cdevhub-ngx-tw-menu.mjs +433 -0
  58. package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -0
  59. package/fesm2022/cdevhub-ngx-tw-paginator.mjs +691 -0
  60. package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -0
  61. package/fesm2022/cdevhub-ngx-tw-popover.mjs +678 -0
  62. package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -0
  63. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +335 -0
  64. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -0
  65. package/fesm2022/cdevhub-ngx-tw-radio.mjs +708 -0
  66. package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -0
  67. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +319 -0
  68. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -0
  69. package/fesm2022/cdevhub-ngx-tw-select.mjs +1722 -0
  70. package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -0
  71. package/fesm2022/cdevhub-ngx-tw-separator.mjs +115 -0
  72. package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -0
  73. package/fesm2022/cdevhub-ngx-tw-sheet.mjs +768 -0
  74. package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -0
  75. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +149 -0
  76. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -0
  77. package/fesm2022/cdevhub-ngx-tw-slider.mjs +1147 -0
  78. package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -0
  79. package/fesm2022/cdevhub-ngx-tw-sort.mjs +346 -0
  80. package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -0
  81. package/fesm2022/cdevhub-ngx-tw-spinner.mjs +186 -0
  82. package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -0
  83. package/fesm2022/cdevhub-ngx-tw-split.mjs +1082 -0
  84. package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -0
  85. package/fesm2022/cdevhub-ngx-tw-stat.mjs +579 -0
  86. package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -0
  87. package/fesm2022/cdevhub-ngx-tw-stepper.mjs +443 -0
  88. package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -0
  89. package/fesm2022/cdevhub-ngx-tw-switch.mjs +391 -0
  90. package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -0
  91. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +315 -0
  92. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -0
  93. package/fesm2022/cdevhub-ngx-tw-table.mjs +994 -0
  94. package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -0
  95. package/fesm2022/cdevhub-ngx-tw-tabs.mjs +508 -0
  96. package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -0
  97. package/fesm2022/cdevhub-ngx-tw-textarea.mjs +147 -0
  98. package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -0
  99. package/fesm2022/cdevhub-ngx-tw-theme.mjs +178 -0
  100. package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -0
  101. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +1344 -0
  102. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -0
  103. package/fesm2022/cdevhub-ngx-tw-timeline.mjs +1136 -0
  104. package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -0
  105. package/fesm2022/cdevhub-ngx-tw-toast.mjs +1311 -0
  106. package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -0
  107. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +533 -0
  108. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -0
  109. package/fesm2022/cdevhub-ngx-tw.mjs +61 -0
  110. package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -0
  111. package/package.json +265 -0
  112. package/theme/_base.css +394 -0
  113. package/theme/_dark.css +510 -0
  114. package/theme/_high-contrast.css +290 -0
  115. package/theme/_semantic.css +317 -0
  116. package/theme/_typography.css +9 -0
  117. package/theme/index.css +54 -0
  118. package/types/cdevhub-ngx-tw-accordion.d.ts +48 -0
  119. package/types/cdevhub-ngx-tw-alert.d.ts +67 -0
  120. package/types/cdevhub-ngx-tw-avatar.d.ts +79 -0
  121. package/types/cdevhub-ngx-tw-badge.d.ts +94 -0
  122. package/types/cdevhub-ngx-tw-breadcrumbs.d.ts +227 -0
  123. package/types/cdevhub-ngx-tw-button.d.ts +74 -0
  124. package/types/cdevhub-ngx-tw-calendar-luxon.d.ts +200 -0
  125. package/types/cdevhub-ngx-tw-calendar-testing.d.ts +113 -0
  126. package/types/cdevhub-ngx-tw-calendar.d.ts +1704 -0
  127. package/types/cdevhub-ngx-tw-card.d.ts +48 -0
  128. package/types/cdevhub-ngx-tw-carousel.d.ts +406 -0
  129. package/types/cdevhub-ngx-tw-checkbox.d.ts +136 -0
  130. package/types/cdevhub-ngx-tw-code-block.d.ts +93 -0
  131. package/types/cdevhub-ngx-tw-collapsible.d.ts +151 -0
  132. package/types/cdevhub-ngx-tw-combobox.d.ts +389 -0
  133. package/types/cdevhub-ngx-tw-command-palette.d.ts +215 -0
  134. package/types/cdevhub-ngx-tw-core.d.ts +719 -0
  135. package/types/cdevhub-ngx-tw-date-picker.d.ts +317 -0
  136. package/types/cdevhub-ngx-tw-date-range-picker.d.ts +313 -0
  137. package/types/cdevhub-ngx-tw-dialog.d.ts +303 -0
  138. package/types/cdevhub-ngx-tw-empty-state.d.ts +104 -0
  139. package/types/cdevhub-ngx-tw-flip-card.d.ts +95 -0
  140. package/types/cdevhub-ngx-tw-form-field.d.ts +210 -0
  141. package/types/cdevhub-ngx-tw-icon-lucide.d.ts +29 -0
  142. package/types/cdevhub-ngx-tw-icon.d.ts +134 -0
  143. package/types/cdevhub-ngx-tw-input.d.ts +110 -0
  144. package/types/cdevhub-ngx-tw-item.d.ts +70 -0
  145. package/types/cdevhub-ngx-tw-menu.d.ts +99 -0
  146. package/types/cdevhub-ngx-tw-paginator.d.ts +305 -0
  147. package/types/cdevhub-ngx-tw-popover.d.ts +157 -0
  148. package/types/cdevhub-ngx-tw-progress-bar.d.ts +100 -0
  149. package/types/cdevhub-ngx-tw-radio.d.ts +174 -0
  150. package/types/cdevhub-ngx-tw-segmented-control.d.ts +66 -0
  151. package/types/cdevhub-ngx-tw-select.d.ts +384 -0
  152. package/types/cdevhub-ngx-tw-separator.d.ts +28 -0
  153. package/types/cdevhub-ngx-tw-sheet.d.ts +335 -0
  154. package/types/cdevhub-ngx-tw-skeleton.d.ts +52 -0
  155. package/types/cdevhub-ngx-tw-slider.d.ts +258 -0
  156. package/types/cdevhub-ngx-tw-sort.d.ts +136 -0
  157. package/types/cdevhub-ngx-tw-spinner.d.ts +50 -0
  158. package/types/cdevhub-ngx-tw-split.d.ts +265 -0
  159. package/types/cdevhub-ngx-tw-stat.d.ts +140 -0
  160. package/types/cdevhub-ngx-tw-stepper.d.ts +127 -0
  161. package/types/cdevhub-ngx-tw-switch.d.ts +88 -0
  162. package/types/cdevhub-ngx-tw-tab-nav.d.ts +107 -0
  163. package/types/cdevhub-ngx-tw-table.d.ts +479 -0
  164. package/types/cdevhub-ngx-tw-tabs.d.ts +121 -0
  165. package/types/cdevhub-ngx-tw-textarea.d.ts +62 -0
  166. package/types/cdevhub-ngx-tw-theme.d.ts +106 -0
  167. package/types/cdevhub-ngx-tw-time-picker.d.ts +303 -0
  168. package/types/cdevhub-ngx-tw-timeline.d.ts +278 -0
  169. package/types/cdevhub-ngx-tw-toast.d.ts +388 -0
  170. package/types/cdevhub-ngx-tw-tooltip.d.ts +95 -0
  171. package/types/cdevhub-ngx-tw.d.ts +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdevhub-ngx-tw-combobox.mjs","sources":["../../../projects/ngx-tw/combobox/combobox-overlay.ts","../../../projects/ngx-tw/combobox/combobox.ts","../../../projects/ngx-tw/combobox/cdevhub-ngx-tw-combobox.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport type {\n ComboboxRenderedRow,\n ComboboxVisibleOption,\n TwComboboxOptionContext,\n} from './types';\n\n/**\n * Internal overlay panel for `tw-combobox`. Renders the listbox region with\n * grouped/flat option rows, the loading slot, and the empty fallback. Not\n * exported from the public API — instances are attached via `ComponentPortal`\n * by the parent `ComboboxComponent`.\n */\n@Component({\n selector: 'tw-combobox-overlay',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: {\n '[class]': 'panelClasses()',\n '[animate.enter]': '\"scale-in\"',\n '[animate.leave]': '\"scale-out\"',\n },\n template: `\n @if (loading()) {\n @if (loadingTemplate(); as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl\" />\n } @else {\n <div class=\"flex items-center justify-center gap-2 px-4 py-6 text-sm text-fg-muted\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n class=\"size-4 animate-spin\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"3\" opacity=\"0.25\" />\n <path\n d=\"M21 12a9 9 0 0 0-9-9\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>Loading…</span>\n </div>\n }\n }\n\n <ul\n [id]=\"listboxId()\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"labelledBy() || null\"\n aria-multiselectable=\"false\"\n [style.maxHeight.px]=\"panelMaxHeight()\"\n class=\"list-none m-0 p-0 overflow-y-auto py-1\"\n >\n @if (renderedRows().length === 0 && !loading()) {\n @if (emptyTemplate(); as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl; context: { $implicit: query() }\" />\n } @else {\n <li class=\"px-4 py-10 text-center text-sm text-fg-muted list-none\">\n {{ emptyMessage() }}\n </li>\n }\n } @else {\n @for (row of renderedRows(); track trackRow($index, row)) {\n @if (row.kind === 'group') {\n <li\n role=\"group\"\n [attr.aria-labelledby]=\"groupHeaderId(row.group)\"\n class=\"list-none\"\n >\n <div\n [id]=\"groupHeaderId(row.group)\"\n class=\"px-3 py-1 text-2xs uppercase tracking-wide text-fg-subtle font-semibold\"\n >\n {{ row.group }}\n </div>\n </li>\n } @else {\n <li\n role=\"option\"\n [id]=\"optionIdFn()(row.index)\"\n [attr.aria-selected]=\"isSelected()(row.index) ? 'true' : 'false'\"\n [attr.aria-disabled]=\"row.option.disabled ? 'true' : null\"\n [class]=\"optionClass(row.index, row.option.disabled)\"\n (mousedown)=\"onOptionMousedown($event, row.index)\"\n (click)=\"onOptionClick($event, row.index)\"\n (mouseenter)=\"onOptionMouseEnter(row.index, row.option.disabled)\"\n >\n @if (optionTemplate(); as tpl) {\n <ng-container\n *ngTemplateOutlet=\"\n tpl;\n context: buildOptionContext(row.index, row.option)\n \"\n />\n } @else {\n <span class=\"flex-1 min-w-0\">\n <span class=\"block truncate\">{{ row.option.label }}</span>\n @if (row.option.description) {\n <span class=\"block text-xs text-fg-muted truncate\">{{ row.option.description }}</span>\n }\n </span>\n }\n </li>\n }\n }\n }\n </ul>\n `,\n})\nexport class ComboboxOverlayComponent<T = unknown> {\n /** @internal */\n readonly hostElement = inject(ElementRef<HTMLElement>);\n\n // ── Config signals pushed by the parent ──\n\n /** @internal */\n readonly listboxId = signal('');\n /** @internal */\n readonly labelledBy = signal('');\n /** @internal */\n readonly panelMaxHeight = signal(256);\n /** @internal */\n readonly emptyMessage = signal('No results');\n /** @internal */\n readonly query = signal('');\n /** @internal */\n readonly loading = signal(false);\n /** @internal */\n readonly activeIndex = signal(-1);\n /** @internal */\n readonly renderedRows = signal<readonly ComboboxRenderedRow<T>[]>([]);\n /** @internal */\n readonly isSelected = signal<(visibleIndex: number) => boolean>(() => false);\n /** @internal */\n readonly optionIdFn = signal<(index: number) => string>((i) => `option-${i}`);\n /** @internal */\n readonly groupHeaderIdFn = signal<(group: string) => string>((g) => `group-${g}`);\n /** @internal */\n readonly customPanelClass = signal('');\n\n /** @internal */\n readonly optionTemplate = signal<TemplateRef<TwComboboxOptionContext<T>> | undefined>(undefined);\n /** @internal */\n readonly emptyTemplate = signal<TemplateRef<{ $implicit: string }> | undefined>(undefined);\n /** @internal */\n readonly loadingTemplate = signal<TemplateRef<unknown> | undefined>(undefined);\n\n // ── Callbacks pushed by the parent ──\n\n /** @internal */\n readonly onOptionPick = signal<(index: number) => void>(() => {});\n /** @internal */\n readonly onOptionHover = signal<(index: number) => void>(() => {});\n\n // ── Computed classes ──\n\n /** @internal */\n readonly panelClasses = computed(() => {\n const base =\n 'block w-full bg-surface-overlay border border-border rounded-md shadow-md overflow-hidden';\n const custom = this.customPanelClass();\n return custom ? `${base} ${custom}` : base;\n });\n\n /** @internal */\n optionClass(index: number, disabled: boolean): string {\n const base =\n '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';\n const parts: string[] = [base];\n if (disabled) {\n parts.push('opacity-50 pointer-events-none cursor-default');\n } else if (this.activeIndex() === index) {\n parts.push('bg-surface-muted');\n } else {\n parts.push('hover:bg-surface-muted');\n }\n return parts.join(' ');\n }\n\n /** @internal */\n groupHeaderId(group: string): string {\n return this.groupHeaderIdFn()(group);\n }\n\n /** @internal */\n buildOptionContext(index: number, option: ComboboxVisibleOption<T>): TwComboboxOptionContext<T> {\n return {\n $implicit: option.option as TwComboboxOptionContext<T>['$implicit'],\n option: option.option as TwComboboxOptionContext<T>['option'],\n label: option.label,\n value: option.value,\n selected: this.isSelected()(index),\n active: this.activeIndex() === index,\n disabled: option.disabled,\n index,\n };\n }\n\n /** @internal track function for `@for`. */\n trackRow(_index: number, row: ComboboxRenderedRow<T>): string | number {\n if (row.kind === 'group') return `g:${row.group}`;\n return `o:${row.index}`;\n }\n\n // ── Interactions ──\n\n /** @internal — `preventDefault` on mousedown keeps DOM focus on the input. */\n onOptionMousedown(event: MouseEvent, _index: number): void {\n event.preventDefault();\n }\n\n /** @internal */\n onOptionClick(event: MouseEvent, index: number): void {\n event.preventDefault();\n event.stopPropagation();\n this.onOptionPick()(index);\n }\n\n /** @internal */\n onOptionMouseEnter(index: number, disabled: boolean): void {\n if (disabled) return;\n this.onOptionHover()(index);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n linkedSignal,\n model,\n type OnInit,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewContainerRef,\n type Signal,\n} from '@angular/core';\nimport {\n type ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n} from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge } from 'rxjs';\nimport {\n buildSelectLikePositions,\n consumeOverlayEscape,\n type ErrorStateMatcher,\n resolveSelectScrollStrategy,\n TW_ERROR_STATE_MATCHER,\n type TwColor,\n type TwFormSubmitted,\n type TwSize,\n} from '@cdevhub/ngx-tw/core';\nimport { Overlay, type OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Platform } from '@angular/cdk/platform';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { tv } from 'tailwind-variants';\nimport {\n FormFieldComponent,\n type FormFieldControl,\n TW_FORM_FIELD_CONTROL,\n} from '@cdevhub/ngx-tw/form-field';\nimport { ComboboxOverlayComponent } from './combobox-overlay';\nimport type {\n ComboboxRenderedRow,\n ComboboxVisibleOption,\n TwComboboxOpenedEvent,\n TwComboboxOptionContext,\n TwComboboxOptionSelectedEvent,\n TwComboboxValueCommitEvent,\n} from './types';\n\n// ── Constants ──\n\n/** Duration of leave animation (ms) — matches scale-out/fade-out in theme/_base.css. */\nconst ANIMATION_DURATION = 120;\n\n/** Debounce window (ms) for LiveAnnouncer result announcements while typing. */\nconst ANNOUNCE_DEBOUNCE = 200;\n\n/** Sentinel for an unresolved write-value awaiting late-arriving options. */\nconst UNRESOLVED = Symbol('combobox-unresolved');\n\nlet nextComboboxId = 0;\n\n// ── Accessor defaults ──\n\nfunction defaultOptionLabel(o: unknown): string {\n const opt = o as { label?: unknown; value?: unknown };\n if (typeof opt.label === 'string') return opt.label;\n return String(opt.value ?? '');\n}\n\nfunction defaultOptionValue<T>(o: unknown): T {\n return (o as { value: T }).value;\n}\n\nfunction defaultOptionDisabled(o: unknown): boolean {\n return !!(o as { disabled?: unknown }).disabled;\n}\n\nfunction defaultOptionGroup(o: unknown): string | undefined {\n return (o as { group?: string }).group;\n}\n\nfunction defaultOptionDescription(o: unknown): string | undefined {\n return (o as { description?: string }).description;\n}\n\nfunction defaultStartsWithFilter(option: unknown, query: string): boolean {\n const trimmed = query.trim().toLowerCase();\n if (!trimmed) return true;\n const label = defaultOptionLabel(option).toLowerCase();\n return label.startsWith(trimmed);\n}\n\n// ── tv() config ──\n\nconst comboboxVariants = tv(\n {\n slots: {\n root: 'relative inline-block w-full',\n // container-focus indicator — the `<input>` clears its own outline\n // (`outline-none` in the input slot below) so the surrounding trigger\n // surface owns the visible ring via `focus-within:`. The color/width\n // variants below paint this ring per the `color`/`errorState` axis.\n trigger:\n 'flex w-full items-center gap-1.5 rounded-md border border-border bg-surface text-fg transition-colors duration-normal motion-reduce:transition-none hover:border-border-strong focus-within:outline-2 focus-within:outline-offset-2',\n input:\n 'flex-1 min-w-0 bg-transparent outline-none placeholder:text-fg-subtle disabled:cursor-not-allowed',\n clearButton:\n 'inline-flex items-center justify-center shrink-0 size-5 rounded-md text-fg-muted hover:text-fg hover:bg-surface-muted transition-colors duration-normal motion-reduce:transition-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n chevron:\n 'shrink-0 text-fg-muted transition-transform duration-normal motion-reduce:transition-none',\n spinner: 'shrink-0 text-fg-muted animate-spin',\n },\n variants: {\n size: {\n // xs density: chevron and spinner use `size-3.5` (14px) — the codified\n // half-step between size-3 and size-4 that lines up with text-xs metric\n // inside a 28px trigger.\n xs: { trigger: 'px-2 py-1 text-xs', chevron: 'size-3.5', clearButton: 'size-4', spinner: 'size-3.5' },\n sm: { trigger: 'px-3 py-1.5 text-sm', chevron: 'size-4', spinner: 'size-4' },\n md: { trigger: 'px-4 py-2 text-sm', chevron: 'size-4', spinner: 'size-4' },\n lg: { trigger: 'px-5 py-2.5 text-base', chevron: 'size-5', spinner: 'size-5' },\n xl: { trigger: 'px-6 py-3 text-base', chevron: 'size-5', spinner: 'size-5' },\n },\n color: {\n primary: { trigger: 'focus-within:outline-primary-500' },\n secondary: { trigger: 'focus-within:outline-secondary-500' },\n accent: { trigger: 'focus-within:outline-accent-500' },\n neutral: { trigger: 'focus-within:outline-border-strong' },\n info: { trigger: 'focus-within:outline-info-500' },\n success: { trigger: 'focus-within:outline-success-500' },\n warning: { trigger: 'focus-within:outline-warning-500' },\n error: { trigger: 'focus-within:outline-error-500' },\n },\n disabled: {\n true: { root: 'opacity-50 pointer-events-none cursor-not-allowed' },\n false: {},\n },\n open: {\n true: { chevron: 'rotate-180' },\n false: {},\n },\n naked: {\n true: {\n trigger:\n 'border-0 bg-transparent rounded-none px-0 py-0 hover:border-0 focus-within:outline-0 focus-within:outline-offset-0',\n },\n false: {},\n },\n errorState: {\n true: { trigger: 'focus-within:outline-error-500' },\n false: {},\n },\n },\n defaultVariants: {\n size: 'md',\n color: 'primary',\n disabled: false,\n open: false,\n naked: false,\n errorState: false,\n },\n },\n { twMerge: true },\n);\n\n// ── Slot directives ──\n\n/** Structural directive projecting a custom template for each option row. Context: `TwComboboxOptionContext<T>`. */\n@Directive({ selector: '[twComboboxOption]' })\nexport class ComboboxOptionTemplateDirective<T = unknown, O = unknown> {\n /** @internal */\n readonly templateRef = inject(TemplateRef<TwComboboxOptionContext<T, O>>);\n\n /** @internal */\n static ngTemplateContextGuard<T, O>(\n _dir: ComboboxOptionTemplateDirective<T, O>,\n _ctx: unknown,\n ): _ctx is TwComboboxOptionContext<T, O> {\n return true;\n }\n}\n\n/** Structural directive projecting a custom template for the empty-results state. Context: `{ $implicit: query }`. */\n@Directive({ selector: '[twComboboxEmpty]' })\nexport class ComboboxEmptyTemplateDirective {\n /** @internal */\n readonly templateRef = inject(TemplateRef<{ $implicit: string }>);\n\n /** @internal */\n static ngTemplateContextGuard(\n _dir: ComboboxEmptyTemplateDirective,\n _ctx: unknown,\n ): _ctx is { $implicit: string } {\n return true;\n }\n}\n\n/** Structural directive projecting a custom template above the list while `loading=true`. */\n@Directive({ selector: '[twComboboxLoading]' })\nexport class ComboboxLoadingTemplateDirective {\n /** @internal */\n readonly templateRef = inject(TemplateRef<unknown>);\n}\n\n/** Attribute directive marking a leading adornment projected inside the input row. */\n@Directive({\n selector: '[twComboboxPrefix]',\n host: { class: 'flex items-center shrink-0 text-fg-muted' },\n})\nexport class ComboboxPrefixDirective {}\n\n/** Attribute directive marking a trailing adornment projected inside the input row, before the clear button. */\n@Directive({\n selector: '[twComboboxSuffix]',\n host: { class: 'flex items-center shrink-0 text-fg-muted' },\n})\nexport class ComboboxSuffixDirective {}\n\n// ── Component ──\n\n/**\n * Editable single-select typeahead form control. Follows the WAI-ARIA 1.2\n * combobox + listbox pattern with `aria-activedescendant` (DOM focus stays\n * on the `<input>`). Supports local filtering, async result streams via\n * `queryChange`, grouped options, strict and free-text modes, and full\n * integration with template-driven, reactive, and signal forms plus\n * `tw-form-field`.\n */\n@Component({\n selector: 'tw-combobox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TW_FORM_FIELD_CONTROL,\n useExisting: forwardRef(() => ComboboxComponent),\n },\n ],\n template: `\n <div #triggerSurface [class]=\"triggerClasses()\">\n <ng-content select=\"[twComboboxPrefix]\" />\n\n <input\n #inputEl\n type=\"text\"\n [id]=\"hostId\"\n [class]=\"inputClasses()\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open() ? 'true' : 'false'\"\n [attr.aria-controls]=\"open() ? listboxId : null\"\n [attr.aria-activedescendant]=\"open() ? (activeOptionId() || null) : null\"\n [attr.aria-required]=\"requiredInput() ? 'true' : null\"\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"resolvedLabelledBy() || null\"\n [attr.aria-describedby]=\"resolvedDescribedBy() || null\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n [placeholder]=\"placeholder() ?? null\"\n [value]=\"inputValue()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n <ng-content select=\"[twComboboxSuffix]\" />\n\n @if (showSpinner()) {\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n [class]=\"spinnerClasses()\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"3\" opacity=\"0.25\" />\n <path\n d=\"M21 12a9 9 0 0 0-9-9\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n />\n </svg>\n }\n\n @if (showClearButton()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n [class]=\"clearButtonClasses()\"\n aria-label=\"Clear\"\n (mousedown)=\"onClearMousedown($event)\"\n (click)=\"onClearClick($event)\"\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" class=\"size-3\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 8.586 4.707 3.293a1 1 0 0 0-1.414 1.414L8.586 10l-5.293 5.293a1 1 0 1 0 1.414 1.414L10 11.414l5.293 5.293a1 1 0 0 0 1.414-1.414L11.414 10l5.293-5.293a1 1 0 0 0-1.414-1.414L10 8.586Z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n }\n\n @if (showChevron()) {\n <svg\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n [class]=\"chevronClasses()\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 0 1 1.06.02L10 11.06l3.71-3.83a.75.75 0 1 1 1.08 1.04l-4.25 4.39a.75.75 0 0 1-1.08 0L5.21 8.27a.75.75 0 0 1 .02-1.06Z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n </div>\n\n <span hidden>\n <ng-content />\n </span>\n `,\n host: {\n '[class]': 'rootClasses()',\n },\n})\nexport class ComboboxComponent<T = unknown>\n implements ControlValueAccessor, FormFieldControl<T | string | null>, OnInit\n{\n // ── Inputs ──\n\n /** Array of options to render in the popover. Accepts plain records or `TwComboboxOption<T>`. */\n readonly options = input<readonly unknown[]>([]);\n\n /** Accessor returning the visible label for an option. Used by the default filter and the trigger label resolver. */\n readonly optionLabel = input<(option: unknown) => string>(defaultOptionLabel);\n\n /** Accessor returning the value emitted via `valueCommit` when this option is picked. */\n readonly optionValue = input<(option: unknown) => T>(defaultOptionValue as (option: unknown) => T);\n\n /** Accessor returning whether an option is non-interactive. */\n readonly optionDisabled = input<(option: unknown) => boolean>(defaultOptionDisabled);\n\n /** Accessor returning a group label. Options sharing a group render under a labelled `role=\"group\"` region. */\n readonly optionGroup = input<(option: unknown) => string | undefined>(defaultOptionGroup);\n\n /** Accessor returning an optional secondary description rendered under the label in the default option row. */\n readonly optionDescription = input<(option: unknown) => string | undefined>(defaultOptionDescription);\n\n /** Filter function applied client-side whenever `inputValue` changes. Pass `null` to disable client filtering (async mode). Defaults to case-insensitive `startsWith` on the label. */\n readonly filterFn = input<((option: unknown, query: string) => boolean) | null>(defaultStartsWithFilter);\n\n /** When `true`, free-text commits are rejected — the input reverts to the last committed label on blur. */\n readonly strict = input<boolean>(false);\n\n /** Placeholder shown when the input is empty. */\n readonly placeholder = input<string | undefined>(undefined);\n\n /** Disables the input and prevents the popover from opening. */\n readonly disabledInput = input<boolean>(false, { alias: 'disabled' });\n\n /** Sets `aria-required=\"true\"` on the input. */\n readonly requiredInput = input<boolean>(false, { alias: 'required' });\n\n /** Controls trigger padding and font size per the inline padding scale. */\n readonly size = input<TwSize>('md');\n\n /** Semantic color for the focus ring. */\n readonly color = input<TwColor>('primary');\n\n /** Whether the trailing chevron affordance is rendered. */\n // TRUE-default: the chevron signals the dropdown affordance; without it the\n // combobox reads as a plain input. Opt-out is for inline search inputs.\n readonly showChevron = input<boolean>(true);\n\n /** Whether the inline clear (×) button appears while `inputValue` is non-empty. */\n // TRUE-default: the clear affordance is the expected combobox UX once a value\n // is set; opt-out is for required-only flows.\n readonly clearable = input<boolean>(true);\n\n /** When `true`, shows an in-popover spinner and an inline spinner in the trigger while the popover is open. */\n readonly loading = input<boolean>(false);\n\n /** Debounce window (ms) before `queryChange` emits. Local filtering is not debounced. */\n readonly queryDebounce = input<number>(150);\n\n /** Minimum query length before the popover opens automatically. `0` opens on focus. */\n readonly minQueryLength = input<number>(0);\n\n /** Whether the popover opens automatically when the input receives focus. */\n // TRUE-default: clicking into a combobox opens the dropdown — standard select-\n // like UX. Opt-out is for command-palette-style flows triggered only by typing.\n readonly openOnFocus = input<boolean>(true);\n\n /** Maximum height (px) of the popover scroll region. */\n readonly panelMaxHeight = input<number>(256);\n\n /** 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. */\n readonly panelWidth = input<'trigger' | 'auto' | number | string>('trigger');\n\n /** Extra class(es) appended to the overlay panel for consumer customization. */\n readonly panelClass = input<string | readonly string[]>('');\n\n /** CDK overlay scroll strategy. */\n readonly scrollStrategy = input<'reposition' | 'close' | 'block'>('reposition');\n\n /** Pixel offset between the input and the popover. */\n readonly offset = input<number>(4);\n\n /** Fallback empty-state message when no `*twComboboxEmpty` template is projected. */\n readonly emptyMessage = input<string>('No results');\n\n /** Equality comparator used to reconcile `value` with options during `writeValue`. */\n readonly compareWith = input<(a: T, b: T) => boolean>(Object.is);\n\n /** Accessible name for the combobox input. */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** ID of an external label element. */\n readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n /** ID of an external descriptor element. */\n readonly ariaDescribedby = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n\n /** Per-instance override of the {@link ErrorStateMatcher}. When omitted, the combobox uses the `TW_ERROR_STATE_MATCHER` token's value. */\n readonly errorStateMatcher = input<ErrorStateMatcher | undefined>(undefined);\n\n // ── Models ──\n\n /** Two-way bound committed value. May be an option's value (`T`), a typed string (free-text mode), or `null`. */\n readonly value = model<T | string | null>(null);\n\n /** Two-way bound visible text in the input. Bound separately from `value` so async consumers can drive the query. */\n readonly inputValue = model<string>('');\n\n /** Two-way bound open state of the popover. */\n readonly open = model<boolean>(false);\n\n // ── Outputs ──\n\n /** Fires after the query text changes, debounced by `queryDebounce`. Async-mode consumers subscribe to this to fetch results. */\n readonly queryChange = output<string>();\n\n /** Fires when the user picks an option from the list (not on free-text commit). */\n readonly optionSelected = output<TwComboboxOptionSelectedEvent<T>>();\n\n /** Fires whenever `value` changes, with a `source` discriminator distinguishing option / free-text / reset / programmatic origin. */\n readonly valueCommit = output<TwComboboxValueCommitEvent<T>>();\n\n /** Fires when the popover opens or closes. */\n readonly openedChange = output<TwComboboxOpenedEvent>();\n\n // ── Content queries ──\n\n /** @internal */\n readonly optionTemplateChild = contentChild(ComboboxOptionTemplateDirective);\n /** @internal */\n readonly emptyTemplateChild = contentChild(ComboboxEmptyTemplateDirective);\n /** @internal */\n readonly loadingTemplateChild = contentChild(ComboboxLoadingTemplateDirective);\n\n // ── View queries ──\n\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n private readonly triggerSurfaceRef = viewChild<ElementRef<HTMLDivElement>>('triggerSurface');\n\n // ── Injected deps ──\n\n private readonly overlayService = inject(Overlay);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly liveAnnouncer = inject(LiveAnnouncer);\n private readonly platform = inject(Platform);\n private readonly formField = inject(FormFieldComponent, { optional: true });\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n private readonly parentForm = inject(NgForm, { optional: true });\n private readonly parentFormGroup = inject(FormGroupDirective, { optional: true });\n private readonly defaultMatcher = inject(TW_ERROR_STATE_MATCHER);\n\n // ── Identity ──\n\n private readonly uid = nextComboboxId++;\n /** @internal */\n readonly hostId = `tw-combobox-${this.uid}`;\n /** @internal */\n readonly listboxId = `${this.hostId}-listbox`;\n /** @internal */\n readonly optionId = (index: number): string => `${this.hostId}-option-${index}`;\n /** @internal */\n readonly groupHeaderId = (group: string): string =>\n `${this.hostId}-group-${group.replace(/\\s+/g, '-').toLowerCase()}`;\n\n // ── Internal state signals ──\n\n /** @internal */\n readonly composing = signal(false);\n /** @internal */\n readonly focusedSignal = signal(false);\n private readonly cvaDisabled = signal(false);\n private readonly _ngControlRev = signal(0);\n private readonly _formSubmitRev = signal(0);\n private readonly describedByIdsSignal = signal<readonly string[]>([]);\n private readonly labelledByIdsSignal = signal<readonly string[]>([]);\n /** @internal */\n readonly lastCommittedLabel = signal<string>('');\n private readonly pendingWriteValue = signal<T | string | null | typeof UNRESOLVED>(UNRESOLVED);\n private readonly closingSignal = signal(false);\n /** Re-runs the input handler once after IME composition ends. */\n private composingPendingValue: string | null = null;\n\n private onChange: (value: T | string | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n private overlayRef: OverlayRef | null = null;\n private readonly overlayInstanceSignal = signal<ComboboxOverlayComponent<T> | null>(null);\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private queryDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n private announceTimer: ReturnType<typeof setTimeout> | null = null;\n private resizeObserver: ResizeObserver | null = null;\n\n private get overlayInstance(): ComboboxOverlayComponent<T> | null {\n return this.overlayInstanceSignal();\n }\n\n // ── Derived state ──\n\n /** @internal */\n readonly isDisabled = computed(() => this.disabledInput() || this.cvaDisabled());\n\n /** @internal Auto-naked when wrapped in tw-form-field. */\n readonly naked = computed(() => !!this.formField);\n\n /** @internal Resolved visible options (after filter, with derived view fields). */\n readonly visibleOptions = computed<readonly ComboboxVisibleOption<T>[]>(() => {\n const opts = this.options();\n const labelFn = this.optionLabel();\n const valueFn = this.optionValue();\n const disabledFn = this.optionDisabled();\n const groupFn = this.optionGroup();\n const descFn = this.optionDescription();\n const filter = this.filterFn();\n const query = this.inputValue();\n const filtered = filter === null ? opts : opts.filter((o) => filter(o, query));\n return filtered.map((option) => ({\n option,\n label: labelFn(option),\n value: valueFn(option),\n disabled: disabledFn(option),\n group: groupFn(option),\n description: descFn(option),\n }));\n });\n\n /** @internal Rendered rows (group headers + option rows). */\n readonly renderedRows = computed<readonly ComboboxRenderedRow<T>[]>(() => {\n const visible = this.visibleOptions();\n const rows: ComboboxRenderedRow<T>[] = [];\n let currentGroup: string | undefined;\n visible.forEach((v, index) => {\n if (v.group !== currentGroup) {\n if (v.group !== undefined) {\n rows.push({ kind: 'group', group: v.group });\n }\n currentGroup = v.group;\n }\n rows.push({ kind: 'option', option: v, index });\n });\n return rows;\n });\n\n /** Returns the index of the first enabled option, or -1 when none. */\n private firstEnabledIndex(visible: readonly ComboboxVisibleOption<T>[] = this.visibleOptions()): number {\n for (let i = 0; i < visible.length; i++) {\n if (!visible[i].disabled) return i;\n }\n return -1;\n }\n\n /** Returns the index of the last enabled option, or -1 when none. */\n private lastEnabledIndex(visible: readonly ComboboxVisibleOption<T>[] = this.visibleOptions()): number {\n for (let i = visible.length - 1; i >= 0; i--) {\n if (!visible[i].disabled) return i;\n }\n return -1;\n }\n\n /** @internal Active descendant index, resets to the first enabled when the visible list changes. */\n readonly activeIndex = linkedSignal<readonly ComboboxVisibleOption<T>[], number>({\n source: () => this.visibleOptions(),\n computation: (visible) => {\n for (let i = 0; i < visible.length; i++) {\n if (!visible[i].disabled) return i;\n }\n return -1;\n },\n });\n\n /** @internal */\n readonly activeOption = computed(() => {\n const idx = this.activeIndex();\n const visible = this.visibleOptions();\n if (idx < 0 || idx >= visible.length) return null;\n return visible[idx];\n });\n\n /** @internal */\n readonly activeOptionId = computed(() => {\n const idx = this.activeIndex();\n if (idx < 0 || idx >= this.visibleOptions().length) return null;\n return this.optionId(idx);\n });\n\n /** @internal */\n readonly isEmpty = computed(() => this.inputValue().length === 0 && this.value() == null);\n\n /** @internal */\n readonly showClearButton = computed(\n () => this.clearable() && !this.isDisabled() && this.inputValue().length > 0,\n );\n\n /** @internal */\n readonly showSpinner = computed(() => this.loading());\n\n /** @internal */\n readonly resolvedDescribedBy = computed(() => {\n const extra = this.describedByIdsSignal();\n const user = this.ariaDescribedby();\n const merged = [...extra];\n if (user) merged.push(...user.split(/\\s+/).filter(Boolean));\n return merged.length ? merged.join(' ') : '';\n });\n\n /** @internal */\n readonly resolvedLabelledBy = computed(() => {\n const extra = this.labelledByIdsSignal();\n const user = this.ariaLabelledby();\n const merged = [...extra];\n if (user) merged.push(...user.split(/\\s+/).filter(Boolean));\n return merged.length ? merged.join(' ') : '';\n });\n\n /** @internal Error-state per the configured `ErrorStateMatcher`. Reads the bound `NgControl.invalid` through the matcher. */\n readonly errorState: Signal<boolean> = computed(() => {\n this._ngControlRev();\n this._formSubmitRev();\n const matcher = this.errorStateMatcher() ?? this.defaultMatcher;\n const form: TwFormSubmitted | null =\n (this.parentFormGroup as TwFormSubmitted | null) ??\n (this.parentForm as TwFormSubmitted | null);\n return matcher.isErrorState(this.ngControl?.control ?? null, form);\n });\n\n // ── tv() output ──\n\n private readonly variantResult = computed(() =>\n comboboxVariants({\n size: this.size(),\n color: this.color(),\n disabled: this.isDisabled(),\n open: this.open(),\n naked: this.naked(),\n errorState: this.errorState(),\n }),\n );\n\n /** @internal */\n readonly rootClasses = computed(() => this.variantResult().root());\n /** @internal */\n readonly triggerClasses = computed(() => this.variantResult().trigger());\n /** @internal */\n readonly inputClasses = computed(() => this.variantResult().input());\n /** @internal */\n readonly clearButtonClasses = computed(() => this.variantResult().clearButton());\n /** @internal */\n readonly chevronClasses = computed(() => this.variantResult().chevron());\n /** @internal */\n readonly spinnerClasses = computed(() => this.variantResult().spinner());\n\n // ── FormFieldControl impl ──\n\n /** @internal */\n readonly id: Signal<string> = computed(() => this.hostId);\n /** @internal */\n readonly focused: Signal<boolean> = this.focusedSignal.asReadonly();\n /** @internal */\n readonly empty: Signal<boolean> = this.isEmpty;\n /** @internal */\n readonly disabled: Signal<boolean> = this.isDisabled;\n /** @internal */\n readonly required: Signal<boolean> = computed(() => this.requiredInput());\n /** @internal */\n readonly controlType = 'combobox';\n /** @internal */\n readonly userAriaDescribedBy: Signal<string | undefined> = computed(() => this.ariaDescribedby());\n /** @internal */\n readonly userAriaLabelledby: Signal<string | undefined> = computed(() => this.ariaLabelledby());\n\n // ── Constructor ──\n\n constructor() {\n // Material-style CVA wiring: declare ourselves as the value accessor on any\n // host-level `NgControl` (FormControlDirective, NgModel, etc.). This avoids\n // the circular-DI that a static `NG_VALUE_ACCESSOR` provider would create\n // because `NgControl` is injected with `self: true` on the same element.\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n // Mirror parent `open` model into overlay lifecycle.\n effect(() => {\n const shouldOpen = this.open();\n const disabled = this.isDisabled();\n if (disabled && this.overlayInstance) {\n this.closeOverlay({ silent: false });\n return;\n }\n if (shouldOpen && !this.overlayInstance && !disabled && !this.closingSignal()) {\n this.openOverlay();\n } else if (!shouldOpen && this.overlayInstance && !this.closingSignal()) {\n this.closeOverlay({ silent: false });\n }\n });\n\n // Push state into overlay component whenever anything relevant changes.\n // While the panel is animating out, freeze content updates so list mutations\n // (e.g. the input filtering down after commitOption) don't visually flicker\n // the panel during the leave animation.\n effect(() => {\n const instance = this.overlayInstance;\n if (!instance) return;\n if (this.closingSignal()) return;\n const renderedRows = this.renderedRows();\n const activeIndex = this.activeIndex();\n const panelMaxHeight = this.panelMaxHeight();\n const emptyMessage = this.emptyMessage();\n const query = this.inputValue();\n const loading = this.loading();\n const labelledBy = this.resolvedLabelledBy();\n const optionTemplate = this.optionTemplateChild()?.templateRef;\n const emptyTemplate = this.emptyTemplateChild()?.templateRef;\n const loadingTemplate = this.loadingTemplateChild()?.templateRef;\n const customPanelClass = this.resolvePanelClass();\n untracked(() => {\n instance.renderedRows.set(renderedRows);\n instance.activeIndex.set(activeIndex);\n instance.panelMaxHeight.set(panelMaxHeight);\n instance.emptyMessage.set(emptyMessage);\n instance.query.set(query);\n instance.loading.set(loading);\n instance.labelledBy.set(labelledBy);\n instance.optionTemplate.set(optionTemplate as TemplateRef<TwComboboxOptionContext<T>> | undefined);\n instance.emptyTemplate.set(emptyTemplate);\n instance.loadingTemplate.set(loadingTemplate);\n instance.customPanelClass.set(customPanelClass);\n instance.listboxId.set(this.listboxId);\n instance.optionIdFn.set(this.optionId);\n instance.groupHeaderIdFn.set(this.groupHeaderId);\n instance.isSelected.set((index: number) => this.isVisibleOptionSelected(index));\n });\n });\n\n // Late-arriving options reconciler for the async writeValue race.\n effect(() => {\n const opts = this.options();\n const pending = untracked(this.pendingWriteValue);\n if (pending === UNRESOLVED) return;\n if (opts.length === 0) return;\n const cmp = this.compareWith();\n const valueFn = this.optionValue();\n const labelFn = this.optionLabel();\n const match = opts.find((o) => {\n try {\n return cmp(valueFn(o), pending as T);\n } catch {\n return false;\n }\n });\n untracked(() => {\n if (match) {\n this.inputValue.set(labelFn(match));\n this.lastCommittedLabel.set(labelFn(match));\n }\n // Always clear the sentinel — subsequent options changes won't re-resolve.\n this.pendingWriteValue.set(UNRESOLVED);\n });\n });\n\n // Debounced LiveAnnouncer result-count announcements.\n effect(() => {\n const visible = this.visibleOptions();\n const query = this.inputValue();\n const isOpen = this.open();\n untracked(() => {\n if (!isOpen) return;\n this.clearAnnounceTimer();\n this.announceTimer = setTimeout(() => {\n const count = visible.length;\n const message =\n count === 0\n ? `No results for ${query}`\n : count === 1\n ? '1 result'\n : `${count} results`;\n this.liveAnnouncer.announce(message, 'polite');\n }, ANNOUNCE_DEBOUNCE);\n });\n });\n\n // FocusMonitor for blur → onTouched + focused state.\n const monitorSub = this.focusMonitor\n .monitor(this.elementRef, true)\n .subscribe((origin) => {\n const wasFocused = this.focusedSignal();\n this.focusedSignal.set(!!origin);\n if (!origin && wasFocused) {\n this.onTouched();\n // Blur often flips `touched` on the bound `NgControl`; bump the\n // revision so `errorState` recomputes.\n this._ngControlRev.update((n) => n + 1);\n }\n });\n\n this.destroyRef.onDestroy(() => {\n monitorSub.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.clearCloseTimer();\n this.clearQueryDebounceTimer();\n this.clearAnnounceTimer();\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.overlayInstanceSignal.set(null);\n });\n }\n\n // ── Public methods ──\n\n /** Opens the popover. No-op when disabled or already open. */\n openPanel(): void {\n if (this.isDisabled() || this.open()) return;\n this.open.set(true);\n }\n\n /** Closes the popover. No-op when already closed. */\n closePanel(): void {\n if (!this.open()) return;\n this.open.set(false);\n }\n\n /** Programmatically focuses the input. */\n focus(): void {\n this.inputRef()?.nativeElement.focus();\n }\n\n // ── Visible-option helpers ──\n\n /** @internal */\n isVisibleOptionSelected(index: number): boolean {\n const visible = this.visibleOptions();\n if (index < 0 || index >= visible.length) return false;\n const current = this.value();\n if (current === null || current === undefined) return false;\n const cmp = this.compareWith();\n try {\n return cmp(visible[index].value, current as T);\n } catch {\n return false;\n }\n }\n\n // ── Input event handlers ──\n\n /** @internal */\n onInput(event: Event): void {\n if (this.composing()) {\n // Defer; we'll re-run with the final value on compositionend.\n this.composingPendingValue = (event.target as HTMLInputElement).value;\n return;\n }\n const target = event.target as HTMLInputElement;\n const value = target.value;\n this.inputValue.set(value);\n this.scheduleQueryEmit(value);\n // Open if not blocked by minQueryLength and not disabled.\n if (!this.isDisabled() && value.length >= this.minQueryLength()) {\n if (!this.open()) {\n this.open.set(true);\n }\n } else if (value.length < this.minQueryLength() && this.open()) {\n this.open.set(false);\n }\n }\n\n /** @internal */\n onCompositionStart(): void {\n this.composing.set(true);\n }\n\n /** @internal */\n onCompositionEnd(event: CompositionEvent): void {\n this.composing.set(false);\n const target = event.target as HTMLInputElement;\n const value = target.value || this.composingPendingValue || '';\n this.composingPendingValue = null;\n // Re-run the input handler logic once with the resolved value.\n this.inputValue.set(value);\n this.scheduleQueryEmit(value);\n if (!this.isDisabled() && value.length >= this.minQueryLength() && !this.open()) {\n this.open.set(true);\n }\n }\n\n /** @internal */\n onFocus(): void {\n if (this.isDisabled()) return;\n if (this.openOnFocus() && this.inputValue().length >= this.minQueryLength() && !this.open()) {\n this.open.set(true);\n }\n }\n\n /** @internal */\n onBlur(): void {\n if (this.composing()) return;\n // Don't commit while the user is interacting with the overlay (option mousedown\n // calls preventDefault to keep focus on the input, so blur here means real focus loss).\n if (this.isDisabled()) return;\n this.commit('blur');\n }\n\n /** @internal */\n onKeydown(event: KeyboardEvent): void {\n if (this.composing()) return;\n if (this.isDisabled()) return;\n const key = event.key;\n\n // Alt+Arrow combos\n if (event.altKey && key === 'ArrowDown') {\n event.preventDefault();\n this.openPanel();\n return;\n }\n if (event.altKey && key === 'ArrowUp') {\n event.preventDefault();\n this.closePanel();\n return;\n }\n\n switch (key) {\n case 'ArrowDown': {\n event.preventDefault();\n if (!this.open()) {\n this.openPanel();\n this.moveActiveTo(this.firstEnabledIndex(), 1);\n } else {\n this.moveActive(1);\n }\n return;\n }\n case 'ArrowUp': {\n event.preventDefault();\n if (!this.open()) {\n this.openPanel();\n this.moveActiveTo(this.lastEnabledIndex(), -1);\n } else {\n this.moveActive(-1);\n }\n return;\n }\n case 'Home': {\n if (this.inputValue().length === 0 || event.altKey) {\n event.preventDefault();\n if (!this.open()) this.openPanel();\n this.moveActiveTo(0, 1);\n }\n return;\n }\n case 'End': {\n if (this.inputValue().length === 0 || event.altKey) {\n event.preventDefault();\n if (!this.open()) this.openPanel();\n this.moveActiveTo(this.visibleOptions().length - 1, -1);\n }\n return;\n }\n case 'Enter': {\n const active = this.activeOption();\n if (this.open() && active && !active.disabled) {\n event.preventDefault();\n event.stopPropagation();\n this.commitOption(active, 'option');\n return;\n }\n // Form-submit passthrough: do NOT call preventDefault.\n return;\n }\n case 'Escape': {\n if (this.open()) {\n event.preventDefault();\n event.stopPropagation();\n this.inputValue.set(this.lastCommittedLabel());\n this.closePanel();\n } else if (this.clearable() && this.inputValue().length > 0) {\n event.preventDefault();\n this.clear();\n }\n return;\n }\n case 'Tab': {\n // Commit (no preventDefault) so focus moves naturally.\n this.commit('tab');\n return;\n }\n case 'Backspace': {\n // Explicit no-op on empty input — do not close the popover.\n if (this.inputValue().length === 0) {\n event.preventDefault();\n }\n return;\n }\n default:\n return;\n }\n }\n\n // ── Clear button ──\n\n /** @internal — preventDefault to keep DOM focus on the input. */\n onClearMousedown(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n /** @internal */\n onClearClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.clear();\n this.inputRef()?.nativeElement.focus();\n }\n\n /** Clears the input and committed value, emitting `valueCommit({ source: 'reset' })`. */\n clear(): void {\n if (this.isDisabled()) return;\n this.value.set(null);\n this.inputValue.set('');\n this.lastCommittedLabel.set('');\n this.valueCommit.emit({ value: null, source: 'reset' });\n this.onChange(null);\n this.closePanel();\n }\n\n // ── Active-index navigation ──\n\n private moveActive(delta: 1 | -1): void {\n const visible = this.visibleOptions();\n if (visible.length === 0) {\n this.activeIndex.set(-1);\n return;\n }\n const n = visible.length;\n let idx = this.activeIndex();\n if (idx < 0) idx = delta > 0 ? -1 : n;\n for (let i = 0; i < n; i++) {\n idx = (idx + delta + n) % n;\n if (!visible[idx].disabled) {\n this.activeIndex.set(idx);\n this.scrollActiveIntoView();\n return;\n }\n }\n }\n\n private moveActiveTo(startIndex: number, direction: 1 | -1): void {\n const visible = this.visibleOptions();\n if (visible.length === 0) {\n this.activeIndex.set(-1);\n return;\n }\n let i = Math.max(0, Math.min(startIndex, visible.length - 1));\n const max = visible.length;\n for (let n = 0; n < max; n++) {\n if (!visible[i].disabled) {\n this.activeIndex.set(i);\n this.scrollActiveIntoView();\n return;\n }\n i += direction;\n if (i < 0 || i >= visible.length) return;\n }\n }\n\n private scrollActiveIntoView(): void {\n if (!this.platform.isBrowser) return;\n queueMicrotask(() => {\n const id = this.activeOptionId();\n if (!id) return;\n const el = document.getElementById(id);\n if (el && typeof el.scrollIntoView === 'function') {\n el.scrollIntoView({ block: 'nearest', behavior: 'auto' });\n }\n });\n }\n\n // ── Commit resolver ──\n\n /** @internal */\n commit(source: 'enter' | 'blur' | 'tab'): void {\n if (this.isDisabled() || this.composing()) return;\n\n const rawText = this.inputValue();\n const text = rawText.trim();\n const active = this.activeOption();\n const labelFn = this.optionLabel();\n const disabledFn = this.optionDisabled();\n\n // 1. Active option wins.\n if (active && !active.disabled) {\n this.commitOption(active, 'option');\n return;\n }\n\n // 2. Exact label match auto-resolves.\n const exact = this.options().find(\n (o) => !disabledFn(o) && labelFn(o).trim() === text && text.length > 0,\n );\n if (exact) {\n const valueFn = this.optionValue();\n const groupFn = this.optionGroup();\n const descFn = this.optionDescription();\n this.commitOption(\n {\n option: exact,\n label: labelFn(exact),\n value: valueFn(exact),\n disabled: false,\n group: groupFn(exact),\n description: descFn(exact),\n },\n 'option',\n );\n return;\n }\n\n // 3. Empty text → null.\n if (text === '') {\n const wasNonNull = this.value() !== null || this.inputValue() !== '';\n this.value.set(null);\n this.inputValue.set('');\n this.lastCommittedLabel.set('');\n if (wasNonNull) {\n this.valueCommit.emit({ value: null, source: 'reset' });\n this.onChange(null);\n }\n this.closePanel();\n return;\n }\n\n // 4. No match.\n if (this.strict()) {\n this.inputValue.set(this.lastCommittedLabel());\n if (source !== 'enter') {\n this.closePanel();\n } else if (this.visibleOptions().length === 0) {\n this.closePanel();\n }\n return;\n }\n\n // Free-text commit.\n this.value.set(text);\n this.inputValue.set(text);\n this.lastCommittedLabel.set(text);\n this.valueCommit.emit({ value: text, source: 'free-text' });\n this.onChange(text);\n this.closePanel();\n }\n\n /** @internal */\n commitOption(option: ComboboxVisibleOption<T>, source: 'option'): void {\n const value = option.value;\n const label = option.label;\n this.value.set(value);\n this.inputValue.set(label);\n this.lastCommittedLabel.set(label);\n this.optionSelected.emit({ option: option.option, value, label });\n this.valueCommit.emit({ value, source });\n this.onChange(value);\n this.liveAnnouncer.announce(`${label} selected`, 'polite');\n this.closePanel();\n }\n\n // ── Query debounce ──\n\n private scheduleQueryEmit(value: string): void {\n this.clearQueryDebounceTimer();\n const delay = this.queryDebounce();\n this.queryDebounceTimer = setTimeout(() => {\n this.queryDebounceTimer = null;\n this.queryChange.emit(value);\n }, delay);\n }\n\n private clearQueryDebounceTimer(): void {\n if (this.queryDebounceTimer !== null) {\n clearTimeout(this.queryDebounceTimer);\n this.queryDebounceTimer = null;\n }\n }\n\n private clearAnnounceTimer(): void {\n if (this.announceTimer !== null) {\n clearTimeout(this.announceTimer);\n this.announceTimer = null;\n }\n }\n\n // ── Overlay lifecycle ──\n\n private openOverlay(): void {\n this.ensureOverlay();\n this.attachOverlayComponent();\n this.subscribeBackdrop();\n this.subscribeOverlayEscape();\n // Reset active to first enabled when opening.\n this.activeIndex.set(this.firstEnabledIndex());\n this.liveAnnouncer.announce(\n `${this.visibleOptions().length} suggestions available`,\n 'polite',\n );\n this.openedChange.emit({\n open: true,\n trigger: this.inputRef()?.nativeElement ?? this.elementRef.nativeElement,\n });\n }\n\n private closeOverlay(_opts: { silent: boolean }): void {\n if (this.closingSignal() || !this.overlayInstance) return;\n this.closingSignal.set(true);\n this.clearAnnounceTimer();\n\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n this.overlayInstanceSignal.set(null);\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n untracked(() => this.open.set(false));\n this.closingSignal.set(false);\n this.openedChange.emit({\n open: false,\n trigger: this.inputRef()?.nativeElement ?? this.elementRef.nativeElement,\n });\n }, ANIMATION_DURATION);\n }\n\n private ensureOverlay(): void {\n if (this.overlayRef) {\n this.updateOverlaySize();\n return;\n }\n const positionStrategy = this.overlayService\n .position()\n .flexibleConnectedTo(this.triggerSurfaceRef()?.nativeElement ?? this.elementRef.nativeElement)\n .withPositions(buildSelectLikePositions(this.offset()))\n .withFlexibleDimensions(false)\n .withPush(false)\n .withViewportMargin(8);\n\n this.overlayRef = this.overlayService.create({\n positionStrategy,\n scrollStrategy: resolveSelectScrollStrategy(this.scrollStrategy(), this.overlayService),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: 'tw-combobox-panel',\n });\n this.installResizeObserver();\n this.updateOverlaySize();\n }\n\n private installResizeObserver(): void {\n if (!this.platform.isBrowser || typeof ResizeObserver === 'undefined') return;\n const target = this.elementRef.nativeElement;\n this.resizeObserver?.disconnect();\n this.resizeObserver = new ResizeObserver(() => this.updateOverlaySize());\n this.resizeObserver.observe(target);\n }\n\n private updateOverlaySize(): void {\n if (!this.overlayRef) return;\n const width = this.panelWidth();\n if (width === 'trigger') {\n const anchor = this.triggerSurfaceRef()?.nativeElement ?? this.elementRef.nativeElement;\n const rect = anchor.getBoundingClientRect();\n this.overlayRef.updateSize({ width: rect.width });\n } else if (width === 'auto') {\n this.overlayRef.updateSize({ width: undefined, minWidth: undefined });\n } else if (typeof width === 'number') {\n this.overlayRef.updateSize({ width });\n } else {\n this.overlayRef.updateSize({ width });\n }\n }\n\n private attachOverlayComponent(): void {\n if (!this.overlayRef) return;\n const portal = new ComponentPortal<ComboboxOverlayComponent<T>>(\n ComboboxOverlayComponent as unknown as new () => ComboboxOverlayComponent<T>,\n this.viewContainerRef,\n this.injector,\n );\n const ref = this.overlayRef.attach(portal);\n const instance = ref.instance;\n instance.onOptionPick.set((index) => {\n const visible = this.visibleOptions();\n if (index < 0 || index >= visible.length) return;\n const opt = visible[index];\n if (opt.disabled) return;\n this.commitOption(opt, 'option');\n });\n instance.onOptionHover.set((index) => {\n const visible = this.visibleOptions();\n if (index < 0 || index >= visible.length) return;\n if (visible[index].disabled) return;\n this.activeIndex.set(index);\n });\n this.overlayInstanceSignal.set(instance);\n }\n\n private subscribeBackdrop(): void {\n if (!this.overlayRef) return;\n const sub = this.overlayRef.backdropClick().subscribe(() => {\n this.closePanel();\n });\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n\n /**\n * Listens for `Escape` on the overlay's `keydownEvents()`. Mirrors\n * `SelectComponent` so focus inside the overlay panel (e.g., if the user\n * tabs into projected loading/empty templates) still dismisses cleanly.\n * The combobox's own `<input>` keydown handler already short-circuits\n * Escape when focus is on the input; this layer is the safety net for\n * panel-internal focus.\n */\n private subscribeOverlayEscape(): void {\n if (!this.overlayRef) return;\n const teardown = consumeOverlayEscape(this.overlayRef, (event) => {\n event.preventDefault();\n this.inputValue.set(this.lastCommittedLabel());\n this.closePanel();\n });\n this.destroyRef.onDestroy(() => teardown());\n }\n\n private resolvePanelClass(): string {\n const raw = this.panelClass();\n return Array.isArray(raw) ? raw.join(' ') : (raw as string);\n }\n\n private clearCloseTimer(): void {\n if (this.closeTimer !== null) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n // ── ControlValueAccessor ──\n\n writeValue(value: T | string | null): void {\n if (value === null || value === undefined) {\n this.value.set(null);\n this.inputValue.set('');\n this.lastCommittedLabel.set('');\n this.pendingWriteValue.set(UNRESOLVED);\n this.valueCommit.emit({ value: null, source: 'programmatic' });\n return;\n }\n // Store verbatim.\n this.value.set(value);\n const cmp = this.compareWith();\n const valueFn = this.optionValue();\n const labelFn = this.optionLabel();\n const match = this.options().find((o) => {\n try {\n return cmp(valueFn(o), value as T);\n } catch {\n return false;\n }\n });\n if (match) {\n const label = labelFn(match);\n this.inputValue.set(label);\n this.lastCommittedLabel.set(label);\n this.pendingWriteValue.set(UNRESOLVED);\n } else {\n const label = String(value);\n this.inputValue.set(label);\n this.lastCommittedLabel.set(label);\n this.pendingWriteValue.set(value);\n }\n this.valueCommit.emit({ value, source: 'programmatic' });\n }\n\n registerOnChange(fn: (value: T | string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n if (isDisabled && this.open()) {\n this.closePanel();\n }\n }\n\n // ── FormFieldControl methods ──\n\n /** @internal */\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set([...ids]);\n }\n\n /** @internal */\n setLabelledByIds(ids: string[]): void {\n this.labelledByIdsSignal.set([...ids]);\n }\n\n /** @internal */\n onContainerClick(_event: MouseEvent): void {\n if (this.isDisabled()) return;\n this.inputRef()?.nativeElement.focus();\n }\n\n ngOnInit(): void {\n // NgControl's `control` is set by the parent FormControl* directive before\n // children's `ngOnInit`. Subscribe here so errorState reacts to status/value\n // changes on the bound control.\n const ctrl = this.ngControl?.control;\n if (ctrl) {\n const streams = [ctrl.statusChanges, ctrl.valueChanges].filter(\n (s): s is NonNullable<typeof s> => !!s,\n );\n if (streams.length) {\n merge(...streams)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this._ngControlRev.update((n) => n + 1));\n }\n }\n\n const submit = this.parentFormGroup?.ngSubmit ?? this.parentForm?.ngSubmit;\n if (submit) {\n submit\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this._formSubmitRev.update((n) => n + 1));\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}