@radix-ng/primitives 1.0.0-beta.3 → 1.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +5 -3
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +3 -2
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-autocomplete.mjs +617 -659
  7. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-calendar.mjs +5 -3
  9. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-combobox.mjs +1305 -572
  11. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-config.mjs +13 -4
  13. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
  15. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-core.mjs +1345 -64
  17. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
  19. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-dialog.mjs +240 -112
  21. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
  23. package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
  24. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
  25. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-drawer.mjs +3 -3
  27. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-field.mjs +3 -2
  29. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +517 -0
  31. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
  32. package/fesm2022/radix-ng-primitives-focus-scope.mjs +296 -70
  33. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-menu.mjs +861 -286
  35. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
  37. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +144 -159
  39. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-popover.mjs +220 -205
  41. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-popper.mjs +94 -51
  43. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-presence.mjs +1 -1
  45. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-preview-card.mjs +141 -173
  47. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
  49. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
  51. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-select.mjs +211 -156
  53. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-slider.mjs +5 -3
  55. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-stepper.mjs +5 -3
  57. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
  59. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
  61. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-toggle-group.mjs +5 -3
  63. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
  65. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-tooltip.mjs +73 -110
  67. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  68. package/package.json +10 -1
  69. package/types/radix-ng-primitives-accordion.d.ts +4 -3
  70. package/types/radix-ng-primitives-autocomplete.d.ts +217 -152
  71. package/types/radix-ng-primitives-calendar.d.ts +5 -3
  72. package/types/radix-ng-primitives-combobox.d.ts +672 -283
  73. package/types/radix-ng-primitives-config.d.ts +1 -1
  74. package/types/radix-ng-primitives-context-menu.d.ts +15 -5
  75. package/types/radix-ng-primitives-core.d.ts +762 -14
  76. package/types/radix-ng-primitives-date-field.d.ts +3 -2
  77. package/types/radix-ng-primitives-dialog.d.ts +77 -32
  78. package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
  79. package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
  80. package/types/radix-ng-primitives-field.d.ts +1 -0
  81. package/types/radix-ng-primitives-floating-focus-manager.d.ts +175 -0
  82. package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
  83. package/types/radix-ng-primitives-menu.d.ts +186 -103
  84. package/types/radix-ng-primitives-navigation-menu.d.ts +37 -75
  85. package/types/radix-ng-primitives-popover.d.ts +59 -92
  86. package/types/radix-ng-primitives-popper.d.ts +39 -9
  87. package/types/radix-ng-primitives-preview-card.d.ts +39 -72
  88. package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
  89. package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
  90. package/types/radix-ng-primitives-select.d.ts +145 -108
  91. package/types/radix-ng-primitives-slider.d.ts +5 -4
  92. package/types/radix-ng-primitives-stepper.d.ts +4 -3
  93. package/types/radix-ng-primitives-time-field.d.ts +3 -2
  94. package/types/radix-ng-primitives-toast.d.ts +7 -7
  95. package/types/radix-ng-primitives-toggle-group.d.ts +5 -4
  96. package/types/radix-ng-primitives-toolbar.d.ts +3 -2
  97. package/types/radix-ng-primitives-tooltip.d.ts +24 -67
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-combobox.mjs","sources":["../../../packages/primitives/combobox/src/combobox-anchor.ts","../../../packages/primitives/combobox/src/combobox-arrow.ts","../../../packages/primitives/combobox/src/combobox-root.ts","../../../packages/primitives/combobox/src/combobox-backdrop.ts","../../../packages/primitives/combobox/src/combobox-chips.ts","../../../packages/primitives/combobox/src/combobox-chip.ts","../../../packages/primitives/combobox/src/combobox-chip-remove.ts","../../../packages/primitives/combobox/src/combobox-clear.ts","../../../packages/primitives/combobox/src/combobox-empty.ts","../../../packages/primitives/combobox/src/combobox-group.ts","../../../packages/primitives/combobox/src/combobox-group-label.ts","../../../packages/primitives/combobox/src/combobox-icon.ts","../../../packages/primitives/combobox/src/combobox-input.ts","../../../packages/primitives/combobox/src/combobox-item.ts","../../../packages/primitives/combobox/src/combobox-item-indicator.ts","../../../packages/primitives/combobox/src/combobox-label.ts","../../../packages/primitives/combobox/src/combobox-list.ts","../../../packages/primitives/combobox/src/combobox-popup.ts","../../../packages/primitives/combobox/src/combobox-portal.ts","../../../packages/primitives/combobox/src/combobox-positioner.ts","../../../packages/primitives/combobox/src/combobox-status.ts","../../../packages/primitives/combobox/src/combobox-trigger.ts","../../../packages/primitives/combobox/src/combobox-value.ts","../../../packages/primitives/combobox/index.ts","../../../packages/primitives/combobox/radix-ng-primitives-combobox.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\n\n/**\n * Optional positioning anchor for the popup. Put it on the element the popup should align to — for\n * example a control that wraps chips + input in `multiple` mode. When present it takes precedence\n * over the input (the popper resolves the first `RdxPopperAnchor` in DOM order, and this part sits\n * above the input). When absent, the input itself is the anchor, which is ideal when the input fills\n * the control.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxAnchor]',\n exportAs: 'rdxComboboxAnchor',\n hostDirectives: [RdxPopperAnchor]\n})\nexport class RdxComboboxAnchor {}\n","import { Directive } from '@angular/core';\nimport { RdxPopperArrow } from '@radix-ng/primitives/popper';\n\n/**\n * An optional arrow that points from the popup to the anchor. Composes the popper arrow, which keeps\n * it aligned as the popup flips sides.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxArrow]',\n exportAs: 'rdxComboboxArrow',\n hostDirectives: [{ directive: RdxPopperArrow, inputs: ['width', 'height'] }]\n})\nexport class RdxComboboxArrow {}\n","import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n model,\n numberAttribute,\n output,\n signal,\n Signal,\n untracked\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n AcceptableValue,\n BooleanInput,\n createContext,\n itemToStringLabel as defaultItemToStringLabel,\n Direction,\n injectId,\n isItemEqualToValue,\n isNullish,\n ItemValueComparator,\n useFilter,\n useListHighlight,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\n\n/** The value a combobox can hold: a single value, an array (multiple mode), or nothing. */\nexport type ComboboxValue = AcceptableValue | AcceptableValue[];\n\n/**\n * A combobox item, registered with the root so it participates in filtering, navigation, and\n * selection. Implemented by `RdxComboboxItem`; the root only depends on this structural shape to\n * avoid a circular import.\n */\nexport interface ComboboxItemRef {\n /** The option's element id, exposed via `aria-activedescendant` when highlighted. */\n readonly id: string;\n /** The option's host element, used for DOM-order sorting. */\n readonly element: HTMLElement;\n /** The option's value. */\n readonly value: Signal<AcceptableValue>;\n /** The text matched against the query and written to the input on selection. */\n readonly textValue: Signal<string>;\n /** Whether the option is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\n/** A custom filter predicate: `(itemText, query) => matches`. */\nexport type ComboboxFilter = (itemText: string, query: string) => boolean;\n\n/** Why the highlight moved: keyboard navigation, pointer hover, or a programmatic change. */\nexport type ComboboxHighlightReason = 'keyboard' | 'pointer' | 'none';\n\n/** Payload of {@link RdxComboboxRoot.onItemHighlighted}. */\nexport interface ComboboxItemHighlightedDetails {\n /** The highlighted item's value, or `null` when the highlight is cleared. */\n value: AcceptableValue | null;\n /**\n * The highlighted item's index in the visible/filtered list (`-1` when cleared). In virtualized\n * mode this is the index into {@link RdxComboboxRoot.filteredItems} — pass it to the virtualizer's\n * `scrollToIndex` so the item mounts before it needs DOM focus.\n */\n index: number;\n /** What caused the highlight to move. */\n reason: ComboboxHighlightReason;\n}\n\nconst context = () => {\n const root = inject(RdxComboboxRoot);\n return {\n listId: root.listId,\n labelId: root.labelId,\n setLabelId: (id: string | undefined) => root.labelId.set(id),\n dir: root.dir,\n value: root.value,\n inputValue: root.inputValue,\n open: root.open,\n multiple: root.multiple,\n selectionMode: root.mode,\n disabledState: root.disabledState,\n readonly: root.readonly,\n requiredState: root.requiredState,\n openOnInputClick: root.openOnInputClick,\n modal: root.modal,\n virtualized: root.virtualized,\n filteredItems: root.filteredItems,\n highlightedItem: root.highlightedItem,\n highlightedIndex: root.highlightedIndex.asReadonly(),\n activeId: root.activeId,\n itemId: (index: number) => root.itemId(index),\n isKeyboardActive: () => root.isKeyboardActive(),\n setKeyboardActive: (value: boolean) => root.setKeyboardActive(value),\n transitionStatus: root.transitionStatus,\n registerTransitionElement: root.registerTransitionElement,\n visibleCount: root.visibleCount,\n isVisible: (item: ComboboxItemRef) => root.isVisible(item),\n isSelected: (value: AcceptableValue) => root.isSelected(value),\n registerItem: (item: ComboboxItemRef) => root.registerItem(item),\n unregisterItem: (item: ComboboxItemRef) => root.unregisterItem(item),\n highlight: root.highlight,\n highlightNext: () => root.highlightNext('keyboard'),\n highlightPrevious: () => root.highlightPrevious('keyboard'),\n highlightFirst: () => root.highlightFirst('keyboard'),\n highlightLast: () => root.highlightLast('keyboard'),\n highlightIndex: (index: number, reason: ComboboxHighlightReason) => root.highlightIndex(index, reason),\n setHighlight: (item: ComboboxItemRef, reason: ComboboxHighlightReason) => root.setHighlight(item, reason),\n clearHighlight: () => root.clearHighlightState(),\n highlightItemOnHover: root.highlightItemOnHover,\n keepHighlight: root.keepHighlight,\n inputElement: root.inputElement.asReadonly(),\n setInputElement: (el: HTMLInputElement | null) => root.inputElement.set(el),\n registerTrigger: (el: HTMLElement | null) => (root.triggerElement = el),\n focusInput: () => root.focusInput(),\n openPopup: () => root.setOpen(true),\n openForBrowse: () => root.openForBrowse(),\n closePopup: (revert = true) => root.closePopup(revert),\n setInputValue: (value: string) => root.setInputValue(value),\n openAndHighlight: (edge: 'first' | 'last') => root.openAndHighlight(edge),\n select: (item: ComboboxItemRef) => root.handleSelect(item),\n selectIndex: (index: number) => root.selectIndex(index),\n selectHighlighted: () => root.selectHighlighted(),\n clearSelection: () => root.clearSelection(),\n removeValue: (value: AcceptableValue) => root.removeValue(value),\n removeLastValue: () => root.removeLastValue(),\n registerChipsNav: (fn: (() => boolean) | null) => root.registerChipsNav(fn),\n focusLastChip: () => root.focusLastChip(),\n labelFor: (value: AcceptableValue) => root.labelFor(value),\n markAsTouched: () => root.markAsTouched()\n };\n};\n\nexport type RdxComboboxRootContext = ReturnType<typeof context>;\n\nexport const [injectComboboxRootContext, provideComboboxRootContext] = createContext<RdxComboboxRootContext>(\n 'RdxComboboxRootContext',\n 'components/combobox'\n);\n\n/**\n * `autoHighlight` transform: pass the `'always'` / `'input-change'` string modes through verbatim,\n * coerce everything else as a boolean attribute (so the bare `autoHighlight` attribute reads `true`).\n *\n * Kept as a named module-level function rather than an inline `transform` arrow: compodoc 1.2.1\n * (the metadata source for the API contract and Storybook ArgTypes) hangs parsing an inline arrow\n * combined with explicit generic union type arguments on `input()`. A plain function reference sidesteps it.\n */\nfunction coerceAutoHighlight(value: BooleanInput | 'always' | 'input-change'): boolean | 'always' | 'input-change' {\n return value === 'always' || value === 'input-change' ? value : booleanAttribute(value);\n}\n\n/**\n * Root of a Combobox — a filterable select. Owns selection, input text, open state, filtering, and\n * highlight-model navigation, and exposes them to the parts through {@link RdxComboboxRootContext}.\n * Implements `ControlValueAccessor` for forms.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxRoot]',\n exportAs: 'rdxComboboxRoot',\n providers: [\n provideComboboxRootContext(context),\n { provide: NG_VALUE_ACCESSOR, useExisting: RdxComboboxRoot, multi: true }\n ],\n hostDirectives: [RdxPopper],\n host: {\n '[attr.data-disabled]': 'disabledState() ? \"\" : undefined'\n }\n})\nexport class RdxComboboxRoot implements ControlValueAccessor {\n private readonly injector = inject(Injector);\n\n /** Selected value(s). A single value in single mode, an array in `multiple` mode. */\n readonly value = model<ComboboxValue | null>(null);\n\n /** Initial value when uncontrolled. */\n readonly defaultValue = input<ComboboxValue | null>();\n\n /** The text currently in the input. */\n readonly inputValue = model<string>('');\n\n /** Whether the popup is open. */\n readonly open = model<boolean>(false);\n\n /** Initial open state when uncontrolled. */\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n\n /** Whether multiple values can be selected. Shorthand for `selectionMode=\"multiple\"`. */\n readonly multipleInput = input(false, { alias: 'multiple', transform: booleanAttribute });\n\n /**\n * Selection behavior. `'single'` / `'multiple'` commit a value; `'none'` filters without\n * selecting (a pure search/command UI). Defaults from the `multiple` shorthand.\n */\n readonly selectionMode = input<'single' | 'multiple' | 'none'>();\n\n /** Resolved selection mode. */\n readonly mode = computed<'single' | 'multiple' | 'none'>(\n () => this.selectionMode() ?? (this.multipleInput() ? 'multiple' : 'single')\n );\n\n /** Whether the combobox is in multiple-selection mode. */\n readonly multiple = computed(() => this.mode() === 'multiple');\n\n /** In `'none'` mode, whether pressing an item fills the input with its label. */\n readonly fillInputOnItemPress = input(true, { transform: booleanAttribute });\n\n /** Text direction. */\n readonly dir = input<Direction>('ltr');\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the combobox is read-only. */\n readonly readonly = input(false, { transform: booleanAttribute });\n\n /** Whether a value is required (for forms). */\n readonly required = input(false, { transform: booleanAttribute });\n\n /** Whether keyboard navigation wraps at the list boundaries. */\n readonly loopFocus = input(true, { transform: booleanAttribute });\n\n /**\n * Auto-highlight behavior:\n * - `false` (default): never auto-highlight;\n * - `true` (also the bare `autoHighlight` attribute) / `'input-change'`: highlight the first match as the query changes;\n * - `'always'`: keep the first navigable item highlighted whenever the popup is open.\n */\n readonly autoHighlight = input(false, { transform: coerceAutoHighlight });\n\n /** Resolved auto-highlight mode. */\n readonly autoHighlightMode = computed<'off' | 'input-change' | 'always'>(() => {\n const value = this.autoHighlight();\n if (value === 'always') {\n return 'always';\n }\n if (value === true || value === 'input-change') {\n return 'input-change';\n }\n return 'off';\n });\n\n /**\n * Whether moving the pointer over an item highlights it. `true` (default) paints `data-highlighted`\n * on hover; `false` suppresses hover-driven highlight entirely, letting CSS `:hover` stay distinct\n * from the `data-highlighted` (keyboard) state. Clicking an item still selects it.\n */\n readonly highlightItemOnHover = input(true, { transform: booleanAttribute });\n\n /**\n * Whether a pointer-driven highlight is kept when the cursor leaves the list. `false` (default)\n * clears the highlight on pointer-leave; `true` retains the last hovered item highlighted. Keyboard\n * navigation and auto-highlight are unaffected.\n */\n readonly keepHighlight = input(false, { transform: booleanAttribute });\n\n /** Whether clicking the input opens the popup. */\n readonly openOnInputClick = input(true, { transform: booleanAttribute });\n\n /** Whether the popup is modal: locks page scroll and makes outside content inert while open. */\n readonly modal = input(false, { transform: booleanAttribute });\n\n /** Whether selecting an item requests submit of the closest form. */\n readonly submitOnItemClick = input(false, { transform: booleanAttribute });\n\n /**\n * Filter applied to items against the input query.\n * - `undefined` (default): locale-aware \"contains\" via {@link useFilter};\n * - a function: custom matching;\n * - `null`: built-in filtering disabled (the consumer controls which items exist).\n */\n readonly filter = input<ComboboxFilter | null | undefined>(undefined);\n\n /** Maximum number of matching items to show. `-1` (default) means no limit. */\n readonly limit = input(-1, { transform: numberAttribute });\n\n /**\n * The full set of item values, used as the source of truth for filtering and navigation in\n * {@link virtualized} mode (where only a window of `RdxComboboxItem` is mounted). The filtered\n * subset is exposed as {@link filteredItems} for an external virtualizer to render.\n */\n readonly items = input<readonly AcceptableValue[]>();\n\n /**\n * Whether the list is externally virtualized — only a window of items is rendered, so navigation\n * runs over {@link items}/{@link filteredItems} by index instead of over mounted DOM elements.\n * Requires {@link items}, and {@link itemToStringLabel} for selection labels/filter text. Disabled\n * items outside the rendered window are not skipped by keyboard navigation.\n */\n readonly virtualized = input(false, { transform: booleanAttribute });\n\n /** How item values are compared for equality (function or object key). */\n readonly by = input<ItemValueComparator<AcceptableValue>>();\n\n /** Converts a value to its display label. Defaults to the matching item's text. */\n readonly itemToStringLabel = input<(value: AcceptableValue) => string>();\n\n /** Emits when the selection changes. */\n readonly onValueChange = output<ComboboxValue | null>();\n\n /** Emits when the input text changes. */\n readonly onInputValueChange = output<string>();\n\n /** Emits when the popup opens or closes. */\n readonly onOpenChange = output<boolean>();\n\n /**\n * Emits as the highlight moves, with the item's value, its index in {@link filteredItems}, and the\n * reason. In virtualized mode, use `index` to call the virtualizer's `scrollToIndex`.\n */\n readonly onItemHighlighted = output<ComboboxItemHighlightedDetails>();\n\n /** Emits after the open/close transition (including any exit animation) finishes. */\n readonly onOpenChangeComplete = output<boolean>();\n\n private readonly transition = useTransitionStatus((open) => this.onOpenChangeComplete.emit(open));\n\n /** Open/close transition phase, for `data-starting-style` / `data-ending-style`. */\n readonly transitionStatus = this.transition.status;\n\n /** Registers the popup element whose animation determines transition completion. */\n readonly registerTransitionElement = this.transition.registerElement;\n\n readonly listId = injectId('rdx-combobox-list-');\n\n readonly labelId = signal<string | undefined>(undefined);\n\n readonly inputElement = signal<HTMLInputElement | null>(null);\n\n private readonly cvaDisabled = signal(false);\n readonly disabledState = computed(() => this.disabled() || this.cvaDisabled());\n readonly requiredState = computed(() => this.required());\n\n private readonly defaultFilter = useFilter();\n\n /**\n * Whether the input text is a fresh user query rather than the current selection's label. While\n * `false` (just opened, or showing a selected label), the list is unfiltered so the user can\n * browse; it flips `true` on the first keystroke.\n */\n private readonly typed = signal(false);\n\n private readonly _items = signal<readonly ComboboxItemRef[]>([]);\n\n /** Registered items, sorted into DOM order. */\n readonly orderedItems = computed(() => {\n const items = [...this._items()];\n return items.sort((a, b) => {\n const position = a.element.compareDocumentPosition(b.element);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n return 0;\n });\n });\n\n /** Matching items in DOM order, capped at `limit`. The set of items the list shows. */\n readonly visibleItems = computed(() => {\n const matching = this.orderedItems().filter((item) => this.matchesFilter(item));\n const limit = this.limit();\n return limit >= 0 ? matching.slice(0, limit) : matching;\n });\n\n private readonly visibleSet = computed(() => new Set(this.visibleItems()));\n\n /**\n * The filtered item values an external virtualizer should render (the analogue of Base UI's\n * `useFilteredItems`). Driven by {@link items} when provided (virtualized mode), capped by\n * {@link limit}; otherwise mirrors the values of the mounted {@link visibleItems}.\n */\n readonly filteredItems = computed<readonly AcceptableValue[]>(() => {\n const data = this.items();\n if (data === undefined) {\n return this.visibleItems().map((item) => item.value());\n }\n const limit = this.limit();\n const cap = (arr: readonly AcceptableValue[]) => (limit >= 0 ? arr.slice(0, limit) : arr);\n\n const filter = this.filter();\n if (filter === null) {\n return cap(data);\n }\n const query = this.typed() ? (this.inputValue() ?? '') : '';\n if (!query) {\n return cap(data);\n }\n const matcher = filter ?? this.defaultFilter.contains;\n return cap(data.filter((value) => matcher(this.textFor(value), query)));\n });\n\n readonly visibleCount = computed(() =>\n this.virtualized() ? this.filteredItems().length : this.visibleItems().length\n );\n\n readonly highlight = useListHighlight<ComboboxItemRef>({\n items: this.orderedItems,\n isNavigable: (item) => this.isVisible(item) && !item.disabled(),\n getId: (item) => item.id,\n loop: this.loopFocus,\n injector: this.injector\n });\n\n readonly highlightedItem = this.highlight.highlightedItem;\n\n /** Highlighted index into {@link filteredItems} in virtualized mode (`-1` when cleared). */\n readonly highlightedIndex = signal(-1);\n\n /** Why the highlight last moved; read when emitting {@link onItemHighlighted}. */\n private readonly highlightReason = signal<ComboboxHighlightReason>('none');\n\n readonly activeId = computed(() => {\n if (this.virtualized()) {\n const index = this.highlightedIndex();\n return index >= 0 ? this.itemId(index) : undefined;\n }\n return this.highlight.activeId();\n });\n\n /** Edge to highlight once the list has mounted (items register asynchronously after opening). */\n private readonly pendingHighlightEdge = signal<'first' | 'last' | null>(null);\n\n private onChange?: (value: ComboboxValue | null) => void;\n private onTouched?: () => void;\n\n constructor() {\n // Apply uncontrolled defaults once.\n effect(() => {\n const initial = this.defaultValue();\n if (initial !== undefined && untracked(this.value) === null) {\n this.value.set(initial);\n }\n });\n effect(() => {\n if (untracked(this.open) === false && this.defaultOpen()) {\n this.open.set(true);\n }\n });\n\n // Emit open changes and drive the open/close transition (skip the initial run).\n let previousOpen = untracked(this.open);\n effect(() => {\n const open = this.open();\n if (open === previousOpen) {\n return;\n }\n previousOpen = open;\n untracked(() => {\n this.onOpenChange.emit(open);\n this.transition.start(open);\n });\n });\n\n // Emit highlight changes (skip the initial run). Tracks both the DOM-ref highlight and the\n // virtualized index; only one is active per mode, so the other never fires spuriously.\n let highlightInitialized = false;\n effect(() => {\n const item = this.highlightedItem();\n const index = this.highlightedIndex();\n if (!highlightInitialized) {\n highlightInitialized = true;\n return;\n }\n untracked(() => {\n const reason = this.highlightReason();\n if (this.virtualized()) {\n const value = index >= 0 ? (this.filteredItems()[index] ?? null) : null;\n this.onItemHighlighted.emit({ value, index, reason });\n } else {\n const value = item ? item.value() : null;\n const itemIndex = item ? this.visibleItems().indexOf(item) : -1;\n this.onItemHighlighted.emit({ value, index: itemIndex, reason });\n }\n });\n });\n\n // Apply a deferred open-edge highlight once items (DOM refs) or filtered data have registered.\n effect(() => {\n const edge = this.pendingHighlightEdge();\n const count = this.virtualized() ? this.filteredItems().length : this.orderedItems().length;\n if (!this.open() || edge === null || count === 0) {\n return;\n }\n untracked(() => {\n // Programmatic move — reset the reason in both modes so the emit reports 'none', not a\n // stale 'keyboard'/'pointer' left by the previous user interaction.\n this.highlightReason.set('none');\n if (this.virtualized()) {\n this.highlightedIndex.set(edge === 'first' ? 0 : count - 1);\n } else if (edge === 'first') {\n this.highlight.first();\n } else {\n this.highlight.last();\n }\n this.pendingHighlightEdge.set(null);\n });\n });\n\n // autoHighlight 'always': keep the first navigable item highlighted whenever the popup is\n // open. `visibleCount` re-runs this when filtering changes; the current highlight is read\n // untracked to re-establish a highlight only after the self-heal clears it (no loop).\n effect(() => {\n this.orderedItems();\n this.visibleCount();\n if (this.autoHighlightMode() === 'always' && this.open()) {\n untracked(() => {\n if (this.virtualized()) {\n // Re-seed when the index is cleared OR has fallen out of range, so this works\n // regardless of whether the self-heal effect ran first (no ordering dependency).\n const length = this.filteredItems().length;\n const index = this.highlightedIndex();\n if ((index < 0 || index >= length) && length > 0) {\n this.highlightReason.set('none');\n this.highlightedIndex.set(0);\n }\n } else if (this.highlightedItem() === null) {\n this.highlightReason.set('none');\n this.highlight.first();\n }\n });\n }\n });\n\n // Virtualized self-heal: clear a highlight that filtering has pushed out of range, so\n // `activeId` never references an index past the end of the filtered list.\n effect(() => {\n if (!this.virtualized()) {\n return;\n }\n const length = this.filteredItems().length;\n untracked(() => {\n const index = this.highlightedIndex();\n if (index >= length && index !== -1) {\n this.highlightReason.set('none');\n this.highlightedIndex.set(-1);\n }\n });\n });\n\n // Virtualized object values can't be labelled from the DOM (items aren't registered) — without\n // `itemToStringLabel`, selection/revert fall back to a generic label. Warn once in dev.\n if (isDevMode()) {\n let warned = false;\n effect(() => {\n if (warned || !this.virtualized() || this.itemToStringLabel()) {\n return;\n }\n if (this.items()?.some((value) => value !== null && typeof value === 'object')) {\n warned = true;\n console.warn(\n '[rdxComboboxRoot] `virtualized` with object item values needs `itemToStringLabel` ' +\n 'to render correct selection labels; falling back to a generic label.'\n );\n }\n });\n }\n }\n\n /** Opens the popup for browsing (resets the query to \"pristine\" and selects the input text). */\n openForBrowse(): void {\n if (!this.open()) {\n this.typed.set(false);\n }\n this.setOpen(true);\n this.selectInputText();\n if (this.autoHighlightMode() === 'always') {\n this.pendingHighlightEdge.set('first');\n }\n }\n\n /** Opens the popup and highlights the given edge once the list mounts. */\n openAndHighlight(edge: 'first' | 'last'): void {\n if (!this.open()) {\n this.typed.set(false);\n }\n this.setOpen(true);\n this.selectInputText();\n this.pendingHighlightEdge.set(edge);\n }\n\n /** Whether the item matches the active query (ignores the `limit` cap). */\n private matchesFilter(item: ComboboxItemRef): boolean {\n const filter = this.filter();\n if (filter === null) {\n return true;\n }\n // Until the user types a fresh query, show the whole list (the input may still hold the\n // selected item's label, which must not filter everything down to just that item).\n const query = this.typed() ? (this.inputValue() ?? '') : '';\n const matcher = filter ?? this.defaultFilter.contains;\n return matcher(item.textValue(), query);\n }\n\n /** Whether the item is shown in the list (matches the query and is within `limit`). */\n isVisible(item: ComboboxItemRef): boolean {\n return this.visibleSet().has(item);\n }\n\n // Tracks whether the last interaction was the keyboard, so the highlight doesn't jump to an item\n // the cursor happens to rest on when arrow-key navigation scrolls the list under a still pointer.\n private keyboardActive = false;\n isKeyboardActive(): boolean {\n return this.keyboardActive;\n }\n setKeyboardActive(value: boolean): void {\n this.keyboardActive = value;\n }\n\n isSelected(value: AcceptableValue): boolean {\n if (this.mode() === 'none') {\n return false;\n }\n const current = this.value();\n if (this.multiple()) {\n return Array.isArray(current) && current.some((v) => isItemEqualToValue(v, value, this.by()));\n }\n return !isNullish(current) && isItemEqualToValue(current as AcceptableValue, value, this.by());\n }\n\n registerItem(item: ComboboxItemRef): void {\n this._items.update((items) => [...items, item]);\n }\n\n unregisterItem(item: ComboboxItemRef): void {\n this._items.update((items) => items.filter((i) => i !== item));\n }\n\n setOpen(open: boolean): void {\n if (this.disabledState() || this.readonly()) {\n return;\n }\n this.open.set(open);\n }\n\n closePopup(revert = true): void {\n if (!this.open()) {\n return;\n }\n this.open.set(false);\n this.clearHighlightState();\n if (revert) {\n this.revertInputValue();\n }\n this.markAsTouched();\n }\n\n /** Updates the input text from user typing (marks the query as a fresh user query). */\n setInputValue(value: string): void {\n this.inputValue.set(value);\n this.typed.set(true);\n this.onInputValueChange.emit(value);\n // Auto-highlight the first match as the query changes (deferred so it lands after items mount).\n if (this.autoHighlightMode() !== 'off') {\n this.pendingHighlightEdge.set('first');\n }\n }\n\n /** Sets the input text programmatically (a selection label / revert) — not a user query. */\n private setLabel(value: string): void {\n this.inputValue.set(value);\n this.typed.set(false);\n this.onInputValueChange.emit(value);\n }\n\n /** Selects all input text so the next keystroke replaces a stale selection label. */\n selectInputText(): void {\n this.inputElement()?.select();\n }\n\n /** Resets the input text to the current selection's label (single mode) or empty. */\n private revertInputValue(): void {\n if (this.multiple()) {\n this.setLabel('');\n return;\n }\n const current = this.value();\n this.setLabel(isNullish(current) ? '' : this.labelFor(current as AcceptableValue));\n }\n\n labelFor(value: AcceptableValue): string {\n const custom = this.itemToStringLabel();\n if (custom) {\n return custom(value);\n }\n const item = this.orderedItems().find((i) => isItemEqualToValue(i.value(), value, this.by()));\n return item ? item.textValue() : defaultItemToStringLabel(value);\n }\n\n /** Filter/label text for a raw item value (virtualized mode, no DOM element to read from). */\n private textFor(value: AcceptableValue): string {\n const custom = this.itemToStringLabel();\n return custom ? custom(value) : defaultItemToStringLabel(value);\n }\n\n /** Deterministic id for the item at `index` in virtualized mode (matches `aria-activedescendant`). */\n itemId(index: number): string {\n return `${this.listId}-item-${index}`;\n }\n\n handleSelect(item: ComboboxItemRef): void {\n if (this.disabledState() || this.readonly() || item.disabled()) {\n return;\n }\n this.handleSelectValue(item.value(), item.textValue() || this.labelFor(item.value()));\n }\n\n /** Selects the filtered item at `index` (virtualized mode). The label comes from {@link labelFor}. */\n selectIndex(index: number): void {\n if (this.disabledState() || this.readonly()) {\n return;\n }\n const value = this.filteredItems()[index];\n if (value === undefined) {\n return;\n }\n this.handleSelectValue(value, this.labelFor(value));\n }\n\n /** Commits a selection from a resolved value/label, independent of whether a DOM item exists. */\n private handleSelectValue(value: AcceptableValue, textValue: string): void {\n if (this.mode() === 'none') {\n // No value is committed; `onValueChange` fires as a pointer/keyboard activation signal so\n // command-palette consumers can react. Optionally fill the input, then close.\n this.onValueChange.emit(value);\n if (this.fillInputOnItemPress()) {\n this.setLabel(textValue);\n }\n this.open.set(false);\n this.clearHighlightState();\n this.restoreFocusAfterSelect();\n this.maybeSubmit();\n return;\n }\n\n if (this.multiple()) {\n const current = Array.isArray(this.value()) ? [...(this.value() as AcceptableValue[])] : [];\n const index = current.findIndex((v) => isItemEqualToValue(v, value, this.by()));\n if (index === -1) {\n current.push(value);\n } else {\n current.splice(index, 1);\n }\n this.commitValue(current);\n this.setLabel('');\n this.focusInput();\n } else {\n this.commitValue(value);\n this.setLabel(textValue);\n this.open.set(false);\n this.clearHighlightState();\n this.restoreFocusAfterSelect();\n }\n\n this.maybeSubmit();\n }\n\n /** Requests submit of the closest form when `submitOnItemClick` is enabled. */\n private maybeSubmit(): void {\n if (this.submitOnItemClick()) {\n this.inputElement()?.form?.requestSubmit?.();\n }\n }\n\n selectHighlighted(): void {\n if (this.virtualized()) {\n const index = this.highlightedIndex();\n if (index >= 0) {\n this.selectIndex(index);\n }\n return;\n }\n const item = this.highlightedItem();\n if (item) {\n this.handleSelect(item);\n }\n }\n\n // --- Highlight navigation facade (mode-aware: index-based when virtualized, else DOM-ref) ---\n\n highlightNext(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.highlightReason.set(reason);\n if (this.virtualized()) {\n this.stepIndex(1);\n } else {\n this.highlight.next();\n }\n }\n\n highlightPrevious(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.highlightReason.set(reason);\n if (this.virtualized()) {\n this.stepIndex(-1);\n } else {\n this.highlight.previous();\n }\n }\n\n highlightFirst(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.highlightReason.set(reason);\n if (this.virtualized()) {\n this.highlightedIndex.set(this.filteredItems().length > 0 ? 0 : -1);\n } else {\n this.highlight.first();\n }\n }\n\n highlightLast(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.highlightReason.set(reason);\n if (this.virtualized()) {\n const length = this.filteredItems().length;\n this.highlightedIndex.set(length > 0 ? length - 1 : -1);\n } else {\n this.highlight.last();\n }\n }\n\n /** Highlights a specific index in virtualized mode (e.g. pointer hover). Ignored if out of range. */\n highlightIndex(index: number, reason: ComboboxHighlightReason): void {\n if (index < 0 || index >= this.filteredItems().length) {\n return;\n }\n this.highlightReason.set(reason);\n this.highlightedIndex.set(index);\n }\n\n /** Highlights a DOM-ref item (non-virtualized pointer hover). */\n setHighlight(item: ComboboxItemRef, reason: ComboboxHighlightReason): void {\n this.highlightReason.set(reason);\n this.highlight.set(item);\n }\n\n /** Clears whichever highlight model is active. */\n clearHighlightState(): void {\n this.highlight.clear();\n this.highlightedIndex.set(-1);\n }\n\n /** Steps the virtualized highlight index by `direction`, wrapping when {@link loopFocus}. */\n private stepIndex(direction: 1 | -1): void {\n const length = this.filteredItems().length;\n if (length === 0) {\n this.highlightedIndex.set(-1);\n return;\n }\n const current = this.highlightedIndex();\n if (current < 0) {\n this.highlightedIndex.set(direction === 1 ? 0 : length - 1);\n return;\n }\n let next = current + direction;\n const loop = this.loopFocus();\n if (next < 0) {\n next = loop ? length - 1 : 0;\n } else if (next >= length) {\n next = loop ? 0 : length - 1;\n }\n this.highlightedIndex.set(next);\n }\n\n clearSelection(): void {\n this.commitValue(this.multiple() ? [] : null);\n this.setLabel('');\n this.focusInput();\n }\n\n removeValue(value: AcceptableValue): void {\n if (!this.multiple() || !Array.isArray(this.value())) {\n return;\n }\n const next = (this.value() as AcceptableValue[]).filter((v) => !isItemEqualToValue(v, value, this.by()));\n this.commitValue(next);\n }\n\n removeLastValue(): void {\n if (!this.multiple() || !Array.isArray(this.value())) {\n return;\n }\n const current = this.value() as AcceptableValue[];\n if (current.length > 0) {\n this.commitValue(current.slice(0, -1));\n }\n }\n\n /** The trigger element, used as a focus fallback when the input lives inside the popup. */\n triggerElement: HTMLElement | null = null;\n\n focusInput(): void {\n this.inputElement()?.focus();\n }\n\n /**\n * Restores focus after a selection closes the popup, so the keyboard can reopen it. When the\n * input lives inside the popup it is about to unmount, so focus goes to the trigger instead;\n * otherwise it returns to the input. Done synchronously while the input is still in the DOM.\n */\n restoreFocusAfterSelect(): void {\n const input = this.inputElement();\n if (input && !input.closest('[rdxComboboxPopup]')) {\n input.focus();\n } else {\n this.triggerElement?.focus();\n }\n }\n\n private chipsFocusLast: (() => boolean) | null = null;\n\n /** Registered by `RdxComboboxChips` so the input can hand keyboard focus to the chips. */\n registerChipsNav(fn: (() => boolean) | null): void {\n this.chipsFocusLast = fn;\n }\n\n /** Moves focus to the last chip, if any. Returns whether a chip was focused. */\n focusLastChip(): boolean {\n return this.chipsFocusLast?.() ?? false;\n }\n\n markAsTouched(): void {\n this.onTouched?.();\n }\n\n private commitValue(value: ComboboxValue | null): void {\n this.value.set(value);\n this.onValueChange.emit(value);\n this.onChange?.(value);\n }\n\n // ControlValueAccessor\n writeValue(value: ComboboxValue | null): void {\n untracked(() => this.value.set(value));\n }\n\n registerOnChange(fn: (value: ComboboxValue | 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","import { Directive } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * An overlay rendered beneath the popup in `modal` mode. Place it inside the portal/presence; style\n * it `position: fixed; inset: 0`. Give it `pointer-events: auto` so a click on it dismisses the popup\n * (with `modal`, the rest of the page is inert). Exposes `data-open` / `data-closed` for animation.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxBackdrop]',\n exportAs: 'rdxComboboxBackdrop',\n host: {\n 'aria-hidden': 'true',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.open() ? undefined : \"\"'\n }\n})\nexport class RdxComboboxBackdrop {\n protected readonly rootContext = injectComboboxRootContext();\n}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Container for the selected-value chips in `multiple` mode. Sits before the input and coordinates\n * arrow-key navigation across the chips (the chips themselves handle the key events).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxChips]',\n exportAs: 'rdxComboboxChips',\n hostDirectives: [RdxDismissableLayerBranch],\n host: {\n role: 'list'\n }\n})\nexport class RdxComboboxChips {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly rootContext = injectComboboxRootContext();\n\n constructor() {\n this.rootContext.registerChipsNav(() => this.focusLast());\n inject(DestroyRef).onDestroy(() => this.rootContext.registerChipsNav(null));\n }\n\n /** The chip elements in DOM order. */\n getChips(): HTMLElement[] {\n return Array.from(this.host.querySelectorAll<HTMLElement>('[rdxComboboxChip]'));\n }\n\n /** Focuses the last chip. Returns whether there was one. */\n focusLast(): boolean {\n const chips = this.getChips();\n if (chips.length === 0) {\n return false;\n }\n chips[chips.length - 1].focus();\n return true;\n }\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { AcceptableValue, createContext } from '@radix-ng/primitives/core';\nimport { RdxComboboxChips } from './combobox-chips';\nimport { injectComboboxRootContext } from './combobox-root';\n\nconst chipContext = () => {\n const chip = inject(RdxComboboxChip);\n return { value: chip.value };\n};\n\nexport type RdxComboboxChipContext = ReturnType<typeof chipContext>;\n\nexport const [injectComboboxChipContext, provideComboboxChipContext] = createContext<RdxComboboxChipContext>(\n 'RdxComboboxChipContext',\n 'components/combobox'\n);\n\n/**\n * A single selected-value chip. Provide its `value` so {@link RdxComboboxChipRemove} can deselect it.\n * Chips are focusable and navigable with the arrow keys; Backspace / Delete removes the chip.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxChip]',\n exportAs: 'rdxComboboxChip',\n providers: [provideComboboxChipContext(chipContext)],\n host: {\n role: 'listitem',\n tabindex: '-1',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxComboboxChip {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly chips = inject(RdxComboboxChips, { optional: true });\n private readonly rootContext = injectComboboxRootContext();\n\n /** The value this chip represents. */\n readonly value = input.required<AcceptableValue>();\n\n onKeydown(event: KeyboardEvent): void {\n const list = this.chips?.getChips() ?? [];\n const index = list.indexOf(this.element);\n\n switch (event.key) {\n case 'ArrowLeft':\n if (index > 0) {\n event.preventDefault();\n list[index - 1].focus();\n }\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (index < list.length - 1) {\n list[index + 1].focus();\n } else {\n this.rootContext.focusInput();\n }\n break;\n case 'Home':\n if (list.length) {\n event.preventDefault();\n list[0].focus();\n }\n break;\n case 'End':\n event.preventDefault();\n this.rootContext.focusInput();\n break;\n case 'Backspace':\n case 'Delete': {\n event.preventDefault();\n // The @for tracks by value, so the previous/next chip nodes survive this removal.\n const prev = list[index - 1];\n const next = list[index + 1];\n this.rootContext.removeValue(this.value());\n if (prev) {\n prev.focus();\n } else if (next) {\n next.focus();\n } else {\n this.rootContext.focusInput();\n }\n break;\n }\n case 'Escape':\n this.rootContext.focusInput();\n break;\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxChipContext } from './combobox-chip';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Removes its chip's value from the selection, keeping focus in the input.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxComboboxChipRemove]',\n exportAs: 'rdxComboboxChipRemove',\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Remove',\n '(click)': 'onClick()'\n }\n})\nexport class RdxComboboxChipRemove {\n private readonly rootContext = injectComboboxRootContext();\n private readonly chipContext = injectComboboxChipContext();\n\n onClick(): void {\n this.rootContext.removeValue(this.chipContext.value());\n this.rootContext.focusInput();\n }\n}\n","import { computed, Directive } from '@angular/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Clears the current selection and the input text. Hidden when there is nothing to clear.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxComboboxClear]',\n exportAs: 'rdxComboboxClear',\n hostDirectives: [RdxDismissableLayerBranch],\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Clear',\n '[hidden]': 'isEmpty()',\n '[attr.disabled]': 'rootContext.disabledState() ? \"\" : undefined',\n '(click)': 'onClick()'\n }\n})\nexport class RdxComboboxClear {\n protected readonly rootContext = injectComboboxRootContext();\n\n protected readonly isEmpty = computed(() => {\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n return value === null || value === undefined;\n });\n\n onClick(): void {\n this.rootContext.clearSelection();\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Shown only when no items match the current query.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxEmpty]',\n exportAs: 'rdxComboboxEmpty',\n host: {\n role: 'presentation',\n '[hidden]': 'rootContext.visibleCount() > 0'\n }\n})\nexport class RdxComboboxEmpty {\n protected readonly rootContext = injectComboboxRootContext();\n}\n","import { computed, Directive, inject, signal } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\nimport { ComboboxItemRef, injectComboboxRootContext } from './combobox-root';\n\nconst groupContext = () => {\n const group = inject(RdxComboboxGroup);\n return {\n labelId: group.labelId,\n registerItem: (item: ComboboxItemRef) => group.registerItem(item),\n unregisterItem: (item: ComboboxItemRef) => group.unregisterItem(item)\n };\n};\n\nexport type RdxComboboxGroupContext = ReturnType<typeof groupContext>;\n\nexport const [injectComboboxGroupContext, provideComboboxGroupContext] = createContext<RdxComboboxGroupContext>(\n 'RdxComboboxGroupContext',\n 'components/combobox'\n);\n\n/**\n * Groups related options under a shared label. Hides itself when all of its items are filtered out,\n * so a group heading never lingers above an empty section.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxGroup]',\n exportAs: 'rdxComboboxGroup',\n providers: [provideComboboxGroupContext(groupContext)],\n host: {\n role: 'group',\n '[attr.aria-labelledby]': 'labelId()',\n '[hidden]': 'hasItems() && !hasVisibleItems()'\n }\n})\nexport class RdxComboboxGroup {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly labelId = signal<string | undefined>(undefined);\n\n private readonly items = signal<readonly ComboboxItemRef[]>([]);\n\n protected readonly hasItems = computed(() => this.items().length > 0);\n protected readonly hasVisibleItems = computed(() => this.items().some((item) => this.rootContext.isVisible(item)));\n\n registerItem(item: ComboboxItemRef): void {\n this.items.update((items) => [...items, item]);\n }\n\n unregisterItem(item: ComboboxItemRef): void {\n this.items.update((items) => items.filter((i) => i !== item));\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectComboboxGroupContext } from './combobox-group';\n\n/**\n * Accessible label for a {@link RdxComboboxGroup}. Wires itself up via `aria-labelledby`.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxGroupLabel]',\n exportAs: 'rdxComboboxGroupLabel',\n host: {\n '[attr.id]': 'id'\n }\n})\nexport class RdxComboboxGroupLabel {\n private readonly groupContext = injectComboboxGroupContext();\n\n readonly id = injectId('rdx-combobox-group-label-');\n\n constructor() {\n this.groupContext.labelId.set(this.id);\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Decorative icon inside the trigger. Hidden from assistive technology.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxIcon]',\n exportAs: 'rdxComboboxIcon',\n host: {\n 'aria-hidden': 'true'\n }\n})\nexport class RdxComboboxIcon {}\n","import {\n afterNextRender,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input\n} from '@angular/core';\nimport { BooleanInput, injectId } from '@radix-ng/primitives/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { injectFieldRootContext } from '@radix-ng/primitives/field';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { injectComboboxRootContext } from './combobox-root';\n\nconst attr = (value: boolean) => (value ? '' : undefined);\n\n/**\n * The combobox text input. Holds DOM focus at all times; the highlighted option is referenced via\n * `aria-activedescendant`. Integrates with Field for labeling, description, and validation state.\n *\n * @group Components\n */\n@Directive({\n selector: 'input[rdxComboboxInput]',\n exportAs: 'rdxComboboxInput',\n hostDirectives: [RdxPopperAnchor, RdxDismissableLayerBranch],\n host: {\n role: 'combobox',\n autocomplete: 'off',\n 'aria-autocomplete': 'list',\n '[attr.id]': 'id()',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.aria-controls]': 'rootContext.listId',\n '[attr.aria-labelledby]': 'rootContext.labelId()',\n '[attr.aria-activedescendant]': 'rootContext.activeId()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': 'invalidState() ? \"true\" : undefined',\n '[attr.aria-required]': 'requiredState() ? \"true\" : undefined',\n '[attr.aria-disabled]': 'disabledState() ? \"true\" : undefined',\n '[attr.disabled]': 'disabledState() ? \"\" : undefined',\n '[attr.readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.required]': 'requiredState() ? \"\" : undefined',\n '[value]': 'rootContext.inputValue()',\n '[attr.data-popup-open]': 'dataAttr(rootContext.open())',\n '[attr.data-list-empty]': 'dataAttr(rootContext.visibleCount() === 0)',\n '[attr.data-placeholder]': 'dataAttr(isEmptyValue())',\n '[attr.data-invalid]': 'dataAttr(invalidState())',\n '[attr.data-valid]': 'dataAttr(!invalidState())',\n '[attr.data-disabled]': 'dataAttr(disabledState())',\n '[attr.data-required]': 'dataAttr(requiredState())',\n '[attr.data-filled]': 'dataAttr(filledState())',\n '[attr.data-focused]': 'dataAttr(focusedState())',\n '(input)': 'onInput($event)',\n '(click)': 'onClick()',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeydown($event)',\n '(compositionstart)': 'composing = true',\n '(compositionend)': 'onCompositionEnd($event)'\n }\n})\nexport class RdxComboboxInput {\n protected readonly rootContext = injectComboboxRootContext();\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef).nativeElement;\n private readonly fieldRootContext = injectFieldRootContext(true);\n\n /** The input id; Field labels and descriptions reference it for accessible relationships. */\n readonly id = input(injectId('rdx-combobox-input-'));\n\n /** Marks the input as invalid independently of any Field state. */\n readonly invalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly invalidState = computed(() => this.invalid() || Boolean(this.fieldRootContext?.invalidState()));\n protected readonly disabledState = computed(\n () => this.rootContext.disabledState() || Boolean(this.fieldRootContext?.disabledState())\n );\n protected readonly requiredState = computed(\n () => this.rootContext.requiredState() || Boolean(this.fieldRootContext?.requiredState())\n );\n protected readonly filledState = computed(\n () => !this.isEmptyValue() || Boolean(this.fieldRootContext?.filledState())\n );\n protected readonly focusedState = computed(() => Boolean(this.fieldRootContext?.focusedState()));\n\n protected readonly isEmptyValue = computed(() => {\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n return value === null || value === undefined;\n });\n\n protected readonly describedBy = computed(() => {\n if (!this.fieldRootContext) {\n return undefined;\n }\n const ids = [\n ...this.fieldRootContext.descriptionIds(),\n ...(this.fieldRootContext.invalidState() ? this.fieldRootContext.errorIds() : [])\n ];\n return ids.length ? ids.join(' ') : undefined;\n });\n\n constructor() {\n this.rootContext.setInputElement(this.element);\n\n afterNextRender(() => {\n this.fieldRootContext?.setControlId(this.id());\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.rootContext.inputElement() === this.element) {\n this.rootContext.setInputElement(null);\n }\n });\n }\n\n /** Whether an IME composition is in progress (CJK). While composing, don't filter or select. */\n protected composing = false;\n\n onInput(event: Event): void {\n // Defer filtering until the composition ends so intermediate IME text doesn't filter/select.\n if (this.composing || (event as InputEvent).isComposing) {\n return;\n }\n this.commitInput((event.target as HTMLInputElement).value);\n }\n\n onCompositionEnd(event: CompositionEvent): void {\n this.composing = false;\n this.commitInput((event.target as HTMLInputElement).value);\n }\n\n private commitInput(value: string): void {\n if (!this.rootContext.open()) {\n this.rootContext.openPopup();\n }\n // setInputValue applies any autoHighlight (deferred until items mount).\n this.rootContext.setInputValue(value);\n }\n\n onClick(): void {\n if (this.rootContext.openOnInputClick()) {\n this.rootContext.openForBrowse();\n }\n }\n\n onFocus(): void {\n this.fieldRootContext?.setFocused(true);\n }\n\n onBlur(): void {\n this.fieldRootContext?.setFocused(false);\n this.fieldRootContext?.setTouched(true);\n }\n\n onKeydown(event: KeyboardEvent): void {\n // Don't interfere with IME composition or text-editing shortcuts / range selection. Home/End\n // and Shift+Arrows must keep moving the caret, Ctrl/Meta combos stay browser shortcuts.\n if (event.isComposing || this.composing) {\n return;\n }\n if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey) {\n return;\n }\n\n const open = this.rootContext.open();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.rootContext.setKeyboardActive(true);\n if (!open) {\n this.rootContext.openAndHighlight('first');\n } else {\n this.rootContext.highlightNext();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.rootContext.setKeyboardActive(true);\n if (!open) {\n this.rootContext.openAndHighlight('last');\n } else {\n this.rootContext.highlightPrevious();\n }\n break;\n case 'Enter':\n if (open) {\n const hasHighlight = this.rootContext.virtualized()\n ? this.rootContext.highlightedIndex() >= 0\n : this.rootContext.highlightedItem() !== null;\n if (hasHighlight) {\n // Select the highlighted item (and prevent an accidental form submit).\n event.preventDefault();\n this.rootContext.selectHighlighted();\n } else {\n // Nothing highlighted: just close, and let the form submit.\n this.rootContext.closePopup(true);\n }\n }\n break;\n case 'Escape':\n // Just close the popup (reverting the in-progress query); never clear the selection.\n if (open) {\n event.preventDefault();\n this.rootContext.closePopup(true);\n }\n break;\n case 'Tab':\n if (open) {\n this.rootContext.closePopup(true);\n }\n break;\n case 'ArrowLeft':\n // From the very start of the input in multiple mode, step into the chips.\n if (\n this.rootContext.multiple() &&\n this.element.selectionStart === 0 &&\n this.element.selectionEnd === 0 &&\n this.rootContext.focusLastChip()\n ) {\n event.preventDefault();\n }\n break;\n case 'Backspace':\n if (this.rootContext.multiple() && this.element.value === '') {\n this.rootContext.removeLastValue();\n }\n break;\n }\n }\n\n protected readonly dataAttr = attr;\n}\n","import {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { AcceptableValue, createContext, injectId } from '@radix-ng/primitives/core';\nimport { injectComboboxGroupContext } from './combobox-group';\nimport { ComboboxItemRef, injectComboboxRootContext } from './combobox-root';\n\nconst itemContext = () => {\n const item = inject(RdxComboboxItem);\n return {\n isSelected: item.isSelected,\n isHighlighted: item.isHighlighted,\n disabled: item.disabled,\n value: item.value\n };\n};\n\nexport type RdxComboboxItemContext = ReturnType<typeof itemContext>;\n\nexport const [injectComboboxItemContext, provideComboboxItemContext] = createContext<RdxComboboxItemContext>(\n 'RdxComboboxItemContext',\n 'components/combobox'\n);\n\n/**\n * A selectable option. Registers itself with the root for filtering and navigation. Highlight is\n * virtual (`data-highlighted` + `aria-activedescendant` on the input) — items never take DOM focus.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxItem]',\n exportAs: 'rdxComboboxItem',\n providers: [provideComboboxItemContext(itemContext)],\n host: {\n role: 'option',\n '[attr.id]': 'elementId()',\n '[attr.aria-selected]': 'isSelected()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : undefined',\n '[attr.aria-setsize]': 'ariaSetSize()',\n '[attr.aria-posinset]': 'ariaPosInSet()',\n '[attr.data-selected]': 'isSelected() ? \"\" : undefined',\n '[attr.data-highlighted]': 'isHighlighted() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[hidden]': '!isVisible()',\n '[attr.data-hidden]': 'isVisible() ? undefined : \"\"',\n '(pointerdown)': 'onPointerDown($event)',\n '(mousedown)': 'onPointerDown($event)',\n '(pointerup)': 'onPointerUp()',\n '(pointermove)': 'onPointerMove()',\n '(pointerleave)': 'onPointerLeave($event)'\n }\n})\nexport class RdxComboboxItem implements ComboboxItemRef {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n readonly id = injectId('rdx-combobox-item-');\n\n /** The option's value. */\n readonly value = input.required<AcceptableValue>();\n\n /** Explicit text matched against the query. Defaults to the element's text content. */\n readonly textValueInput = input<string>('', { alias: 'textValue' });\n\n /** Whether the option is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * The option's index in the list. Required in virtualized mode — it drives the deterministic id\n * (for `aria-activedescendant`), highlight matching, and selection when only a window is mounted.\n */\n readonly index = input<number>();\n\n protected readonly virtualized = this.rootContext.virtualized;\n\n private readonly autoTextValue = signal('');\n\n readonly textValue = computed(() => this.textValueInput() || this.autoTextValue());\n\n /** Host id: deterministic per-index in virtualized mode, otherwise a generated unique id. */\n protected readonly elementId = computed(() =>\n this.virtualized() ? this.rootContext.itemId(this.index() ?? -1) : this.id\n );\n\n protected readonly ariaSetSize = computed(() =>\n this.virtualized() ? this.rootContext.filteredItems().length : undefined\n );\n protected readonly ariaPosInSet = computed(() => (this.virtualized() ? (this.index() ?? -1) + 1 : undefined));\n\n // Virtualized items are always rendered (the consumer only mounts the filtered window).\n readonly isVisible = computed(() => (this.virtualized() ? true : this.rootContext.isVisible(this)));\n readonly isSelected = computed(() => this.rootContext.isSelected(this.value()));\n readonly isHighlighted = computed(() =>\n this.virtualized()\n ? this.rootContext.highlightedIndex() === this.index()\n : this.rootContext.highlightedItem() === this\n );\n\n private readonly group = injectComboboxGroupContext(true);\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n // Virtualized items are not registered: the root navigates over `items` data by index, and\n // a windowed item mounting/unmounting must not churn the DOM-ordered registry or `labelFor`.\n if (this.virtualized()) {\n return;\n }\n if (!this.textValueInput()) {\n // Derive the match/label text from the element, excluding decorative indicator text\n // (e.g. a checkmark) so it doesn't pollute filtering or the input label.\n const clone = this.element.cloneNode(true) as HTMLElement;\n clone.querySelectorAll('[rdxComboboxItemIndicator]').forEach((node) => node.remove());\n this.autoTextValue.set(clone.textContent?.trim() ?? '');\n }\n this.rootContext.registerItem(this);\n this.group?.registerItem(this);\n });\n\n destroyRef.onDestroy(() => {\n if (this.virtualized()) {\n return;\n }\n this.rootContext.unregisterItem(this);\n this.group?.unregisterItem(this);\n });\n\n // Keep the highlighted option in view while navigating a scrollable popup. `block: 'nearest'`\n // makes hover a no-op (the item is already visible) and only scrolls on keyboard navigation.\n afterRenderEffect(() => {\n if (!this.virtualized() && this.isHighlighted()) {\n this.element.scrollIntoView({ block: 'nearest' });\n }\n });\n }\n\n onPointerDown(event: MouseEvent): void {\n // Keep focus on the input; prevent the item from stealing focus on pointer/mouse down.\n event.preventDefault();\n this.rootContext.setKeyboardActive(false);\n }\n\n onPointerUp(): void {\n if (this.virtualized()) {\n this.rootContext.selectIndex(this.index() ?? -1);\n } else {\n this.rootContext.select(this);\n }\n }\n\n onPointerMove(): void {\n // Hover highlighting disabled: leave `data-highlighted` to keyboard/auto-highlight only.\n if (!this.rootContext.highlightItemOnHover()) {\n return;\n }\n // Ignore the first move after keyboard navigation: arrow keys scroll the list under a still\n // cursor, and the resulting pointer event must not yank the highlight off the keyboard target.\n if (this.rootContext.isKeyboardActive()) {\n this.rootContext.setKeyboardActive(false);\n return;\n }\n if (this.disabled()) {\n return;\n }\n if (this.virtualized()) {\n this.rootContext.highlightIndex(this.index() ?? -1, 'pointer');\n } else if (this.isVisible()) {\n this.rootContext.setHighlight(this, 'pointer');\n }\n }\n\n // Clear a pointer-driven highlight when the cursor leaves the list (unless `keepHighlight`).\n // Moving to another element inside the list keeps it (the next item's move re-highlights).\n onPointerLeave(event: PointerEvent): void {\n if (\n event.pointerType === 'touch' ||\n !this.rootContext.open() ||\n !this.rootContext.highlightItemOnHover() ||\n this.rootContext.keepHighlight()\n ) {\n return;\n }\n const related = event.relatedTarget as Node | null;\n const list = related && document.getElementById(this.rootContext.listId);\n if (list && list.contains(related)) {\n return;\n }\n this.rootContext.clearHighlight();\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxItemContext } from './combobox-item';\n\n/**\n * Renders only when its item is selected (e.g. a checkmark).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxItemIndicator]',\n exportAs: 'rdxComboboxItemIndicator',\n host: {\n 'aria-hidden': 'true',\n '[hidden]': '!itemContext.isSelected()'\n }\n})\nexport class RdxComboboxItemIndicator {\n protected readonly itemContext = injectComboboxItemContext();\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * An accessible label for the combobox. Registers its id so the input (and trigger) reference it via\n * `aria-labelledby`.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxLabel]',\n exportAs: 'rdxComboboxLabel',\n host: {\n '[attr.id]': 'id'\n }\n})\nexport class RdxComboboxLabel {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly id = injectId('rdx-combobox-label-');\n\n constructor() {\n this.rootContext.setLabelId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setLabelId(undefined));\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * The listbox container for options. Carries the id referenced by the input's `aria-controls`.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxList]',\n exportAs: 'rdxComboboxList',\n host: {\n role: 'listbox',\n '[attr.id]': 'rootContext.listId',\n '[attr.aria-multiselectable]': 'rootContext.multiple() ? \"true\" : undefined'\n }\n})\nexport class RdxComboboxList {\n protected readonly rootContext = injectComboboxRootContext();\n}\n","import { afterRenderEffect, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { useScrollLock } from '@radix-ng/primitives/core';\nimport { provideRdxDismissableLayerConfig, RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';\nimport { injectPopperContentWrapperContext, RdxPopperContent } from '@radix-ng/primitives/popper';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * The popup surface. Composes the popper content (for `data-side` / `data-align`) and a dismissable\n * layer for outside-dismiss. It does **not** trap focus — focus stays in the input throughout.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxPopup]',\n exportAs: 'rdxComboboxPopup',\n hostDirectives: [RdxPopperContent, RdxDismissableLayer],\n providers: [\n // In modal mode, make content outside the popup inert (Base UI's `modal`).\n provideRdxDismissableLayerConfig(() => ({ disableOutsidePointerEvents: injectComboboxRootContext().modal }))\n ],\n host: {\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.open() ? undefined : \"\"',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined'\n }\n})\nexport class RdxComboboxPopup {\n protected readonly rootContext = injectComboboxRootContext();\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly popper = injectPopperContentWrapperContext();\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n constructor() {\n // The popup mounts only while open, so locking on `modal` locks scroll for as long as a modal\n // popup is open and releases it on close.\n useScrollLock(this.rootContext.modal);\n\n // The popup's animation determines when the open/close transition (onOpenChangeComplete) is done.\n const unregister = this.rootContext.registerTransitionElement(this.element);\n inject(DestroyRef).onDestroy(unregister);\n\n // The input keeps focus while the popup is open; it is registered as a layer branch, so\n // focus/pointer interactions on it don't count as \"outside\" and won't self-dismiss. Escape\n // is handled by the input (which calls preventDefault), so the layer won't dismiss for it.\n this.dismissableLayer.dismiss.subscribe(() => this.rootContext.closePopup(true));\n\n // For the \"input inside the popup\" pattern, move focus to the input once the popup is\n // positioned. Use `afterRenderEffect` (not `effect`): when `isPositioned` flips true the\n // popup's final position/visibility is applied in the *following* render, so a synchronous\n // `effect` would call `focus()` while the element is still unfocusable and silently no-op.\n afterRenderEffect(() => {\n if (!this.popper.isPositioned() || !this.rootContext.open()) {\n return;\n }\n const input = this.rootContext.inputElement();\n if (input && input.closest('[rdxComboboxPopup]')) {\n input.focus();\n input.select();\n }\n });\n }\n}\n","import { Directive, input, isDevMode } from '@angular/core';\nimport { RdxPortalContainer, RdxPortalPresence } from '@radix-ng/primitives/portal';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Structural directive that teleports the combobox popup into a container (default `document.body`)\n * while the combobox is open, and keeps it mounted until any CSS exit `@keyframes` finishes.\n *\n * Apply it with the `*` microsyntax on the positioner —\n * `<div *rdxComboboxPortal rdxComboboxPositioner>` — or as an explicit `<ng-template rdxComboboxPortal>`.\n * For a custom container use the explicit form with `[container]`.\n *\n * @group Components\n */\n@Directive({\n selector: 'ng-template[rdxComboboxPortal]',\n exportAs: 'rdxComboboxPortal',\n hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],\n providers: [provideRdxPresenceContext(() => ({ present: injectComboboxRootContext().open }))]\n})\nexport class RdxComboboxPortal {\n /**\n * Optional container to portal the content into. Defaults to `document.body`. Declared here (and\n * forwarded to the composed {@link RdxPortalPresence}) so the autocomplete portal can re-expose it\n * through its own `hostDirectives`.\n */\n readonly container = input<RdxPortalContainer>();\n}\n\n/**\n * Dev-mode guard: `rdxComboboxPortal` used to be an attribute directive on a `<div>`. It is now\n * structural, so the old `<div rdxComboboxPortal>` markup would silently stop portaling — fail loudly\n * instead.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxPortal]:not(ng-template)'\n})\nexport class RdxComboboxPortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n throw new Error(\n '[rdxComboboxPortal] is now a structural directive. ' +\n 'Use `*rdxComboboxPortal` on the positioner element or `<ng-template rdxComboboxPortal>`. ' +\n 'rdxComboboxPortalPresence has been removed. See https://radix-ng.com/components/combobox.md'\n );\n }\n }\n}\n","import { booleanAttribute, Directive, ElementRef, input, numberAttribute } from '@angular/core';\nimport { Align, RdxPopperContentWrapper, Side } from '@radix-ng/primitives/popper';\n\n/**\n * Positions the popup relative to the input anchor using the popper engine. Re-exposes the popper\n * positioning inputs.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxPositioner]',\n exportAs: 'rdxComboboxPositioner',\n hostDirectives: [\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n '[style]': `{\n 'boxSizing': 'border-box',\n '--radix-combobox-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-combobox-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-combobox-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-combobox-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-combobox-trigger-height': 'var(--radix-popper-anchor-height)'\n }`\n }\n})\nexport class RdxComboboxPositioner {\n readonly side = input<Side>('bottom');\n readonly sideOffset = input(4, { transform: numberAttribute });\n readonly align = input<Align>('start');\n readonly alignOffset = input(0, { transform: numberAttribute });\n readonly arrowPadding = input(0, { transform: numberAttribute });\n readonly avoidCollisions = input(true, { transform: booleanAttribute });\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(0);\n readonly sticky = input<'partial' | 'always'>('partial');\n readonly hideWhenDetached = input(false, { transform: booleanAttribute });\n readonly updatePositionStrategy = input<'optimized' | 'always'>('optimized');\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A polite live region for async status (loading, result counts) announced without moving focus.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxStatus]',\n exportAs: 'rdxComboboxStatus',\n host: {\n role: 'status',\n 'aria-live': 'polite'\n }\n})\nexport class RdxComboboxStatus {}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Toggles the combobox popup. Carries `tabindex=\"-1\"` so it never steals focus from the input.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxComboboxTrigger]',\n exportAs: 'rdxComboboxTrigger',\n hostDirectives: [RdxDismissableLayerBranch],\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Open',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.aria-controls]': 'rootContext.listId',\n '[attr.aria-labelledby]': 'rootContext.labelId()',\n '[attr.disabled]': 'rootContext.disabledState() ? \"\" : undefined',\n '[attr.data-popup-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabledState() ? \"\" : undefined',\n '(click)': 'onClick()'\n }\n})\nexport class RdxComboboxTrigger {\n protected readonly rootContext = injectComboboxRootContext();\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n constructor() {\n this.rootContext.registerTrigger(this.element);\n inject(DestroyRef).onDestroy(() => this.rootContext.registerTrigger(null));\n }\n\n onClick(): void {\n if (this.rootContext.open()) {\n this.rootContext.closePopup(true);\n } else {\n this.rootContext.focusInput();\n this.rootContext.openForBrowse();\n }\n }\n}\n","import { computed, Directive, input } from '@angular/core';\nimport { AcceptableValue, isNullish } from '@radix-ng/primitives/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Renders the current selection's label(s) — typically inside a {@link RdxComboboxTrigger} for a\n * select-like control. Read `slotText()` in the template, or compose your own from `selectedLabels()`.\n * Exposes `data-placeholder` while nothing is selected.\n *\n * @example\n * <span #value=\"rdxComboboxValue\" rdxComboboxValue placeholder=\"Select…\">{{ value.slotText() }}</span>\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxValue]',\n exportAs: 'rdxComboboxValue',\n host: {\n '[attr.data-placeholder]': 'isEmpty() ? \"\" : undefined'\n }\n})\nexport class RdxComboboxValue {\n private readonly rootContext = injectComboboxRootContext();\n\n /** Text shown when there is no selection. */\n readonly placeholder = input<string>();\n\n /** The label(s) of the current selection, resolved via the root's `itemToStringLabel`/items. */\n readonly selectedLabels = computed<string[]>(() => {\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.map((v) => this.rootContext.labelFor(v)).filter(Boolean);\n }\n return isNullish(value) ? [] : [this.rootContext.labelFor(value as AcceptableValue)].filter(Boolean);\n });\n\n readonly isEmpty = computed(() => this.selectedLabels().length === 0);\n\n /** The selection joined for display, or the `placeholder` when empty. */\n readonly slotText = computed(() => {\n const labels = this.selectedLabels();\n return labels.length ? labels.join(', ') : (this.placeholder() ?? '');\n });\n}\n","import { NgModule } from '@angular/core';\nimport { RdxComboboxAnchor } from './src/combobox-anchor';\nimport { RdxComboboxArrow } from './src/combobox-arrow';\nimport { RdxComboboxBackdrop } from './src/combobox-backdrop';\nimport { RdxComboboxChip } from './src/combobox-chip';\nimport { RdxComboboxChipRemove } from './src/combobox-chip-remove';\nimport { RdxComboboxChips } from './src/combobox-chips';\nimport { RdxComboboxClear } from './src/combobox-clear';\nimport { RdxComboboxEmpty } from './src/combobox-empty';\nimport { RdxComboboxGroup } from './src/combobox-group';\nimport { RdxComboboxGroupLabel } from './src/combobox-group-label';\nimport { RdxComboboxIcon } from './src/combobox-icon';\nimport { RdxComboboxInput } from './src/combobox-input';\nimport { RdxComboboxItem } from './src/combobox-item';\nimport { RdxComboboxItemIndicator } from './src/combobox-item-indicator';\nimport { RdxComboboxLabel } from './src/combobox-label';\nimport { RdxComboboxList } from './src/combobox-list';\nimport { RdxComboboxPopup } from './src/combobox-popup';\nimport { RdxComboboxPortal, RdxComboboxPortalMisuseGuard } from './src/combobox-portal';\nimport { RdxComboboxPositioner } from './src/combobox-positioner';\nimport { RdxComboboxRoot } from './src/combobox-root';\nimport { RdxComboboxStatus } from './src/combobox-status';\nimport { RdxComboboxTrigger } from './src/combobox-trigger';\nimport { RdxComboboxValue } from './src/combobox-value';\n\nexport * from './src/combobox-anchor';\nexport * from './src/combobox-arrow';\nexport * from './src/combobox-backdrop';\nexport * from './src/combobox-chip';\nexport * from './src/combobox-chip-remove';\nexport * from './src/combobox-chips';\nexport * from './src/combobox-clear';\nexport * from './src/combobox-empty';\nexport * from './src/combobox-group';\nexport * from './src/combobox-group-label';\nexport * from './src/combobox-icon';\nexport * from './src/combobox-input';\nexport * from './src/combobox-item';\nexport * from './src/combobox-item-indicator';\nexport * from './src/combobox-label';\nexport * from './src/combobox-list';\nexport * from './src/combobox-popup';\nexport * from './src/combobox-portal';\nexport * from './src/combobox-positioner';\nexport * from './src/combobox-root';\nexport * from './src/combobox-status';\nexport * from './src/combobox-trigger';\nexport * from './src/combobox-value';\n\nexport const _importsCombobox = [\n RdxComboboxRoot,\n RdxComboboxAnchor,\n RdxComboboxLabel,\n RdxComboboxInput,\n RdxComboboxValue,\n RdxComboboxTrigger,\n RdxComboboxIcon,\n RdxComboboxClear,\n RdxComboboxPortal,\n RdxComboboxPortalMisuseGuard,\n RdxComboboxBackdrop,\n RdxComboboxPositioner,\n RdxComboboxPopup,\n RdxComboboxArrow,\n RdxComboboxList,\n RdxComboboxItem,\n RdxComboboxItemIndicator,\n RdxComboboxGroup,\n RdxComboboxGroupLabel,\n RdxComboboxEmpty,\n RdxComboboxStatus,\n RdxComboboxChips,\n RdxComboboxChip,\n RdxComboboxChipRemove\n];\n\n@NgModule({\n imports: [..._importsCombobox],\n exports: [..._importsCombobox]\n})\nexport class RdxComboboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultItemToStringLabel","i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-combobox.mjs","sources":["../../../packages/primitives/combobox/src/combobox-anchor.ts","../../../packages/primitives/combobox/src/combobox-arrow.ts","../../../packages/primitives/combobox/src/combobox-engine.ts","../../../packages/primitives/combobox/src/combobox-root.ts","../../../packages/primitives/combobox/src/combobox-backdrop.ts","../../../packages/primitives/combobox/src/combobox-chips.ts","../../../packages/primitives/combobox/src/combobox-chip.ts","../../../packages/primitives/combobox/src/combobox-chip-remove.ts","../../../packages/primitives/combobox/src/combobox-clear.ts","../../../packages/primitives/combobox/src/combobox-empty.ts","../../../packages/primitives/combobox/src/combobox-group.ts","../../../packages/primitives/combobox/src/combobox-group-label.ts","../../../packages/primitives/combobox/src/combobox-icon.ts","../../../packages/primitives/combobox/src/combobox-positioner.ts","../../../packages/primitives/combobox/src/combobox-input.ts","../../../packages/primitives/combobox/src/combobox-input-group.ts","../../../packages/primitives/combobox/src/combobox-row.ts","../../../packages/primitives/combobox/src/combobox-item.ts","../../../packages/primitives/combobox/src/combobox-item-indicator.ts","../../../packages/primitives/combobox/src/combobox-label.ts","../../../packages/primitives/combobox/src/combobox-list.ts","../../../packages/primitives/combobox/src/combobox-popup.ts","../../../packages/primitives/combobox/src/combobox-portal.ts","../../../packages/primitives/combobox/src/combobox-separator.ts","../../../packages/primitives/combobox/src/combobox-status.ts","../../../packages/primitives/combobox/src/combobox-trigger.ts","../../../packages/primitives/combobox/src/combobox-value.ts","../../../packages/primitives/combobox/index.ts","../../../packages/primitives/combobox/radix-ng-primitives-combobox.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\n\n/**\n * Optional positioning anchor for the popup. Put it on the element the popup should align to — for\n * example a control that wraps chips + input in `multiple` mode. When present it takes precedence\n * over the input (the popper resolves the first `RdxPopperAnchor` in DOM order, and this part sits\n * above the input). When absent, the input itself is the anchor, which is ideal when the input fills\n * the control.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxAnchor]',\n exportAs: 'rdxComboboxAnchor',\n hostDirectives: [RdxPopperAnchor]\n})\nexport class RdxComboboxAnchor {}\n","import { Directive } from '@angular/core';\nimport { RdxPopperArrow } from '@radix-ng/primitives/popper';\n\n/**\n * An optional arrow that points from the popup to the anchor. Composes the popper arrow, which keeps\n * it aligned as the popup flips sides.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxArrow]',\n exportAs: 'rdxComboboxArrow',\n hostDirectives: [{ directive: RdxPopperArrow, inputs: ['width', 'height'] }]\n})\nexport class RdxComboboxArrow {}\n","import { computed, effect, Injector, Signal, signal, untracked } from '@angular/core';\nimport { AcceptableValue, injectId, useFilter, useListHighlight, useTransitionStatus } from '@radix-ng/primitives/core';\n\n/**\n * A combobox item, registered with the engine so it participates in filtering, navigation, and\n * selection. Implemented by `RdxComboboxItem` (and `RdxAutocompleteItem`); the engine depends only on\n * this structural shape to avoid a circular import.\n */\nexport interface ComboboxItemRef {\n /** The option's element id, exposed via `aria-activedescendant` when highlighted. */\n readonly id: string;\n /** The option's host element, used for DOM-order sorting. */\n readonly element: HTMLElement;\n /** The option's value. */\n readonly value: Signal<AcceptableValue>;\n /** The text matched against the query and written to the input on selection. */\n readonly textValue: Signal<string>;\n /** Whether the option is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\n/**\n * A custom filter predicate, matching Base UI's signature: the item's raw value (the object for object\n * items), the query, and an `itemToString` resolver that converts a value to its display/match text.\n * Value-first lets one filter match strings and objects alike (fuzzy / multi-key); the resolver gives\n * the text when needed. The shared engine contract; autocomplete's filter is the same shape.\n */\nexport type ComboboxFilter = (\n itemValue: AcceptableValue,\n query: string,\n itemToString?: (itemValue: AcceptableValue) => string\n) => boolean;\n\n/** Why the highlight moved: keyboard navigation, pointer hover, or a programmatic change. */\nexport type ComboboxHighlightReason = 'keyboard' | 'pointer' | 'none';\n\n/**\n * Where the text input sits relative to the popup (Base UI's `inputInsidePopup`). `unknown` until an\n * input mounts — so a Trigger whose input lives in a not-yet-opened popup is still `Tab`-reachable.\n */\nexport type ComboboxInputLayout = 'unknown' | 'inside' | 'outside';\n\n/** Payload of the highlight-changed emit. */\nexport interface ComboboxItemHighlightedDetails {\n /** The highlighted item's value, or `null` when the highlight is cleared. */\n value: AcceptableValue | null;\n /**\n * The highlighted item's index in the visible/filtered list (`-1` when cleared). In virtualized\n * mode this is the index into {@link ComboboxEngine.filteredItems}.\n */\n index: number;\n /** What caused the highlight to move. */\n reason: ComboboxHighlightReason;\n}\n\n/** The reactive inputs and callbacks a root hands the engine. */\nexport interface ComboboxEngineConfig {\n /** Injection context for the engine's effects/hooks. */\n injector: Injector;\n /** Prefix for the generated list id (e.g. `'rdx-combobox-list-'`). */\n listIdPrefix: string;\n /** CSS selector of the popup, used to decide focus restoration after a selection. */\n popupSelector: string;\n /** Whether the popup is open (the root owns the model; the engine only reads it). */\n open: Signal<boolean>;\n /** The active query string (the root derives it from its own typed/value semantics). */\n query: Signal<string>;\n /** Whether built-in filtering applies (always `true` for combobox; mode-gated for autocomplete). */\n filteringEnabled: Signal<boolean>;\n /** Whether keyboard navigation wraps at the list boundaries. */\n loopFocus: Signal<boolean>;\n /** Resolved auto-highlight mode. */\n autoHighlightMode: Signal<'off' | 'input-change' | 'always'>;\n /** Whether the list is externally virtualized (navigation runs over {@link items} by index). */\n virtualized: Signal<boolean>;\n /** Full set of item values for virtualized mode; `undefined` for DOM-driven lists. */\n items: Signal<readonly AcceptableValue[] | undefined>;\n /** Filter: `undefined` → default contains; a function → custom; `null` → built-in filtering off. */\n filter: Signal<ComboboxFilter | null | undefined>;\n /** Maximum number of matching items to show (`-1` = no limit). */\n limit: Signal<number>;\n /** Whether the list is a 2D grid (row/column arrow navigation). Defaults off for plain lists. */\n grid: Signal<boolean>;\n /** Resolves an item element to its enclosing row element (e.g. the nearest `[rdxComboboxRow]`). */\n rowOf: (element: HTMLElement) => Element | null;\n /**\n * Whether inline completion is active (autocomplete `both` / `inline` modes). When on, the engine\n * maintains an {@link ComboboxEngine.inlinePreview} that mirrors the highlighted item's label into\n * the input. Always `false` for combobox (it never inline-completes).\n */\n inlineMode: Signal<boolean>;\n /**\n * Resolves a raw item value to its display/match text — the `itemToString` Base UI passes to the\n * filter. DOM-aware (finds a mounted item by value and returns its text) so it works for both\n * DOM-driven and virtualized lists.\n */\n itemToString: (value: AcceptableValue) => string;\n /** Emits when the highlight moves (the root wires this to its `onItemHighlighted` output). */\n onItemHighlighted: (details: ComboboxItemHighlightedDetails) => void;\n /** Emits when open changes (skips the initial run); the root wires its `onOpenChange` output. */\n onOpenChange: (open: boolean) => void;\n /** Called after the open/close transition (including any exit animation) finishes. */\n onOpenChangeComplete: (open: boolean) => void;\n}\n\n/**\n * The shared Combobox engine (ADR 0014): item registry, filtering, highlight-model navigation,\n * open/close transition, and the reactive effects that tie them together — everything Combobox and\n * Autocomplete have in common. Value/selection semantics, open orchestration, and forms integration\n * stay in each root; the root configures the engine and reads its state for the DI context.\n *\n * Must be called in an injection context (it runs effects and `inject`-based hooks).\n *\n * @internal Not part of the public API — exported only for the autocomplete entry; may change without notice.\n */\nexport function useComboboxEngine(config: ComboboxEngineConfig) {\n const { injector } = config;\n const defaultFilter = useFilter();\n\n const listId = injectId(config.listIdPrefix);\n const labelId = signal<string | undefined>(undefined);\n const inputElement = signal<HTMLInputElement | null>(null);\n // Where the text input lives relative to the popup (Base UI's `inputInsidePopup`), reported by the\n // input on mount from its positioner ancestor. Drives the Trigger's role:\n // - `outside` → the input is the tab stop; the Trigger is a `tabindex=\"-1\"` toggle.\n // - `inside` → the Trigger is the focusable `role=\"combobox\"` control (`aria-haspopup=\"dialog\"`).\n // - `unknown` → no input has mounted yet (e.g. the input lives in a not-yet-opened popup); the\n // Trigger stays a normal focusable button so it is reachable by `Tab` before the first open.\n const inputLayout = signal<ComboboxInputLayout>('unknown');\n // Whether the popup was opened by a touch interaction. When the input lives inside the popup, a\n // touch-open focuses the popup (not the input) so Android doesn't raise the virtual keyboard\n // (Base UI; iOS handles this itself). Reset to `false` on keyboard/mouse opens.\n const openedByTouch = signal(false);\n // Whether the popup directive is currently mounted (open through the close/exit animation, until the\n // presence machine unmounts it). Distinguishes \"Escape closed the popup\" (still mounted this tick)\n // from \"Escape on an already-closed combobox\" (unmounted) — Base UI's `mounted`, since `open()`\n // flips synchronously when the input's Escape handler (or the dismiss mechanism) closes the popup.\n const popupMounted = signal(false);\n let triggerElement: HTMLElement | null = null;\n // Tracks whether the last interaction was the keyboard, so the highlight doesn't jump to an item\n // the cursor happens to rest on when arrow-key navigation scrolls the list under a still pointer.\n let keyboardActive = false;\n\n const _items = signal<readonly ComboboxItemRef[]>([]);\n\n const orderedItems = computed(() => {\n const items = [..._items()];\n return items.sort((a, b) => domOrder(a.element, b.element));\n });\n\n const matchesFilter = (item: ComboboxItemRef): boolean => {\n if (!config.filteringEnabled()) {\n return true;\n }\n const filter = config.filter();\n if (filter === null) {\n return true;\n }\n const query = config.query();\n // Custom filter: Base UI shape `(value, query, itemToString)`. Default: locale-aware contains\n // on the item's own text (the element content), no value→text round-trip.\n return filter\n ? filter(item.value(), query, config.itemToString)\n : defaultFilter.contains(item.textValue(), query);\n };\n\n const visibleItems = computed(() => {\n const matching = orderedItems().filter((item) => matchesFilter(item));\n const limit = config.limit();\n return limit >= 0 ? matching.slice(0, limit) : matching;\n });\n\n const visibleSet = computed(() => new Set(visibleItems()));\n const isVisible = (item: ComboboxItemRef): boolean => visibleSet().has(item);\n\n const filteredItems = computed<readonly AcceptableValue[]>(() => {\n const data = config.items();\n if (data === undefined) {\n return visibleItems().map((item) => item.value());\n }\n const limit = config.limit();\n const cap = (arr: readonly AcceptableValue[]) => (limit >= 0 ? arr.slice(0, limit) : arr);\n\n if (!config.filteringEnabled()) {\n return cap(data);\n }\n const filter = config.filter();\n if (filter === null) {\n return cap(data);\n }\n const query = config.query();\n if (!query) {\n return cap(data);\n }\n // Virtualized: no DOM to read text from, so resolve each value through `itemToString`.\n return cap(\n data.filter((value) =>\n filter\n ? filter(value, query, config.itemToString)\n : defaultFilter.contains(config.itemToString(value), query)\n )\n );\n });\n\n const visibleCount = computed(() => (config.virtualized() ? filteredItems().length : visibleItems().length));\n\n const highlight = useListHighlight<ComboboxItemRef>({\n items: orderedItems,\n isNavigable: (item) => isVisible(item) && !item.disabled(),\n getId: (item) => item.id,\n loop: config.loopFocus,\n injector\n });\n\n const highlightedItem = highlight.highlightedItem;\n const highlightedIndex = signal(-1);\n const highlightReason = signal<ComboboxHighlightReason>('none');\n\n const itemId = (index: number): string => `${listId}-item-${index}`;\n\n const activeId = computed(() => {\n if (config.virtualized()) {\n const index = highlightedIndex();\n return index >= 0 ? itemId(index) : undefined;\n }\n return highlight.activeId();\n });\n\n // `'first-match'` highlights the first item whose label prefix-matches the query (inline modes),\n // so inline completion lands on a real prefix even when the list is static.\n const pendingHighlightEdge = signal<'first' | 'last' | 'first-match' | null>(null);\n\n // Inline completion (autocomplete `both` / `inline`): a transient preview of the highlighted item's\n // label mirrored into the input. `null` when off. `suppressInline` skips it for a deleting edit.\n const inlinePreview = signal<string | null>(null);\n let suppressInline = false;\n\n /** The first visible, navigable item whose label starts with the query (for inline completion). */\n const firstMatchItem = (): ComboboxItemRef | null => {\n const query = config.query();\n if (!query) {\n return null;\n }\n const lower = query.toLowerCase();\n return (\n visibleItems().find((item) => !item.disabled() && item.textValue().toLowerCase().startsWith(lower)) ?? null\n );\n };\n\n /** The first visible, navigable item (auto-highlight fallback when no prefix match exists). */\n const firstVisibleNavigable = (): ComboboxItemRef | null => visibleItems().find((item) => !item.disabled()) ?? null;\n\n /** Resolves a pending edge to a virtualized index (`'first-match'` → first prefix match, else 0). */\n const resolveVirtualizedEdge = (edge: 'first' | 'last' | 'first-match', count: number): number => {\n if (edge === 'last') {\n return count - 1;\n }\n if (edge === 'first-match') {\n const query = config.query();\n if (query) {\n const lower = query.toLowerCase();\n const index = filteredItems().findIndex((value) =>\n config.itemToString(value).toLowerCase().startsWith(lower)\n );\n if (index >= 0) {\n return index;\n }\n }\n }\n return 0;\n };\n\n /** The active highlight's label, DOM-ref or virtualized (resolved from the index). `null` when none. */\n const activeLabel = (): string | null => {\n if (config.virtualized()) {\n const index = highlightedIndex();\n const value = index >= 0 ? filteredItems()[index] : undefined;\n return value === undefined ? null : config.itemToString(value);\n }\n return highlightedItem()?.textValue() ?? null;\n };\n\n const recomputeInlinePreview = (label: string | null, query: string, reason: ComboboxHighlightReason): void => {\n // Pointer hover must not rewrite the input (matches Base UI); only typing / keyboard nav complete it.\n if (!config.inlineMode() || suppressInline || !label || reason === 'pointer') {\n inlinePreview.set(null);\n return;\n }\n if (query && label.toLowerCase().startsWith(query.toLowerCase())) {\n // Type-ahead: keep the typed prefix (preserving its casing) and complete the rest.\n inlinePreview.set(query + label.slice(query.length));\n return;\n }\n // Keyboard navigation to a non-prefix item: show its full label so the input reflects it.\n if (reason === 'keyboard') {\n inlinePreview.set(label);\n return;\n }\n inlinePreview.set(null);\n };\n\n const transition = useTransitionStatus(config.onOpenChangeComplete);\n\n // --- effects ---\n\n // Emit open changes and drive the open/close transition (skip the initial run).\n let previousOpen = untracked(config.open);\n effect(\n () => {\n const open = config.open();\n if (open === previousOpen) {\n return;\n }\n previousOpen = open;\n untracked(() => {\n // Drop a deferred open-edge highlight when the popup closes — otherwise a pending\n // 'first' (e.g. ArrowDown opened an empty list, then it closed) would unexpectedly\n // highlight on the next plain open, even without autoHighlight.\n if (!open) {\n pendingHighlightEdge.set(null);\n }\n config.onOpenChange(open);\n transition.start(open);\n });\n },\n { injector }\n );\n\n // Emit highlight changes (skip the initial run). Tracks both the DOM-ref highlight and the\n // virtualized index; only one is active per mode, so the other never fires spuriously.\n let highlightInitialized = false;\n effect(\n () => {\n const item = highlightedItem();\n const index = highlightedIndex();\n if (!highlightInitialized) {\n highlightInitialized = true;\n return;\n }\n untracked(() => {\n if (config.virtualized()) {\n const value = index >= 0 ? (filteredItems()[index] ?? null) : null;\n // No active highlight (e.g. filtering pushed the index out of range) carries no\n // interaction — report 'none', not a stale 'keyboard'/'pointer' reason.\n config.onItemHighlighted({ value, index, reason: value === null ? 'none' : highlightReason() });\n } else {\n const value = item ? item.value() : null;\n const itemIndex = item ? visibleItems().indexOf(item) : -1;\n // DOM-mode self-heal in `useListHighlight` clears `highlighted` without touching\n // `highlightReason`; treat a null highlight as 'none' so the emit isn't mis-reported.\n config.onItemHighlighted({\n value,\n index: itemIndex,\n reason: item === null ? 'none' : highlightReason()\n });\n }\n });\n },\n { injector }\n );\n\n // Apply a deferred open-edge highlight once items (DOM refs) or filtered data have registered.\n effect(\n () => {\n const edge = pendingHighlightEdge();\n const count = config.virtualized() ? filteredItems().length : orderedItems().length;\n if (!config.open() || edge === null || count === 0) {\n return;\n }\n untracked(() => {\n // Programmatic move — reset the reason so the emit reports 'none', not a stale interaction.\n highlightReason.set('none');\n if (config.virtualized()) {\n highlightedIndex.set(resolveVirtualizedEdge(edge, count));\n } else if (edge === 'last') {\n highlight.last();\n } else if (edge === 'first-match') {\n highlight.set(firstMatchItem() ?? firstVisibleNavigable());\n } else {\n highlight.first();\n }\n pendingHighlightEdge.set(null);\n });\n },\n { injector }\n );\n\n // Inline completion: mirror the active item's label into the input. Tracks the DOM-ref highlight,\n // the virtualized index, the query, the reason, and `inlineMode` — so virtualized navigation and a\n // `both → list` mode switch both recompute (and clear) the preview. No-op (null) when off (combobox).\n effect(\n () => {\n config.inlineMode();\n highlightedItem();\n highlightedIndex();\n const query = config.query();\n const reason = highlightReason();\n untracked(() => recomputeInlinePreview(activeLabel(), query, reason));\n },\n { injector }\n );\n\n // autoHighlight 'always': keep the first navigable item highlighted whenever the popup is open.\n effect(\n () => {\n orderedItems();\n visibleCount();\n if (config.autoHighlightMode() === 'always' && config.open()) {\n untracked(() => {\n if (config.virtualized()) {\n const length = filteredItems().length;\n const index = highlightedIndex();\n if ((index < 0 || index >= length) && length > 0) {\n highlightReason.set('none');\n highlightedIndex.set(0);\n }\n } else if (highlightedItem() === null) {\n highlightReason.set('none');\n highlight.first();\n }\n });\n }\n },\n { injector }\n );\n\n // Virtualized self-heal: clear a highlight that filtering has pushed out of range.\n effect(\n () => {\n if (!config.virtualized()) {\n return;\n }\n const length = filteredItems().length;\n untracked(() => {\n const index = highlightedIndex();\n if (index >= length && index !== -1) {\n highlightReason.set('none');\n highlightedIndex.set(-1);\n }\n });\n },\n { injector }\n );\n\n // --- navigation facade (mode-aware: index-based when virtualized, else DOM-ref) ---\n\n const stepIndex = (direction: 1 | -1): void => {\n const length = filteredItems().length;\n if (length === 0) {\n highlightedIndex.set(-1);\n return;\n }\n const current = highlightedIndex();\n if (current < 0) {\n highlightedIndex.set(direction === 1 ? 0 : length - 1);\n return;\n }\n let next = current + direction;\n const loop = config.loopFocus();\n if (next < 0) {\n next = loop ? length - 1 : 0;\n } else if (next >= length) {\n next = loop ? 0 : length - 1;\n }\n highlightedIndex.set(next);\n };\n\n // --- grid navigation (DOM-ref mode only) ---\n\n /** Visible items grouped into rows by their enclosing row element (DOM order). */\n const gridRows = (): ComboboxItemRef[][] => {\n const rows = new Map<Element | null, ComboboxItemRef[]>();\n for (const item of visibleItems()) {\n const key = config.rowOf(item.element);\n const bucket = rows.get(key);\n if (bucket) {\n bucket.push(item);\n } else {\n rows.set(key, [item]);\n }\n }\n return [...rows.values()];\n };\n\n /** Grid vertical move: keep the column index, jump to the adjacent row (wraps when looping). */\n const gridVertical = (direction: 1 | -1): void => {\n const rows = gridRows();\n if (rows.length === 0) {\n return;\n }\n const current = highlightedItem();\n if (!current) {\n const row = direction === 1 ? rows[0] : rows[rows.length - 1];\n highlight.set(row[0] ?? null);\n return;\n }\n let rowIndex = rows.findIndex((row) => row.includes(current));\n const col = rowIndex >= 0 ? rows[rowIndex].indexOf(current) : 0;\n const loop = config.loopFocus();\n rowIndex += direction;\n if (rowIndex < 0) {\n rowIndex = loop ? rows.length - 1 : 0;\n } else if (rowIndex >= rows.length) {\n rowIndex = loop ? 0 : rows.length - 1;\n }\n const targetRow = rows[rowIndex];\n highlight.set(targetRow[Math.min(col, targetRow.length - 1)] ?? null);\n };\n\n return {\n listId,\n labelId: labelId.asReadonly(),\n setLabelId(id: string | undefined): void {\n labelId.set(id);\n },\n inputElement: inputElement.asReadonly(),\n setInputElement(el: HTMLInputElement | null): void {\n inputElement.set(el);\n },\n inputLayout: inputLayout.asReadonly(),\n setInputLayout(layout: ComboboxInputLayout): void {\n inputLayout.set(layout);\n },\n openedByTouch: openedByTouch.asReadonly(),\n setOpenedByTouch(value: boolean): void {\n openedByTouch.set(value);\n },\n popupMounted: popupMounted.asReadonly(),\n setPopupMounted(value: boolean): void {\n popupMounted.set(value);\n },\n get triggerElement() {\n return triggerElement;\n },\n setTrigger(el: HTMLElement | null) {\n triggerElement = el;\n },\n\n orderedItems,\n visibleItems,\n visibleCount,\n filteredItems,\n isVisible,\n registerItem(item: ComboboxItemRef): void {\n _items.update((items) => [...items, item]);\n },\n unregisterItem(item: ComboboxItemRef): void {\n _items.update((items) => items.filter((i) => i !== item));\n },\n\n highlight,\n highlightedItem,\n highlightedIndex: highlightedIndex.asReadonly(),\n activeId,\n itemId,\n setHighlightReason(reason: ComboboxHighlightReason): void {\n highlightReason.set(reason);\n },\n setPendingHighlightEdge(edge: 'first' | 'last' | 'first-match' | null): void {\n pendingHighlightEdge.set(edge);\n },\n\n /** Transient inline-completion preview (autocomplete inline modes); `null` when inactive. */\n inlinePreview: inlinePreview.asReadonly(),\n /** Suppress inline completion for the current edit (e.g. while a delete key is held). */\n setSuppressInline(value: boolean): void {\n suppressInline = value;\n },\n /** Clear the inline preview synchronously (on select / clear / close, before the effect runs). */\n clearInlinePreview(): void {\n inlinePreview.set(null);\n },\n\n highlightNext(reason: ComboboxHighlightReason = 'keyboard'): void {\n highlightReason.set(reason);\n if (config.virtualized()) {\n stepIndex(1);\n } else if (config.grid()) {\n gridVertical(1);\n } else {\n highlight.next();\n }\n },\n highlightPrevious(reason: ComboboxHighlightReason = 'keyboard'): void {\n highlightReason.set(reason);\n if (config.virtualized()) {\n stepIndex(-1);\n } else if (config.grid()) {\n gridVertical(-1);\n } else {\n highlight.previous();\n }\n },\n // Grid horizontal moves (next/previous cell in DOM order). No-op outside grid mode.\n highlightNextColumn(reason: ComboboxHighlightReason = 'keyboard'): void {\n if (!config.grid() || config.virtualized()) {\n return;\n }\n highlightReason.set(reason);\n highlight.next();\n },\n highlightPreviousColumn(reason: ComboboxHighlightReason = 'keyboard'): void {\n if (!config.grid() || config.virtualized()) {\n return;\n }\n highlightReason.set(reason);\n highlight.previous();\n },\n highlightFirst(reason: ComboboxHighlightReason = 'keyboard'): void {\n highlightReason.set(reason);\n if (config.virtualized()) {\n highlightedIndex.set(filteredItems().length > 0 ? 0 : -1);\n } else {\n highlight.first();\n }\n },\n highlightLast(reason: ComboboxHighlightReason = 'keyboard'): void {\n highlightReason.set(reason);\n if (config.virtualized()) {\n const length = filteredItems().length;\n highlightedIndex.set(length > 0 ? length - 1 : -1);\n } else {\n highlight.last();\n }\n },\n highlightIndex(index: number, reason: ComboboxHighlightReason): void {\n if (index < 0 || index >= filteredItems().length) {\n return;\n }\n highlightReason.set(reason);\n highlightedIndex.set(index);\n },\n setHighlight(item: ComboboxItemRef, reason: ComboboxHighlightReason): void {\n highlightReason.set(reason);\n highlight.set(item);\n },\n clearHighlightState(): void {\n highlight.clear();\n highlightedIndex.set(-1);\n },\n\n isKeyboardActive(): boolean {\n return keyboardActive;\n },\n setKeyboardActive(value: boolean): void {\n keyboardActive = value;\n },\n\n transitionStatus: transition.status,\n registerTransitionElement: transition.registerElement,\n\n focusInput(): void {\n inputElement()?.focus();\n },\n selectInputText(): void {\n inputElement()?.select();\n },\n /**\n * Restore focus after a selection: the input when it sits outside the popup, otherwise the\n * trigger. Skipped when the consumer moved focus during the `onValueChange` callback — pass the\n * `document.activeElement` captured *before* the emit so we don't clobber a consumer's choice\n * (e.g. focusing an external message field after inserting an emoji).\n */\n restoreFocusAfterSelect(previousActiveElement: Element | null): void {\n if (typeof document !== 'undefined' && document.activeElement !== previousActiveElement) {\n return;\n }\n const input = inputElement();\n if (input && !input.closest(config.popupSelector)) {\n input.focus();\n } else {\n triggerElement?.focus();\n }\n }\n };\n}\n\n/** The shape returned by {@link useComboboxEngine}. */\nexport type ComboboxEngine = ReturnType<typeof useComboboxEngine>;\n\n/** DOM-order comparator for two elements (precedes → -1, follows → 1). */\nfunction domOrder(a: HTMLElement, b: HTMLElement): number {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n return 0;\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n isDevMode,\n model,\n numberAttribute,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n AcceptableValue,\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n createFloatingRootContext,\n itemToStringLabel as defaultItemToStringLabel,\n Direction,\n isNullish,\n isItemEqualToValue as itemsEqual,\n ItemValueComparator,\n provideFloatingRootContext,\n provideFloatingTree,\n RdxCancelableChangeEventDetails,\n RdxFloatingRootContext\n} from '@radix-ng/primitives/core';\nimport { injectDirection } from '@radix-ng/primitives/direction-provider';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\nimport {\n ComboboxEngine,\n ComboboxFilter,\n ComboboxHighlightReason,\n ComboboxInputLayout,\n ComboboxItemHighlightedDetails,\n ComboboxItemRef,\n useComboboxEngine\n} from './combobox-engine';\n\n/** The value a combobox can hold: a single value, an array (multiple mode), or nothing. */\nexport type ComboboxValue = AcceptableValue | AcceptableValue[];\n\nexport type RdxComboboxOpenChangeReason =\n | 'trigger-press'\n | 'input-press'\n | 'list-navigation'\n | 'input-change'\n | 'input-clear'\n | 'item-press'\n | 'outside-press'\n | 'focus-out'\n | 'escape-key'\n | 'close-press'\n | 'cancel-open'\n | 'none';\n\nexport type RdxComboboxOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxComboboxOpenChangeReason>;\n\nexport interface RdxComboboxOpenChange {\n open: boolean;\n reason: RdxComboboxOpenChangeReason;\n event: Event;\n trigger: HTMLElement | undefined;\n eventDetails: RdxComboboxOpenChangeEventDetails;\n}\n\ninterface RdxComboboxOpenChangeTransaction {\n payload: RdxComboboxOpenChange;\n eventDetails: RdxComboboxOpenChangeEventDetails;\n shouldPreventUnmountOnClose: () => boolean;\n}\n\n// Re-exported so consumers (and the autocomplete engine bridge) keep importing these from the\n// combobox entry point; the definitions now live with the shared engine.\nexport type {\n ComboboxFilter,\n ComboboxHighlightReason,\n ComboboxInputLayout,\n ComboboxItemHighlightedDetails,\n ComboboxItemRef\n};\n\n// The engine stays private to the root (it owns mutable internals); the context factory — a free\n// function, so it can't reach a `private` field — reads it through this registry instead.\nconst engineRegistry = new WeakMap<RdxComboboxRoot, ComboboxEngine>();\n\nconst context = () => {\n const root = inject(RdxComboboxRoot);\n const engine = engineRegistry.get(root)!;\n return {\n listId: engine.listId,\n labelId: engine.labelId,\n setLabelId: (id: string | undefined) => engine.setLabelId(id),\n dir: root.dir,\n value: root.value,\n inputValue: root.inputValue,\n open: root.open,\n present: root.present,\n multiple: root.multiple,\n selectionMode: root.mode,\n disabledState: root.disabledState,\n readonly: root.readOnly,\n requiredState: root.requiredState,\n openOnInputClick: root.openOnInputClick,\n modal: root.modal,\n virtualized: root.virtualized,\n grid: root.grid,\n filteredItems: engine.filteredItems,\n highlightedItem: engine.highlightedItem,\n highlightedIndex: engine.highlightedIndex,\n activeId: engine.activeId,\n itemId: (index: number) => engine.itemId(index),\n isKeyboardActive: () => engine.isKeyboardActive(),\n setKeyboardActive: (value: boolean) => engine.setKeyboardActive(value),\n transitionStatus: engine.transitionStatus,\n registerTransitionElement: engine.registerTransitionElement,\n visibleCount: engine.visibleCount,\n isVisible: (item: ComboboxItemRef) => engine.isVisible(item),\n isSelected: (value: AcceptableValue) => root.isSelected(value),\n registerItem: (item: ComboboxItemRef) => engine.registerItem(item),\n unregisterItem: (item: ComboboxItemRef) => engine.unregisterItem(item),\n highlight: engine.highlight,\n highlightNext: () => engine.highlightNext('keyboard'),\n highlightPrevious: () => engine.highlightPrevious('keyboard'),\n highlightNextColumn: () => engine.highlightNextColumn('keyboard'),\n highlightPreviousColumn: () => engine.highlightPreviousColumn('keyboard'),\n highlightFirst: () => engine.highlightFirst('keyboard'),\n highlightLast: () => engine.highlightLast('keyboard'),\n highlightIndex: (index: number, reason: ComboboxHighlightReason) => engine.highlightIndex(index, reason),\n setHighlight: (item: ComboboxItemRef, reason: ComboboxHighlightReason) => engine.setHighlight(item, reason),\n clearHighlight: () => engine.clearHighlightState(),\n highlightItemOnHover: root.highlightItemOnHover,\n keepHighlight: root.keepHighlight,\n inputElement: engine.inputElement,\n setInputElement: (el: HTMLInputElement | null) => engine.setInputElement(el),\n inputLayout: engine.inputLayout,\n setInputLayout: (layout: ComboboxInputLayout) => engine.setInputLayout(layout),\n openedByTouch: engine.openedByTouch,\n setOpenedByTouch: (value: boolean) => engine.setOpenedByTouch(value),\n popupMounted: engine.popupMounted,\n setPopupMounted: (value: boolean) => engine.setPopupMounted(value),\n registerTrigger: (el: HTMLElement | null) => engine.setTrigger(el),\n focusInput: () => engine.focusInput(),\n openPopup: (reason?: RdxComboboxOpenChangeReason, event?: Event) => root.setOpen(true, reason, event),\n openForBrowse: (reason?: RdxComboboxOpenChangeReason, event?: Event) => root.openForBrowse(reason, event),\n closePopup: (revert = true, reason?: RdxComboboxOpenChangeReason, event?: Event) =>\n root.closePopup(revert, reason, event),\n setInputValue: (value: string) => root.setInputValue(value),\n openAndHighlight: (edge: 'first' | 'last', reason?: RdxComboboxOpenChangeReason, event?: Event) =>\n root.openAndHighlight(edge, reason, event),\n navigateByKeyboard: (direction: 1 | -1, event?: Event) => root.navigateByKeyboard(direction, event),\n select: (item: ComboboxItemRef, event?: Event) => root.handleSelect(item, event),\n selectIndex: (index: number, event?: Event) => root.selectIndex(index, event),\n selectHighlighted: (event?: Event) => root.selectHighlighted(event),\n clearSelection: () => root.clearSelection(),\n removeValue: (value: AcceptableValue) => root.removeValue(value),\n removeLastValue: () => root.removeLastValue(),\n registerChipsNav: (fn: (() => boolean) | null) => root.registerChipsNav(fn),\n focusLastChip: () => root.focusLastChip(),\n labelFor: (value: AcceptableValue) => root.labelFor(value),\n markAsTouched: () => root.markAsTouched()\n };\n};\n\nexport type RdxComboboxRootContext = ReturnType<typeof context>;\n\nexport const [injectComboboxRootContext, provideComboboxRootContext] = createContext<RdxComboboxRootContext>(\n 'RdxComboboxRootContext',\n 'components/combobox'\n);\n\n/**\n * `autoHighlight` transform: pass the `'always'` / `'input-change'` string modes through verbatim,\n * coerce everything else as a boolean attribute (so the bare `autoHighlight` attribute reads `true`).\n *\n * Kept as a named module-level function rather than an inline `transform` arrow: compodoc 1.2.1\n * (the metadata source for the API contract and Storybook ArgTypes) hangs parsing an inline arrow\n * combined with explicit generic union type arguments on `input()`. A plain function reference sidesteps it.\n */\nfunction coerceAutoHighlight(value: BooleanInput | 'always' | 'input-change'): boolean | 'always' | 'input-change' {\n return value === 'always' || value === 'input-change' ? value : booleanAttribute(value);\n}\n\n/**\n * Root of a Combobox — a filterable select. Owns selection, input text, open state, and the forms\n * integration, and delegates filtering / highlight-model navigation / the open-close transition to the\n * shared {@link useComboboxEngine} (ADR 0014). Exposes everything to the parts through\n * {@link RdxComboboxRootContext}. Implements `ControlValueAccessor`.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxRoot]',\n exportAs: 'rdxComboboxRoot',\n providers: [\n provideComboboxRootContext(context),\n { provide: NG_VALUE_ACCESSOR, useExisting: RdxComboboxRoot, multi: true },\n // New floating foundation (ADR 0015/0017) — the dismissal capability reads this shared context.\n provideFloatingTree(),\n provideFloatingRootContext(() => inject(RdxComboboxRoot).floatingContext)\n ],\n hostDirectives: [RdxPopper],\n host: {\n '[attr.data-disabled]': 'disabledState() ? \"\" : undefined'\n }\n})\nexport class RdxComboboxRoot implements ControlValueAccessor {\n private readonly injector = inject(Injector);\n\n /** Per-popup floating root context (ADR 0015) — `open` / `triggers` / reference for the dismissal engine. */\n readonly floatingContext: RdxFloatingRootContext = createFloatingRootContext({\n ownerDocument: inject(ElementRef).nativeElement.ownerDocument,\n open: () => this.open()\n });\n\n /** Selected value(s). A single value in single mode, an array in `multiple` mode. */\n readonly value = model<ComboboxValue | null>(null);\n\n /** Initial value when uncontrolled. */\n readonly defaultValue = input<ComboboxValue | null>();\n\n /** The text currently in the input. */\n readonly inputValue = model<string>('');\n\n /** Whether the popup is open. */\n readonly open = model<boolean>(false);\n\n /** Initial open state when uncontrolled. */\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n\n /** Whether multiple values can be selected. Shorthand for `selectionMode=\"multiple\"`. */\n readonly multipleInput = input(false, { alias: 'multiple', transform: booleanAttribute });\n\n /**\n * Selection behavior. `'single'` / `'multiple'` commit a value; `'none'` filters without\n * selecting (a pure search/command UI). Defaults from the `multiple` shorthand.\n */\n readonly selectionMode = input<'single' | 'multiple' | 'none'>();\n\n /** Resolved selection mode. */\n readonly mode = computed<'single' | 'multiple' | 'none'>(\n () => this.selectionMode() ?? (this.multipleInput() ? 'multiple' : 'single')\n );\n\n /** Whether the combobox is in multiple-selection mode. */\n readonly multiple = computed(() => this.mode() === 'multiple');\n\n /** In `'none'` mode, whether pressing an item fills the input with its label. */\n readonly fillInputOnItemPress = input(true, { transform: booleanAttribute });\n\n /** Text direction. */\n readonly dirInput = input<Direction | undefined>(undefined, { alias: 'dir' });\n readonly dir = injectDirection(this.dirInput);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the combobox is read-only. Base UI prop name. */\n readonly readOnly = input(false, { transform: booleanAttribute });\n\n /** Whether a value is required (for forms). */\n readonly required = input(false, { transform: booleanAttribute });\n\n /** Whether keyboard navigation wraps at the list boundaries. */\n readonly loopFocus = input(true, { transform: booleanAttribute });\n\n /**\n * Auto-highlight behavior:\n * - `false` (default): never auto-highlight;\n * - `true` (also the bare `autoHighlight` attribute) / `'input-change'`: highlight the first match as the query changes;\n * - `'always'`: keep the first navigable item highlighted whenever the popup is open.\n */\n readonly autoHighlight = input(false, { transform: coerceAutoHighlight });\n\n /** Resolved auto-highlight mode. */\n readonly autoHighlightMode = computed<'off' | 'input-change' | 'always'>(() => {\n const value = this.autoHighlight();\n if (value === 'always') {\n return 'always';\n }\n if (value === true || value === 'input-change') {\n return 'input-change';\n }\n return 'off';\n });\n\n /**\n * Whether moving the pointer over an item highlights it. `true` (default) paints `data-highlighted`\n * on hover; `false` suppresses hover-driven highlight entirely, letting CSS `:hover` stay distinct\n * from the `data-highlighted` (keyboard) state. Clicking an item still selects it.\n */\n readonly highlightItemOnHover = input(true, { transform: booleanAttribute });\n\n /**\n * Whether a pointer-driven highlight is kept when the cursor leaves the list. `false` (default)\n * clears the highlight on pointer-leave; `true` retains the last hovered item highlighted. Keyboard\n * navigation and auto-highlight are unaffected.\n */\n readonly keepHighlight = input(false, { transform: booleanAttribute });\n\n /** Whether clicking the input opens the popup. */\n readonly openOnInputClick = input(true, { transform: booleanAttribute });\n\n /** Whether the popup is modal: locks page scroll and makes outside content inert while open. */\n readonly modal = input(false, { transform: booleanAttribute });\n\n /** Whether selecting an item requests submit of the closest form. */\n readonly submitOnItemClick = input(false, { transform: booleanAttribute });\n\n /**\n * Filter applied to items against the input query.\n * - `undefined` (default): locale-aware \"contains\" via {@link useFilter};\n * - a function: custom matching;\n * - `null`: built-in filtering disabled (the consumer controls which items exist).\n */\n readonly filter = input<ComboboxFilter | null | undefined>(undefined);\n\n /** Maximum number of matching items to show. `-1` (default) means no limit. */\n readonly limit = input(-1, { transform: numberAttribute });\n\n /**\n * The full set of item values, used as the source of truth for filtering and navigation in\n * {@link virtualized} mode (where only a window of `RdxComboboxItem` is mounted). The filtered\n * subset is exposed as {@link filteredItems} for an external virtualizer to render.\n */\n readonly items = input<readonly AcceptableValue[]>();\n\n /**\n * Whether the list is externally virtualized — only a window of items is rendered, so navigation\n * runs over {@link items}/{@link filteredItems} by index instead of over mounted DOM elements.\n * Requires {@link items}, and {@link itemToStringLabel} for selection labels/filter text. Disabled\n * items outside the rendered window are not skipped by keyboard navigation.\n */\n readonly virtualized = input(false, { transform: booleanAttribute });\n\n /**\n * Whether the list is laid out as a 2D grid: `ArrowUp`/`ArrowDown` move between rows (keeping the\n * column), `ArrowLeft`/`ArrowRight` move within a row. Wrap items in `RdxComboboxRow`; the list\n * switches to `role=\"grid\"`. Not supported together with {@link virtualized}.\n */\n readonly grid = input(false, { transform: booleanAttribute });\n\n /** How item values are compared for equality (a comparator function or an object key). Base UI prop name. */\n readonly isItemEqualToValue = input<ItemValueComparator<AcceptableValue>>();\n\n /** Converts a value to its display label. Defaults to the matching item's text. */\n readonly itemToStringLabel = input<(value: AcceptableValue) => string>();\n\n /** Emits when the selection changes. */\n readonly onValueChange = output<ComboboxValue | null>();\n\n /** Emits when the input text changes. */\n readonly onInputValueChange = output<string>();\n\n /** Emits when the popup opens or closes. */\n readonly onOpenChange = output<RdxComboboxOpenChange>();\n\n /**\n * Emits as the highlight moves, with the item's value, its index in {@link filteredItems}, and the\n * reason. In virtualized mode, use `index` to call the virtualizer's `scrollToIndex`.\n */\n readonly onItemHighlighted = output<ComboboxItemHighlightedDetails>();\n\n /** Emits after the open/close transition (including any exit animation) finishes. */\n readonly onOpenChangeComplete = output<boolean>();\n\n private readonly cvaDisabled = signal(false);\n readonly disabledState = computed(() => this.disabled() || this.cvaDisabled());\n readonly requiredState = computed(() => this.required());\n private readonly preventUnmountOnClose = signal(false);\n readonly present = computed(() => this.open() || this.preventUnmountOnClose());\n\n /**\n * Whether the input text is a fresh user query rather than the current selection's label. While\n * `false` (just opened, or showing a selected label), the list is unfiltered so the user can\n * browse; it flips `true` on the first keystroke.\n */\n private readonly typed = signal(false);\n\n /** The active query: the typed text once the user starts typing, otherwise empty (browse mode). */\n private readonly query = computed(() => (this.typed() ? (this.inputValue() ?? '') : ''));\n\n /** Built-in filtering always applies for combobox (the `none` filter is handled inside the engine). */\n private readonly filteringEnabled = signal(true);\n\n /** Combobox never inline-completes (that's an autocomplete mode). */\n private readonly noInline = signal(false);\n\n /** The shared engine: item registry, filtering, highlight navigation, and the open-close transition. */\n private readonly engine: ComboboxEngine = useComboboxEngine({\n injector: this.injector,\n listIdPrefix: 'rdx-combobox-list-',\n popupSelector: '[rdxComboboxPopup]',\n open: this.open,\n query: this.query,\n filteringEnabled: this.filteringEnabled,\n loopFocus: this.loopFocus,\n autoHighlightMode: this.autoHighlightMode,\n virtualized: this.virtualized,\n items: this.items,\n filter: this.filter,\n limit: this.limit,\n grid: this.grid,\n rowOf: (element) => element.closest('[rdxComboboxRow]'),\n inlineMode: this.noInline,\n itemToString: (value) => this.labelFor(value),\n onItemHighlighted: (details) => this.onItemHighlighted.emit(details),\n onOpenChange: () => {},\n onOpenChangeComplete: (open) => this.onOpenChangeComplete.emit(open)\n });\n\n /** The list element id referenced by `aria-controls` / `aria-activedescendant` (engine-backed). */\n get listId() {\n return this.engine.listId;\n }\n\n /** The currently highlighted item (engine-backed; read by parts and tests). */\n get highlightedItem() {\n return this.engine.highlightedItem;\n }\n\n /** Number of items the list currently shows (engine-backed). */\n get visibleCount() {\n return this.engine.visibleCount;\n }\n\n /** The filtered item values an external virtualizer should render (engine-backed). */\n get filteredItems() {\n return this.engine.filteredItems;\n }\n\n /** Highlighted index into {@link filteredItems} in virtualized mode (engine-backed). */\n get highlightedIndex() {\n return this.engine.highlightedIndex;\n }\n\n /** The active option's id for `aria-activedescendant` (engine-backed). */\n get activeId() {\n return this.engine.activeId;\n }\n\n private onChange?: (value: ComboboxValue | null) => void;\n private onTouched?: () => void;\n\n constructor() {\n // Expose the (private) engine to the context factory, which is a free function.\n engineRegistry.set(this, this.engine);\n\n // Keep the dismissal reference in sync with the input (the anchor) so a press / focus on it counts\n // as \"inside\" and never dismisses (ADR 0015).\n effect(() => this.floatingContext.setReferenceElement(this.engine.inputElement() ?? null));\n\n // Apply uncontrolled defaults once.\n effect(() => {\n const initial = this.defaultValue();\n if (initial !== undefined && untracked(this.value) === null) {\n this.value.set(initial);\n }\n });\n effect(() => {\n if (untracked(this.open) === false && this.defaultOpen()) {\n this.open.set(true);\n }\n });\n\n // Virtualized object values can't be labelled from the DOM (items aren't registered) — without\n // `itemToStringLabel`, selection/revert fall back to a generic label. Warn once in dev.\n if (isDevMode()) {\n let warned = false;\n effect(() => {\n if (warned || !this.virtualized() || this.itemToStringLabel()) {\n return;\n }\n if (this.items()?.some((value) => value !== null && typeof value === 'object')) {\n warned = true;\n console.warn(\n '[rdxComboboxRoot] `virtualized` with object item values needs `itemToStringLabel` ' +\n 'to render correct selection labels; falling back to a generic label.'\n );\n }\n });\n }\n }\n\n /** Opens the popup for browsing (resets the query to \"pristine\" and selects the input text). */\n openForBrowse(\n reason: RdxComboboxOpenChangeReason = 'none',\n event: Event = new Event('combobox.open-change')\n ): void {\n if (!this.open()) {\n this.typed.set(false);\n }\n this.setOpen(true, reason, event);\n this.engine.selectInputText();\n if (this.autoHighlightMode() === 'always') {\n this.engine.setPendingHighlightEdge('first');\n }\n }\n\n /** Opens the popup and highlights the given edge once the list mounts. */\n openAndHighlight(\n edge: 'first' | 'last',\n reason: RdxComboboxOpenChangeReason = 'list-navigation',\n event: Event = new Event('combobox.open-change')\n ): void {\n if (!this.open()) {\n this.typed.set(false);\n }\n this.setOpen(true, reason, event);\n this.engine.selectInputText();\n this.engine.setPendingHighlightEdge(edge);\n }\n\n /**\n * Keyboard list navigation shared by the input and the chips: opens the popup and highlights the\n * leading/trailing edge when closed, otherwise steps the highlight. `direction` is `1` (down) or\n * `-1` (up). Centralized so the input and chip key handlers can't drift apart.\n */\n navigateByKeyboard(direction: 1 | -1, event: Event = new Event('combobox.open-change')): void {\n this.engine.setKeyboardActive(true);\n if (!this.open()) {\n this.openAndHighlight(direction === 1 ? 'first' : 'last', 'list-navigation', event);\n } else if (direction === 1) {\n this.engine.highlightNext();\n } else {\n this.engine.highlightPrevious();\n }\n }\n\n isSelected(value: AcceptableValue): boolean {\n if (this.mode() === 'none') {\n return false;\n }\n const current = this.value();\n if (this.multiple()) {\n return Array.isArray(current) && current.some((v) => itemsEqual(v, value, this.isItemEqualToValue()));\n }\n return !isNullish(current) && itemsEqual(current as AcceptableValue, value, this.isItemEqualToValue());\n }\n\n setOpen(\n open: boolean,\n reason: RdxComboboxOpenChangeReason = 'none',\n event: Event = new Event('combobox.open-change')\n ): boolean {\n if (open === this.open()) {\n return true;\n }\n\n if (open && (this.disabledState() || this.readOnly())) {\n return false;\n }\n\n const change = this.createOpenChangeEvent(open, reason, event);\n this.onOpenChange.emit(change.payload);\n\n if (change.eventDetails.isCanceled()) {\n return false;\n }\n\n this.preventUnmountOnClose.set(open ? false : change.shouldPreventUnmountOnClose());\n this.open.set(open);\n return true;\n }\n\n closePopup(\n revert = true,\n reason: RdxComboboxOpenChangeReason = 'none',\n event: Event = new Event('combobox.open-change')\n ): void {\n if (!this.open()) {\n return;\n }\n\n if (!this.setOpen(false, reason, event)) {\n return;\n }\n\n this.engine.clearHighlightState();\n if (revert) {\n this.revertInputValue();\n }\n this.markAsTouched();\n }\n\n /** Updates the input text from user typing (marks the query as a fresh user query). */\n setInputValue(value: string): void {\n this.inputValue.set(value);\n this.typed.set(true);\n this.onInputValueChange.emit(value);\n // Base UI: emptying the field clears a single selection — but only when the input is OUTSIDE the\n // popup. With the input inside the popup, the search box and the committed value are independent,\n // so clearing the search must not deselect. (multiple keeps its chips; `none` has no committed\n // value.) The guarded `commitValue` is a no-op when read-only / disabled.\n if (\n value === '' &&\n this.mode() === 'single' &&\n !isNullish(this.value()) &&\n this.engine.inputLayout() !== 'inside'\n ) {\n this.commitValue(null);\n }\n // Auto-highlight the first match as the query changes (deferred so it lands after items mount).\n if (this.autoHighlightMode() !== 'off') {\n this.engine.setPendingHighlightEdge('first');\n }\n }\n\n /** Sets the input text programmatically (a selection label / revert) — not a user query. */\n private setLabel(value: string): void {\n this.inputValue.set(value);\n this.typed.set(false);\n this.onInputValueChange.emit(value);\n }\n\n /** Resets the input text to the current selection's label (single mode) or empty. */\n private revertInputValue(): void {\n if (this.multiple()) {\n this.setLabel('');\n return;\n }\n const current = this.value();\n this.setLabel(isNullish(current) ? '' : this.labelFor(current as AcceptableValue));\n }\n\n labelFor(value: AcceptableValue): string {\n const custom = this.itemToStringLabel();\n if (custom) {\n return custom(value);\n }\n const item = this.engine.orderedItems().find((i) => itemsEqual(i.value(), value, this.isItemEqualToValue()));\n return item ? item.textValue() : defaultItemToStringLabel(value);\n }\n\n handleSelect(item: ComboboxItemRef, event: Event = new Event('combobox.item-press')): void {\n if (this.disabledState() || this.readOnly() || item.disabled()) {\n return;\n }\n this.handleSelectValue(item.value(), item.textValue() || this.labelFor(item.value()), event);\n }\n\n /** Selects the filtered item at `index` (virtualized mode). The label comes from {@link labelFor}. */\n selectIndex(index: number, event: Event = new Event('combobox.item-press')): void {\n if (this.disabledState() || this.readOnly()) {\n return;\n }\n const value = this.engine.filteredItems()[index];\n if (value === undefined) {\n return;\n }\n this.handleSelectValue(value, this.labelFor(value), event);\n }\n\n /** Commits a selection from a resolved value/label, independent of whether a DOM item exists. */\n private handleSelectValue(\n value: AcceptableValue,\n textValue: string,\n event: Event = new Event('combobox.item-press')\n ): void {\n // Capture focus *before* emitting `onValueChange` so focus restoration can be skipped when the\n // consumer moves focus in that callback (e.g. focusing an external field after an emoji press).\n const activeBefore = typeof document !== 'undefined' ? document.activeElement : null;\n\n if (this.mode() === 'none') {\n // No value is committed; `onValueChange` fires as a pointer/keyboard activation signal so\n // command-palette consumers can react. Optionally fill the input, then close.\n this.onValueChange.emit(value);\n if (this.fillInputOnItemPress()) {\n this.setLabel(textValue);\n }\n this.closePopup(false, 'item-press', event);\n this.engine.restoreFocusAfterSelect(activeBefore);\n this.maybeSubmit();\n return;\n }\n\n if (this.multiple()) {\n const current = Array.isArray(this.value()) ? [...(this.value() as AcceptableValue[])] : [];\n const index = current.findIndex((v) => itemsEqual(v, value, this.isItemEqualToValue()));\n if (index === -1) {\n current.push(value);\n } else {\n current.splice(index, 1);\n }\n this.commitValue(current);\n this.setLabel('');\n // Keep the input focused for adding more values — unless the consumer moved focus.\n if (typeof document === 'undefined' || document.activeElement === activeBefore) {\n this.engine.focusInput();\n }\n } else {\n this.commitValue(value);\n this.setLabel(textValue);\n this.closePopup(false, 'item-press', event);\n this.engine.restoreFocusAfterSelect(activeBefore);\n }\n\n this.maybeSubmit();\n }\n\n /** Requests submit of the closest form when `submitOnItemClick` is enabled. */\n private maybeSubmit(): void {\n if (this.submitOnItemClick()) {\n this.engine.inputElement()?.form?.requestSubmit?.();\n }\n }\n\n selectHighlighted(event: Event = new Event('combobox.item-press')): void {\n if (this.virtualized()) {\n const index = this.engine.highlightedIndex();\n if (index >= 0) {\n this.selectIndex(index, event);\n }\n return;\n }\n const item = this.engine.highlightedItem();\n if (item) {\n this.handleSelect(item, event);\n }\n }\n\n clearSelection(): void {\n // Read-only / disabled comboboxes are not user-mutable (Base UI blocks Clear here too).\n if (this.disabledState() || this.readOnly()) {\n return;\n }\n // In `none` mode there is no committed value to clear — only the input text. Otherwise reset\n // the selection. Also drop any highlight (Base UI resets the active/selected indices here).\n if (this.mode() !== 'none') {\n this.commitValue(this.multiple() ? [] : null);\n }\n this.setLabel('');\n this.engine.clearHighlightState();\n this.engine.focusInput();\n }\n\n removeValue(value: AcceptableValue): void {\n if (!this.multiple() || !Array.isArray(this.value())) {\n return;\n }\n const next = (this.value() as AcceptableValue[]).filter(\n (v) => !itemsEqual(v, value, this.isItemEqualToValue())\n );\n this.commitValue(next);\n }\n\n removeLastValue(): void {\n if (!this.multiple() || !Array.isArray(this.value())) {\n return;\n }\n const current = this.value() as AcceptableValue[];\n if (current.length > 0) {\n this.commitValue(current.slice(0, -1));\n }\n }\n\n focusInput(): void {\n this.engine.focusInput();\n }\n\n private chipsFocusLast: (() => boolean) | null = null;\n\n /** Registered by `RdxComboboxChips` so the input can hand keyboard focus to the chips. */\n registerChipsNav(fn: (() => boolean) | null): void {\n this.chipsFocusLast = fn;\n }\n\n /** Moves focus to the last chip, if any. Returns whether a chip was focused. */\n focusLastChip(): boolean {\n return this.chipsFocusLast?.() ?? false;\n }\n\n markAsTouched(): void {\n this.onTouched?.();\n }\n\n /**\n * The single guarded value-mutation point for all user-driven changes (selection toggle, Clear,\n * chip removal, Backspace). Read-only / disabled comboboxes never mutate here — programmatic form\n * writes go through {@link writeValue}, which is intentionally not guarded. (ADR 0014, Finding 1.)\n */\n private commitValue(value: ComboboxValue | null): void {\n if (this.disabledState() || this.readOnly()) {\n return;\n }\n this.value.set(value);\n this.onValueChange.emit(value);\n this.onChange?.(value);\n }\n\n private createOpenChangeEvent(\n open: boolean,\n reason: RdxComboboxOpenChangeReason,\n event: Event\n ): RdxComboboxOpenChangeTransaction {\n const change = createCancelableChangeEventDetails(reason, event, this.resolveOpenChangeTrigger(event));\n\n return {\n payload: {\n open,\n reason,\n event: change.eventDetails.event,\n trigger: change.eventDetails.trigger,\n eventDetails: change.eventDetails\n },\n eventDetails: change.eventDetails,\n shouldPreventUnmountOnClose: change.shouldPreventUnmountOnClose\n };\n }\n\n private resolveOpenChangeTrigger(event: Event): HTMLElement | undefined {\n const target = event.target;\n\n if (target instanceof HTMLElement) {\n return target;\n }\n\n return this.engine.triggerElement ?? this.engine.inputElement() ?? undefined;\n }\n\n // ControlValueAccessor\n writeValue(value: ComboboxValue | null): void {\n untracked(() => this.value.set(value));\n }\n\n registerOnChange(fn: (value: ComboboxValue | 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","import { Directive } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * An overlay rendered beneath the popup in `modal` mode. Place it inside the portal/presence; style\n * it `position: fixed; inset: 0`. Give it `pointer-events: auto` so a click on it dismisses the popup\n * (with `modal`, the rest of the page is inert). Exposes `data-open` / `data-closed` for animation.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxBackdrop]',\n exportAs: 'rdxComboboxBackdrop',\n host: {\n // A decorative overlay — Base UI marks it `role=\"presentation\"` (excluded from the a11y tree).\n role: 'presentation',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.open() ? undefined : \"\"'\n }\n})\nexport class RdxComboboxBackdrop {\n protected readonly rootContext = injectComboboxRootContext();\n}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxFloatingInsideElement } from '@radix-ng/primitives/dismissable-layer';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Container for the selected-value chips in `multiple` mode. Sits before the input and coordinates\n * arrow-key navigation across the chips (the chips themselves handle the key events). Uses\n * `role=\"toolbar\"` (Base UI): it keeps NVDA in focus mode while arrow-navigating the chips, where a\n * plain `list` would drop into browse mode.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxChips]',\n exportAs: 'rdxComboboxChips',\n hostDirectives: [RdxFloatingInsideElement],\n host: {\n role: 'toolbar'\n }\n})\nexport class RdxComboboxChips {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly rootContext = injectComboboxRootContext();\n\n constructor() {\n this.rootContext.registerChipsNav(() => this.focusLast());\n inject(DestroyRef).onDestroy(() => this.rootContext.registerChipsNav(null));\n }\n\n /** The chip elements in DOM order. */\n getChips(): HTMLElement[] {\n return Array.from(this.host.querySelectorAll<HTMLElement>('[rdxComboboxChip]'));\n }\n\n /** Focuses the last chip. Returns whether there was one. */\n focusLast(): boolean {\n const chips = this.getChips();\n if (chips.length === 0) {\n return false;\n }\n chips[chips.length - 1].focus();\n return true;\n }\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { AcceptableValue, createContext } from '@radix-ng/primitives/core';\nimport { RdxComboboxChips } from './combobox-chips';\nimport { injectComboboxRootContext } from './combobox-root';\n\nconst chipContext = () => {\n const chip = inject(RdxComboboxChip);\n return { value: chip.value };\n};\n\nexport type RdxComboboxChipContext = ReturnType<typeof chipContext>;\n\nexport const [injectComboboxChipContext, provideComboboxChipContext] = createContext<RdxComboboxChipContext>(\n 'RdxComboboxChipContext',\n 'components/combobox'\n);\n\n/**\n * A single selected-value chip. Provide its `value` so {@link RdxComboboxChipRemove} can deselect it.\n * Chips are focusable and navigable with the arrow keys; Backspace / Delete removes the chip.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxChip]',\n exportAs: 'rdxComboboxChip',\n providers: [provideComboboxChipContext(chipContext)],\n host: {\n // No explicit role (Base UI): a focusable child of the `toolbar` chips container.\n tabindex: '-1',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxComboboxChip {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly chips = inject(RdxComboboxChips, { optional: true });\n private readonly rootContext = injectComboboxRootContext();\n\n /** The value this chip represents. */\n readonly value = input.required<AcceptableValue>();\n\n onKeydown(event: KeyboardEvent): void {\n const list = this.chips?.getChips() ?? [];\n const index = list.indexOf(this.element);\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n // Leave the chips and engage the list: focus must return to the input so\n // `aria-activedescendant` navigation works, then run the same nav as the input.\n event.preventDefault();\n this.rootContext.focusInput();\n this.rootContext.navigateByKeyboard(event.key === 'ArrowDown' ? 1 : -1);\n break;\n case 'ArrowLeft':\n case 'ArrowRight': {\n // Direction-aware: in RTL the visual arrows flip. \"Forward\" steps toward the input\n // (the next chip, then the input); \"backward\" steps toward the first chip.\n const rtl = this.rootContext.dir() === 'rtl';\n const forward = (event.key === 'ArrowRight') !== rtl;\n if (forward) {\n event.preventDefault();\n if (index < list.length - 1) {\n list[index + 1].focus();\n } else {\n this.rootContext.focusInput();\n }\n } else if (index > 0) {\n event.preventDefault();\n list[index - 1].focus();\n }\n break;\n }\n case 'Home':\n if (list.length) {\n event.preventDefault();\n list[0].focus();\n }\n break;\n case 'End':\n event.preventDefault();\n this.rootContext.focusInput();\n break;\n case 'Backspace':\n case 'Delete': {\n event.preventDefault();\n // The @for tracks by value, so the previous/next chip nodes survive this removal.\n const prev = list[index - 1];\n const next = list[index + 1];\n this.rootContext.removeValue(this.value());\n if (prev) {\n prev.focus();\n } else if (next) {\n next.focus();\n } else {\n this.rootContext.focusInput();\n }\n break;\n }\n case 'Escape':\n this.rootContext.focusInput();\n break;\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxChipContext } from './combobox-chip';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Removes its chip's value from the selection, keeping focus in the input.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxComboboxChipRemove]',\n exportAs: 'rdxComboboxChipRemove',\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Remove',\n '(click)': 'onClick()'\n }\n})\nexport class RdxComboboxChipRemove {\n private readonly rootContext = injectComboboxRootContext();\n private readonly chipContext = injectComboboxChipContext();\n\n onClick(): void {\n this.rootContext.removeValue(this.chipContext.value());\n this.rootContext.focusInput();\n }\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\nimport { RdxFloatingInsideElement } from '@radix-ng/primitives/dismissable-layer';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Clears the current selection and the input text. Hidden when there is nothing to clear.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxComboboxClear]',\n exportAs: 'rdxComboboxClear',\n hostDirectives: [RdxFloatingInsideElement],\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Clear',\n '[hidden]': 'isEmpty()',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '(pointerdown)': 'onPointerDown($event)',\n '(mousedown)': 'onPointerDown($event)',\n '(click)': 'onClick()'\n }\n})\nexport class RdxComboboxClear {\n protected readonly rootContext = injectComboboxRootContext();\n\n /** Disables just this clear button (in addition to the combobox's own disabled / read-only state). */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly isDisabled = computed(\n () => this.disabled() || this.rootContext.disabledState() || this.rootContext.readonly()\n );\n\n /**\n * Whether there is nothing to clear, mirroring Base UI's visibility rule: in `none` mode the\n * button tracks the input text (a pure search field has no selection), otherwise it tracks the\n * selected value(s).\n */\n protected readonly isEmpty = computed(() => {\n if (this.rootContext.selectionMode() === 'none') {\n return (this.rootContext.inputValue() ?? '') === '';\n }\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n return value === null || value === undefined;\n });\n\n // Keep focus on the input — don't let the button take it on pointer/mouse down.\n onPointerDown(event: MouseEvent): void {\n event.preventDefault();\n }\n\n onClick(): void {\n this.rootContext.clearSelection();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * A polite, atomic live region announcing the \"no results\" message. Mirrors Base UI: the element\n * stays **mounted and visible at all times** so screen readers reliably announce the transition to\n * empty — only its *content* is rendered conditionally (projected when nothing matches, removed\n * otherwise). It must never be hidden/unmounted (`hidden`, `display:none`, `aria-hidden`, `@if`):\n * pulling the region out of the accessibility tree at the same instant its text appears is exactly\n * what suppresses the announcement.\n *\n * @group Components\n */\n@Component({\n selector: '[rdxComboboxEmpty]',\n exportAs: 'rdxComboboxEmpty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (isEmpty()) {\n <ng-content />\n }\n `,\n host: {\n role: 'status',\n 'aria-live': 'polite',\n 'aria-atomic': 'true',\n // Present only while the message is shown. Lets consumers collapse the always-mounted region\n // (e.g. `data-[empty]:py-6`) without `display:none`/`hidden`, which would break the announcement.\n '[attr.data-empty]': 'isEmpty() ? \"\" : undefined'\n }\n})\nexport class RdxComboboxEmpty {\n protected readonly rootContext = injectComboboxRootContext();\n\n /** Whether no items match the current query (drives projection of the message). */\n protected readonly isEmpty = computed(() => this.rootContext.visibleCount() === 0);\n}\n","import { computed, Directive, inject, signal } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\nimport { ComboboxItemRef, injectComboboxRootContext } from './combobox-root';\n\nconst groupContext = () => {\n const group = inject(RdxComboboxGroup);\n return {\n labelId: group.labelId,\n registerItem: (item: ComboboxItemRef) => group.registerItem(item),\n unregisterItem: (item: ComboboxItemRef) => group.unregisterItem(item)\n };\n};\n\nexport type RdxComboboxGroupContext = ReturnType<typeof groupContext>;\n\nexport const [injectComboboxGroupContext, provideComboboxGroupContext] = createContext<RdxComboboxGroupContext>(\n 'RdxComboboxGroupContext',\n 'components/combobox'\n);\n\n/**\n * Groups related options under a shared label. Hides itself when all of its items are filtered out,\n * so a group heading never lingers above an empty section.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxGroup]',\n exportAs: 'rdxComboboxGroup',\n providers: [provideComboboxGroupContext(groupContext)],\n host: {\n role: 'group',\n '[attr.aria-labelledby]': 'labelId()',\n '[hidden]': 'hasItems() && !hasVisibleItems()'\n }\n})\nexport class RdxComboboxGroup {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly labelId = signal<string | undefined>(undefined);\n\n private readonly items = signal<readonly ComboboxItemRef[]>([]);\n\n protected readonly hasItems = computed(() => this.items().length > 0);\n protected readonly hasVisibleItems = computed(() => this.items().some((item) => this.rootContext.isVisible(item)));\n\n registerItem(item: ComboboxItemRef): void {\n this.items.update((items) => [...items, item]);\n }\n\n unregisterItem(item: ComboboxItemRef): void {\n this.items.update((items) => items.filter((i) => i !== item));\n }\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectComboboxGroupContext } from './combobox-group';\n\n/**\n * Accessible label for a {@link RdxComboboxGroup}. Wires itself up via `aria-labelledby`.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxGroupLabel]',\n exportAs: 'rdxComboboxGroupLabel',\n host: {\n '[attr.id]': 'id'\n }\n})\nexport class RdxComboboxGroupLabel {\n private readonly groupContext = injectComboboxGroupContext();\n\n readonly id = injectId('rdx-combobox-group-label-');\n\n constructor() {\n this.groupContext.labelId.set(this.id);\n // Clear the registration on unmount so the group doesn't reference a removed label's id.\n inject(DestroyRef).onDestroy(() => {\n if (this.groupContext.labelId() === this.id) {\n this.groupContext.labelId.set(undefined);\n }\n });\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Decorative icon inside the trigger. Hidden from assistive technology.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxIcon]',\n exportAs: 'rdxComboboxIcon',\n host: {\n 'aria-hidden': 'true'\n }\n})\nexport class RdxComboboxIcon {}\n","import { afterNextRender, Directive, ElementRef, inject, Injector } from '@angular/core';\nimport { setupInternalBackdrop } from '@radix-ng/primitives/core';\nimport {\n provideRdxPopperContentConfig,\n provideRdxPopperContentWrapper,\n RdxPopperContentWrapper\n} from '@radix-ng/primitives/popper';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Positions the combobox popup relative to the input anchor using the popper engine.\n *\n * A \"thin\" positioner (ADR 0012): it inherits the full popper positioning surface — the inputs\n * (`side`, `sideOffset`, `align`, …), the `placed` output, and the host bindings — from\n * {@link RdxPopperContentWrapper}, and only declares combobox's Base UI-aligned defaults through the\n * config provider. `provideRdxPopperContentWrapper` re-wires the `useExisting` alias + context that\n * the popup and arrow resolve (Angular does not inherit a base directive's `providers`).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxPositioner]',\n exportAs: 'rdxComboboxPositioner',\n providers: [\n ...provideRdxPopperContentWrapper(RdxComboboxPositioner),\n provideRdxPopperContentConfig({ sideOffset: 4, align: 'start' })\n ]\n})\nexport class RdxComboboxPositioner extends RdxPopperContentWrapper {\n constructor() {\n super();\n const rootContext = injectComboboxRootContext();\n const injector = inject(Injector);\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n // A modal combobox isolates the background with an internal backdrop (Base UI); the input stays\n // clickable through a cutout. (Combobox is non-modal by default — usually no backdrop.)\n afterNextRender(() =>\n setupInternalBackdrop(host, injector, {\n isOpen: () => rootContext.open(),\n shouldRender: () => rootContext.modal(),\n cutout: () => rootContext.inputElement() ?? null\n })\n );\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input\n} from '@angular/core';\nimport { BooleanInput, injectId } from '@radix-ng/primitives/core';\nimport { RdxFloatingInsideElement } from '@radix-ng/primitives/dismissable-layer';\nimport { injectFieldRootContext } from '@radix-ng/primitives/field';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { RdxComboboxPositioner } from './combobox-positioner';\nimport { injectComboboxRootContext } from './combobox-root';\n\nconst attr = (value: boolean) => (value ? '' : undefined);\n\n/**\n * The combobox text input. Holds DOM focus at all times; the highlighted option is referenced via\n * `aria-activedescendant`. Integrates with Field for labeling, description, and validation state.\n *\n * @group Components\n */\n@Directive({\n selector: 'input[rdxComboboxInput]',\n exportAs: 'rdxComboboxInput',\n hostDirectives: [RdxPopperAnchor, RdxFloatingInsideElement],\n host: {\n role: 'combobox',\n autocomplete: 'off',\n 'aria-autocomplete': 'list',\n '[attr.id]': 'id()',\n '[attr.aria-haspopup]': 'rootContext.grid() ? \"grid\" : \"listbox\"',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.aria-controls]': 'rootContext.listId',\n '[attr.aria-labelledby]': 'rootContext.labelId()',\n '[attr.aria-activedescendant]': 'rootContext.activeId()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': 'invalidState() ? \"true\" : undefined',\n '[attr.aria-required]': 'requiredState() ? \"true\" : undefined',\n '[attr.aria-disabled]': 'disabledState() ? \"true\" : undefined',\n '[attr.disabled]': 'disabledState() ? \"\" : undefined',\n '[attr.readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.required]': 'requiredState() ? \"\" : undefined',\n '[value]': 'rootContext.inputValue()',\n '[attr.data-popup-open]': 'dataAttr(rootContext.open())',\n '[attr.data-list-empty]': 'dataAttr(rootContext.visibleCount() === 0)',\n '[attr.data-placeholder]': 'dataAttr(isEmptyValue())',\n '[attr.data-invalid]': 'dataAttr(invalidState())',\n '[attr.data-valid]': 'dataAttr(!invalidState())',\n '[attr.data-disabled]': 'dataAttr(disabledState())',\n '[attr.data-required]': 'dataAttr(requiredState())',\n '[attr.data-filled]': 'dataAttr(filledState())',\n '[attr.data-focused]': 'dataAttr(focusedState())',\n '(input)': 'onInput($event)',\n '(click)': 'onClick($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeydown($event)',\n '(compositionstart)': 'composing = true',\n '(compositionend)': 'onCompositionEnd($event)'\n }\n})\nexport class RdxComboboxInput {\n protected readonly rootContext = injectComboboxRootContext();\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef).nativeElement;\n private readonly fieldRootContext = injectFieldRootContext(true);\n\n /** The input id; Field labels and descriptions reference it for accessible relationships. */\n readonly id = input(injectId('rdx-combobox-input-'));\n\n /** Marks the input as invalid independently of any Field state. */\n readonly invalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly invalidState = computed(() => this.invalid() || Boolean(this.fieldRootContext?.invalidState()));\n protected readonly disabledState = computed(\n () => this.rootContext.disabledState() || Boolean(this.fieldRootContext?.disabledState())\n );\n protected readonly requiredState = computed(\n () => this.rootContext.requiredState() || Boolean(this.fieldRootContext?.requiredState())\n );\n protected readonly filledState = computed(\n () => !this.isEmptyValue() || Boolean(this.fieldRootContext?.filledState())\n );\n protected readonly focusedState = computed(() => Boolean(this.fieldRootContext?.focusedState()));\n\n protected readonly isEmptyValue = computed(() => {\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n return value === null || value === undefined;\n });\n\n protected readonly describedBy = computed(() => {\n if (!this.fieldRootContext) {\n return undefined;\n }\n const ids = [\n ...this.fieldRootContext.descriptionIds(),\n ...(this.fieldRootContext.invalidState() ? this.fieldRootContext.errorIds() : [])\n ];\n return ids.length ? ids.join(' ') : undefined;\n });\n\n constructor() {\n this.rootContext.setInputElement(this.element);\n // Report the layout (Base UI's `inputInsidePopup`): a positioner ancestor means the input lives\n // inside the popup (e.g. a command palette), so the Trigger becomes the focusable\n // `role=\"combobox\"`; otherwise the input is the tab stop and the Trigger is a `tabindex=\"-1\"` toggle.\n this.rootContext.setInputLayout(inject(RdxComboboxPositioner, { optional: true }) ? 'inside' : 'outside');\n\n afterNextRender(() => {\n this.fieldRootContext?.setControlId(this.id());\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.rootContext.inputElement() === this.element) {\n this.rootContext.setInputElement(null);\n }\n });\n }\n\n /** Whether an IME composition is in progress (CJK). While composing, don't filter or select. */\n protected composing = false;\n\n onInput(event: Event): void {\n // Defer filtering until the composition ends so intermediate IME text doesn't filter/select.\n if (this.composing || (event as InputEvent).isComposing) {\n return;\n }\n this.commitInput((event.target as HTMLInputElement).value, event);\n }\n\n onCompositionEnd(event: CompositionEvent): void {\n this.composing = false;\n this.commitInput((event.target as HTMLInputElement).value, event);\n }\n\n private commitInput(value: string, event: Event): void {\n // Base UI: clearing the field closes the popup only when the input is OUTSIDE it (and doesn't\n // open on click). When the input lives inside the popup, emptying the search must keep the popup\n // open (closing it would dismiss the field the user is typing in); otherwise typing (including\n // down to empty in browse mode) opens it.\n if (value === '' && !this.rootContext.openOnInputClick() && this.rootContext.inputLayout() !== 'inside') {\n this.rootContext.closePopup(false, 'input-clear', event);\n } else if (!this.rootContext.open() && value.trim() !== '') {\n // Base UI opens on input only for a non-empty trimmed value — whitespace alone won't open it.\n this.rootContext.openPopup('input-change', event);\n }\n // setInputValue applies any autoHighlight (deferred until items mount) and, in single mode,\n // deselects when the field is emptied.\n this.rootContext.setInputValue(value);\n }\n\n onClick(event: MouseEvent): void {\n if (this.rootContext.openOnInputClick()) {\n this.rootContext.openForBrowse('input-press', event);\n }\n }\n\n onFocus(): void {\n this.fieldRootContext?.setFocused(true);\n }\n\n onBlur(): void {\n this.fieldRootContext?.setFocused(false);\n this.fieldRootContext?.setTouched(true);\n }\n\n onKeydown(event: KeyboardEvent): void {\n // Don't interfere with IME composition or text-editing shortcuts / range selection. Shift+Arrows\n // and modified Home/End keep moving/extending the caret; Ctrl/Meta combos stay browser shortcuts.\n // (Plain Home/End navigate the grid below, but only in `grid` mode.)\n if (event.isComposing || this.composing) {\n return;\n }\n if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey) {\n return;\n }\n\n const open = this.rootContext.open();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.rootContext.navigateByKeyboard(1, event);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.rootContext.navigateByKeyboard(-1, event);\n break;\n case 'Enter':\n if (open) {\n const hasHighlight = this.rootContext.virtualized()\n ? this.rootContext.highlightedIndex() >= 0\n : this.rootContext.highlightedItem() !== null;\n if (hasHighlight) {\n // Select the highlighted item (and prevent an accidental form submit).\n event.preventDefault();\n this.rootContext.selectHighlighted(event);\n } else {\n // Nothing highlighted: just close, and let the form submit.\n this.rootContext.closePopup(true, 'none', event);\n }\n }\n break;\n case 'Escape':\n if (open) {\n // Close the popup, reverting the in-progress query; keep the selection.\n event.preventDefault();\n this.rootContext.closePopup(true, 'escape-key', event);\n } else if (!this.rootContext.popupMounted()) {\n // Base UI: Escape on a closed combobox clears the input text and the selection\n // (`clearSelection` resets both, a no-op while read-only / disabled). Guard on\n // `popupMounted`: the input's own Escape handler (the `open` branch above) already set\n // `open()` false when this same Escape just closed an open popup — in that case the\n // popup is still mounted (exiting) and we must not also clear.\n this.rootContext.clearSelection();\n }\n break;\n case 'Tab':\n // Tab dismisses a real popup and lets focus move on. With no popup mounted (an always-open\n // inline layout) Tab must NOT close — it just moves focus on. Guard on `popupMounted`.\n if (open && this.rootContext.popupMounted()) {\n this.rootContext.closePopup(true, 'none', event);\n }\n break;\n case 'ArrowRight':\n // In a grid, the horizontal arrows move within a row.\n if (open && this.rootContext.grid()) {\n event.preventDefault();\n this.rootContext.setKeyboardActive(true);\n this.rootContext.highlightNextColumn();\n break;\n }\n this.maybeStepIntoChips('ArrowRight', event);\n break;\n case 'ArrowLeft':\n if (open && this.rootContext.grid()) {\n event.preventDefault();\n this.rootContext.setKeyboardActive(true);\n this.rootContext.highlightPreviousColumn();\n break;\n }\n this.maybeStepIntoChips('ArrowLeft', event);\n break;\n case 'Home':\n // In a grid the search box is a filter, so Home/End jump to the first/last cell rather\n // than moving the caret (outside a grid they keep their native text-editing behavior).\n if (open && this.rootContext.grid()) {\n event.preventDefault();\n this.rootContext.setKeyboardActive(true);\n this.rootContext.highlightFirst();\n }\n break;\n case 'End':\n if (open && this.rootContext.grid()) {\n event.preventDefault();\n this.rootContext.setKeyboardActive(true);\n this.rootContext.highlightLast();\n }\n break;\n case 'Backspace':\n if (this.rootContext.multiple() && this.element.value === '') {\n this.rootContext.removeLastValue();\n }\n break;\n }\n }\n\n /**\n * From the very start of the input in `multiple` mode, step into the chips. The key that points\n * toward the chips is direction-aware: `ArrowLeft` in LTR, `ArrowRight` in RTL.\n */\n private maybeStepIntoChips(key: 'ArrowLeft' | 'ArrowRight', event: KeyboardEvent): void {\n const towardChips = this.rootContext.dir() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n if (\n key === towardChips &&\n this.rootContext.multiple() &&\n this.element.selectionStart === 0 &&\n this.element.selectionEnd === 0 &&\n this.rootContext.focusLastChip()\n ) {\n event.preventDefault();\n }\n }\n\n protected readonly dataAttr = attr;\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\nconst attr = (value: boolean) => (value ? '' : undefined);\n\n/**\n * Optional wrapper around the input and its adornments (icon, clear, trigger). Mirrors the combobox\n * state via `data-*` so the whole group can be styled together (focus ring, disabled, etc.).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxInputGroup]',\n exportAs: 'rdxComboboxInputGroup',\n host: {\n '[attr.data-popup-open]': 'dataAttr(rootContext.open())',\n '[attr.data-disabled]': 'dataAttr(rootContext.disabledState())',\n '[attr.data-required]': 'dataAttr(rootContext.requiredState())',\n '[attr.data-filled]': 'dataAttr(filled())'\n }\n})\nexport class RdxComboboxInputGroup {\n protected readonly rootContext = injectComboboxRootContext();\n\n /** Whether a value is selected (a non-empty array in multiple mode, or a non-nullish single value). */\n protected readonly filled = computed(() => {\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return value !== null && value !== undefined;\n });\n\n protected readonly dataAttr = attr;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A row in a grid-layout combobox list. Groups the items in one row so the root can navigate by row\n * (`ArrowUp` / `ArrowDown`) and within a row (`ArrowLeft` / `ArrowRight`). Only meaningful when the\n * root has `grid` enabled; the root resolves an item's row from its nearest `[rdxComboboxRow]` ancestor.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxRow]',\n exportAs: 'rdxComboboxRow',\n host: {\n role: 'row'\n }\n})\nexport class RdxComboboxRow {}\n","import {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n Signal\n} from '@angular/core';\nimport { AcceptableValue, createContext, injectId } from '@radix-ng/primitives/core';\nimport { injectComboboxGroupContext } from './combobox-group';\nimport { ComboboxItemRef, injectComboboxRootContext } from './combobox-root';\nimport { RdxComboboxRow } from './combobox-row';\n\nconst itemContext = () => {\n const item = inject(RdxComboboxItem);\n return {\n isSelected: item.isSelected,\n isHighlighted: item.isHighlighted,\n disabled: item.disabled,\n // Read-only `Signal` (not `InputSignal`) so autocomplete's computed `value` is assignable too.\n value: item.value as Signal<AcceptableValue>\n };\n};\n\nexport type RdxComboboxItemContext = ReturnType<typeof itemContext>;\n\nexport const [injectComboboxItemContext, provideComboboxItemContext] = createContext<RdxComboboxItemContext>(\n 'RdxComboboxItemContext',\n 'components/combobox'\n);\n\n/**\n * A selectable option. Registers itself with the root for filtering and navigation. Highlight is\n * virtual (`data-highlighted` + `aria-activedescendant` on the input) — items never take DOM focus.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxItem]',\n exportAs: 'rdxComboboxItem',\n providers: [provideComboboxItemContext(itemContext)],\n host: {\n '[attr.role]': 'role()',\n '[attr.id]': 'elementId()',\n '[attr.aria-selected]': 'selectable() ? isSelected() : undefined',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : undefined',\n '[attr.aria-setsize]': 'ariaSetSize()',\n '[attr.aria-posinset]': 'ariaPosInSet()',\n '[attr.data-selected]': 'selectable() && isSelected() ? \"\" : undefined',\n '[attr.data-highlighted]': 'isHighlighted() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[hidden]': '!isVisible()',\n '[attr.data-hidden]': 'isVisible() ? undefined : \"\"',\n '(pointerdown)': 'onPointerDown($event)',\n '(mousedown)': 'onMouseDown($event)',\n '(mouseup)': 'onMouseUp($event)',\n '(click)': 'onClick($event)',\n '(pointermove)': 'onPointerMove()',\n '(pointerleave)': 'onPointerLeave($event)'\n }\n})\nexport class RdxComboboxItem implements ComboboxItemRef {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n readonly id = injectId('rdx-combobox-item-');\n\n /** The option's value. */\n readonly value = input.required<AcceptableValue>();\n\n /** Explicit text matched against the query. Defaults to the element's text content. */\n readonly textValueInput = input<string>('', { alias: 'textValue' });\n\n /** Whether the option is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * The option's index in the list. Required in virtualized mode — it drives the deterministic id\n * (for `aria-activedescendant`), highlight matching, and selection when only a window is mounted.\n */\n readonly index = input<number>();\n\n protected readonly virtualized = this.rootContext.virtualized;\n\n private readonly autoTextValue = signal('');\n\n readonly textValue = computed(() => this.textValueInput() || this.autoTextValue());\n\n /** Host id: deterministic per-index in virtualized mode, otherwise a generated unique id. */\n protected readonly elementId = computed(() =>\n this.virtualized() ? this.rootContext.itemId(this.index() ?? -1) : this.id\n );\n\n protected readonly ariaSetSize = computed(() =>\n this.virtualized() ? this.rootContext.filteredItems().length : undefined\n );\n protected readonly ariaPosInSet = computed(() => (this.virtualized() ? (this.index() ?? -1) + 1 : undefined));\n\n /** The nearest enclosing grid row, if any (drives the `gridcell` role). */\n private readonly row = inject(RdxComboboxRow, { optional: true });\n\n /** `gridcell` only when actually inside a `RdxComboboxRow` of a grid list; otherwise `option`. */\n protected readonly role = computed(() => (this.rootContext.grid() && this.row ? 'gridcell' : 'option'));\n\n /**\n * Whether selection is a meaningful concept here (Base UI's `selectable`). In `selectionMode=\"none\"`\n * (every autocomplete option, and a pure-search combobox) options carry no selection state, so\n * `aria-selected` / `data-selected` are omitted entirely rather than rendered as `false`.\n */\n protected readonly selectable = computed(() => this.rootContext.selectionMode() !== 'none');\n\n // Virtualized items are always rendered (the consumer only mounts the filtered window).\n readonly isVisible = computed(() => (this.virtualized() ? true : this.rootContext.isVisible(this)));\n readonly isSelected = computed(() => this.rootContext.isSelected(this.value()));\n readonly isHighlighted = computed(() =>\n this.virtualized()\n ? this.rootContext.highlightedIndex() === this.index()\n : this.rootContext.highlightedItem() === this\n );\n\n private readonly group = injectComboboxGroupContext(true);\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n // Virtualized items are not registered: the root navigates over `items` data by index, and\n // a windowed item mounting/unmounting must not churn the DOM-ordered registry or `labelFor`.\n if (this.virtualized()) {\n return;\n }\n if (!this.textValueInput()) {\n // Derive the match/label text from the element, excluding decorative indicator text\n // (e.g. a checkmark) so it doesn't pollute filtering or the input label.\n const clone = this.element.cloneNode(true) as HTMLElement;\n clone.querySelectorAll('[rdxComboboxItemIndicator]').forEach((node) => node.remove());\n this.autoTextValue.set(clone.textContent?.trim() ?? '');\n }\n this.rootContext.registerItem(this);\n this.group?.registerItem(this);\n });\n\n destroyRef.onDestroy(() => {\n if (this.virtualized()) {\n return;\n }\n this.rootContext.unregisterItem(this);\n this.group?.unregisterItem(this);\n });\n\n // Keep the highlighted option in view while navigating a scrollable popup. `block: 'nearest'`\n // makes hover a no-op (the item is already visible) and only scrolls on keyboard navigation.\n afterRenderEffect(() => {\n if (!this.virtualized() && this.isHighlighted()) {\n this.element.scrollIntoView({ block: 'nearest' });\n }\n });\n\n // Reset the press flag whenever the popup closes (matches Base UI), so a later drag-end onto\n // this item isn't blocked by a stale press from an earlier interaction.\n effect(() => {\n if (!this.rootContext.open()) {\n this.pointerDownStarted = false;\n }\n });\n }\n\n // Whether a primary-button pointerdown started on **this** item. A normal press+release here is\n // committed by `click`; `mouseup` is only the drag-end fallback for a press that began *elsewhere*.\n private pointerDownStarted = false;\n\n onPointerDown(event: MouseEvent): void {\n if (event.button !== 0) {\n return;\n }\n // Keep focus on the input; prevent the item from stealing focus.\n event.preventDefault();\n this.rootContext.setKeyboardActive(false);\n this.pointerDownStarted = true;\n }\n\n onMouseDown(event: MouseEvent): void {\n // Belt-and-suspenders for keeping focus on the input (and iOS Safari blur on tap).\n if (event.button === 0) {\n event.preventDefault();\n }\n }\n\n onMouseUp(event: MouseEvent): void {\n // Read-and-reset the press flag first (matches Base UI), so a press+release here doesn't leave\n // it set and block a later drag-end onto this same item. Drag-end: commit when the primary\n // button is released over the highlighted item while the press began on a *different* element\n // (so `click` won't fire here). A press that began on this item is committed by `click` instead.\n const startedHere = this.pointerDownStarted;\n this.pointerDownStarted = false;\n if (event.button !== 0 || startedHere || !this.isHighlighted()) {\n return;\n }\n this.commitSelection(event);\n }\n\n onClick(event: MouseEvent): void {\n // Primary selection trigger; also fires for programmatic `.click()`.\n this.commitSelection(event);\n }\n\n private commitSelection(event: Event): void {\n if (this.virtualized()) {\n this.rootContext.selectIndex(this.index() ?? -1, event);\n } else {\n this.rootContext.select(this, event);\n }\n }\n\n onPointerMove(): void {\n // Hover highlighting disabled: leave `data-highlighted` to keyboard/auto-highlight only.\n if (!this.rootContext.highlightItemOnHover()) {\n return;\n }\n // Ignore the first move after keyboard navigation: arrow keys scroll the list under a still\n // cursor, and the resulting pointer event must not yank the highlight off the keyboard target.\n if (this.rootContext.isKeyboardActive()) {\n this.rootContext.setKeyboardActive(false);\n return;\n }\n if (this.disabled()) {\n return;\n }\n if (this.virtualized()) {\n this.rootContext.highlightIndex(this.index() ?? -1, 'pointer');\n } else if (this.isVisible()) {\n this.rootContext.setHighlight(this, 'pointer');\n }\n }\n\n // Clear a pointer-driven highlight when the cursor leaves the list (unless `keepHighlight`).\n // Moving to another element inside the list keeps it (the next item's move re-highlights).\n onPointerLeave(event: PointerEvent): void {\n if (\n event.pointerType === 'touch' ||\n !this.rootContext.open() ||\n !this.rootContext.highlightItemOnHover() ||\n this.rootContext.keepHighlight()\n ) {\n return;\n }\n const related = event.relatedTarget as Node | null;\n const list = related && document.getElementById(this.rootContext.listId);\n if (list && list.contains(related)) {\n return;\n }\n this.rootContext.clearHighlight();\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxItemContext } from './combobox-item';\n\n/**\n * Renders only when its item is selected (e.g. a checkmark).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxItemIndicator]',\n exportAs: 'rdxComboboxItemIndicator',\n host: {\n 'aria-hidden': 'true',\n '[hidden]': '!itemContext.isSelected()'\n }\n})\nexport class RdxComboboxItemIndicator {\n protected readonly itemContext = injectComboboxItemContext();\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * An accessible label for the combobox. Registers its id so the input (and trigger) reference it via\n * `aria-labelledby`.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxLabel]',\n exportAs: 'rdxComboboxLabel',\n host: {\n '[attr.id]': 'id'\n }\n})\nexport class RdxComboboxLabel {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly id = injectId('rdx-combobox-label-');\n\n constructor() {\n this.rootContext.setLabelId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setLabelId(undefined));\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * The listbox container for options. Carries the id referenced by the input's `aria-controls`, exposes\n * `data-empty` while no options match the current query (Base UI's `ComboboxList` empty state), and\n * switches its `role` to `grid` when the root has `grid` enabled.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxList]',\n exportAs: 'rdxComboboxList',\n host: {\n // Base UI: the list is a programmatic focus target (`tabindex=\"-1\"`) and selects the highlighted\n // item on Enter, for custom layouts that move focus onto the list rather than the input.\n tabindex: '-1',\n '[attr.role]': 'rootContext.grid() ? \"grid\" : \"listbox\"',\n '[attr.id]': 'rootContext.listId',\n '[attr.aria-multiselectable]': 'rootContext.multiple() ? \"true\" : undefined',\n '[attr.data-empty]': 'rootContext.visibleCount() === 0 ? \"\" : undefined',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxComboboxList {\n protected readonly rootContext = injectComboboxRootContext();\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Enter') {\n return;\n }\n // Base UI bails early when disabled / read-only — don't swallow Enter (e.g. a form submit).\n if (this.rootContext.disabledState() || this.rootContext.readonly()) {\n return;\n }\n const hasHighlight = this.rootContext.virtualized()\n ? this.rootContext.highlightedIndex() >= 0\n : this.rootContext.highlightedItem() !== null;\n if (hasHighlight) {\n // Base UI `stopEvent`: also stop propagation so a parent keydown handler doesn't re-handle\n // Enter after the selection.\n event.preventDefault();\n event.stopPropagation();\n this.rootContext.selectHighlighted();\n }\n }\n}\n","import { afterRenderEffect, computed, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport {\n RDX_FLOATING_REGISTRATION,\n RDX_FLOATING_ROOT_CONTEXT,\n RdxFloatingNodeRegistration,\n useAnchoredScrollLock\n} from '@radix-ng/primitives/core';\nimport { RdxDismiss } from '@radix-ng/primitives/dismissable-layer';\nimport { injectPopperContentWrapperContext, RdxPopperContent } from '@radix-ng/primitives/popper';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * The popup surface. Composes the popper content (for `data-side` / `data-align`) and a dismissable\n * layer for outside-dismiss. It does **not** trap focus — focus stays in the input throughout.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxPopup]',\n exportAs: 'rdxComboboxPopup',\n hostDirectives: [RdxPopperContent, RdxFloatingNodeRegistration],\n host: {\n // Base UI: a `dialog` (focusable, tabindex -1) when the input lives inside the popup, otherwise\n // a presentational wrapper around the `listbox` (the List part owns the listbox role).\n tabindex: '-1',\n '[attr.role]': 'rootContext.inputLayout() === \"inside\" ? \"dialog\" : \"presentation\"',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.open() ? undefined : \"\"',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '(focusin)': 'onFocusIn($event)'\n }\n})\nexport class RdxComboboxPopup {\n protected readonly rootContext = injectComboboxRootContext();\n private readonly floatingContext = inject(RDX_FLOATING_ROOT_CONTEXT);\n private readonly registration = inject(RDX_FLOATING_REGISTRATION, { optional: true });\n private readonly popper = injectPopperContentWrapperContext();\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n constructor() {\n // Activation policy (ADR 0016 §2 + §3): lock page scroll while a modal popup is OPEN. The gate\n // keys on `open` (not mounted), so the lock releases at close-start — before the exit animation\n // finishes — even though the popup stays mounted through it. For a **touch** open the anchored\n // helper only locks when the popup is effectively viewport-width, so a small dropdown stays\n // swipe-to-dismissable on mobile (§3).\n useAnchoredScrollLock(\n computed(() => this.rootContext.open() && this.rootContext.modal()),\n {\n touchOpen: () => this.rootContext.openedByTouch(),\n element: () => this.element\n }\n );\n\n // The popup's animation determines when the open/close transition (onOpenChangeComplete) is done.\n const unregister = this.rootContext.registerTransitionElement(this.element);\n // Track mounted state so Escape can tell \"closing this open popup\" from \"already closed\".\n this.rootContext.setPopupMounted(true);\n inject(DestroyRef).onDestroy(() => {\n unregister();\n this.rootContext.setPopupMounted(false);\n });\n\n // The popup is this layer's floating element (the inside surface for containment checks).\n this.floatingContext.setFloatingElement(this.element);\n\n // Dismissal (ADR 0015): an outside press, or focus leaving everything, closes the combobox. The\n // input / trigger / chips / clear are registered as \"inside\" (RdxFloatingInsideElement), so the\n // input keeping focus — or a press on those parts — never self-dismisses. Escape is owned by the\n // input (it preventDefaults + closes), so the capability does not handle it (`escapeKey: false`).\n new RdxDismiss(this.floatingContext, () => this.registration?.node() ?? null, {\n escapeKey: () => false,\n outsidePress: () => true,\n focusOutside: () => true,\n onDismiss: (reason, event) =>\n this.rootContext.closePopup(true, reason === 'focus-outside' ? 'focus-out' : 'outside-press', event)\n });\n\n // For the \"input inside the popup\" pattern, move focus to the input once the popup is\n // positioned. Use `afterRenderEffect` (not `effect`): when `isPositioned` flips true the\n // popup's final position/visibility is applied in the *following* render, so a synchronous\n // `effect` would call `focus()` while the element is still unfocusable and silently no-op.\n afterRenderEffect(() => {\n if (!this.popper.isPositioned() || !this.rootContext.open()) {\n return;\n }\n const input = this.rootContext.inputElement();\n if (input && input.closest('[rdxComboboxPopup]')) {\n // Base UI: a touch-open focuses the popup itself so Android keeps the virtual keyboard\n // closed; mouse/keyboard opens focus (and select) the search input as usual.\n if (this.rootContext.openedByTouch()) {\n this.element.focus();\n } else {\n input.focus();\n input.select();\n }\n }\n });\n }\n\n /**\n * Base UI focus handoff: if focus lands on the popup or the list (the `tabindex=\"-1\"` programmatic\n * focus targets), hand it back to the input so arrow-key navigation (`aria-activedescendant`) keeps\n * working. Skipped for a touch interaction, where focus is intentionally parked on the popup to keep\n * the Android virtual keyboard closed.\n */\n onFocusIn(event: FocusEvent): void {\n if (this.rootContext.openedByTouch()) {\n return;\n }\n const input = this.rootContext.inputElement();\n const target = event.target as HTMLElement | null;\n if (!input || !target || target === input) {\n return;\n }\n if (target === this.element || target.matches('[rdxComboboxList]')) {\n input.focus();\n }\n }\n}\n","import { Directive, input, isDevMode } from '@angular/core';\nimport { rdxDevError } from '@radix-ng/primitives/core';\nimport { RdxPortalContainer, RdxPortalPresence } from '@radix-ng/primitives/portal';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Structural directive that teleports the combobox popup into a container (default `document.body`)\n * while the combobox is open, and keeps it mounted until any CSS exit `@keyframes` finishes.\n *\n * Apply it with the `*` microsyntax on the positioner —\n * `<div *rdxComboboxPortal rdxComboboxPositioner>` — or as an explicit `<ng-template rdxComboboxPortal>`.\n * For a custom container use the explicit form with `[container]`.\n *\n * @group Components\n */\n@Directive({\n selector: 'ng-template[rdxComboboxPortal]',\n exportAs: 'rdxComboboxPortal',\n hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],\n providers: [provideRdxPresenceContext(() => ({ present: injectComboboxRootContext().present }))]\n})\nexport class RdxComboboxPortal {\n /**\n * Optional container to portal the content into. Defaults to `document.body`. Declared here (and\n * forwarded to the composed {@link RdxPortalPresence}) so the autocomplete portal can re-expose it\n * through its own `hostDirectives`.\n */\n readonly container = input<RdxPortalContainer>();\n}\n\n/**\n * Dev-mode guard: `rdxComboboxPortal` used to be an attribute directive on a `<div>`. It is now\n * structural, so the old `<div rdxComboboxPortal>` markup would silently stop portaling — fail loudly\n * instead.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxPortal]:not(ng-template)'\n})\nexport class RdxComboboxPortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n rdxDevError(\n 'combobox/portal-on-element',\n '`rdxComboboxPortal` is now a structural directive. ' +\n 'Use `*rdxComboboxPortal` on the positioner element or `<ng-template rdxComboboxPortal>`. ' +\n 'rdxComboboxPortalPresence has been removed.',\n 'components/combobox'\n );\n }\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A visual separator between groups of options. Carries `role=\"separator\"` with a horizontal\n * orientation (it divides rows in a vertical list), so assistive tech announces the grouping break.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxSeparator]',\n exportAs: 'rdxComboboxSeparator',\n host: {\n role: 'separator',\n 'aria-orientation': 'horizontal'\n }\n})\nexport class RdxComboboxSeparator {}\n","import { Directive } from '@angular/core';\n\n/**\n * A polite live region for async status (loading, result counts) announced without moving focus.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxStatus]',\n exportAs: 'rdxComboboxStatus',\n host: {\n role: 'status',\n 'aria-live': 'polite',\n 'aria-atomic': 'true'\n }\n})\nexport class RdxComboboxStatus {}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxFloatingInsideElement } from '@radix-ng/primitives/dismissable-layer';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Toggles the combobox popup. Its semantics depend on the layout (Base UI's `inputInsidePopup`):\n *\n * - **Input outside the popup** (default): a `tabindex=\"-1\"` toggle button (`aria-haspopup=\"listbox\"`)\n * that never steals focus from the input — `Tab` lands directly on the input.\n * - **Input inside the popup** (e.g. a command palette / emoji picker): the trigger becomes the primary\n * `role=\"combobox\"` control — `tabindex=\"0\"` (reachable via `Tab`), `aria-haspopup=\"dialog\"`, and\n * `ArrowDown`/`ArrowUp` open the popup (which moves focus to the inner input and highlights an item).\n *\n * The trigger stays `Tab`-reachable by default and is demoted to `tabindex=\"-1\"` only once an input is\n * detected *outside* the popup — so a trigger whose input lives in a not-yet-opened popup is focusable\n * from the first render (`inputLayout` is `unknown` until that input mounts).\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxComboboxTrigger]',\n exportAs: 'rdxComboboxTrigger',\n hostDirectives: [RdxFloatingInsideElement],\n host: {\n type: 'button',\n '[attr.tabindex]': 'rootContext.inputLayout() === \"outside\" ? \"-1\" : \"0\"',\n '[attr.role]': 'rootContext.inputLayout() === \"inside\" ? \"combobox\" : undefined',\n '[attr.aria-haspopup]': 'rootContext.inputLayout() === \"inside\" ? \"dialog\" : \"listbox\"',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.aria-controls]': 'rootContext.listId',\n '[attr.aria-labelledby]': 'rootContext.labelId()',\n '[attr.aria-required]':\n 'rootContext.inputLayout() === \"inside\" && rootContext.requiredState() ? \"true\" : undefined',\n '[attr.disabled]': 'rootContext.disabledState() ? \"\" : undefined',\n '[attr.data-popup-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabledState() ? \"\" : undefined',\n '(pointerdown)': 'onPointerDown($event)',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxComboboxTrigger {\n protected readonly rootContext = injectComboboxRootContext();\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n constructor() {\n this.rootContext.registerTrigger(this.element);\n inject(DestroyRef).onDestroy(() => this.rootContext.registerTrigger(null));\n }\n\n // Record whether the opening interaction is touch, so the popup can keep focus off the inner input\n // (and Android's virtual keyboard closed) when the input lives inside the popup.\n onPointerDown(event: PointerEvent): void {\n this.rootContext.setOpenedByTouch(event.pointerType === 'touch');\n }\n\n onClick(event: MouseEvent): void {\n if (this.rootContext.open()) {\n this.rootContext.closePopup(true, 'trigger-press', event);\n } else {\n this.rootContext.focusInput();\n this.rootContext.openForBrowse('trigger-press', event);\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.rootContext.disabledState() || this.rootContext.readonly()) {\n return;\n }\n // ArrowDown/ArrowUp open the popup and seed the first/last highlight; the popup's own\n // auto-focus then moves focus to the input (whether it lives inside or outside the popup).\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n // A keyboard open must focus the input, not the popup — clear any prior touch flag.\n this.rootContext.setOpenedByTouch(false);\n this.rootContext.openAndHighlight(event.key === 'ArrowUp' ? 'last' : 'first', 'list-navigation', event);\n }\n }\n}\n","import { computed, Directive, input } from '@angular/core';\nimport { AcceptableValue, isNullish } from '@radix-ng/primitives/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Renders the current selection's label(s) — typically inside a {@link RdxComboboxTrigger} for a\n * select-like control. Read `slotText()` in the template, or compose your own from `selectedLabels()`.\n * Exposes `data-placeholder` while nothing is selected.\n *\n * @example\n * <span #value=\"rdxComboboxValue\" rdxComboboxValue placeholder=\"Select…\">{{ value.slotText() }}</span>\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxValue]',\n exportAs: 'rdxComboboxValue',\n host: {\n '[attr.data-placeholder]': 'isEmpty() ? \"\" : undefined'\n }\n})\nexport class RdxComboboxValue {\n private readonly rootContext = injectComboboxRootContext();\n\n /** Text shown when there is no selection. */\n readonly placeholder = input<string>();\n\n /** The label(s) of the current selection, resolved via the root's `itemToStringLabel`/items. */\n readonly selectedLabels = computed<string[]>(() => {\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.map((v) => this.rootContext.labelFor(v)).filter(Boolean);\n }\n return isNullish(value) ? [] : [this.rootContext.labelFor(value as AcceptableValue)].filter(Boolean);\n });\n\n readonly isEmpty = computed(() => this.selectedLabels().length === 0);\n\n /** The selection joined for display, or the `placeholder` when empty. */\n readonly slotText = computed(() => {\n const labels = this.selectedLabels();\n return labels.length ? labels.join(', ') : (this.placeholder() ?? '');\n });\n}\n","import { NgModule } from '@angular/core';\nimport { RdxComboboxAnchor } from './src/combobox-anchor';\nimport { RdxComboboxArrow } from './src/combobox-arrow';\nimport { RdxComboboxBackdrop } from './src/combobox-backdrop';\nimport { RdxComboboxChip } from './src/combobox-chip';\nimport { RdxComboboxChipRemove } from './src/combobox-chip-remove';\nimport { RdxComboboxChips } from './src/combobox-chips';\nimport { RdxComboboxClear } from './src/combobox-clear';\nimport { RdxComboboxEmpty } from './src/combobox-empty';\nimport { RdxComboboxGroup } from './src/combobox-group';\nimport { RdxComboboxGroupLabel } from './src/combobox-group-label';\nimport { RdxComboboxIcon } from './src/combobox-icon';\nimport { RdxComboboxInput } from './src/combobox-input';\nimport { RdxComboboxInputGroup } from './src/combobox-input-group';\nimport { RdxComboboxItem } from './src/combobox-item';\nimport { RdxComboboxItemIndicator } from './src/combobox-item-indicator';\nimport { RdxComboboxLabel } from './src/combobox-label';\nimport { RdxComboboxList } from './src/combobox-list';\nimport { RdxComboboxPopup } from './src/combobox-popup';\nimport { RdxComboboxPortal, RdxComboboxPortalMisuseGuard } from './src/combobox-portal';\nimport { RdxComboboxPositioner } from './src/combobox-positioner';\nimport { RdxComboboxRoot } from './src/combobox-root';\nimport { RdxComboboxRow } from './src/combobox-row';\nimport { RdxComboboxSeparator } from './src/combobox-separator';\nimport { RdxComboboxStatus } from './src/combobox-status';\nimport { RdxComboboxTrigger } from './src/combobox-trigger';\nimport { RdxComboboxValue } from './src/combobox-value';\n\nexport * from './src/combobox-anchor';\nexport * from './src/combobox-arrow';\nexport * from './src/combobox-backdrop';\nexport * from './src/combobox-chip';\nexport * from './src/combobox-chip-remove';\nexport * from './src/combobox-chips';\nexport * from './src/combobox-clear';\nexport * from './src/combobox-empty';\nexport * from './src/combobox-group';\nexport * from './src/combobox-group-label';\nexport * from './src/combobox-icon';\nexport * from './src/combobox-input';\nexport * from './src/combobox-input-group';\nexport * from './src/combobox-item';\nexport * from './src/combobox-item-indicator';\nexport * from './src/combobox-label';\nexport * from './src/combobox-list';\nexport * from './src/combobox-popup';\nexport * from './src/combobox-portal';\nexport * from './src/combobox-positioner';\nexport * from './src/combobox-root';\nexport * from './src/combobox-row';\nexport * from './src/combobox-separator';\n// The shared engine factory (ADR 0014). @internal — exported only so the autocomplete entry can build\n// on it (ng-packagr secondary entries can't share unexported code); NOT part of the public API and may\n// change without notice. The `ComboboxEngine` / `ComboboxEngineConfig` types stay unexported (the roots\n// reference them via their own private fields / `ReturnType<typeof useComboboxEngine>`).\nexport { useComboboxEngine } from './src/combobox-engine';\nexport * from './src/combobox-status';\nexport * from './src/combobox-trigger';\nexport * from './src/combobox-value';\n\nexport const _importsCombobox = [\n RdxComboboxRoot,\n RdxComboboxAnchor,\n RdxComboboxLabel,\n RdxComboboxInput,\n RdxComboboxInputGroup,\n RdxComboboxValue,\n RdxComboboxTrigger,\n RdxComboboxIcon,\n RdxComboboxClear,\n RdxComboboxPortal,\n RdxComboboxPortalMisuseGuard,\n RdxComboboxBackdrop,\n RdxComboboxPositioner,\n RdxComboboxPopup,\n RdxComboboxArrow,\n RdxComboboxList,\n RdxComboboxRow,\n RdxComboboxItem,\n RdxComboboxItemIndicator,\n RdxComboboxGroup,\n RdxComboboxGroupLabel,\n RdxComboboxSeparator,\n RdxComboboxEmpty,\n RdxComboboxStatus,\n RdxComboboxChips,\n RdxComboboxChip,\n RdxComboboxChipRemove\n];\n\n@NgModule({\n imports: [..._importsCombobox],\n exports: [..._importsCombobox]\n})\nexport class RdxComboboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["itemsEqual","defaultItemToStringLabel","i1","attr","i2"],"mappings":"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"}