@cdevhub/ngx-tw 0.2.1 → 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.
- package/README.md +264 -49
- package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
- package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
- package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
- package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
- package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
- package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
- package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-button.mjs +24 -15
- package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
- package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-calendar.mjs +408 -215
- package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
- package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-carousel.mjs +144 -79
- package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
- package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-code-block.mjs +34 -20
- package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
- package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-combobox.mjs +195 -110
- package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +140 -73
- package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
- package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +393 -149
- package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
- package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
- package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
- package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
- package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
- package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
- package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
- package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
- package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
- package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
- package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
- package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
- package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-paginator.mjs +137 -71
- package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
- package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
- package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
- package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
- package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-select.mjs +217 -122
- package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
- package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
- package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
- package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
- package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-sort.mjs +44 -25
- package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
- package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
- package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
- package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
- package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
- package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
- package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
- package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tabs.mjs +101 -51
- package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
- package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-textarea.mjs +11 -7
- package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
- package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
- package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
- package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-toast.mjs +89 -55
- package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
- package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
- package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
- package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
- package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
- package/package.json +45 -20
- package/theme/index.css +10 -2
- package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
- package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
- package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
- package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
- package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
- package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
- package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
- package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
- package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
- package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
- package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
- package/types/cdevhub-ngx-tw-table.d.ts +30 -1
- package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
- package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
- package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
- package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
- package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
- package/types/cdevhub-ngx-tw.d.ts +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdevhub-ngx-tw-select.mjs","sources":["../../../projects/ngx-tw/select/select-overlay.ts","../../../projects/ngx-tw/select/select.ts","../../../projects/ngx-tw/select/cdevhub-ngx-tw-select.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { TwColor, TwSize } from '@cdevhub/ngx-tw/core';\nimport type {\n SelectEmptyTemplateDirective,\n SelectFooterTemplateDirective,\n SelectHeaderTemplateDirective,\n SelectOptionTemplateDirective,\n SelectRenderedRow,\n SelectVisibleOption,\n TwSelectOptionContext,\n} from './select';\n\n/**\n * Internal overlay panel for `tw-select`. Renders the header/search/listbox/empty/footer\n * regions and dispatches interaction callbacks back to the parent `SelectComponent`.\n * Not exported from the public API.\n */\n@Component({\n selector: 'tw-select-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 (headerTemplate(); as tpl) {\n <div class=\"border-b border-border p-2\">\n <ng-container *ngTemplateOutlet=\"tpl.templateRef\" />\n </div>\n }\n\n @if (searchable()) {\n <div class=\"p-2 border-b border-border\">\n <input\n #searchInput\n type=\"search\"\n [id]=\"searchInputId()\"\n [attr.aria-label]=\"'Search'\"\n [attr.aria-controls]=\"listboxId()\"\n [value]=\"search()\"\n class=\"w-full px-3 py-1.5 rounded-md border border-border bg-surface text-fg placeholder:text-fg-subtle focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500 transition-colors duration-normal motion-reduce:transition-none text-sm\"\n placeholder=\"Search…\"\n (input)=\"onSearchInputEvent($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n />\n </div>\n }\n\n <div\n #listboxEl\n role=\"listbox\"\n tabindex=\"-1\"\n [id]=\"listboxId()\"\n [attr.aria-multiselectable]=\"multiple() ? 'true' : null\"\n [style.maxHeight.px]=\"panelMaxHeight()\"\n class=\"flex-1 min-h-0 overflow-y-auto py-1 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500\"\n >\n @if (visibleOptions().length === 0) {\n @if (emptyTemplate(); as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl.templateRef; context: { $implicit: search() }\" />\n } @else {\n <div class=\"p-4 text-center text-sm text-fg-muted\">{{ emptyMessage() }}</div>\n }\n } @else {\n @for (row of renderedRows(); track trackRow($index, row)) {\n @if (row.kind === 'group-label') {\n <div role=\"group\" [attr.aria-label]=\"row.group\">\n <div class=\"px-3 py-1 text-xs font-semibold uppercase tracking-wide text-fg-subtle\">\n {{ row.group }}\n </div>\n </div>\n } @else {\n <!-- ARIA activedescendant listbox: keyboard navigation runs on the\n select trigger via aria-activedescendant. Options are click-only\n affordances and never DOM-focus, so they need no keydown handler\n or tabindex of their own. -->\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n role=\"option\"\n [id]=\"optionIdFn()(row.index)\"\n [attr.aria-selected]=\"selectedChecker()(row.index) ? 'true' : 'false'\"\n [attr.aria-disabled]=\"isOptionDisabled(row.index) || null\"\n [class]=\"\n computeOptionClass()(\n selectedChecker()(row.index),\n activeIndex() === row.index,\n isOptionDisabled(row.index)\n )\n \"\n (click)=\"onOptionClick(row.index, $event)\"\n (mouseenter)=\"onOptionMouseEnter(row.index)\"\n >\n @if (optionTemplate(); as tpl) {\n <ng-container\n *ngTemplateOutlet=\"\n tpl.templateRef;\n context: buildOptionContext(row.index, row.option)\n \"\n />\n } @else {\n <span class=\"flex-1 min-w-0 truncate\">{{ optionLabelFn()(row.option) }}</span>\n @if (selectedChecker()(row.index)) {\n <svg\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n [class]=\"checkmarkClasses()\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 5.29a1 1 0 0 1 .006 1.414l-7.2 7.3a1 1 0 0 1-1.42.007L3.29 9.296a1 1 0 0 1 1.42-1.41l3.794 3.82 6.79-6.886a1 1 0 0 1 1.41-.07Z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n }\n </div>\n }\n }\n }\n </div>\n\n @if (footerTemplate(); as tpl) {\n <div class=\"border-t border-border p-2\">\n <ng-container *ngTemplateOutlet=\"tpl.templateRef\" />\n </div>\n }\n `,\n})\nexport class SelectOverlayComponent<T = unknown> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // ── Config signals set by the parent component ──\n\n /** @internal */\n readonly size = signal<TwSize>('md');\n /** @internal */\n readonly color = signal<TwColor>('primary');\n /** @internal */\n readonly multiple = signal(false);\n /** @internal */\n readonly searchable = signal(false);\n /** @internal */\n readonly panelMaxHeight = signal(256);\n /** @internal */\n readonly emptyMessage = signal('No results');\n /** @internal */\n readonly search = signal('');\n /** @internal */\n readonly activeIndex = signal(-1);\n /** @internal */\n readonly renderedRows = signal<readonly SelectRenderedRow<T>[]>([]);\n /** @internal */\n readonly visibleOptions = signal<readonly SelectVisibleOption<T>[]>([]);\n /** @internal */\n readonly optionTemplate = signal<SelectOptionTemplateDirective<T> | undefined>(undefined);\n /** @internal */\n readonly emptyTemplate = signal<SelectEmptyTemplateDirective | undefined>(undefined);\n /** @internal */\n readonly headerTemplate = signal<SelectHeaderTemplateDirective | undefined>(undefined);\n /** @internal */\n readonly footerTemplate = signal<SelectFooterTemplateDirective | undefined>(undefined);\n /** @internal */\n readonly optionLabelFn = signal<(option: unknown) => string>(() => '');\n /** @internal */\n readonly selectedChecker = signal<(visibleIndex: number) => boolean>(() => false);\n /** @internal */\n readonly computeOptionClass = signal<\n (selected: boolean, active: boolean, disabled: boolean) => string\n >(() => '');\n /** @internal */\n readonly checkmarkColorClass = signal('');\n /** @internal */\n readonly panelClassValue = signal('');\n /** @internal */\n readonly listboxId = signal('');\n /** @internal */\n readonly searchInputId = signal('');\n /** @internal */\n readonly optionIdFn = signal<(index: number) => string>((i) => `option-${i}`);\n /** @internal */\n readonly leaving = signal(false);\n\n // ── Callbacks set by the parent component ──\n\n /** @internal */\n readonly onSearchInput = signal<(value: string) => void>(() => {});\n /** @internal */\n readonly onOptionSelect = signal<(index: number) => void>(() => {});\n /** @internal */\n readonly onOptionActivate = signal<(index: number) => void>(() => {});\n /** @internal */\n readonly onPanelKeydown = signal<(event: KeyboardEvent) => void>(() => {});\n\n // ── View refs ──\n\n private readonly searchInputRef = viewChild<ElementRef<HTMLInputElement>>('searchInput');\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-lg shadow-md overflow-hidden flex flex-col';\n const custom = this.panelClassValue();\n return custom ? `${base} ${custom}` : base;\n });\n\n /** @internal */\n readonly checkmarkClasses = computed(() => {\n // xs/sm densities use `size-3.5` (14px) for the checkmark — the half-step\n // is the only icon size that aligns with the surrounding text-xs metric.\n const size = this.size() === 'xs' || this.size() === 'sm' ? 'size-3.5' : 'size-4';\n return `${size} shrink-0 ml-auto ${this.checkmarkColorClass()}`;\n });\n\n // ── Template helpers ──\n\n /** @internal */\n isOptionDisabled(visibleIndex: number): boolean {\n const vis = this.visibleOptions();\n if (visibleIndex < 0 || visibleIndex >= vis.length) return false;\n return vis[visibleIndex].disabled;\n }\n\n /** @internal */\n buildOptionContext(visibleIndex: number, option: unknown): TwSelectOptionContext<T> {\n const v = this.visibleOptions()[visibleIndex];\n return {\n $implicit: option as TwSelectOptionContext<T>['$implicit'],\n label: v?.label ?? '',\n value: v?.value as T,\n selected: this.selectedChecker()(visibleIndex),\n active: this.activeIndex() === visibleIndex,\n disabled: v?.disabled ?? false,\n index: visibleIndex,\n };\n }\n\n /** @internal track function for @for. */\n trackRow(_index: number, row: SelectRenderedRow<T>): string | number {\n if (row.kind === 'group-label') return `g:${row.group}`;\n return `o:${row.index}`;\n }\n\n // ── Interactions ──\n\n /** @internal */\n onSearchInputEvent(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.onSearchInput()(target.value);\n }\n\n /** @internal */\n onSearchKeydown(event: KeyboardEvent): void {\n this.onPanelKeydown()(event);\n }\n\n /** @internal */\n onOptionClick(visibleIndex: number, event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.onOptionSelect()(visibleIndex);\n }\n\n /** @internal */\n onOptionMouseEnter(visibleIndex: number): void {\n if (this.isOptionDisabled(visibleIndex)) return;\n this.onOptionActivate()(visibleIndex);\n }\n\n /** @internal */\n focusSearchInput(): void {\n const el = this.searchInputRef()?.nativeElement;\n el?.focus();\n }\n\n /** @internal Exposes the root overlay element for tests. */\n getElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n afterNextRender,\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 isDevMode,\n linkedSignal,\n model,\n type OnInit,\n output,\n signal,\n type Signal,\n TemplateRef,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n type ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n} from '@angular/forms';\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 { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, Subscription } from 'rxjs';\nimport { tv } from 'tailwind-variants';\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 {\n FormFieldComponent,\n type FormFieldControl,\n TW_FORM_FIELD_CONTROL,\n} from '@cdevhub/ngx-tw/form-field';\nimport { SelectOverlayComponent } from './select-overlay';\n\n// ── Public types ──────────────────────────────────────────────────\n\n/** Canonical option shape. Consumers using arbitrary objects override the accessor inputs instead. */\nexport interface TwSelectOption<T> {\n /** Visible label. */\n label: string;\n /** Value emitted via `value` / `valueChange`. */\n value: T;\n /** When true, the option cannot be focused or selected. */\n disabled?: boolean;\n /** Optional group name. Options sharing a group render under a labelled `role=\"group\"` region. */\n group?: string;\n}\n\n/** Visual style of the select trigger. */\nexport type SelectVariant = 'default' | 'naked';\n\n/** Origin of a selection change, used to distinguish user input from programmatic writes. */\nexport type TwSelectSelectionSource = 'user' | 'reset' | 'programmatic';\n\n/** Emitted by `selectionChange`. Generic over the option-value type. */\nexport interface TwSelectSelectionChangeEvent<T> {\n /** The current value. `null` when single-select has no selection; `T[]` in multi-select (possibly empty). */\n value: T | readonly T[] | null;\n /** The previous value, before this change. */\n previousValue: T | readonly T[] | null;\n /** Values newly added to the selection. Always empty when `source: 'reset'`. */\n added: readonly T[];\n /** Values removed from the selection. */\n removed: readonly T[];\n /** What triggered the change. */\n source: TwSelectSelectionSource;\n}\n\n/** Emitted by `openedChange`. */\nexport interface TwSelectOpenedEvent {\n /** Whether the panel is now open. */\n open: boolean;\n /** The combobox trigger element — handy when coordinating multiple open panels. */\n trigger: HTMLElement;\n}\n\n/** Emitted by `searchChange`. */\nexport interface TwSelectSearchEvent {\n /** The current search text passed to `filterPredicate`. */\n search: string;\n /** Number of options currently visible after filtering. */\n visibleCount: number;\n}\n\n/** Context provided to an `*twSelectOption` template. */\nexport interface TwSelectOptionContext<T, O = TwSelectOption<T>> {\n /** The raw option object (or arbitrary record when using accessors). */\n $implicit: O;\n /** Resolved label from `optionLabel`. */\n label: string;\n /** Resolved value from `optionValue`. */\n value: T;\n /** Whether this option is currently selected. */\n selected: boolean;\n /** Whether this option is the active-descendant for keyboard nav. */\n active: boolean;\n /** Whether this option is disabled. */\n disabled: boolean;\n /** Index within `visibleOptions()`. */\n index: number;\n}\n\n/** Context provided to a `*twSelectTrigger` template. */\nexport interface TwSelectTriggerContext<T, O = TwSelectOption<T>> {\n /** The current value. */\n $implicit: T | readonly T[] | null;\n /** Whether the panel is open. */\n open: boolean;\n /** Whether the current value is empty. */\n empty: boolean;\n /** The resolved option objects for the current value. */\n selectedOptions: readonly O[];\n}\n\n/** Rendered row in the panel — either a group-label header or an option. */\n// `T` is a phantom type kept for API parity with the other Select generics\n// (`SelectVisibleOption<T, O>`, `SelectComponent<T, O>`).\nexport type SelectRenderedRow<_T, O = unknown> =\n | { readonly kind: 'group-label'; readonly group: string }\n | { readonly kind: 'option'; readonly option: O; readonly index: number; readonly group?: string };\n\n/** Internal: resolved option view paired with its position in `visibleOptions()`. */\nexport interface SelectVisibleOption<T, O = unknown> {\n readonly option: O;\n readonly label: string;\n readonly value: T;\n readonly disabled: boolean;\n readonly group?: string;\n}\n\n// Duration for leave animation — matches theme/_base.css scale-out/fade-out.\nconst ANIMATION_DURATION = 120;\n\n// ── tv() config ───────────────────────────────────────────────────\n\nconst selectVariants = tv(\n {\n slots: {\n root: 'relative inline-block w-full',\n trigger:\n 'w-full inline-flex items-center gap-2 text-fg cursor-pointer transition-[color,border-color,background-color,box-shadow] duration-normal motion-reduce:transition-none',\n valueText: 'flex-1 min-w-0 text-left truncate',\n placeholderText: 'flex-1 min-w-0 text-left truncate text-fg-subtle',\n chevron: 'shrink-0 text-fg-muted transition-transform duration-normal motion-reduce:transition-none',\n clearButton:\n 'inline-flex items-center justify-center shrink-0 rounded-md text-fg-muted hover:text-fg hover:bg-surface-muted transition-colors duration-normal motion-reduce:transition-none size-5 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n },\n variants: {\n size: {\n // xs density: chevron uses `size-3.5` (14px) — half-step that lines up\n // with text-xs inside the compact trigger.\n xs: { trigger: 'px-2 py-1 text-xs', chevron: 'size-3.5' },\n sm: { trigger: 'px-3 py-1.5 text-sm', chevron: 'size-4' },\n md: { trigger: 'px-4 py-2 text-sm', chevron: 'size-4' },\n lg: { trigger: 'px-5 py-2.5 text-base', chevron: 'size-5' },\n xl: { trigger: 'px-6 py-3 text-base', chevron: 'size-5' },\n },\n variant: {\n default: {\n trigger:\n 'border border-border bg-surface rounded-md hover:border-border-strong focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n },\n naked: {\n trigger:\n 'bg-transparent border-0 rounded-none p-0 focus-visible:outline-none',\n },\n },\n open: {\n true: { chevron: 'rotate-180' },\n false: { chevron: 'rotate-0' },\n },\n disabled: {\n true: { root: 'opacity-50 pointer-events-none cursor-not-allowed' },\n false: { root: '' },\n },\n focused: { true: {}, false: {} },\n color: {\n primary: {},\n secondary: {},\n accent: {},\n neutral: {},\n info: {},\n success: {},\n warning: {},\n error: {},\n },\n },\n compoundVariants: [\n { variant: 'default', focused: true, color: 'primary', class: { trigger: 'border-primary-500' } },\n { variant: 'default', focused: true, color: 'secondary', class: { trigger: 'border-secondary-500' } },\n { variant: 'default', focused: true, color: 'accent', class: { trigger: 'border-accent-500' } },\n { variant: 'default', focused: true, color: 'neutral', class: { trigger: 'border-border-strong' } },\n { variant: 'default', focused: true, color: 'info', class: { trigger: 'border-info-500' } },\n { variant: 'default', focused: true, color: 'success', class: { trigger: 'border-success-500' } },\n { variant: 'default', focused: true, color: 'warning', class: { trigger: 'border-warning-500' } },\n { variant: 'default', focused: true, color: 'error', class: { trigger: 'border-error-500' } },\n ],\n defaultVariants: {\n size: 'md',\n variant: 'default',\n open: false,\n disabled: false,\n focused: false,\n color: 'primary',\n },\n },\n { twMerge: true },\n);\n\n// ── Option-state color lookups ──\n// Slot tokens own light/dark contrast — no `dark:`, no shade picks.\n\nconst OPTION_SELECTED_BG: Record<TwColor, string> = {\n primary: 'bg-primary-soft',\n secondary: 'bg-secondary-soft',\n accent: 'bg-accent-soft',\n neutral: 'bg-neutral-soft',\n info: 'bg-info-soft',\n success: 'bg-success-soft',\n warning: 'bg-warning-soft',\n error: 'bg-error-soft',\n};\n\nconst OPTION_CHECKMARK_COLOR: Record<TwColor, string> = {\n primary: 'text-primary-icon',\n secondary: 'text-secondary-icon',\n accent: 'text-accent-icon',\n neutral: 'text-fg',\n info: 'text-info-icon',\n success: 'text-success-icon',\n warning: 'text-warning-icon',\n error: 'text-error-icon',\n};\n\n// ── Template directives (content-projected slots) ─────────────────\n\n/** Structural directive projecting a custom template for each option in the panel. */\n@Directive({ selector: '[twSelectOption]' })\nexport class SelectOptionTemplateDirective<T = unknown, O = TwSelectOption<T>> {\n /** @internal */\n readonly templateRef = inject(TemplateRef<TwSelectOptionContext<T, O>>);\n\n /** @internal Enables strict typing of `let-` bindings in the template. */\n static ngTemplateContextGuard<T, O>(\n _dir: SelectOptionTemplateDirective<T, O>,\n _ctx: unknown,\n ): _ctx is TwSelectOptionContext<T, O> {\n return true;\n }\n}\n\n/** Structural directive projecting a custom template for the select's trigger content. */\n@Directive({ selector: '[twSelectTrigger]' })\nexport class SelectTriggerTemplateDirective<T = unknown, O = TwSelectOption<T>> {\n /** @internal */\n readonly templateRef = inject(TemplateRef<TwSelectTriggerContext<T, O>>);\n\n /** @internal */\n static ngTemplateContextGuard<T, O>(\n _dir: SelectTriggerTemplateDirective<T, O>,\n _ctx: unknown,\n ): _ctx is TwSelectTriggerContext<T, O> {\n return true;\n }\n}\n\n/** Structural directive projecting a custom template for the panel's empty state. */\n@Directive({ selector: '[twSelectEmpty]' })\nexport class SelectEmptyTemplateDirective {\n /** @internal */\n readonly templateRef = inject(TemplateRef<{ $implicit: string }>);\n\n /** @internal */\n static ngTemplateContextGuard(\n _dir: SelectEmptyTemplateDirective,\n _ctx: unknown,\n ): _ctx is { $implicit: string } {\n return true;\n }\n}\n\n/** Structural directive projecting a custom header at the top of the panel. */\n@Directive({ selector: '[twSelectHeader]' })\nexport class SelectHeaderTemplateDirective {\n /** @internal */\n readonly templateRef = inject(TemplateRef<unknown>);\n}\n\n/** Structural directive projecting a custom footer at the bottom of the panel. */\n@Directive({ selector: '[twSelectFooter]' })\nexport class SelectFooterTemplateDirective {\n /** @internal */\n readonly templateRef = inject(TemplateRef<unknown>);\n}\n\n// ── ID generator ──\n\nlet nextSelectId = 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\n// ── SelectComponent ──\n\n/**\n * ARIA combobox with listbox popup. Supports single/multi selection, in-panel\n * search filtering, custom option/trigger templates, and full integration with\n * Angular forms (reactive, template-driven, signal-forms) plus `tw-form-field`.\n */\n@Component({\n selector: 'tw-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n providers: [\n {\n provide: TW_FORM_FIELD_CONTROL,\n useExisting: forwardRef(() => SelectComponent),\n },\n ],\n template: `\n <button\n #triggerButton\n type=\"button\"\n [id]=\"hostId\"\n [class]=\"triggerClasses()\"\n [attr.role]=\"'combobox'\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"open() ? 'true' : 'false'\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDescendantId() || null\"\n [attr.aria-autocomplete]=\"searchable() ? 'list' : 'none'\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"labelledBy() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.aria-required]=\"requiredInput() || null\"\n [attr.aria-invalid]=\"errorState() || null\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [disabled]=\"isDisabled()\"\n [attr.data-variant]=\"resolvedVariant()\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (triggerTemplateChild(); as tpl) {\n <span [class]=\"valueTextClasses()\">\n <ng-container\n *ngTemplateOutlet=\"tpl.templateRef; context: buildTriggerContext()\"\n />\n </span>\n } @else if (isEmpty()) {\n <span [class]=\"placeholderTextClasses()\">{{ placeholder() || '\\u00A0' }}</span>\n } @else {\n <span [class]=\"valueTextClasses()\">{{ defaultTriggerText() }}</span>\n }\n\n @if (showClearButton()) {\n <span\n role=\"button\"\n tabindex=\"-1\"\n [class]=\"clearButtonClasses()\"\n [attr.aria-label]=\"'Clear selection'\"\n (click)=\"onClearClick($event)\"\n (keydown)=\"onClearKeydown($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 </span>\n }\n\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 </button>\n\n <span hidden>\n <ng-content />\n </span>\n `,\n host: {\n '[class]': 'rootClasses()',\n },\n})\nexport class SelectComponent<T = unknown>\n implements ControlValueAccessor, FormFieldControl<T | readonly T[]>, OnInit\n{\n /** Array of options to render in the panel. Accepts either `TwSelectOption<T>` objects or arbitrary records read via the accessor inputs. Defaults to an empty array. */\n readonly options = input<readonly unknown[]>([]);\n\n /** Accessor returning the visible label for an option. Override when passing arbitrary objects. */\n readonly optionLabel = input<(option: unknown) => string>(defaultOptionLabel);\n\n /** Accessor returning the value for an option. The result is what `value` / `valueChange` emit. */\n readonly optionValue = input<(option: unknown) => T>(\n defaultOptionValue as (option: unknown) => T,\n );\n\n /** Accessor returning the disabled state for an option. Defaults to reading `.disabled`. */\n readonly optionDisabled = input<(option: unknown) => boolean>(defaultOptionDisabled);\n\n /** Accessor returning the group name for an option. Options sharing a group render under a labelled `role=\"group\"` region. */\n readonly optionGroup = input<(option: unknown) => string | undefined>(defaultOptionGroup);\n\n /** When true, enables multi-selection. The `value` model becomes a `T[]` and the panel renders checkable options. Defaults to `false`. */\n readonly multiple = input(false);\n\n /** When true, renders a search input at the top of the panel that filters options using `filterPredicate`. Defaults to `false`. */\n readonly searchable = input(false);\n\n /** Custom filter function for the search input. Defaults to a case-insensitive substring match on the option label. */\n readonly filterPredicate = input<(option: unknown, search: string) => boolean>(\n (option, search) => {\n const label = this.optionLabel()(option);\n return label.toLowerCase().includes(search.toLowerCase());\n },\n );\n\n /** Placeholder text shown in the trigger when no value is selected. */\n readonly placeholder = input<string | undefined>(undefined);\n\n /** When true, the trigger cannot be activated and the panel cannot open. Defaults to `false`. */\n readonly disabledInput = input<boolean>(false, { alias: 'disabled' });\n\n /** When true, exposes `aria-required=\"true\"` on the trigger. Defaults to `false`. */\n readonly requiredInput = input<boolean>(false, { alias: 'required' });\n\n /** Controls trigger padding, font size, and panel option density. Defaults to `'md'`. */\n readonly size = input<TwSize>('md');\n\n /** Semantic color for focused trigger border, active-option background, and checkmarks. Defaults to `'primary'`. */\n readonly color = input<TwColor>('primary');\n\n /** Visual style of the trigger. When inside a `tw-form-field` and left unset, auto-resolves to `'naked'`. Otherwise defaults to `'default'`. */\n readonly variant = input<SelectVariant | undefined>(undefined);\n\n /** Overlay panel width. `'trigger'` matches the trigger's measured width; `'auto'` lets content decide; a number is applied as pixels; a string is passed through as a CSS length. Defaults to `'trigger'`. */\n readonly panelWidth = input<'trigger' | 'auto' | number | string>('trigger');\n\n /** Extra class(es) applied to the overlay panel element. */\n readonly panelClass = input<string | readonly string[]>('');\n\n /** Maximum height of the listbox scroll region in pixels. Defaults to `256`. */\n readonly panelMaxHeight = input(256);\n\n /** Whether the panel closes after a selection is made. When unset, resolves to `true` for single-select and `false` for multi-select. */\n readonly closeOnSelect = input<boolean | undefined>(undefined);\n\n /** CDK scroll strategy for the overlay. Defaults to `'reposition'`. */\n readonly scrollStrategy = input<'reposition' | 'close' | 'block'>('reposition');\n\n /** Pixel distance between trigger and panel. Defaults to `4`. */\n readonly offset = input(4);\n\n /** Fallback message rendered when the filter yields no options and no `*twSelectEmpty` template is provided. */\n readonly emptyMessage = input('No results');\n\n /** Accessible name for the combobox trigger. */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** ID of an external element that labels the combobox. */\n readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n /** ID of an external element that describes the combobox. */\n readonly ariaDescribedby = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n\n /** Per-instance override of the {@link ErrorStateMatcher}. When omitted, the select uses the `TW_ERROR_STATE_MATCHER` token's value. */\n readonly errorStateMatcher = input<ErrorStateMatcher | undefined>(undefined);\n\n /** Equality comparator for option values. Defaults to `Object.is`. */\n readonly compareWith = input<(a: T, b: T) => boolean>(Object.is);\n\n // ── Models (two-way) ──\n\n /** Two-way bound selected value(s). Single-select: `T | null`. Multi-select: `T[]`. */\n readonly value = model<T | readonly T[] | null>(null);\n\n /** Two-way bound open state of the panel. */\n readonly open = model(false);\n\n // ── Outputs ──\n\n /** Fires when the panel's visibility finishes changing. */\n readonly openedChange = output<TwSelectOpenedEvent>();\n\n /** Fires after any selection change, with `added`, `removed`, `previousValue`, and a `source` discriminator. */\n readonly selectionChange = output<TwSelectSelectionChangeEvent<T>>();\n\n /** Fires whenever the search input changes (only when `searchable` is true). */\n readonly searchChange = output<TwSelectSearchEvent>();\n\n // ── Content queries ──\n\n /** @internal */\n readonly triggerTemplateChild = contentChild(SelectTriggerTemplateDirective);\n /** @internal */\n readonly optionTemplateChild = contentChild(SelectOptionTemplateDirective);\n /** @internal */\n readonly emptyTemplateChild = contentChild(SelectEmptyTemplateDirective);\n /** @internal */\n readonly headerTemplateChild = contentChild(SelectHeaderTemplateDirective);\n /** @internal */\n readonly footerTemplateChild = contentChild(SelectFooterTemplateDirective);\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 = nextSelectId++;\n /** @internal */\n readonly hostId = `tw-select-${this.uid}`;\n /** @internal */\n readonly listboxId = `${this.hostId}-listbox`;\n /** @internal */\n readonly searchInputId = `${this.hostId}-search`;\n /** @internal */\n readonly optionId = (index: number): string => `${this.hostId}-option-${index}`;\n\n // ── Internal state signals ──\n\n /** @internal */\n readonly internalValue = linkedSignal<T | readonly T[] | null>(() => this.value());\n /** @internal */\n readonly search = signal('');\n /** @internal */\n readonly activeIndex = signal<number>(-1);\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 private readonly closingSignal = signal(false);\n\n private onChange: (value: T | readonly T[] | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n private overlayRef: OverlayRef | null = null;\n private readonly overlayInstanceSignal = signal<SelectOverlayComponent<T> | null>(null);\n private perOpenSubs: Subscription | null = null;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private resizeObserver: ResizeObserver | null = null;\n\n private get overlayInstance(): SelectOverlayComponent<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 Effective variant — auto-naked when wrapped in tw-form-field. */\n readonly resolvedVariant = computed<SelectVariant>(\n () => this.variant() ?? (this.formField ? 'naked' : 'default'),\n );\n\n /** @internal */\n readonly isEmpty = computed(() => {\n const v = this.internalValue();\n if (this.multiple()) return !Array.isArray(v) || v.length === 0;\n return v === null || v === undefined;\n });\n\n /** @internal Visible (filtered) options with resolved view data. */\n readonly visibleOptions = computed<readonly SelectVisibleOption<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 s = this.search().trim();\n const predicate = this.filterPredicate();\n const filtered = s && this.searchable() ? opts.filter((o) => predicate(o, s)) : opts;\n return filtered.map((option) => ({\n option,\n label: labelFn(option),\n value: valueFn(option),\n disabled: disabledFn(option),\n group: groupFn(option),\n }));\n });\n\n /** @internal Rows rendered in the panel (group labels + options). */\n readonly renderedRows = computed<readonly SelectRenderedRow<T>[]>(() => {\n const visible = this.visibleOptions();\n const rows: SelectRenderedRow<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-label', group: v.group });\n }\n currentGroup = v.group;\n }\n rows.push({ kind: 'option', option: v.option, index, group: v.group });\n });\n return rows;\n });\n\n /** @internal Resolved option objects that match the current value. */\n readonly selectedOptions = computed<readonly unknown[]>(() => {\n const v = this.internalValue();\n if (v === null || v === undefined) return [];\n const cmp = this.compareWith();\n const valueFn = this.optionValue();\n const opts = this.options();\n if (this.multiple()) {\n const arr = Array.isArray(v) ? v : [];\n return opts.filter((o) => arr.some((x) => cmp(valueFn(o), x)));\n }\n return opts.filter((o) => cmp(valueFn(o), v as T));\n });\n\n /** @internal */\n readonly defaultTriggerText = computed(() => {\n const opts = this.selectedOptions();\n const labelFn = this.optionLabel();\n if (opts.length === 0) return '';\n return opts.map((o) => labelFn(o)).join(', ');\n });\n\n /** @internal */\n readonly showClearButton = computed(\n () => !this.isDisabled() && !this.isEmpty(),\n );\n\n /** @internal */\n readonly activeDescendantId = computed(() => {\n if (!this.open()) return null;\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 describedBy = 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 Merged `aria-labelledby`: form-field-pushed label ids + consumer-supplied `aria-labelledby`. */\n readonly labelledBy = 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 Resolved close-on-select behaviour. */\n readonly resolvedCloseOnSelect = computed(() => {\n const explicit = this.closeOnSelect();\n if (explicit !== undefined) return explicit;\n return !this.multiple();\n });\n\n // ── tv() output ──\n\n private readonly variantResult = computed(() =>\n selectVariants({\n size: this.size(),\n variant: this.resolvedVariant(),\n open: this.open(),\n disabled: this.isDisabled(),\n focused: this.focusedSignal(),\n color: this.color(),\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 valueTextClasses = computed(() => this.variantResult().valueText());\n /** @internal */\n readonly placeholderTextClasses = computed(() => this.variantResult().placeholderText());\n /** @internal */\n readonly chevronClasses = computed(() => this.variantResult().chevron());\n /** @internal */\n readonly clearButtonClasses = computed(() => this.variantResult().clearButton());\n\n /** @internal */\n readonly optionSizeClass = computed(() => {\n switch (this.size()) {\n case 'xs':\n return 'px-2 py-1 text-xs gap-1.5';\n case 'sm':\n return 'px-3 py-1.5 text-sm';\n case 'md':\n return 'px-3 py-2 text-sm';\n case 'lg':\n return 'px-4 py-2.5 text-base';\n case 'xl':\n return 'px-4 py-3 text-base';\n }\n });\n\n /** @internal */\n readonly checkmarkColorClass = computed(() => OPTION_CHECKMARK_COLOR[this.color()]);\n\n /** @internal Class string applied to each option row. */\n computeOptionClass = (selected: boolean, active: boolean, disabled: boolean): string => {\n const sizeClass = this.optionSizeClass();\n const color = this.color();\n const base =\n 'relative flex items-center cursor-pointer select-none text-fg gap-2 transition-colors duration-normal motion-reduce:transition-none';\n const parts: string[] = [base, sizeClass];\n if (disabled) {\n parts.push('opacity-50 pointer-events-none');\n }\n if (selected) {\n parts.push(OPTION_SELECTED_BG[color]);\n } else if (active) {\n parts.push('bg-surface-muted');\n } else {\n parts.push('hover:bg-surface-muted');\n }\n return parts.join(' ');\n };\n\n // ── FormFieldControl impl (readonly signals) ──\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 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 /** @internal */\n readonly controlType = 'select';\n /** @internal */\n readonly userAriaDescribedBy: Signal<string | undefined> = computed(() => this.ariaDescribedby());\n /** @internal */\n readonly userAriaLabelledby: Signal<string | undefined> = computed(() => this.ariaLabelledby());\n\n /** @internal Public read-only view of the current value for FormFieldControl. */\n // Overriding `value` typing from the model by using an explicit computed that matches the abstract signature.\n // (The model `value` property is a WritableSignal<T | readonly T[] | null>; FormFieldControl needs a Signal<T | readonly T[] | null>.\n // A WritableSignal is assignable to Signal, so we just cast once.)\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();\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();\n }\n });\n\n // Push state into overlay component whenever anything relevant changes.\n // Reads happen in the tracked phase; writes to the overlay instance are\n // wrapped in `untracked()` so they never feed back into this effect.\n effect(() => {\n const instance = this.overlayInstance;\n if (!instance) return;\n const size = this.size();\n const color = this.color();\n const multiple = this.multiple();\n const searchable = this.searchable();\n const panelMaxHeight = this.panelMaxHeight();\n const emptyMessage = this.emptyMessage();\n const search = this.search();\n const activeIndex = this.activeIndex();\n const renderedRows = this.renderedRows();\n const visibleOptions = this.visibleOptions();\n const optionTemplate = this.optionTemplateChild();\n const emptyTemplate = this.emptyTemplateChild();\n const headerTemplate = this.headerTemplateChild();\n const footerTemplate = this.footerTemplateChild();\n const optionLabelFn = this.optionLabel();\n const checkmarkColorClass = this.checkmarkColorClass();\n const panelClassValue = this.resolvePanelClass();\n untracked(() => {\n instance.size.set(size);\n instance.color.set(color);\n instance.multiple.set(multiple);\n instance.searchable.set(searchable);\n instance.panelMaxHeight.set(panelMaxHeight);\n instance.emptyMessage.set(emptyMessage);\n instance.search.set(search);\n instance.activeIndex.set(activeIndex);\n instance.renderedRows.set(renderedRows);\n instance.visibleOptions.set(visibleOptions);\n instance.optionTemplate.set(optionTemplate);\n instance.emptyTemplate.set(emptyTemplate);\n instance.headerTemplate.set(headerTemplate);\n instance.footerTemplate.set(footerTemplate);\n instance.optionLabelFn.set(optionLabelFn);\n instance.selectedChecker.set((index: number) => this.isVisibleOptionSelected(index));\n instance.computeOptionClass.set(this.computeOptionClass);\n instance.checkmarkColorClass.set(checkmarkColorClass);\n instance.panelClassValue.set(panelClassValue);\n instance.listboxId.set(this.listboxId);\n instance.searchInputId.set(this.searchInputId);\n instance.optionIdFn.set(this.optionId);\n });\n });\n\n // Emit searchChange whenever the user types.\n effect(() => {\n const s = this.search();\n const count = this.visibleOptions().length;\n untracked(() => {\n if (this.overlayInstance) {\n this.searchChange.emit({ search: s, visibleCount: count });\n }\n });\n });\n\n // Dev-mode accessible-name warning.\n afterNextRender(() => {\n if (!isDevMode()) return;\n const hasLabel =\n !!this.ariaLabel() ||\n !!this.ariaLabelledby() ||\n !!this.formField?.labelChild() ||\n !!this.triggerTemplateChild();\n if (!hasLabel) {\n console.warn(\n '[tw-select] The select has no accessible name. Set aria-label, aria-labelledby, wrap in <tw-form-field> with a <label twLabel>, or project a *twSelectTrigger template.',\n );\n }\n });\n\n // Monitor focus on the trigger (and descendant overlay) for 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) {\n this.onTouched();\n if (wasFocused) {\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\n this.destroyRef.onDestroy(() => {\n monitorSub.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.clearCloseTimer();\n this.perOpenSubs?.unsubscribe();\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 overlay panel. 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 overlay panel. No-op when already closed. */\n closePanel(): void {\n if (!this.open()) return;\n this.open.set(false);\n }\n\n /** Toggles the panel's open state. */\n toggle(): void {\n if (this.open()) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n /** Clears the current selection and emits `selectionChange` with `source: 'reset'`. */\n clear(): void {\n const previous = this.internalValue();\n const removed = this.selectedOptions().map((o) => this.optionValue()(o));\n const next: T | readonly T[] | null = this.multiple() ? [] : null;\n this.internalValue.set(next);\n this.value.set(next);\n this.onChange(next);\n this.selectionChange.emit({\n value: next,\n previousValue: previous,\n added: [],\n removed,\n source: 'reset',\n });\n }\n\n /** @internal Whether a visible-option index is currently selected. */\n isVisibleOptionSelected(index: number): boolean {\n const visible = this.visibleOptions();\n if (index < 0 || index >= visible.length) return false;\n return this.isValueSelected(visible[index].value);\n }\n\n /** @internal */\n isValueSelected(value: T): boolean {\n const current = this.internalValue();\n if (current === null || current === undefined) return false;\n const cmp = this.compareWith();\n if (this.multiple()) {\n const arr = Array.isArray(current) ? current : [];\n return arr.some((x) => cmp(x, value));\n }\n return cmp(current as T, value);\n }\n\n /** @internal */\n selectByVisibleIndex(index: number, source: TwSelectSelectionSource = 'user'): void {\n const visible = this.visibleOptions();\n if (index < 0 || index >= visible.length) return;\n const target = visible[index];\n if (target.disabled) return;\n this.commitSelection(target.value, target.label, source);\n }\n\n // ── Trigger interactions ──\n\n /** @internal */\n onTriggerClick(): void {\n if (this.isDisabled()) return;\n this.toggle();\n }\n\n /** @internal */\n onClearClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.clear();\n }\n\n /** @internal */\n onClearKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.clear();\n }\n }\n\n /** @internal */\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n this.handleKeydown(event);\n }\n\n /** @internal Handles keyboard events from the trigger AND the search input inside the overlay. */\n handleKeydown(event: KeyboardEvent): void {\n const key = event.key;\n const isOpen = this.open();\n const searchMode = this.searchable() && isOpen;\n\n if (event.altKey && (key === 'ArrowDown' || key === 'ArrowUp')) {\n event.preventDefault();\n if (key === 'ArrowDown' && !isOpen) this.openPanel();\n else if (key === 'ArrowUp' && isOpen) this.closePanel();\n return;\n }\n\n switch (key) {\n case 'Enter': {\n if (!isOpen) {\n event.preventDefault();\n this.openPanel();\n return;\n }\n event.preventDefault();\n const idx = this.activeIndex();\n if (idx >= 0) {\n this.selectByVisibleIndex(idx, 'user');\n }\n return;\n }\n case ' ':\n case 'Spacebar': {\n if (searchMode) return;\n event.preventDefault();\n if (!isOpen) {\n this.openPanel();\n return;\n }\n const idx = this.activeIndex();\n if (idx >= 0) {\n this.selectByVisibleIndex(idx, 'user');\n }\n return;\n }\n case 'ArrowDown': {\n event.preventDefault();\n if (!isOpen) {\n this.openPanel();\n } else {\n this.moveActive(1);\n }\n return;\n }\n case 'ArrowUp': {\n event.preventDefault();\n if (!isOpen) {\n this.openPanel();\n this.moveActiveTo(this.visibleOptions().length - 1, -1);\n } else {\n this.moveActive(-1);\n }\n return;\n }\n case 'Home': {\n if (searchMode) return;\n event.preventDefault();\n if (!isOpen) this.openPanel();\n this.moveActiveTo(0, 1);\n return;\n }\n case 'End': {\n if (searchMode) return;\n event.preventDefault();\n if (!isOpen) this.openPanel();\n this.moveActiveTo(this.visibleOptions().length - 1, -1);\n return;\n }\n case 'PageDown': {\n if (!isOpen) return;\n event.preventDefault();\n this.moveActive(10);\n return;\n }\n case 'PageUp': {\n if (!isOpen) return;\n event.preventDefault();\n this.moveActive(-10);\n return;\n }\n case 'Escape': {\n if (isOpen) {\n event.preventDefault();\n this.closePanel();\n }\n return;\n }\n case 'Tab': {\n if (isOpen) {\n this.closePanel();\n }\n return;\n }\n default:\n if (!searchMode && key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n this.applyTypeAhead(key);\n }\n return;\n }\n }\n\n // ── Type-ahead (non-search mode) ──\n\n private typeAheadBuffer = '';\n private typeAheadTimer: ReturnType<typeof setTimeout> | null = null;\n\n private applyTypeAhead(char: string): void {\n if (this.typeAheadTimer !== null) clearTimeout(this.typeAheadTimer);\n this.typeAheadBuffer += char.toLowerCase();\n const labelFn = this.optionLabel();\n const visible = this.visibleOptions();\n const match = visible.findIndex((o) =>\n labelFn(o.option).toLowerCase().startsWith(this.typeAheadBuffer),\n );\n if (match >= 0) {\n if (!this.open()) this.openPanel();\n this.activeIndex.set(match);\n this.scrollActiveIntoView();\n }\n this.typeAheadTimer = setTimeout(() => {\n this.typeAheadBuffer = '';\n this.typeAheadTimer = null;\n }, 400);\n }\n\n // ── Active-index navigation ──\n\n private moveActive(delta: number): void {\n const visible = this.visibleOptions();\n if (visible.length === 0) {\n this.activeIndex.set(-1);\n return;\n }\n const start = this.activeIndex();\n const direction = delta > 0 ? 1 : -1;\n const steps = Math.abs(delta);\n let current = start;\n for (let i = 0; i < steps; i++) {\n const next = this.findEnabledFrom(current + direction, direction);\n if (next === -1) break;\n current = next;\n }\n if (current !== start && current >= 0) {\n this.activeIndex.set(current);\n this.scrollActiveIntoView();\n }\n }\n\n private moveActiveTo(startIndex: number, direction: 1 | -1): void {\n const next = this.findEnabledFrom(startIndex, direction);\n if (next >= 0) {\n this.activeIndex.set(next);\n this.scrollActiveIntoView();\n }\n }\n\n private findEnabledFrom(start: number, direction: 1 | -1): number {\n const visible = this.visibleOptions();\n let i = start;\n while (i >= 0 && i < visible.length) {\n if (!visible[i].disabled) return i;\n i += direction;\n }\n return -1;\n }\n\n /** @internal */\n initActiveIndexOnOpen(): void {\n const visible = this.visibleOptions();\n if (visible.length === 0) {\n this.activeIndex.set(-1);\n return;\n }\n const selectedIdx = visible.findIndex((v) => this.isValueSelected(v.value));\n if (selectedIdx >= 0 && !visible[selectedIdx].disabled) {\n this.activeIndex.set(selectedIdx);\n } else {\n this.activeIndex.set(this.findEnabledFrom(0, 1));\n }\n this.scrollActiveIntoView();\n }\n\n private scrollActiveIntoView(): void {\n if (!this.platform.isBrowser) return;\n queueMicrotask(() => {\n const id = this.activeDescendantId();\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 // ── Selection commit ──\n\n private commitSelection(value: T, label: string, source: TwSelectSelectionSource): void {\n const previous = this.internalValue();\n if (this.multiple()) {\n const cmp = this.compareWith();\n const currentArr = Array.isArray(previous) ? [...(previous as readonly T[])] : [];\n const existingIdx = currentArr.findIndex((x) => cmp(x, value));\n let added: readonly T[] = [];\n let removed: readonly T[] = [];\n if (existingIdx >= 0) {\n removed = [currentArr[existingIdx]];\n currentArr.splice(existingIdx, 1);\n } else {\n added = [value];\n currentArr.push(value);\n }\n this.internalValue.set(currentArr);\n this.value.set(currentArr);\n if (source === 'user') {\n this.onChange(currentArr);\n this.liveAnnouncer.announce(`${label} ${added.length ? 'selected' : 'deselected'}`, 'polite');\n }\n this.selectionChange.emit({\n value: currentArr,\n previousValue: previous,\n added,\n removed,\n source,\n });\n } else {\n const cmp = this.compareWith();\n const prevSingle = previous as T | null;\n if (prevSingle !== null && prevSingle !== undefined && cmp(prevSingle, value)) {\n if (this.resolvedCloseOnSelect()) this.closePanel();\n return;\n }\n this.internalValue.set(value);\n this.value.set(value);\n if (source === 'user') this.onChange(value);\n this.selectionChange.emit({\n value,\n previousValue: previous,\n added: [value],\n removed: prevSingle !== null && prevSingle !== undefined ? [prevSingle] : [],\n source,\n });\n if (this.resolvedCloseOnSelect()) this.closePanel();\n }\n }\n\n // ── Overlay lifecycle ──\n\n private openOverlay(): void {\n this.ensureOverlay();\n this.attachOverlayComponent();\n this.subscribePerOpen();\n this.search.set('');\n this.initActiveIndexOnOpen();\n queueMicrotask(() => {\n if (this.searchable()) {\n this.overlayInstance?.focusSearchInput();\n }\n });\n this.openedChange.emit({ open: true, trigger: this.elementRef.nativeElement });\n }\n\n private closeOverlay(): void {\n if (this.closingSignal() || !this.overlayInstance) return;\n this.closingSignal.set(true);\n\n this.overlayInstance.leaving.set(true);\n\n (this.elementRef.nativeElement.querySelector('button') as HTMLButtonElement | null)?.focus();\n\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n this.perOpenSubs?.unsubscribe();\n this.perOpenSubs = null;\n this.overlayInstanceSignal.set(null);\n this.search.set('');\n this.activeIndex.set(-1);\n untracked(() => this.open.set(false));\n this.closingSignal.set(false);\n this.openedChange.emit({ open: false, trigger: this.elementRef.nativeElement });\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.elementRef)\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-select-panel',\n });\n this.installResizeObserver();\n this.updateOverlaySize();\n }\n\n private installResizeObserver(): void {\n if (!this.platform.isBrowser || typeof ResizeObserver === 'undefined') return;\n this.resizeObserver?.disconnect();\n this.resizeObserver = new ResizeObserver(() => this.updateOverlaySize());\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n\n private updateOverlaySize(): void {\n if (!this.overlayRef) return;\n const width = this.panelWidth();\n if (width === 'trigger') {\n const button = (this.elementRef.nativeElement.querySelector('button') as HTMLButtonElement | null);\n const rect = (button ?? this.elementRef.nativeElement).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<SelectOverlayComponent<T>>(\n SelectOverlayComponent as unknown as new () => SelectOverlayComponent<T>,\n this.viewContainerRef,\n this.injector,\n );\n const ref = this.overlayRef.attach(portal);\n const instance = ref.instance;\n instance.onSearchInput.set((v) => this.search.set(v));\n instance.onOptionSelect.set((i) => this.selectByVisibleIndex(i, 'user'));\n instance.onOptionActivate.set((i) => this.activeIndex.set(i));\n instance.onPanelKeydown.set((e) => this.handleKeydown(e));\n this.overlayInstanceSignal.set(instance);\n }\n\n private subscribePerOpen(): void {\n this.perOpenSubs?.unsubscribe();\n this.perOpenSubs = new Subscription();\n if (!this.overlayRef) return;\n\n this.perOpenSubs.add(\n this.overlayRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.closePanel()),\n );\n\n const teardownEscape = consumeOverlayEscape(this.overlayRef, (event) => {\n event.preventDefault();\n this.closePanel();\n });\n this.perOpenSubs.add(() => teardownEscape());\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 /** @internal */\n buildTriggerContext(): TwSelectTriggerContext<T> {\n return {\n $implicit: this.internalValue(),\n open: this.open(),\n empty: this.isEmpty(),\n selectedOptions: this.selectedOptions() as readonly TwSelectOption<T>[],\n };\n }\n\n // ── ControlValueAccessor ──\n\n writeValue(value: T | readonly T[] | null): void {\n const previous = this.internalValue();\n let normalised: T | readonly T[] | null;\n if (this.multiple()) {\n if (Array.isArray(value)) normalised = value as readonly T[];\n else if (value === null || value === undefined) normalised = [];\n else normalised = [value as T];\n } else {\n if (Array.isArray(value)) normalised = value.length ? (value[0] as T) : null;\n else normalised = (value as T | null) ?? null;\n }\n this.internalValue.set(normalised);\n this.value.set(normalised);\n this.selectionChange.emit({\n value: normalised,\n previousValue: previous,\n added: [],\n removed: [],\n source: 'programmatic',\n });\n }\n\n registerOnChange(fn: (value: T | readonly T[] | 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 }\n\n // ── FormFieldControl methods ──\n\n /** @internal */\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set([...ids]);\n }\n\n /** @internal Receives the merged `aria-labelledby` ids from the wrapping form-field. The trigger needs explicit labelledby because it's a non-native combobox button — `<label for>` does not reach it. */\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 const btn = (this.elementRef.nativeElement.querySelector('button') as HTMLButtonElement | null);\n btn?.focus();\n if (!event.defaultPrevented) {\n this.openPanel();\n }\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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"}
|
|
1
|
+
{"version":3,"file":"cdevhub-ngx-tw-select.mjs","sources":["../../../projects/ngx-tw/select/select-overlay.ts","../../../projects/ngx-tw/select/select.ts","../../../projects/ngx-tw/select/cdevhub-ngx-tw-select.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { TwColor, TwSize } from '@cdevhub/ngx-tw/core';\nimport type {\n SelectEmptyTemplateDirective,\n SelectFooterTemplateDirective,\n SelectHeaderTemplateDirective,\n SelectOptionTemplateDirective,\n SelectRenderedRow,\n SelectVisibleOption,\n TwSelectOptionContext,\n} from './select';\n\n/**\n * Internal overlay panel for `tw-select`. Renders the header/search/listbox/empty/footer\n * regions and dispatches interaction callbacks back to the parent `SelectComponent`.\n * Not exported from the public API.\n */\n@Component({\n selector: 'tw-select-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 (headerTemplate(); as tpl) {\n <div class=\"border-b border-border p-2\">\n <ng-container *ngTemplateOutlet=\"tpl.templateRef\" />\n </div>\n }\n\n @if (searchable()) {\n <div class=\"p-2 border-b border-border\">\n <input\n #searchInput\n type=\"search\"\n [id]=\"searchInputId()\"\n [attr.aria-label]=\"'Search'\"\n [attr.aria-controls]=\"listboxId()\"\n [value]=\"search()\"\n class=\"w-full px-3 py-1.5 rounded-md border border-border bg-surface text-fg placeholder:text-fg-subtle focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500 transition-colors duration-normal motion-reduce:transition-none text-sm\"\n placeholder=\"Search…\"\n (input)=\"onSearchInputEvent($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n />\n </div>\n }\n\n <div\n #listboxEl\n role=\"listbox\"\n tabindex=\"-1\"\n [id]=\"listboxId()\"\n [attr.aria-multiselectable]=\"multiple() ? 'true' : null\"\n [style.maxHeight.px]=\"panelMaxHeight()\"\n class=\"flex-1 min-h-0 overflow-y-auto py-1 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500\"\n >\n @if (visibleOptions().length === 0) {\n @if (emptyTemplate(); as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl.templateRef; context: { $implicit: search() }\" />\n } @else {\n <div class=\"p-4 text-center text-sm text-fg-muted\">{{ emptyMessage() }}</div>\n }\n } @else {\n @for (row of renderedRows(); track trackRow($index, row)) {\n @if (row.kind === 'group-label') {\n <div role=\"group\" [attr.aria-label]=\"row.group\">\n <div class=\"px-3 py-1 text-xs font-semibold uppercase tracking-wide text-fg-subtle\">\n {{ row.group }}\n </div>\n </div>\n } @else {\n <!-- ARIA activedescendant listbox: keyboard navigation runs on the\n select trigger via aria-activedescendant. Options are click-only\n affordances and never DOM-focus, so they need no keydown handler\n or tabindex of their own. -->\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n role=\"option\"\n [id]=\"optionIdFn()(row.index)\"\n [attr.aria-selected]=\"selectedChecker()(row.index) ? 'true' : 'false'\"\n [attr.aria-disabled]=\"isOptionDisabled(row.index) || null\"\n [class]=\"\n computeOptionClass()(\n selectedChecker()(row.index),\n activeIndex() === row.index,\n isOptionDisabled(row.index)\n )\n \"\n (click)=\"onOptionClick(row.index, $event)\"\n (mouseenter)=\"onOptionMouseEnter(row.index)\"\n >\n @if (optionTemplate(); as tpl) {\n <ng-container\n *ngTemplateOutlet=\"\n tpl.templateRef;\n context: buildOptionContext(row.index, row.option)\n \"\n />\n } @else {\n <span class=\"flex-1 min-w-0 truncate\">{{ optionLabelFn()(row.option) }}</span>\n @if (selectedChecker()(row.index)) {\n <svg\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n [class]=\"checkmarkClasses()\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 5.29a1 1 0 0 1 .006 1.414l-7.2 7.3a1 1 0 0 1-1.42.007L3.29 9.296a1 1 0 0 1 1.42-1.41l3.794 3.82 6.79-6.886a1 1 0 0 1 1.41-.07Z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n }\n </div>\n }\n }\n }\n </div>\n\n @if (footerTemplate(); as tpl) {\n <div class=\"border-t border-border p-2\">\n <ng-container *ngTemplateOutlet=\"tpl.templateRef\" />\n </div>\n }\n `,\n})\nexport class SelectOverlayComponent<T = unknown> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // ── Config signals set by the parent component ──\n\n /** @internal */\n readonly size = signal<TwSize>('md');\n /** @internal */\n readonly color = signal<TwColor>('primary');\n /** @internal */\n readonly multiple = signal(false);\n /** @internal */\n readonly searchable = signal(false);\n /** @internal */\n readonly panelMaxHeight = signal(256);\n /** @internal */\n readonly emptyMessage = signal('No results');\n /** @internal */\n readonly search = signal('');\n /** @internal */\n readonly activeIndex = signal(-1);\n /** @internal */\n readonly renderedRows = signal<readonly SelectRenderedRow<T>[]>([]);\n /** @internal */\n readonly visibleOptions = signal<readonly SelectVisibleOption<T>[]>([]);\n /** @internal */\n readonly optionTemplate = signal<SelectOptionTemplateDirective<T> | undefined>(undefined);\n /** @internal */\n readonly emptyTemplate = signal<SelectEmptyTemplateDirective | undefined>(undefined);\n /** @internal */\n readonly headerTemplate = signal<SelectHeaderTemplateDirective | undefined>(undefined);\n /** @internal */\n readonly footerTemplate = signal<SelectFooterTemplateDirective | undefined>(undefined);\n /** @internal */\n readonly optionLabelFn = signal<(option: unknown) => string>(() => '');\n /** @internal */\n readonly selectedChecker = signal<(visibleIndex: number) => boolean>(() => false);\n /** @internal */\n readonly computeOptionClass = signal<\n (selected: boolean, active: boolean, disabled: boolean) => string\n >(() => '');\n /** @internal */\n readonly checkmarkColorClass = signal('');\n /** @internal */\n readonly panelClassValue = signal('');\n /** @internal */\n readonly listboxId = signal('');\n /** @internal */\n readonly searchInputId = signal('');\n /** @internal */\n readonly optionIdFn = signal<(index: number) => string>((i) => `option-${i}`);\n /** @internal */\n readonly leaving = signal(false);\n\n // ── Callbacks set by the parent component ──\n\n /** @internal */\n readonly onSearchInput = signal<(value: string) => void>(() => {});\n /** @internal */\n readonly onOptionSelect = signal<(index: number) => void>(() => {});\n /** @internal */\n readonly onOptionActivate = signal<(index: number) => void>(() => {});\n /** @internal */\n readonly onPanelKeydown = signal<(event: KeyboardEvent) => void>(() => {});\n\n // ── View refs ──\n\n private readonly searchInputRef = viewChild<ElementRef<HTMLInputElement>>('searchInput');\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-lg shadow-md overflow-hidden flex flex-col';\n const custom = this.panelClassValue();\n return custom ? `${base} ${custom}` : base;\n });\n\n /** @internal */\n readonly checkmarkClasses = computed(() => {\n // xs/sm densities use `size-3.5` (14px) for the checkmark — the half-step\n // is the only icon size that aligns with the surrounding text-xs metric.\n const size = this.size() === 'xs' || this.size() === 'sm' ? 'size-3.5' : 'size-4';\n return `${size} shrink-0 ml-auto ${this.checkmarkColorClass()}`;\n });\n\n // ── Template helpers ──\n\n /** @internal */\n isOptionDisabled(visibleIndex: number): boolean {\n const vis = this.visibleOptions();\n if (visibleIndex < 0 || visibleIndex >= vis.length) return false;\n return vis[visibleIndex].disabled;\n }\n\n /** @internal */\n buildOptionContext(visibleIndex: number, option: unknown): TwSelectOptionContext<T> {\n const v = this.visibleOptions()[visibleIndex];\n return {\n $implicit: option as TwSelectOptionContext<T>['$implicit'],\n label: v?.label ?? '',\n value: v?.value as T,\n selected: this.selectedChecker()(visibleIndex),\n active: this.activeIndex() === visibleIndex,\n disabled: v?.disabled ?? false,\n index: visibleIndex,\n };\n }\n\n /** @internal track function for @for. */\n trackRow(_index: number, row: SelectRenderedRow<T>): string | number {\n if (row.kind === 'group-label') return `g:${row.group}`;\n return `o:${row.index}`;\n }\n\n // ── Interactions ──\n\n /** @internal */\n onSearchInputEvent(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.onSearchInput()(target.value);\n }\n\n /** @internal */\n onSearchKeydown(event: KeyboardEvent): void {\n this.onPanelKeydown()(event);\n }\n\n /** @internal */\n onOptionClick(visibleIndex: number, event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.onOptionSelect()(visibleIndex);\n }\n\n /** @internal */\n onOptionMouseEnter(visibleIndex: number): void {\n if (this.isOptionDisabled(visibleIndex)) return;\n this.onOptionActivate()(visibleIndex);\n }\n\n /** @internal */\n focusSearchInput(): void {\n const el = this.searchInputRef()?.nativeElement;\n el?.focus();\n }\n\n /** @internal Exposes the root overlay element for tests. */\n getElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n afterNextRender,\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 isDevMode,\n linkedSignal,\n model,\n type OnInit,\n output,\n signal,\n type Signal,\n TemplateRef,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n type ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n} from '@angular/forms';\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 { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, Subscription } from 'rxjs';\nimport { tv } from 'tailwind-variants';\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 {\n type FormFieldControl,\n TW_FORM_FIELD,\n TW_FORM_FIELD_CONTROL,\n} from '@cdevhub/ngx-tw/form-field';\nimport { SelectOverlayComponent } from './select-overlay';\n\n// ── Public types ──────────────────────────────────────────────────\n\n/** Canonical option shape. Consumers using arbitrary objects override the accessor inputs instead. */\nexport interface TwSelectOption<T> {\n /** Visible label. */\n label: string;\n /** Value emitted via `value` / `valueChange`. */\n value: T;\n /** When true, the option cannot be focused or selected. */\n disabled?: boolean;\n /** Optional group name. Options sharing a group render under a labelled `role=\"group\"` region. */\n group?: string;\n}\n\n/** Visual style of the select trigger. */\nexport type SelectVariant = 'default' | 'naked';\n\n/** Origin of a selection change, used to distinguish user input from programmatic writes. */\nexport type TwSelectSelectionSource = 'user' | 'reset' | 'programmatic';\n\n/** Emitted by `selectionChange`. Generic over the option-value type. */\nexport interface TwSelectSelectionChangeEvent<T> {\n /** The current value. `null` when single-select has no selection; `T[]` in multi-select (possibly empty). */\n value: T | readonly T[] | null;\n /** The previous value, before this change. */\n previousValue: T | readonly T[] | null;\n /** Values newly added to the selection. Always empty when `source: 'reset'`. */\n added: readonly T[];\n /** Values removed from the selection. */\n removed: readonly T[];\n /** What triggered the change. */\n source: TwSelectSelectionSource;\n}\n\n/** Emitted by `openedChange`. */\nexport interface TwSelectOpenedEvent {\n /** Whether the panel is now open. */\n open: boolean;\n /** The combobox trigger element — handy when coordinating multiple open panels. */\n trigger: HTMLElement;\n}\n\n/** Emitted by `searchChange`. */\nexport interface TwSelectSearchEvent {\n /** The current search text passed to `filterPredicate`. */\n search: string;\n /** Number of options currently visible after filtering. */\n visibleCount: number;\n}\n\n/** Context provided to an `*twSelectOption` template. */\nexport interface TwSelectOptionContext<T, O = TwSelectOption<T>> {\n /** The raw option object (or arbitrary record when using accessors). */\n $implicit: O;\n /** Resolved label from `optionLabel`. */\n label: string;\n /** Resolved value from `optionValue`. */\n value: T;\n /** Whether this option is currently selected. */\n selected: boolean;\n /** Whether this option is the active-descendant for keyboard nav. */\n active: boolean;\n /** Whether this option is disabled. */\n disabled: boolean;\n /** Index within `visibleOptions()`. */\n index: number;\n}\n\n/** Context provided to a `*twSelectTrigger` template. */\nexport interface TwSelectTriggerContext<T, O = TwSelectOption<T>> {\n /** The current value. */\n $implicit: T | readonly T[] | null;\n /** Whether the panel is open. */\n open: boolean;\n /** Whether the current value is empty. */\n empty: boolean;\n /** The resolved option objects for the current value. */\n selectedOptions: readonly O[];\n}\n\n/** Rendered row in the panel — either a group-label header or an option. */\n// `T` is a phantom type kept for API parity with the other Select generics\n// (`SelectVisibleOption<T, O>`, `SelectComponent<T, O>`).\nexport type SelectRenderedRow<_T, O = unknown> =\n | { readonly kind: 'group-label'; readonly group: string }\n | { readonly kind: 'option'; readonly option: O; readonly index: number; readonly group?: string };\n\n/** Internal: resolved option view paired with its position in `visibleOptions()`. */\nexport interface SelectVisibleOption<T, O = unknown> {\n readonly option: O;\n readonly label: string;\n readonly value: T;\n readonly disabled: boolean;\n readonly group?: string;\n}\n\n// Duration for leave animation — matches theme/_base.css scale-out/fade-out.\nconst ANIMATION_DURATION = 120;\n\n// ── tv() config ───────────────────────────────────────────────────\n\nconst selectVariants = tv(\n {\n slots: {\n root: 'relative inline-block w-full',\n trigger:\n 'w-full inline-flex items-center gap-2 text-fg cursor-pointer transition-[color,border-color,background-color,box-shadow] duration-normal motion-reduce:transition-none',\n valueText: 'flex-1 min-w-0 text-left truncate',\n placeholderText: 'flex-1 min-w-0 text-left truncate text-fg-subtle',\n chevron: 'shrink-0 text-fg-muted transition-transform duration-normal motion-reduce:transition-none',\n clearButton:\n 'inline-flex items-center justify-center shrink-0 rounded-md text-fg-muted hover:text-fg hover:bg-surface-muted transition-colors duration-normal motion-reduce:transition-none size-5 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n },\n variants: {\n size: {\n // xs density: chevron uses `size-3.5` (14px) — half-step that lines up\n // with text-xs inside the compact trigger.\n xs: { trigger: 'px-2 py-1 text-xs', chevron: 'size-3.5' },\n sm: { trigger: 'px-3 py-1.5 text-sm', chevron: 'size-4' },\n md: { trigger: 'px-4 py-2 text-sm', chevron: 'size-4' },\n lg: { trigger: 'px-5 py-2.5 text-base', chevron: 'size-5' },\n xl: { trigger: 'px-6 py-3 text-base', chevron: 'size-5' },\n },\n variant: {\n default: {\n trigger:\n 'border border-border bg-surface rounded-md hover:border-border-strong focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n },\n naked: {\n trigger:\n 'bg-transparent border-0 rounded-none p-0 focus-visible:outline-none',\n },\n },\n open: {\n true: { chevron: 'rotate-180' },\n false: { chevron: 'rotate-0' },\n },\n disabled: {\n true: { root: 'opacity-50 pointer-events-none cursor-not-allowed' },\n false: { root: '' },\n },\n focused: { true: {}, false: {} },\n color: {\n primary: {},\n secondary: {},\n accent: {},\n neutral: {},\n info: {},\n success: {},\n warning: {},\n error: {},\n },\n },\n compoundVariants: [\n { variant: 'default', focused: true, color: 'primary', class: { trigger: 'border-primary-500' } },\n { variant: 'default', focused: true, color: 'secondary', class: { trigger: 'border-secondary-500' } },\n { variant: 'default', focused: true, color: 'accent', class: { trigger: 'border-accent-500' } },\n { variant: 'default', focused: true, color: 'neutral', class: { trigger: 'border-border-strong' } },\n { variant: 'default', focused: true, color: 'info', class: { trigger: 'border-info-500' } },\n { variant: 'default', focused: true, color: 'success', class: { trigger: 'border-success-500' } },\n { variant: 'default', focused: true, color: 'warning', class: { trigger: 'border-warning-500' } },\n { variant: 'default', focused: true, color: 'error', class: { trigger: 'border-error-500' } },\n ],\n defaultVariants: {\n size: 'md',\n variant: 'default',\n open: false,\n disabled: false,\n focused: false,\n color: 'primary',\n },\n },\n { twMerge: true },\n);\n\n// ── Option-state color lookups ──\n// Slot tokens own light/dark contrast — no `dark:`, no shade picks.\n\nconst OPTION_SELECTED_BG: Record<TwColor, string> = {\n primary: 'bg-primary-soft',\n secondary: 'bg-secondary-soft',\n accent: 'bg-accent-soft',\n neutral: 'bg-neutral-soft',\n info: 'bg-info-soft',\n success: 'bg-success-soft',\n warning: 'bg-warning-soft',\n error: 'bg-error-soft',\n};\n\nconst OPTION_CHECKMARK_COLOR: Record<TwColor, string> = {\n primary: 'text-primary-icon',\n secondary: 'text-secondary-icon',\n accent: 'text-accent-icon',\n neutral: 'text-fg',\n info: 'text-info-icon',\n success: 'text-success-icon',\n warning: 'text-warning-icon',\n error: 'text-error-icon',\n};\n\n// ── Template directives (content-projected slots) ─────────────────\n\n/** Structural directive projecting a custom template for each option in the panel. */\n@Directive({ selector: '[twSelectOption]' })\nexport class SelectOptionTemplateDirective<T = unknown, O = TwSelectOption<T>> {\n /** @internal */\n readonly templateRef = inject(TemplateRef<TwSelectOptionContext<T, O>>);\n\n /** @internal Enables strict typing of `let-` bindings in the template. */\n static ngTemplateContextGuard<T, O>(\n _dir: SelectOptionTemplateDirective<T, O>,\n _ctx: unknown,\n ): _ctx is TwSelectOptionContext<T, O> {\n return true;\n }\n}\n\n/** Structural directive projecting a custom template for the select's trigger content. */\n@Directive({ selector: '[twSelectTrigger]' })\nexport class SelectTriggerTemplateDirective<T = unknown, O = TwSelectOption<T>> {\n /** @internal */\n readonly templateRef = inject(TemplateRef<TwSelectTriggerContext<T, O>>);\n\n /** @internal */\n static ngTemplateContextGuard<T, O>(\n _dir: SelectTriggerTemplateDirective<T, O>,\n _ctx: unknown,\n ): _ctx is TwSelectTriggerContext<T, O> {\n return true;\n }\n}\n\n/** Structural directive projecting a custom template for the panel's empty state. */\n@Directive({ selector: '[twSelectEmpty]' })\nexport class SelectEmptyTemplateDirective {\n /** @internal */\n readonly templateRef = inject(TemplateRef<{ $implicit: string }>);\n\n /** @internal */\n static ngTemplateContextGuard(\n _dir: SelectEmptyTemplateDirective,\n _ctx: unknown,\n ): _ctx is { $implicit: string } {\n return true;\n }\n}\n\n/** Structural directive projecting a custom header at the top of the panel. */\n@Directive({ selector: '[twSelectHeader]' })\nexport class SelectHeaderTemplateDirective {\n /** @internal */\n readonly templateRef = inject(TemplateRef<unknown>);\n}\n\n/** Structural directive projecting a custom footer at the bottom of the panel. */\n@Directive({ selector: '[twSelectFooter]' })\nexport class SelectFooterTemplateDirective {\n /** @internal */\n readonly templateRef = inject(TemplateRef<unknown>);\n}\n\n// ── ID generator ──\n\nlet nextSelectId = 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\n// ── SelectComponent ──\n\n/**\n * ARIA combobox with listbox popup. Supports single/multi selection, in-panel\n * search filtering, custom option/trigger templates, and full integration with\n * Angular forms (reactive, template-driven, signal-forms) plus `tw-form-field`.\n */\n@Component({\n selector: 'tw-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n providers: [\n {\n provide: TW_FORM_FIELD_CONTROL,\n useExisting: forwardRef(() => SelectComponent),\n },\n ],\n template: `\n <button\n #triggerButton\n type=\"button\"\n [id]=\"hostId\"\n [class]=\"triggerClasses()\"\n [attr.role]=\"'combobox'\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"open() ? 'true' : 'false'\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDescendantId() || null\"\n [attr.aria-autocomplete]=\"searchable() ? 'list' : 'none'\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"labelledBy() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.aria-required]=\"requiredInput() || null\"\n [attr.aria-invalid]=\"errorState() || null\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [disabled]=\"isDisabled()\"\n [attr.data-variant]=\"resolvedVariant()\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (triggerTemplateChild(); as tpl) {\n <span [class]=\"valueTextClasses()\">\n <ng-container\n *ngTemplateOutlet=\"tpl.templateRef; context: buildTriggerContext()\"\n />\n </span>\n } @else if (isEmpty()) {\n <span [class]=\"placeholderTextClasses()\">{{ placeholder() || '\\u00A0' }}</span>\n } @else {\n <span [class]=\"valueTextClasses()\">{{ defaultTriggerText() }}</span>\n }\n\n @if (showClearButton()) {\n <span\n role=\"button\"\n tabindex=\"-1\"\n [class]=\"clearButtonClasses()\"\n [attr.aria-label]=\"'Clear selection'\"\n (click)=\"onClearClick($event)\"\n (keydown)=\"onClearKeydown($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 </span>\n }\n\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 </button>\n\n <span hidden>\n <ng-content />\n </span>\n `,\n host: {\n '[class]': 'rootClasses()',\n },\n})\nexport class SelectComponent<T = unknown>\n implements ControlValueAccessor, FormFieldControl<T | readonly T[]>, OnInit\n{\n /** Array of options to render in the panel. Accepts either `TwSelectOption<T>` objects or arbitrary records read via the accessor inputs. Defaults to an empty array. */\n readonly options = input<readonly unknown[]>([]);\n\n /** Accessor returning the visible label for an option. Override when passing arbitrary objects. */\n readonly optionLabel = input<(option: unknown) => string>(defaultOptionLabel);\n\n /** Accessor returning the value for an option. The result is what `value` / `valueChange` emit. */\n readonly optionValue = input<(option: unknown) => T>(\n defaultOptionValue as (option: unknown) => T,\n );\n\n /** Accessor returning the disabled state for an option. Defaults to reading `.disabled`. */\n readonly optionDisabled = input<(option: unknown) => boolean>(defaultOptionDisabled);\n\n /** Accessor returning the group name for an option. Options sharing a group render under a labelled `role=\"group\"` region. */\n readonly optionGroup = input<(option: unknown) => string | undefined>(defaultOptionGroup);\n\n /** When true, enables multi-selection. The `value` model becomes a `T[]` and the panel renders checkable options. Defaults to `false`. */\n readonly multiple = input(false);\n\n /** When true, renders a search input at the top of the panel that filters options using `filterPredicate`. Defaults to `false`. */\n readonly searchable = input(false);\n\n /** Custom filter function for the search input. Defaults to a case-insensitive substring match on the option label. */\n readonly filterPredicate = input<(option: unknown, search: string) => boolean>(\n (option, search) => {\n const label = this.optionLabel()(option);\n return label.toLowerCase().includes(search.toLowerCase());\n },\n );\n\n /** Placeholder text shown in the trigger when no value is selected. */\n readonly placeholder = input<string | undefined>(undefined);\n\n /** When true, the trigger cannot be activated and the panel cannot open. Defaults to `false`. */\n readonly disabledInput = input<boolean>(false, { alias: 'disabled' });\n\n /** When true, exposes `aria-required=\"true\"` on the trigger. Defaults to `false`. */\n readonly requiredInput = input<boolean>(false, { alias: 'required' });\n\n /** Controls trigger padding, font size, and panel option density. Defaults to `'md'`. */\n readonly size = input<TwSize>('md');\n\n /** Semantic color for focused trigger border, active-option background, and checkmarks. Defaults to `'primary'`. */\n readonly color = input<TwColor>('primary');\n\n /** Visual style of the trigger. When inside a `tw-form-field` and left unset, auto-resolves to `'naked'`. Otherwise defaults to `'default'`. */\n readonly variant = input<SelectVariant | undefined>(undefined);\n\n /** Overlay panel width. `'trigger'` matches the trigger's measured width; `'auto'` lets content decide; a number is applied as pixels; a string is passed through as a CSS length. Defaults to `'trigger'`. */\n readonly panelWidth = input<'trigger' | 'auto' | number | string>('trigger');\n\n /** Extra class(es) applied to the overlay panel element. */\n readonly panelClass = input<string | readonly string[]>('');\n\n /** Maximum height of the listbox scroll region in pixels. Defaults to `256`. */\n readonly panelMaxHeight = input(256);\n\n /** Whether the panel closes after a selection is made. When unset, resolves to `true` for single-select and `false` for multi-select. */\n readonly closeOnSelect = input<boolean | undefined>(undefined);\n\n /** CDK scroll strategy for the overlay. Defaults to `'reposition'`. */\n readonly scrollStrategy = input<'reposition' | 'close' | 'block'>('reposition');\n\n /** Pixel distance between trigger and panel. Defaults to `4`. */\n readonly offset = input(4);\n\n /** Fallback message rendered when the filter yields no options and no `*twSelectEmpty` template is provided. */\n readonly emptyMessage = input('No results');\n\n /** Accessible name for the combobox trigger. */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** ID of an external element that labels the combobox. */\n readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n /** ID of an external element that describes the combobox. */\n readonly ariaDescribedby = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n\n /** Per-instance override of the {@link ErrorStateMatcher}. When omitted, the select uses the `TW_ERROR_STATE_MATCHER` token's value. */\n readonly errorStateMatcher = input<ErrorStateMatcher | undefined>(undefined);\n\n /** Equality comparator for option values. Defaults to `Object.is`. */\n readonly compareWith = input<(a: T, b: T) => boolean>(Object.is);\n\n // ── Models (two-way) ──\n\n /** Two-way bound selected value(s). Single-select: `T | null`. Multi-select: `T[]`. */\n readonly value = model<T | readonly T[] | null>(null);\n\n /** Two-way bound open state of the panel. */\n readonly open = model(false);\n\n // ── Outputs ──\n\n /** Fires when the panel's visibility finishes changing. */\n readonly openedChange = output<TwSelectOpenedEvent>();\n\n /** Fires after any selection change, with `added`, `removed`, `previousValue`, and a `source` discriminator. */\n readonly selectionChange = output<TwSelectSelectionChangeEvent<T>>();\n\n /** Fires whenever the search input changes (only when `searchable` is true). */\n readonly searchChange = output<TwSelectSearchEvent>();\n\n // ── Content queries ──\n\n /** @internal */\n readonly triggerTemplateChild = contentChild(SelectTriggerTemplateDirective);\n /** @internal */\n readonly optionTemplateChild = contentChild(SelectOptionTemplateDirective);\n /** @internal */\n readonly emptyTemplateChild = contentChild(SelectEmptyTemplateDirective);\n /** @internal */\n readonly headerTemplateChild = contentChild(SelectHeaderTemplateDirective);\n /** @internal */\n readonly footerTemplateChild = contentChild(SelectFooterTemplateDirective);\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(TW_FORM_FIELD, { 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 = nextSelectId++;\n /** @internal */\n readonly hostId = `tw-select-${this.uid}`;\n /** @internal */\n readonly listboxId = `${this.hostId}-listbox`;\n /** @internal */\n readonly searchInputId = `${this.hostId}-search`;\n /** @internal */\n readonly optionId = (index: number): string => `${this.hostId}-option-${index}`;\n\n // ── Internal state signals ──\n\n /** @internal */\n readonly internalValue = linkedSignal<T | readonly T[] | null>(() => this.value());\n /** @internal */\n readonly search = signal('');\n /** @internal */\n readonly activeIndex = signal<number>(-1);\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 private readonly closingSignal = signal(false);\n\n private onChange: (value: T | readonly T[] | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n private overlayRef: OverlayRef | null = null;\n private readonly overlayInstanceSignal = signal<SelectOverlayComponent<T> | null>(null);\n private perOpenSubs: Subscription | null = null;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private resizeObserver: ResizeObserver | null = null;\n\n private get overlayInstance(): SelectOverlayComponent<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 Effective variant — auto-naked when wrapped in tw-form-field. */\n readonly resolvedVariant = computed<SelectVariant>(\n () => this.variant() ?? (this.formField ? 'naked' : 'default'),\n );\n\n /** @internal */\n readonly isEmpty = computed(() => {\n const v = this.internalValue();\n if (this.multiple()) return !Array.isArray(v) || v.length === 0;\n return v === null || v === undefined;\n });\n\n /** @internal Visible (filtered) options with resolved view data. */\n readonly visibleOptions = computed<readonly SelectVisibleOption<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 s = this.search().trim();\n const predicate = this.filterPredicate();\n const filtered = s && this.searchable() ? opts.filter((o) => predicate(o, s)) : opts;\n return filtered.map((option) => ({\n option,\n label: labelFn(option),\n value: valueFn(option),\n disabled: disabledFn(option),\n group: groupFn(option),\n }));\n });\n\n /** @internal Rows rendered in the panel (group labels + options). */\n readonly renderedRows = computed<readonly SelectRenderedRow<T>[]>(() => {\n const visible = this.visibleOptions();\n const rows: SelectRenderedRow<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-label', group: v.group });\n }\n currentGroup = v.group;\n }\n rows.push({ kind: 'option', option: v.option, index, group: v.group });\n });\n return rows;\n });\n\n /** @internal Resolved option objects that match the current value. */\n readonly selectedOptions = computed<readonly unknown[]>(() => {\n const v = this.internalValue();\n if (v === null || v === undefined) return [];\n const cmp = this.compareWith();\n const valueFn = this.optionValue();\n const opts = this.options();\n if (this.multiple()) {\n const arr = Array.isArray(v) ? v : [];\n return opts.filter((o) => arr.some((x) => cmp(valueFn(o), x)));\n }\n return opts.filter((o) => cmp(valueFn(o), v as T));\n });\n\n /** @internal */\n readonly defaultTriggerText = computed(() => {\n const opts = this.selectedOptions();\n const labelFn = this.optionLabel();\n if (opts.length === 0) return '';\n return opts.map((o) => labelFn(o)).join(', ');\n });\n\n /** @internal */\n readonly showClearButton = computed(\n () => !this.isDisabled() && !this.isEmpty(),\n );\n\n /** @internal */\n readonly activeDescendantId = computed(() => {\n if (!this.open()) return null;\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 describedBy = 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 Merged `aria-labelledby`: form-field-pushed label ids + consumer-supplied `aria-labelledby`. */\n readonly labelledBy = 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 Resolved close-on-select behaviour. */\n readonly resolvedCloseOnSelect = computed(() => {\n const explicit = this.closeOnSelect();\n if (explicit !== undefined) return explicit;\n return !this.multiple();\n });\n\n // ── tv() output ──\n\n private readonly variantResult = computed(() =>\n selectVariants({\n size: this.size(),\n variant: this.resolvedVariant(),\n open: this.open(),\n disabled: this.isDisabled(),\n focused: this.focusedSignal(),\n color: this.color(),\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 valueTextClasses = computed(() => this.variantResult().valueText());\n /** @internal */\n readonly placeholderTextClasses = computed(() => this.variantResult().placeholderText());\n /** @internal */\n readonly chevronClasses = computed(() => this.variantResult().chevron());\n /** @internal */\n readonly clearButtonClasses = computed(() => this.variantResult().clearButton());\n\n /** @internal */\n readonly optionSizeClass = computed(() => {\n switch (this.size()) {\n case 'xs':\n return 'px-2 py-1 text-xs gap-1.5';\n case 'sm':\n return 'px-3 py-1.5 text-sm';\n case 'md':\n return 'px-3 py-2 text-sm';\n case 'lg':\n return 'px-4 py-2.5 text-base';\n case 'xl':\n return 'px-4 py-3 text-base';\n }\n });\n\n /** @internal */\n readonly checkmarkColorClass = computed(() => OPTION_CHECKMARK_COLOR[this.color()]);\n\n /** @internal Class string applied to each option row. */\n computeOptionClass = (selected: boolean, active: boolean, disabled: boolean): string => {\n const sizeClass = this.optionSizeClass();\n const color = this.color();\n const base =\n 'relative flex items-center cursor-pointer select-none text-fg gap-2 transition-colors duration-normal motion-reduce:transition-none';\n const parts: string[] = [base, sizeClass];\n if (disabled) {\n parts.push('opacity-50 pointer-events-none');\n }\n if (selected) {\n parts.push(OPTION_SELECTED_BG[color]);\n } else if (active) {\n parts.push('bg-surface-muted');\n } else {\n parts.push('hover:bg-surface-muted');\n }\n return parts.join(' ');\n };\n\n // ── FormFieldControl impl (readonly signals) ──\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 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 /** @internal */\n readonly controlType = 'select';\n /** @internal */\n readonly userAriaDescribedBy: Signal<string | undefined> = computed(() => this.ariaDescribedby());\n /** @internal */\n readonly userAriaLabelledby: Signal<string | undefined> = computed(() => this.ariaLabelledby());\n\n /** @internal Public read-only view of the current value for FormFieldControl. */\n // Overriding `value` typing from the model by using an explicit computed that matches the abstract signature.\n // (The model `value` property is a WritableSignal<T | readonly T[] | null>; FormFieldControl needs a Signal<T | readonly T[] | null>.\n // A WritableSignal is assignable to Signal, so we just cast once.)\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();\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();\n }\n });\n\n // Push state into overlay component whenever anything relevant changes.\n // Reads happen in the tracked phase; writes to the overlay instance are\n // wrapped in `untracked()` so they never feed back into this effect.\n effect(() => {\n const instance = this.overlayInstance;\n if (!instance) return;\n const size = this.size();\n const color = this.color();\n const multiple = this.multiple();\n const searchable = this.searchable();\n const panelMaxHeight = this.panelMaxHeight();\n const emptyMessage = this.emptyMessage();\n const search = this.search();\n const activeIndex = this.activeIndex();\n const renderedRows = this.renderedRows();\n const visibleOptions = this.visibleOptions();\n const optionTemplate = this.optionTemplateChild();\n const emptyTemplate = this.emptyTemplateChild();\n const headerTemplate = this.headerTemplateChild();\n const footerTemplate = this.footerTemplateChild();\n const optionLabelFn = this.optionLabel();\n const checkmarkColorClass = this.checkmarkColorClass();\n const panelClassValue = this.resolvePanelClass();\n untracked(() => {\n instance.size.set(size);\n instance.color.set(color);\n instance.multiple.set(multiple);\n instance.searchable.set(searchable);\n instance.panelMaxHeight.set(panelMaxHeight);\n instance.emptyMessage.set(emptyMessage);\n instance.search.set(search);\n instance.activeIndex.set(activeIndex);\n instance.renderedRows.set(renderedRows);\n instance.visibleOptions.set(visibleOptions);\n instance.optionTemplate.set(optionTemplate);\n instance.emptyTemplate.set(emptyTemplate);\n instance.headerTemplate.set(headerTemplate);\n instance.footerTemplate.set(footerTemplate);\n instance.optionLabelFn.set(optionLabelFn);\n instance.selectedChecker.set((index: number) => this.isVisibleOptionSelected(index));\n instance.computeOptionClass.set(this.computeOptionClass);\n instance.checkmarkColorClass.set(checkmarkColorClass);\n instance.panelClassValue.set(panelClassValue);\n instance.listboxId.set(this.listboxId);\n instance.searchInputId.set(this.searchInputId);\n instance.optionIdFn.set(this.optionId);\n });\n });\n\n // Emit searchChange whenever the user types.\n effect(() => {\n const s = this.search();\n const count = this.visibleOptions().length;\n untracked(() => {\n if (this.overlayInstance) {\n this.searchChange.emit({ search: s, visibleCount: count });\n }\n });\n });\n\n // Dev-mode accessible-name warning.\n afterNextRender(() => {\n if (!isDevMode()) return;\n const hasLabel =\n !!this.ariaLabel() ||\n !!this.ariaLabelledby() ||\n !!this.formField?.hasLabel() ||\n !!this.triggerTemplateChild();\n if (!hasLabel) {\n console.warn(\n '[tw-select] The select has no accessible name. Set aria-label, aria-labelledby, wrap in <tw-form-field> with a <label twLabel>, or project a *twSelectTrigger template.',\n );\n }\n });\n\n // Monitor focus on the trigger (and descendant overlay) for 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) {\n this.onTouched();\n if (wasFocused) {\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\n this.destroyRef.onDestroy(() => {\n monitorSub.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.clearCloseTimer();\n this.perOpenSubs?.unsubscribe();\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 overlay panel. 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 overlay panel. No-op when already closed. */\n closePanel(): void {\n if (!this.open()) return;\n this.open.set(false);\n }\n\n /** Toggles the panel's open state. */\n toggle(): void {\n if (this.open()) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n /** Clears the current selection and emits `selectionChange` with `source: 'reset'`. */\n clear(): void {\n const previous = this.internalValue();\n const removed = this.selectedOptions().map((o) => this.optionValue()(o));\n const next: T | readonly T[] | null = this.multiple() ? [] : null;\n this.internalValue.set(next);\n this.value.set(next);\n this.onChange(next);\n this.selectionChange.emit({\n value: next,\n previousValue: previous,\n added: [],\n removed,\n source: 'reset',\n });\n }\n\n /** @internal Whether a visible-option index is currently selected. */\n isVisibleOptionSelected(index: number): boolean {\n const visible = this.visibleOptions();\n if (index < 0 || index >= visible.length) return false;\n return this.isValueSelected(visible[index].value);\n }\n\n /** @internal */\n isValueSelected(value: T): boolean {\n const current = this.internalValue();\n if (current === null || current === undefined) return false;\n const cmp = this.compareWith();\n if (this.multiple()) {\n const arr = Array.isArray(current) ? current : [];\n return arr.some((x) => cmp(x, value));\n }\n return cmp(current as T, value);\n }\n\n /** @internal */\n selectByVisibleIndex(index: number, source: TwSelectSelectionSource = 'user'): void {\n const visible = this.visibleOptions();\n if (index < 0 || index >= visible.length) return;\n const target = visible[index];\n if (target.disabled) return;\n this.commitSelection(target.value, target.label, source);\n }\n\n // ── Trigger interactions ──\n\n /** @internal */\n onTriggerClick(): void {\n if (this.isDisabled()) return;\n this.toggle();\n }\n\n /** @internal */\n onClearClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.clear();\n }\n\n /** @internal */\n onClearKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.clear();\n }\n }\n\n /** @internal */\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n this.handleKeydown(event);\n }\n\n /** @internal Handles keyboard events from the trigger AND the search input inside the overlay. */\n handleKeydown(event: KeyboardEvent): void {\n const key = event.key;\n const isOpen = this.open();\n const searchMode = this.searchable() && isOpen;\n\n if (event.altKey && (key === 'ArrowDown' || key === 'ArrowUp')) {\n event.preventDefault();\n if (key === 'ArrowDown' && !isOpen) this.openPanel();\n else if (key === 'ArrowUp' && isOpen) this.closePanel();\n return;\n }\n\n switch (key) {\n case 'Enter': {\n if (!isOpen) {\n event.preventDefault();\n this.openPanel();\n return;\n }\n event.preventDefault();\n const idx = this.activeIndex();\n if (idx >= 0) {\n this.selectByVisibleIndex(idx, 'user');\n }\n return;\n }\n case ' ':\n case 'Spacebar': {\n if (searchMode) return;\n event.preventDefault();\n if (!isOpen) {\n this.openPanel();\n return;\n }\n const idx = this.activeIndex();\n if (idx >= 0) {\n this.selectByVisibleIndex(idx, 'user');\n }\n return;\n }\n case 'ArrowDown': {\n event.preventDefault();\n if (!isOpen) {\n this.openPanel();\n } else {\n this.moveActive(1);\n }\n return;\n }\n case 'ArrowUp': {\n event.preventDefault();\n if (!isOpen) {\n this.openPanel();\n this.moveActiveTo(this.visibleOptions().length - 1, -1);\n } else {\n this.moveActive(-1);\n }\n return;\n }\n case 'Home': {\n if (searchMode) return;\n event.preventDefault();\n if (!isOpen) this.openPanel();\n this.moveActiveTo(0, 1);\n return;\n }\n case 'End': {\n if (searchMode) return;\n event.preventDefault();\n if (!isOpen) this.openPanel();\n this.moveActiveTo(this.visibleOptions().length - 1, -1);\n return;\n }\n case 'PageDown': {\n if (!isOpen) return;\n event.preventDefault();\n this.moveActive(10);\n return;\n }\n case 'PageUp': {\n if (!isOpen) return;\n event.preventDefault();\n this.moveActive(-10);\n return;\n }\n case 'Escape': {\n if (isOpen) {\n event.preventDefault();\n this.closePanel();\n }\n return;\n }\n case 'Tab': {\n if (isOpen) {\n this.closePanel();\n }\n return;\n }\n default:\n if (!searchMode && key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n this.applyTypeAhead(key);\n }\n return;\n }\n }\n\n // ── Type-ahead (non-search mode) ──\n\n private typeAheadBuffer = '';\n private typeAheadTimer: ReturnType<typeof setTimeout> | null = null;\n\n private applyTypeAhead(char: string): void {\n if (this.typeAheadTimer !== null) clearTimeout(this.typeAheadTimer);\n this.typeAheadBuffer += char.toLowerCase();\n const labelFn = this.optionLabel();\n const visible = this.visibleOptions();\n const match = visible.findIndex((o) =>\n labelFn(o.option).toLowerCase().startsWith(this.typeAheadBuffer),\n );\n if (match >= 0) {\n if (!this.open()) this.openPanel();\n this.activeIndex.set(match);\n this.scrollActiveIntoView();\n }\n this.typeAheadTimer = setTimeout(() => {\n this.typeAheadBuffer = '';\n this.typeAheadTimer = null;\n }, 400);\n }\n\n // ── Active-index navigation ──\n\n private moveActive(delta: number): void {\n const visible = this.visibleOptions();\n if (visible.length === 0) {\n this.activeIndex.set(-1);\n return;\n }\n const start = this.activeIndex();\n const direction = delta > 0 ? 1 : -1;\n const steps = Math.abs(delta);\n let current = start;\n for (let i = 0; i < steps; i++) {\n const next = this.findEnabledFrom(current + direction, direction);\n if (next === -1) break;\n current = next;\n }\n if (current !== start && current >= 0) {\n this.activeIndex.set(current);\n this.scrollActiveIntoView();\n }\n }\n\n private moveActiveTo(startIndex: number, direction: 1 | -1): void {\n const next = this.findEnabledFrom(startIndex, direction);\n if (next >= 0) {\n this.activeIndex.set(next);\n this.scrollActiveIntoView();\n }\n }\n\n private findEnabledFrom(start: number, direction: 1 | -1): number {\n const visible = this.visibleOptions();\n let i = start;\n while (i >= 0 && i < visible.length) {\n if (!visible[i].disabled) return i;\n i += direction;\n }\n return -1;\n }\n\n /** @internal */\n initActiveIndexOnOpen(): void {\n const visible = this.visibleOptions();\n if (visible.length === 0) {\n this.activeIndex.set(-1);\n return;\n }\n const selectedIdx = visible.findIndex((v) => this.isValueSelected(v.value));\n if (selectedIdx >= 0 && !visible[selectedIdx].disabled) {\n this.activeIndex.set(selectedIdx);\n } else {\n this.activeIndex.set(this.findEnabledFrom(0, 1));\n }\n this.scrollActiveIntoView();\n }\n\n private scrollActiveIntoView(): void {\n if (!this.platform.isBrowser) return;\n queueMicrotask(() => {\n const id = this.activeDescendantId();\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 // ── Selection commit ──\n\n private commitSelection(value: T, label: string, source: TwSelectSelectionSource): void {\n const previous = this.internalValue();\n if (this.multiple()) {\n const cmp = this.compareWith();\n const currentArr = Array.isArray(previous) ? [...(previous as readonly T[])] : [];\n const existingIdx = currentArr.findIndex((x) => cmp(x, value));\n let added: readonly T[] = [];\n let removed: readonly T[] = [];\n if (existingIdx >= 0) {\n removed = [currentArr[existingIdx]];\n currentArr.splice(existingIdx, 1);\n } else {\n added = [value];\n currentArr.push(value);\n }\n this.internalValue.set(currentArr);\n this.value.set(currentArr);\n if (source === 'user') {\n this.onChange(currentArr);\n this.liveAnnouncer.announce(`${label} ${added.length ? 'selected' : 'deselected'}`, 'polite');\n }\n this.selectionChange.emit({\n value: currentArr,\n previousValue: previous,\n added,\n removed,\n source,\n });\n } else {\n const cmp = this.compareWith();\n const prevSingle = previous as T | null;\n if (prevSingle !== null && prevSingle !== undefined && cmp(prevSingle, value)) {\n if (this.resolvedCloseOnSelect()) this.closePanel();\n return;\n }\n this.internalValue.set(value);\n this.value.set(value);\n if (source === 'user') this.onChange(value);\n this.selectionChange.emit({\n value,\n previousValue: previous,\n added: [value],\n removed: prevSingle !== null && prevSingle !== undefined ? [prevSingle] : [],\n source,\n });\n if (this.resolvedCloseOnSelect()) this.closePanel();\n }\n }\n\n // ── Overlay lifecycle ──\n\n private openOverlay(): void {\n this.ensureOverlay();\n this.attachOverlayComponent();\n this.subscribePerOpen();\n this.search.set('');\n this.initActiveIndexOnOpen();\n queueMicrotask(() => {\n if (this.searchable()) {\n this.overlayInstance?.focusSearchInput();\n }\n });\n this.openedChange.emit({ open: true, trigger: this.elementRef.nativeElement });\n }\n\n private closeOverlay(): void {\n if (this.closingSignal() || !this.overlayInstance) return;\n this.closingSignal.set(true);\n\n this.overlayInstance.leaving.set(true);\n\n (this.elementRef.nativeElement.querySelector('button') as HTMLButtonElement | null)?.focus();\n\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n this.perOpenSubs?.unsubscribe();\n this.perOpenSubs = null;\n this.overlayInstanceSignal.set(null);\n this.search.set('');\n this.activeIndex.set(-1);\n untracked(() => this.open.set(false));\n this.closingSignal.set(false);\n this.openedChange.emit({ open: false, trigger: this.elementRef.nativeElement });\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.elementRef)\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-select-panel',\n });\n this.installResizeObserver();\n this.updateOverlaySize();\n }\n\n private installResizeObserver(): void {\n if (!this.platform.isBrowser || typeof ResizeObserver === 'undefined') return;\n this.resizeObserver?.disconnect();\n this.resizeObserver = new ResizeObserver(() => this.updateOverlaySize());\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n\n private updateOverlaySize(): void {\n if (!this.overlayRef) return;\n const width = this.panelWidth();\n if (width === 'trigger') {\n const button = (this.elementRef.nativeElement.querySelector('button') as HTMLButtonElement | null);\n const rect = (button ?? this.elementRef.nativeElement).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<SelectOverlayComponent<T>>(\n SelectOverlayComponent as unknown as new () => SelectOverlayComponent<T>,\n this.viewContainerRef,\n this.injector,\n );\n const ref = this.overlayRef.attach(portal);\n const instance = ref.instance;\n instance.onSearchInput.set((v) => this.search.set(v));\n instance.onOptionSelect.set((i) => this.selectByVisibleIndex(i, 'user'));\n instance.onOptionActivate.set((i) => this.activeIndex.set(i));\n instance.onPanelKeydown.set((e) => this.handleKeydown(e));\n this.overlayInstanceSignal.set(instance);\n }\n\n private subscribePerOpen(): void {\n this.perOpenSubs?.unsubscribe();\n this.perOpenSubs = new Subscription();\n if (!this.overlayRef) return;\n\n this.perOpenSubs.add(\n this.overlayRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.closePanel()),\n );\n\n const teardownEscape = consumeOverlayEscape(this.overlayRef, (event) => {\n event.preventDefault();\n this.closePanel();\n });\n this.perOpenSubs.add(() => teardownEscape());\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 /** @internal */\n buildTriggerContext(): TwSelectTriggerContext<T> {\n return {\n $implicit: this.internalValue(),\n open: this.open(),\n empty: this.isEmpty(),\n selectedOptions: this.selectedOptions() as readonly TwSelectOption<T>[],\n };\n }\n\n // ── ControlValueAccessor ──\n\n writeValue(value: T | readonly T[] | null): void {\n const previous = this.internalValue();\n let normalised: T | readonly T[] | null;\n if (this.multiple()) {\n if (Array.isArray(value)) normalised = value as readonly T[];\n else if (value === null || value === undefined) normalised = [];\n else normalised = [value as T];\n } else {\n if (Array.isArray(value)) normalised = value.length ? (value[0] as T) : null;\n else normalised = (value as T | null) ?? null;\n }\n this.internalValue.set(normalised);\n this.value.set(normalised);\n this.selectionChange.emit({\n value: normalised,\n previousValue: previous,\n added: [],\n removed: [],\n source: 'programmatic',\n });\n }\n\n registerOnChange(fn: (value: T | readonly T[] | 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 }\n\n // ── FormFieldControl methods ──\n\n /** @internal */\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set([...ids]);\n }\n\n /** @internal Receives the merged `aria-labelledby` ids from the wrapping form-field. The trigger needs explicit labelledby because it's a non-native combobox button — `<label for>` does not reach it. */\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 const btn = (this.elementRef.nativeElement.querySelector('button') as HTMLButtonElement | null);\n btn?.focus();\n if (!event.defaultPrevented) {\n this.openPanel();\n }\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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"}
|