@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-autocomplete.mjs","sources":["../../../packages/primitives/autocomplete/src/autocomplete-anchor.ts","../../../packages/primitives/autocomplete/src/autocomplete-arrow.ts","../../../packages/primitives/autocomplete/src/autocomplete-backdrop.ts","../../../packages/primitives/autocomplete/src/autocomplete-root.ts","../../../packages/primitives/autocomplete/src/autocomplete-clear.ts","../../../packages/primitives/autocomplete/src/autocomplete-empty.ts","../../../packages/primitives/autocomplete/src/autocomplete-group.ts","../../../packages/primitives/autocomplete/src/autocomplete-group-label.ts","../../../packages/primitives/autocomplete/src/autocomplete-icon.ts","../../../packages/primitives/autocomplete/src/autocomplete-input.ts","../../../packages/primitives/autocomplete/src/autocomplete-input-group.ts","../../../packages/primitives/autocomplete/src/autocomplete-item.ts","../../../packages/primitives/autocomplete/src/autocomplete-item-indicator.ts","../../../packages/primitives/autocomplete/src/autocomplete-label.ts","../../../packages/primitives/autocomplete/src/autocomplete-list.ts","../../../packages/primitives/autocomplete/src/autocomplete-popup.ts","../../../packages/primitives/autocomplete/src/autocomplete-portal.ts","../../../packages/primitives/autocomplete/src/autocomplete-positioner.ts","../../../packages/primitives/autocomplete/src/autocomplete-row.ts","../../../packages/primitives/autocomplete/src/autocomplete-status.ts","../../../packages/primitives/autocomplete/src/autocomplete-trigger.ts","../../../packages/primitives/autocomplete/src/autocomplete-value.ts","../../../packages/primitives/autocomplete/index.ts","../../../packages/primitives/autocomplete/radix-ng-primitives-autocomplete.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { RdxComboboxAnchor } from '@radix-ng/primitives/combobox';\n\n/**\n * Optional positioning anchor for the popup. Put it on the element the popup should align to — for\n * example a wrapper that holds the input plus an icon/clear button. When present it takes precedence\n * over the input. Reuses the combobox anchor behavior.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteAnchor]',\n exportAs: 'rdxAutocompleteAnchor',\n hostDirectives: [RdxComboboxAnchor]\n})\nexport class RdxAutocompleteAnchor {}\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 directly\n * (the same building block the combobox arrow uses).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteArrow]',\n exportAs: 'rdxAutocompleteArrow',\n hostDirectives: [{ directive: RdxPopperArrow, inputs: ['width', 'height'] }]\n})\nexport class RdxAutocompleteArrow {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxBackdrop } from '@radix-ng/primitives/combobox';\n\n/**\n * An overlay rendered beneath the popup in `modal` mode. Exposes `data-open` / `data-closed` for\n * animation. Reuses the combobox backdrop.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteBackdrop]',\n exportAs: 'rdxAutocompleteBackdrop',\n hostDirectives: [RdxComboboxBackdrop]\n})\nexport class RdxAutocompleteBackdrop {}\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 untracked\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n ComboboxHighlightReason,\n ComboboxItemHighlightedDetails,\n ComboboxItemRef,\n provideComboboxRootContext,\n RdxComboboxRootContext\n} from '@radix-ng/primitives/combobox';\nimport {\n AcceptableValue,\n BooleanInput,\n itemToStringLabel as defaultItemToStringLabel,\n Direction,\n injectId,\n isItemEqualToValue,\n ItemValueComparator,\n useFilter,\n useListHighlight,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\n\n/**\n * Autocomplete filtering / inline-completion behavior, mirroring Base UI's `mode`:\n * - `'list'` (default): items are filtered by the query; the input text never changes from the active item.\n * - `'both'`: items are filtered **and** the input is inline-completed from the active item.\n * - `'inline'`: items are static (not filtered) but the input is inline-completed from the active item.\n * - `'none'`: items are static and the input is never changed from the active item.\n */\nexport type AutocompleteMode = 'list' | 'both' | 'inline' | 'none';\n\n/**\n * A custom filter predicate. Receives the item's text, the query, and the item's value (the object\n * for object items) so a filter can match across multiple fields — e.g. fuzzy/multi-key matching.\n */\nexport type AutocompleteFilter = (itemText: string, query: string, itemValue: AcceptableValue) => boolean;\n\n/** Why the input value changed, mirroring Base UI's `onValueChange` details. */\nexport type AutocompleteChangeReason = 'input-change' | 'item-press' | 'input-clear' | 'none';\n\n/** Payload of {@link RdxAutocompleteRoot.onValueChange}: the new value and why it changed. */\nexport interface AutocompleteValueChangeDetails {\n /** The new input value. */\n value: string;\n /** What caused the change (e.g. skip `'item-press'` to avoid overwriting an external value). */\n reason: AutocompleteChangeReason;\n}\n\n/** Re-exported for consumers: the highlight reason and payload shape are shared with the combobox engine. */\nexport type {\n ComboboxHighlightReason as AutocompleteHighlightReason,\n ComboboxItemHighlightedDetails as AutocompleteItemHighlightedDetails\n} from '@radix-ng/primitives/combobox';\n\n/**\n * Builds the {@link RdxComboboxRootContext} the autocomplete parts consume. Autocomplete reuses the\n * combobox parts (List, Popup, Positioner, Item, …) verbatim, so the root exposes the exact combobox\n * context shape — configured for a single-value, `selectionMode: 'none'` control whose value is the\n * input string. Autocomplete-specific state (mode, inline completion, grid) is read by the local\n * parts via direct injection of {@link RdxAutocompleteRoot}.\n */\nconst context = (): RdxComboboxRootContext => {\n const root = inject(RdxAutocompleteRoot);\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.value,\n open: root.open,\n multiple: root.alwaysFalse,\n selectionMode: root.noneMode,\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.isSelectedValue(value),\n registerItem: (item: ComboboxItemRef) => root.registerItem(item),\n unregisterItem: (item: ComboboxItemRef) => root.unregisterItem(item),\n highlight: root.highlight,\n highlightNext: () => root.moveDown(),\n highlightPrevious: () => root.moveUp(),\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.setQuery(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.clearValue(),\n removeValue: () => undefined,\n removeLastValue: () => undefined,\n registerChipsNav: () => undefined,\n focusLastChip: () => false,\n labelFor: (value: AcceptableValue) => root.labelFor(value),\n markAsTouched: () => root.markAsTouched()\n } as RdxComboboxRootContext;\n};\n\n/**\n * `autoHighlight` transform: pass `'always'` through verbatim, coerce everything else as a boolean\n * 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'): boolean | 'always' {\n return value === 'always' ? 'always' : booleanAttribute(value);\n}\n\n/**\n * Root of an Autocomplete — a text input with a filtered list of suggestions. Built on the combobox\n * engine with `selectionMode: 'none'`, so its value **is** the input string: typing, selecting an\n * item, or clearing all change a single string value. Owns input text, open state, filtering, inline\n * completion, and highlight-model navigation, and provides them to the combobox parts. Implements\n * `ControlValueAccessor` (the form value is the input string).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteRoot]',\n exportAs: 'rdxAutocompleteRoot',\n providers: [\n provideComboboxRootContext(context),\n { provide: NG_VALUE_ACCESSOR, useExisting: RdxAutocompleteRoot, multi: true }\n ],\n hostDirectives: [RdxPopper],\n host: {\n '[attr.data-disabled]': 'disabledState() ? \"\" : undefined'\n }\n})\nexport class RdxAutocompleteRoot implements ControlValueAccessor {\n private readonly injector = inject(Injector);\n\n /** The input text. This is the form value (controlled / uncontrolled via {@link defaultValue}). */\n readonly value = model<string>('');\n\n /** Initial input text when uncontrolled. */\n readonly defaultValue = input<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 /** Filtering / inline-completion behavior. See {@link AutocompleteMode}. */\n readonly mode = input<AutocompleteMode>('list');\n\n /** Text direction. */\n readonly dir = input<Direction>('ltr');\n\n /** Whether the autocomplete is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the autocomplete is read-only. */\n readonly readOnly = input(false, { alias: 'readOnly', 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 (matches Base UI):\n * - `false` (default): never auto-highlight;\n * - `true` (also the bare `autoHighlight` attribute): 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) {\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. Defaults to `false` (Base UI default). */\n readonly openOnInputClick = input(false, { 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 /** Whether the list is laid out as a 2D grid (enables row/column arrow navigation). */\n readonly grid = input(false, { transform: booleanAttribute });\n\n /**\n * Filter applied to items against the input query (only when {@link mode} is `'list'` / `'both'`).\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<AutocompleteFilter | 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 `RdxAutocompleteItem` is mounted).\n */\n readonly items = input<readonly AcceptableValue[]>();\n\n /** Whether the list is externally virtualized (navigation runs over {@link items} by index). */\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 an item value to its string label (filter text + input text on selection). */\n readonly itemToStringValue = input<(value: AcceptableValue) => string>();\n\n /** Emits when the input value changes (typing, selection, or clear), with the reason. */\n readonly onValueChange = output<AutocompleteValueChangeDetails>();\n\n /** Emits when the popup opens or closes. */\n readonly onOpenChange = output<boolean>();\n\n /** Emits as the highlight moves, with the item's value, its index in {@link filteredItems}, and the reason. */\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-autocomplete-list-');\n\n readonly labelId = signal<string | undefined>(undefined);\n\n readonly inputElement = signal<HTMLInputElement | null>(null);\n\n /** Constant signals exposed to the combobox context (autocomplete is always single-value). */\n readonly alwaysFalse = signal(false);\n readonly noneMode = signal<'none'>('none');\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 /** Whether built-in filtering applies in the current mode. */\n private readonly filteringMode = computed(() => this.mode() === 'list' || this.mode() === 'both');\n\n /** Whether inline completion applies in the current mode. */\n readonly inlineMode = computed(() => this.mode() === 'both' || this.mode() === 'inline');\n\n /**\n * Whether the input text is a fresh user query rather than a committed selection's label. While\n * `false` (just opened, or showing a committed selection), 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 text the user actually typed, used as the filter query. */\n readonly query = computed(() => (this.typed() ? (this.value() ?? '') : ''));\n\n /** Transient inline-completion preview (the active item's label), or `null`. */\n readonly inlinePreview = signal<string | null>(null);\n\n /** What the input element displays: the inline preview if any, else the committed value. */\n readonly displayValue = computed(() => this.inlinePreview() ?? this.value() ?? '');\n\n /** Suppresses inline completion for the current edit (set while a delete key is pressed). */\n private suppressInline = false;\n\n private readonly _items = signal<readonly ComboboxItemRef[]>([]);\n\n /** Registered items, sorted into DOM order. */\n readonly orderedItems = computed(() => [...this._items()].sort((a, b) => domOrder(a.element, b.element)));\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 /** The filtered item values an external virtualizer should render. */\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 if (!this.filteringMode()) {\n return cap(data);\n }\n const filter = this.filter();\n if (filter === null) {\n return cap(data);\n }\n const query = this.query();\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, value)));\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 /**\n * What to highlight once the list has mounted (items register asynchronously after opening):\n * an end edge, or `'first-match'` (the first item whose label starts with the query — used by\n * auto-highlight so inline completion lands on a real prefix match even when the list is static).\n */\n private readonly pendingHighlightEdge = signal<'first' | 'last' | 'first-match' | null>(null);\n\n private onChange?: (value: string) => 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) === '') {\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).\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 // Inline completion: mirror the active item's label into the input (with the completed suffix\n // selected by the input directive). Recomputes whenever the highlight or query changes.\n effect(() => {\n const item = this.highlightedItem();\n const query = this.query();\n const reason = this.highlightReason();\n untracked(() => this.recomputeInlinePreview(item, query, reason));\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 this.highlightReason.set('none');\n if (this.virtualized()) {\n this.highlightedIndex.set(this.resolveVirtualizedEdge(edge, count));\n } else if (edge === 'last') {\n this.highlight.last();\n } else if (edge === 'first-match') {\n this.highlight.set(this.firstMatchItem() ?? this.firstVisibleNavigable());\n } else {\n this.highlight.first();\n }\n this.pendingHighlightEdge.set(null);\n });\n });\n\n // autoHighlight 'always': keep the first navigable item highlighted whenever the popup is open.\n effect(() => {\n this.orderedItems();\n this.visibleCount();\n if (this.autoHighlightMode() === 'always' && this.open()) {\n untracked(() => {\n if (this.virtualized()) {\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 pushed out of range.\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 — warn once in dev.\n if (isDevMode()) {\n let warned = false;\n effect(() => {\n if (warned || !this.virtualized() || this.itemToStringValue()) {\n return;\n }\n if (this.items()?.some((value) => value !== null && typeof value === 'object')) {\n warned = true;\n console.warn(\n '[rdxAutocompleteRoot] `virtualized` with object item values needs `itemToStringValue` ' +\n 'to render correct labels; falling back to a generic label.'\n );\n }\n });\n }\n }\n\n private recomputeInlinePreview(item: ComboboxItemRef | 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 (!this.inlineMode() || this.suppressInline || !item || reason === 'pointer') {\n this.inlinePreview.set(null);\n return;\n }\n const label = item.textValue();\n if (label && query && label.toLowerCase().startsWith(query.toLowerCase())) {\n // Type-ahead: keep the typed prefix (preserving its casing) and complete the rest.\n this.inlinePreview.set(query + label.slice(query.length));\n return;\n }\n // Keyboard navigation to an item that doesn't prefix-match the query: show its full label so the\n // input reflects the highlighted option. Typing (reason 'none') never jumps to a non-prefix label.\n if (reason === 'keyboard' && label) {\n this.inlinePreview.set(label);\n return;\n }\n this.inlinePreview.set(null);\n }\n\n setSuppressInline(value: boolean): void {\n this.suppressInline = value;\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 if (!this.filteringMode()) {\n return true;\n }\n const filter = this.filter();\n if (filter === null) {\n return true;\n }\n const query = this.query();\n const matcher = filter ?? this.defaultFilter.contains;\n return matcher(item.textValue(), query, item.value());\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 /** The first visible, navigable item whose label starts with the query (for inline completion). */\n private firstMatchItem(): ComboboxItemRef | null {\n const query = this.query();\n if (!query) {\n return null;\n }\n const lower = query.toLowerCase();\n return (\n this.visibleItems().find((item) => !item.disabled() && item.textValue().toLowerCase().startsWith(lower)) ??\n null\n );\n }\n\n /** The first visible, navigable item (auto-highlight fallback when no prefix match exists). */\n private firstVisibleNavigable(): ComboboxItemRef | null {\n return this.visibleItems().find((item) => !item.disabled()) ?? null;\n }\n\n /** Resolves a pending edge to a virtualized index. */\n private 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 = this.query();\n if (query) {\n const lower = query.toLowerCase();\n const index = this.filteredItems().findIndex((value) =>\n this.textFor(value).toLowerCase().startsWith(lower)\n );\n if (index >= 0) {\n return index;\n }\n }\n }\n return 0;\n }\n\n private keyboardActive = false;\n isKeyboardActive(): boolean {\n return this.keyboardActive;\n }\n setKeyboardActive(value: boolean): void {\n this.keyboardActive = value;\n }\n\n /** Whether the item's value/label matches the current input value (combobox context contract). */\n isSelectedValue(value: AcceptableValue): boolean {\n const current = this.value();\n if (!current) {\n return false;\n }\n return value === current || isItemEqualToValue(value, current, 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 this.inlinePreview.set(null);\n if (revert) {\n this.typed.set(false);\n }\n this.markAsTouched();\n }\n\n /** Updates the input text from user typing (marks it a fresh query, emits change). */\n setQuery(value: string): void {\n this.commitValue(value, 'input-change');\n this.typed.set(true);\n // Inline modes (`both` / `inline`) implicitly highlight the first prefix match so the input can\n // be inline-completed even without an explicit `autoHighlight`.\n if (this.autoHighlightMode() !== 'off' || (this.inlineMode() && value.length > 0)) {\n this.pendingHighlightEdge.set('first-match');\n }\n }\n\n /** Selects all input text so the next keystroke replaces a committed label. */\n selectInputText(): void {\n this.inputElement()?.select();\n }\n\n labelFor(value: AcceptableValue): string {\n const custom = this.itemToStringValue();\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 /** 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.itemToStringValue();\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.commitSelection(item.textValue() || this.labelFor(item.value()));\n }\n\n /** Selects the filtered item at `index` (virtualized mode). */\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.commitSelection(this.labelFor(value));\n }\n\n /** Commits a selection: the input value becomes the item's label, the popup closes. */\n private commitSelection(label: string): void {\n this.inlinePreview.set(null);\n this.commitValue(label, 'item-press');\n this.typed.set(false);\n this.open.set(false);\n this.clearHighlightState();\n this.restoreFocusAfterSelect();\n this.maybeSubmit();\n }\n\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, grid-aware, else DOM-ref) ---\n\n moveDown(): void {\n this.highlightReason.set('keyboard');\n if (this.virtualized()) {\n this.stepIndex(1);\n } else if (this.grid()) {\n this.gridVertical(1);\n } else {\n this.highlight.next();\n }\n }\n\n moveUp(): void {\n this.highlightReason.set('keyboard');\n if (this.virtualized()) {\n this.stepIndex(-1);\n } else if (this.grid()) {\n this.gridVertical(-1);\n } else {\n this.highlight.previous();\n }\n }\n\n /** Grid: move to the next cell in DOM order. Non-grid: no-op (caret movement). */\n moveRight(): void {\n if (!this.grid() || this.virtualized()) {\n return;\n }\n this.highlightReason.set('keyboard');\n this.highlight.next();\n }\n\n moveLeft(): void {\n if (!this.grid() || this.virtualized()) {\n return;\n }\n this.highlightReason.set('keyboard');\n this.highlight.previous();\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 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 setHighlight(item: ComboboxItemRef, reason: ComboboxHighlightReason): void {\n this.highlightReason.set(reason);\n this.highlight.set(item);\n }\n\n clearHighlightState(): void {\n this.highlight.clear();\n this.highlightedIndex.set(-1);\n }\n\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 /** Grid vertical move: keep the column index, jump to the adjacent row. */\n private gridVertical(direction: 1 | -1): void {\n const rows = this.gridRows();\n if (rows.length === 0) {\n return;\n }\n const current = this.highlightedItem();\n if (!current) {\n const row = direction === 1 ? rows[0] : rows[rows.length - 1];\n this.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 = this.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 this.highlight.set(targetRow[Math.min(col, targetRow.length - 1)] ?? null);\n }\n\n /** Visible items grouped into rows by their nearest `[rdxAutocompleteRow]` ancestor (DOM order). */\n private gridRows(): ComboboxItemRef[][] {\n const rows = new Map<Element | null, ComboboxItemRef[]>();\n for (const item of this.visibleItems()) {\n const key = item.element.closest('[rdxAutocompleteRow]');\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 clearValue(): void {\n this.commitValue('', 'input-clear');\n this.typed.set(true);\n this.inlinePreview.set(null);\n this.focusInput();\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 restoreFocusAfterSelect(): void {\n const input = this.inputElement();\n if (input && !input.closest('[rdxAutocompletePopup]')) {\n input.focus();\n } else {\n this.triggerElement?.focus();\n }\n }\n\n markAsTouched(): void {\n this.onTouched?.();\n }\n\n private commitValue(value: string, reason: AutocompleteChangeReason): void {\n this.value.set(value);\n this.onValueChange.emit({ value, reason });\n this.onChange?.(value);\n }\n\n // ControlValueAccessor (the form value is the input string)\n writeValue(value: string | null): void {\n untracked(() => this.value.set(value ?? ''));\n }\n\n registerOnChange(fn: (value: string) => 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\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 { computed, Directive, inject } from '@angular/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { RdxAutocompleteRoot } from './autocomplete-root';\n\n/**\n * Clears the input value. Hidden when there is nothing to clear.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxAutocompleteClear]',\n exportAs: 'rdxAutocompleteClear',\n hostDirectives: [RdxDismissableLayerBranch],\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Clear',\n '[hidden]': 'isEmpty()',\n '[attr.disabled]': 'root.disabledState() ? \"\" : undefined',\n '(click)': 'onClick()'\n }\n})\nexport class RdxAutocompleteClear {\n protected readonly root = inject(RdxAutocompleteRoot);\n\n protected readonly isEmpty = computed(() => !this.root.value());\n\n onClick(): void {\n this.root.clearValue();\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxEmpty } from '@radix-ng/primitives/combobox';\n\n/**\n * Shown only when no items match the current query. Reuses the combobox empty part.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteEmpty]',\n exportAs: 'rdxAutocompleteEmpty',\n hostDirectives: [RdxComboboxEmpty]\n})\nexport class RdxAutocompleteEmpty {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxGroup } from '@radix-ng/primitives/combobox';\n\n/**\n * Groups related options under a shared label. Hides itself when all of its items are filtered out.\n * Reuses the combobox group (and exposes the combobox group context for the label + items).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteGroup]',\n exportAs: 'rdxAutocompleteGroup',\n hostDirectives: [RdxComboboxGroup]\n})\nexport class RdxAutocompleteGroup {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxGroupLabel } from '@radix-ng/primitives/combobox';\n\n/**\n * Accessible label for a {@link RdxAutocompleteGroup}. Wires itself up via `aria-labelledby`. Reuses\n * the combobox group label.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteGroupLabel]',\n exportAs: 'rdxAutocompleteGroupLabel',\n hostDirectives: [RdxComboboxGroupLabel]\n})\nexport class RdxAutocompleteGroupLabel {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxIcon } from '@radix-ng/primitives/combobox';\n\n/**\n * Decorative icon inside the trigger. Hidden from assistive technology. Reuses the combobox icon.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteIcon]',\n exportAs: 'rdxAutocompleteIcon',\n hostDirectives: [RdxComboboxIcon]\n})\nexport class RdxAutocompleteIcon {}\n","import {\n afterNextRender,\n afterRenderEffect,\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 { RdxAutocompleteRoot } from './autocomplete-root';\n\nconst attr = (value: boolean) => (value ? '' : undefined);\n\n/**\n * The autocomplete text input. Holds DOM focus at all times; the highlighted option is referenced via\n * `aria-activedescendant`. In `both` / `inline` modes it shows the active item's inline completion\n * with the completed suffix selected. Integrates with Field for labeling and validation state.\n *\n * @group Components\n */\n@Directive({\n selector: 'input[rdxAutocompleteInput]',\n exportAs: 'rdxAutocompleteInput',\n hostDirectives: [RdxPopperAnchor, RdxDismissableLayerBranch],\n host: {\n role: 'combobox',\n autocomplete: 'off',\n '[attr.aria-autocomplete]': 'ariaAutocomplete()',\n '[attr.id]': 'id()',\n '[attr.aria-expanded]': 'root.open()',\n '[attr.aria-controls]': 'root.listId',\n '[attr.aria-labelledby]': 'root.labelId()',\n '[attr.aria-activedescendant]': 'root.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]': 'root.readOnly() ? \"\" : undefined',\n '[attr.required]': 'requiredState() ? \"\" : undefined',\n '[value]': 'root.displayValue()',\n '[attr.data-popup-open]': 'dataAttr(root.open())',\n '[attr.data-list-empty]': 'dataAttr(root.visibleCount() === 0)',\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 RdxAutocompleteInput {\n protected readonly root = inject(RdxAutocompleteRoot);\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-autocomplete-input-'));\n\n /** Marks the input as invalid independently of any Field state. */\n readonly invalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n // Mirrors the configured mode (matches Base UI): 'list' | 'both' | 'inline' | 'none' — all valid\n // `aria-autocomplete` tokens. Must reflect the static mechanism, not the transient inline preview.\n protected readonly ariaAutocomplete = computed(() => this.root.mode());\n\n protected readonly invalidState = computed(() => this.invalid() || Boolean(this.fieldRootContext?.invalidState()));\n protected readonly disabledState = computed(\n () => this.root.disabledState() || Boolean(this.fieldRootContext?.disabledState())\n );\n protected readonly requiredState = computed(\n () => this.root.requiredState() || Boolean(this.fieldRootContext?.requiredState())\n );\n protected readonly filledState = computed(\n () => Boolean(this.root.value()) || Boolean(this.fieldRootContext?.filledState())\n );\n protected readonly focusedState = computed(() => Boolean(this.fieldRootContext?.focusedState()));\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.root.inputElement.set(this.element);\n\n afterNextRender(() => {\n this.fieldRootContext?.setControlId(this.id());\n });\n\n // Select the completed part of an inline preview so the next keystroke replaces it: the suffix\n // after the typed prefix when the label prefix-matches, otherwise the whole navigated label.\n afterRenderEffect(() => {\n const preview = this.root.inlinePreview();\n if (preview === null) {\n return;\n }\n const query = this.root.query();\n const start = query && preview.toLowerCase().startsWith(query.toLowerCase()) ? query.length : 0;\n this.element.setSelectionRange(start, preview.length);\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.root.inputElement() === this.element) {\n this.root.inputElement.set(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 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.root.open()) {\n this.root.setOpen(true);\n }\n this.root.setQuery(value);\n }\n\n onClick(): void {\n if (this.root.openOnInputClick()) {\n this.root.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 if (event.isComposing || this.composing) {\n return;\n }\n // Backspace / Delete must never re-add an inline completion for the resulting edit.\n this.root.setSuppressInline(event.key === 'Backspace' || event.key === 'Delete');\n\n if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey) {\n return;\n }\n\n const open = this.root.open();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.root.setKeyboardActive(true);\n if (!open) {\n this.root.openAndHighlight('first');\n } else {\n this.root.moveDown();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.root.setKeyboardActive(true);\n if (!open) {\n this.root.openAndHighlight('last');\n } else {\n this.root.moveUp();\n }\n break;\n case 'ArrowRight':\n if (open && this.root.grid()) {\n event.preventDefault();\n this.root.setKeyboardActive(true);\n this.root.moveRight();\n }\n break;\n case 'ArrowLeft':\n if (open && this.root.grid()) {\n event.preventDefault();\n this.root.setKeyboardActive(true);\n this.root.moveLeft();\n }\n break;\n case 'Enter':\n if (open) {\n const hasHighlight = this.root.virtualized()\n ? this.root.highlightedIndex() >= 0\n : this.root.highlightedItem() !== null;\n if (hasHighlight) {\n event.preventDefault();\n this.root.selectHighlighted();\n } else if (!this.root.inlineMode()) {\n // Non-inline: close and let native form submission proceed. Inline modes keep the\n // popup open on Enter without a highlight (matches Base UI).\n this.root.closePopup(true);\n }\n }\n break;\n case 'Escape':\n if (open) {\n event.preventDefault();\n this.root.closePopup(true);\n }\n break;\n case 'Tab':\n if (open) {\n this.root.closePopup(true);\n }\n break;\n }\n }\n\n protected readonly dataAttr = attr;\n}\n","import { Directive, inject } from '@angular/core';\nimport { RdxAutocompleteRoot } from './autocomplete-root';\n\nconst attr = (value: boolean) => (value ? '' : undefined);\n\n/**\n * Optional wrapper around the input and its adornments (icon, clear, trigger). Mirrors the input's\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: '[rdxAutocompleteInputGroup]',\n exportAs: 'rdxAutocompleteInputGroup',\n host: {\n '[attr.data-popup-open]': 'dataAttr(root.open())',\n '[attr.data-disabled]': 'dataAttr(root.disabledState())',\n '[attr.data-required]': 'dataAttr(root.requiredState())',\n '[attr.data-filled]': 'dataAttr(!!root.value())'\n }\n})\nexport class RdxAutocompleteInputGroup {\n protected readonly root = inject(RdxAutocompleteRoot);\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 {\n ComboboxItemRef,\n injectComboboxGroupContext,\n injectComboboxRootContext,\n provideComboboxItemContext\n} from '@radix-ng/primitives/combobox';\nimport { AcceptableValue, injectId } from '@radix-ng/primitives/core';\n\nconst itemContext = () => {\n const item = inject(RdxAutocompleteItem);\n return {\n isSelected: item.isSelected,\n isHighlighted: item.isHighlighted,\n disabled: item.disabled,\n value: item.value\n };\n};\n\n/**\n * A selectable suggestion. 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 * Selecting an item writes its text into the input. Unlike the combobox item, the `value` is optional;\n * when omitted, selection falls back to the option's text content (autocomplete's value is the input string).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteItem]',\n exportAs: 'rdxAutocompleteItem',\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 RdxAutocompleteItem implements ComboboxItemRef {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n readonly id = injectId('rdx-autocomplete-item-');\n\n /** The option's value. When omitted, selecting the item writes its text content into the input. */\n readonly value = input<AcceptableValue>('');\n\n /** Explicit text matched against the query and written to the input. Defaults to 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 /** The option's index in the list. Required in virtualized mode. */\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 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 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 if (this.virtualized()) {\n return;\n }\n if (!this.textValueInput()) {\n const clone = this.element.cloneNode(true) as HTMLElement;\n clone.querySelectorAll('[rdxAutocompleteItemIndicator]').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 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 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 { RdxComboboxItemIndicator } from '@radix-ng/primitives/combobox';\n\n/**\n * Renders only when its item is selected (e.g. a checkmark). Reuses the combobox item indicator,\n * which reads the item context provided by {@link RdxAutocompleteItem}.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteItemIndicator]',\n exportAs: 'rdxAutocompleteItemIndicator',\n hostDirectives: [RdxComboboxItemIndicator]\n})\nexport class RdxAutocompleteItemIndicator {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxLabel } from '@radix-ng/primitives/combobox';\n\n/**\n * An accessible label for the autocomplete. Registers its id so the input (and trigger) reference it\n * via `aria-labelledby`. Reuses the combobox label behavior.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteLabel]',\n exportAs: 'rdxAutocompleteLabel',\n hostDirectives: [RdxComboboxLabel]\n})\nexport class RdxAutocompleteLabel {}\n","import { Directive, inject } from '@angular/core';\nimport { RdxAutocompleteRoot } from './autocomplete-root';\n\n/**\n * The listbox (or grid) container for suggestions. Carries the id referenced by the input's\n * `aria-controls`, and switches its role to `grid` when the root has `grid` enabled.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteList]',\n exportAs: 'rdxAutocompleteList',\n host: {\n '[attr.role]': 'root.grid() ? \"grid\" : \"listbox\"',\n '[attr.id]': 'root.listId'\n }\n})\nexport class RdxAutocompleteList {\n protected readonly root = inject(RdxAutocompleteRoot);\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 { RdxAutocompleteRoot } from './autocomplete-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. When\n * the input lives **inside** the popup (the \"input in popup\" / emoji-picker pattern), it moves focus\n * to the input once the popup is positioned.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompletePopup]',\n exportAs: 'rdxAutocompletePopup',\n hostDirectives: [RdxPopperContent, RdxDismissableLayer],\n providers: [\n provideRdxDismissableLayerConfig(() => ({\n disableOutsidePointerEvents: inject(RdxAutocompleteRoot).modal\n }))\n ],\n host: {\n '[attr.data-state]': 'root.open() ? \"open\" : \"closed\"',\n '[attr.data-open]': 'root.open() ? \"\" : undefined',\n '[attr.data-closed]': 'root.open() ? undefined : \"\"',\n '[attr.data-starting-style]': 'root.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'root.transitionStatus() === \"ending\" ? \"\" : undefined'\n }\n})\nexport class RdxAutocompletePopup {\n protected readonly root = inject(RdxAutocompleteRoot);\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly popper = injectPopperContentWrapperContext();\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n constructor() {\n useScrollLock(this.root.modal);\n\n const unregister = this.root.registerTransitionElement(this.element);\n inject(DestroyRef).onDestroy(unregister);\n\n this.dismissableLayer.dismiss.subscribe(() => this.root.closePopup(true));\n\n // For the \"input inside the popup\" pattern, move focus to the input once positioned. Use\n // `afterRenderEffect` (not `effect`): when `isPositioned` flips true the popup's final\n // position/visibility is applied in the *following* render, so a synchronous `effect` would\n // call `focus()` while the element is still unfocusable and silently no-op. Running after the\n // render guarantees the input is focusable.\n afterRenderEffect(() => {\n if (!this.popper.isPositioned() || !this.root.open()) {\n return;\n }\n const input = this.root.inputElement();\n if (input && input.closest('[rdxAutocompletePopup]')) {\n input.focus();\n input.select();\n }\n });\n }\n}\n","import { Directive, isDevMode } from '@angular/core';\nimport { RdxComboboxPortal } from '@radix-ng/primitives/combobox';\n\n/**\n * Structural directive that teleports the autocomplete popup into a container (default\n * `document.body`) while the autocomplete is open, keeping it mounted until any CSS exit `@keyframes`\n * finishes. Composes the structural {@link RdxComboboxPortal} (which reads the open state from the\n * combobox root context provided by `RdxAutocompleteRoot`).\n *\n * Apply it with the `*` microsyntax on the positioner —\n * `<div *rdxAutocompletePortal rdxAutocompletePositioner>` — or as an explicit\n * `<ng-template rdxAutocompletePortal>`. For a custom container use the explicit form with `[container]`.\n *\n * @group Components\n */\n@Directive({\n selector: 'ng-template[rdxAutocompletePortal]',\n exportAs: 'rdxAutocompletePortal',\n hostDirectives: [{ directive: RdxComboboxPortal, inputs: ['container'] }]\n})\nexport class RdxAutocompletePortal {}\n\n/**\n * Dev-mode guard: `rdxAutocompletePortal` is now structural, so the old `<div rdxAutocompletePortal>`\n * markup would silently stop portaling — fail loudly instead.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompletePortal]:not(ng-template)'\n})\nexport class RdxAutocompletePortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n throw new Error(\n '[rdxAutocompletePortal] is now a structural directive. ' +\n 'Use `*rdxAutocompletePortal` on the positioner element or `<ng-template rdxAutocompletePortal>`. ' +\n 'rdxAutocompletePortalPresence has been removed. See https://radix-ng.com/components/autocomplete.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. Composes the popper\n * content wrapper directly (the same building block the combobox positioner uses) and re-exposes its\n * positioning inputs.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompletePositioner]',\n exportAs: 'rdxAutocompletePositioner',\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-autocomplete-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-autocomplete-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-autocomplete-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-autocomplete-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-autocomplete-trigger-height': 'var(--radix-popper-anchor-height)'\n }`\n }\n})\nexport class RdxAutocompletePositioner {\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 row in a grid-layout autocomplete list. Groups the items in one row so the root can navigate by\n * row (ArrowUp / ArrowDown) and within a row (ArrowLeft / ArrowRight). Only meaningful when the root\n * has `grid` enabled; the root resolves an item's row from its nearest `[rdxAutocompleteRow]` ancestor.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteRow]',\n exportAs: 'rdxAutocompleteRow',\n host: {\n role: 'row'\n }\n})\nexport class RdxAutocompleteRow {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxStatus } from '@radix-ng/primitives/combobox';\n\n/**\n * A polite live region for async status (loading, result counts) announced without moving focus.\n * Reuses the combobox status region.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteStatus]',\n exportAs: 'rdxAutocompleteStatus',\n hostDirectives: [RdxComboboxStatus]\n})\nexport class RdxAutocompleteStatus {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxTrigger } from '@radix-ng/primitives/combobox';\n\n/**\n * Toggles the autocomplete popup. Carries `tabindex=\"-1\"` so it never steals focus from the input.\n * Reuses the combobox trigger behavior.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxAutocompleteTrigger]',\n exportAs: 'rdxAutocompleteTrigger',\n hostDirectives: [RdxComboboxTrigger]\n})\nexport class RdxAutocompleteTrigger {}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { RdxAutocompleteRoot } from './autocomplete-root';\n\n/**\n * Renders the current input value as text. Useful for a read-only display of the committed value.\n * Read `slotText()` in the template. Exposes `data-placeholder` while the value is empty.\n *\n * @example\n * <span #value=\"rdxAutocompleteValue\" rdxAutocompleteValue placeholder=\"Empty\">{{ value.slotText() }}</span>\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteValue]',\n exportAs: 'rdxAutocompleteValue',\n host: {\n '[attr.data-placeholder]': 'isEmpty() ? \"\" : undefined'\n }\n})\nexport class RdxAutocompleteValue {\n private readonly root = inject(RdxAutocompleteRoot);\n\n /** Text shown when the value is empty. */\n readonly placeholder = input<string>();\n\n readonly isEmpty = computed(() => !this.root.value());\n\n /** The current input value, or the `placeholder` when empty. */\n readonly slotText = computed(() => this.root.value() || (this.placeholder() ?? ''));\n}\n","import { NgModule } from '@angular/core';\nimport { RdxAutocompleteAnchor } from './src/autocomplete-anchor';\nimport { RdxAutocompleteArrow } from './src/autocomplete-arrow';\nimport { RdxAutocompleteBackdrop } from './src/autocomplete-backdrop';\nimport { RdxAutocompleteClear } from './src/autocomplete-clear';\nimport { RdxAutocompleteEmpty } from './src/autocomplete-empty';\nimport { RdxAutocompleteGroup } from './src/autocomplete-group';\nimport { RdxAutocompleteGroupLabel } from './src/autocomplete-group-label';\nimport { RdxAutocompleteIcon } from './src/autocomplete-icon';\nimport { RdxAutocompleteInput } from './src/autocomplete-input';\nimport { RdxAutocompleteInputGroup } from './src/autocomplete-input-group';\nimport { RdxAutocompleteItem } from './src/autocomplete-item';\nimport { RdxAutocompleteItemIndicator } from './src/autocomplete-item-indicator';\nimport { RdxAutocompleteLabel } from './src/autocomplete-label';\nimport { RdxAutocompleteList } from './src/autocomplete-list';\nimport { RdxAutocompletePopup } from './src/autocomplete-popup';\nimport { RdxAutocompletePortal, RdxAutocompletePortalMisuseGuard } from './src/autocomplete-portal';\nimport { RdxAutocompletePositioner } from './src/autocomplete-positioner';\nimport { RdxAutocompleteRoot } from './src/autocomplete-root';\nimport { RdxAutocompleteRow } from './src/autocomplete-row';\nimport { RdxAutocompleteStatus } from './src/autocomplete-status';\nimport { RdxAutocompleteTrigger } from './src/autocomplete-trigger';\nimport { RdxAutocompleteValue } from './src/autocomplete-value';\n\nexport * from './src/autocomplete-anchor';\nexport * from './src/autocomplete-arrow';\nexport * from './src/autocomplete-backdrop';\nexport * from './src/autocomplete-clear';\nexport * from './src/autocomplete-empty';\nexport * from './src/autocomplete-group';\nexport * from './src/autocomplete-group-label';\nexport * from './src/autocomplete-icon';\nexport * from './src/autocomplete-input';\nexport * from './src/autocomplete-input-group';\nexport * from './src/autocomplete-item';\nexport * from './src/autocomplete-item-indicator';\nexport * from './src/autocomplete-label';\nexport * from './src/autocomplete-list';\nexport * from './src/autocomplete-popup';\nexport * from './src/autocomplete-portal';\nexport * from './src/autocomplete-positioner';\nexport * from './src/autocomplete-root';\nexport * from './src/autocomplete-row';\nexport * from './src/autocomplete-status';\nexport * from './src/autocomplete-trigger';\nexport * from './src/autocomplete-value';\n\nexport const _importsAutocomplete = [\n RdxAutocompleteRoot,\n RdxAutocompleteAnchor,\n RdxAutocompleteLabel,\n RdxAutocompleteInputGroup,\n RdxAutocompleteInput,\n RdxAutocompleteValue,\n RdxAutocompleteTrigger,\n RdxAutocompleteIcon,\n RdxAutocompleteClear,\n RdxAutocompletePortal,\n RdxAutocompletePortalMisuseGuard,\n RdxAutocompleteBackdrop,\n RdxAutocompletePositioner,\n RdxAutocompletePopup,\n RdxAutocompleteArrow,\n RdxAutocompleteList,\n RdxAutocompleteRow,\n RdxAutocompleteItem,\n RdxAutocompleteItemIndicator,\n RdxAutocompleteGroup,\n RdxAutocompleteGroupLabel,\n RdxAutocompleteEmpty,\n RdxAutocompleteStatus\n];\n\n@NgModule({\n imports: [..._importsAutocomplete],\n exports: [..._importsAutocomplete]\n})\nexport class RdxAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","defaultItemToStringLabel","attr"],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-autocomplete.mjs","sources":["../../../packages/primitives/autocomplete/src/autocomplete-anchor.ts","../../../packages/primitives/autocomplete/src/autocomplete-arrow.ts","../../../packages/primitives/autocomplete/src/autocomplete-backdrop.ts","../../../packages/primitives/autocomplete/src/autocomplete-root.ts","../../../packages/primitives/autocomplete/src/autocomplete-clear.ts","../../../packages/primitives/autocomplete/src/autocomplete-empty.ts","../../../packages/primitives/autocomplete/src/autocomplete-group.ts","../../../packages/primitives/autocomplete/src/autocomplete-group-label.ts","../../../packages/primitives/autocomplete/src/autocomplete-icon.ts","../../../packages/primitives/autocomplete/src/autocomplete-positioner.ts","../../../packages/primitives/autocomplete/src/autocomplete-input.ts","../../../packages/primitives/autocomplete/src/autocomplete-input-group.ts","../../../packages/primitives/autocomplete/src/autocomplete-row.ts","../../../packages/primitives/autocomplete/src/autocomplete-item.ts","../../../packages/primitives/autocomplete/src/autocomplete-item-indicator.ts","../../../packages/primitives/autocomplete/src/autocomplete-label.ts","../../../packages/primitives/autocomplete/src/autocomplete-list.ts","../../../packages/primitives/autocomplete/src/autocomplete-popup.ts","../../../packages/primitives/autocomplete/src/autocomplete-portal.ts","../../../packages/primitives/autocomplete/src/autocomplete-separator.ts","../../../packages/primitives/autocomplete/src/autocomplete-status.ts","../../../packages/primitives/autocomplete/src/autocomplete-trigger.ts","../../../packages/primitives/autocomplete/src/autocomplete-value.ts","../../../packages/primitives/autocomplete/index.ts","../../../packages/primitives/autocomplete/radix-ng-primitives-autocomplete.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { RdxComboboxAnchor } from '@radix-ng/primitives/combobox';\n\n/**\n * Optional positioning anchor for the popup. Put it on the element the popup should align to — for\n * example a wrapper that holds the input plus an icon/clear button. When present it takes precedence\n * over the input. Reuses the combobox anchor behavior.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteAnchor]',\n exportAs: 'rdxAutocompleteAnchor',\n hostDirectives: [RdxComboboxAnchor]\n})\nexport class RdxAutocompleteAnchor {}\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 directly\n * (the same building block the combobox arrow uses).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteArrow]',\n exportAs: 'rdxAutocompleteArrow',\n hostDirectives: [{ directive: RdxPopperArrow, inputs: ['width', 'height'] }]\n})\nexport class RdxAutocompleteArrow {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxBackdrop } from '@radix-ng/primitives/combobox';\n\n/**\n * An overlay rendered beneath the popup in `modal` mode. Exposes `data-open` / `data-closed` for\n * animation. Reuses the combobox backdrop.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteBackdrop]',\n exportAs: 'rdxAutocompleteBackdrop',\n hostDirectives: [RdxComboboxBackdrop]\n})\nexport class RdxAutocompleteBackdrop {}\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 ComboboxHighlightReason,\n ComboboxInputLayout,\n ComboboxItemHighlightedDetails,\n ComboboxItemRef,\n provideComboboxRootContext,\n RdxComboboxOpenChange,\n RdxComboboxOpenChangeReason,\n RdxComboboxRootContext,\n useComboboxEngine\n} from '@radix-ng/primitives/combobox';\nimport {\n AcceptableValue,\n BooleanInput,\n createCancelableChangeEventDetails,\n createFloatingRootContext,\n itemToStringLabel as defaultItemToStringLabel,\n Direction,\n isItemEqualToValue as itemsEqual,\n ItemValueComparator,\n provideFloatingRootContext,\n provideFloatingTree,\n RdxCancelableChangeEventDetails,\n rdxDevWarning,\n RdxFloatingRootContext\n} from '@radix-ng/primitives/core';\nimport { injectDirection } from '@radix-ng/primitives/direction-provider';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\n\n/** The shared engine instance shape (the `ComboboxEngine` type is not part of combobox's public API). */\ntype ComboboxEngine = ReturnType<typeof useComboboxEngine>;\n\n/**\n * Autocomplete filtering / inline-completion behavior, mirroring Base UI's `mode`:\n * - `'list'` (default): items are filtered by the query; the input text never changes from the active item.\n * - `'both'`: items are filtered **and** the input is inline-completed from the active item.\n * - `'inline'`: items are static (not filtered) but the input is inline-completed from the active item.\n * - `'none'`: items are static and the input is never changed from the active item.\n */\nexport type AutocompleteMode = 'list' | 'both' | 'inline' | 'none';\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. Value-first lets one filter match strings and\n * objects alike (fuzzy / multi-key). The same shape as the shared combobox engine's `ComboboxFilter`.\n */\nexport type AutocompleteFilter = (\n itemValue: AcceptableValue,\n query: string,\n itemToString?: (itemValue: AcceptableValue) => string\n) => boolean;\n\n/** Why the input value changed, mirroring Base UI's `onValueChange` details. */\nexport type AutocompleteChangeReason = 'input-change' | 'item-press' | 'input-clear' | 'none';\n\n/** Payload of {@link RdxAutocompleteRoot.onValueChange}: the new value and why it changed. */\nexport interface AutocompleteValueChangeDetails {\n /** The new input value. */\n value: string;\n /** What caused the change (e.g. skip `'item-press'` to avoid overwriting an external value). */\n reason: AutocompleteChangeReason;\n}\n\n/** Re-exported for consumers: the highlight reason and payload shape are shared with the combobox engine. */\nexport type {\n ComboboxHighlightReason as AutocompleteHighlightReason,\n ComboboxItemHighlightedDetails as AutocompleteItemHighlightedDetails\n} from '@radix-ng/primitives/combobox';\n\n// The engine stays private to the root; the context factory (a free function) reads it through this registry.\nconst engineRegistry = new WeakMap<RdxAutocompleteRoot, ComboboxEngine>();\n\n/**\n * Builds the {@link RdxComboboxRootContext} the autocomplete parts consume. Autocomplete reuses the\n * combobox parts (List, Popup, Positioner, Item, …) verbatim, so it provides the exact combobox context\n * shape — configured for a single-value, `selectionMode: 'none'` control whose value **is** the input\n * string. The shared engine supplies registry / filtering / highlight / inline; the root supplies the\n * string-value semantics. Autocomplete-specific parts (mode, inline, grid) inject {@link RdxAutocompleteRoot}.\n */\nconst context = (): RdxComboboxRootContext => {\n const root = inject(RdxAutocompleteRoot);\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.value,\n open: root.open,\n present: root.present,\n multiple: root.alwaysFalse,\n selectionMode: root.noneMode,\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.isSelectedValue(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.setQuery(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.clearValue(),\n removeValue: () => undefined,\n removeLastValue: () => undefined,\n registerChipsNav: () => undefined,\n focusLastChip: () => false,\n labelFor: (value: AcceptableValue) => root.labelFor(value),\n markAsTouched: () => root.markAsTouched()\n // `value`/`inputValue` are the input string here, not `ComboboxValue`.\n } as RdxComboboxRootContext;\n};\n\ntype RdxAutocompleteOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxComboboxOpenChangeReason>;\n\ninterface RdxAutocompleteOpenChangeTransaction {\n payload: RdxComboboxOpenChange;\n eventDetails: RdxAutocompleteOpenChangeEventDetails;\n shouldPreventUnmountOnClose: () => boolean;\n}\n\n/**\n * `autoHighlight` transform: pass `'always'` through verbatim, coerce everything else as a boolean\n * attribute (so the bare `autoHighlight` attribute reads `true`). Kept as a named function (compodoc\n * hangs on an inline arrow combined with union-generic `input()`).\n */\nfunction coerceAutoHighlight(value: BooleanInput | 'always'): boolean | 'always' {\n return value === 'always' ? 'always' : booleanAttribute(value);\n}\n\n/**\n * Root of an Autocomplete — a text input with a filtered list of suggestions. A thin configuration over\n * the shared combobox engine (ADR 0014) with `selectionMode: 'none'`, so its value **is** the input\n * string: typing, selecting an item, or clearing all change a single string value. Implements\n * `ControlValueAccessor` (the form value is the input string).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteRoot]',\n exportAs: 'rdxAutocompleteRoot',\n providers: [\n provideComboboxRootContext(context),\n { provide: NG_VALUE_ACCESSOR, useExisting: RdxAutocompleteRoot, multi: true },\n // New floating foundation (ADR 0015/0017) — the dismissal capability reads this shared context.\n provideFloatingTree(),\n provideFloatingRootContext(() => inject(RdxAutocompleteRoot).floatingContext)\n ],\n hostDirectives: [RdxPopper],\n host: {\n '[attr.data-disabled]': 'disabledState() ? \"\" : undefined'\n }\n})\nexport class RdxAutocompleteRoot 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 /** The input text. This is the form value (controlled / uncontrolled via {@link defaultValue}). */\n readonly value = model<string>('');\n\n /** Initial input text when uncontrolled. */\n readonly defaultValue = input<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 /** Filtering / inline-completion behavior. See {@link AutocompleteMode}. */\n readonly mode = input<AutocompleteMode>('list');\n\n /** Text direction. */\n readonly dirInput = input<Direction | undefined>(undefined, { alias: 'dir' });\n readonly dir = injectDirection(this.dirInput);\n\n /** Whether the autocomplete is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the autocomplete is read-only. */\n readonly readOnly = input(false, { alias: 'readOnly', 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 (matches Base UI):\n * - `false` (default): never auto-highlight;\n * - `true` (also the bare `autoHighlight` attribute): 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) {\n return 'input-change';\n }\n return 'off';\n });\n\n /** Whether moving the pointer over an item highlights it. */\n readonly highlightItemOnHover = input(true, { transform: booleanAttribute });\n\n /** Whether a pointer-driven highlight is kept when the cursor leaves the list. */\n readonly keepHighlight = input(false, { transform: booleanAttribute });\n\n /** Whether clicking the input opens the popup. Defaults to `false` (Base UI default). */\n readonly openOnInputClick = input(false, { 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 /** Whether the list is laid out as a 2D grid (enables row/column arrow navigation). */\n readonly grid = input(false, { transform: booleanAttribute });\n\n /**\n * Filter applied to items against the input query (only when {@link mode} is `'list'` / `'both'`).\n * `undefined` → locale-aware contains; a function → custom `(value, query, itemToString)`; `null` →\n * built-in filtering disabled.\n */\n readonly filter = input<AutocompleteFilter | 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 /** The full set of item values for {@link virtualized} mode. */\n readonly items = input<readonly AcceptableValue[]>();\n\n /** Whether the list is externally virtualized (navigation runs over {@link items} by index). */\n readonly virtualized = 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 an item value to its string label (filter text + input text on selection). */\n readonly itemToStringValue = input<(value: AcceptableValue) => string>();\n\n /** Emits when the input value changes (typing, selection, or clear), with the reason. */\n readonly onValueChange = output<AutocompleteValueChangeDetails>();\n\n /** Emits when the popup opens or closes. */\n readonly onOpenChange = output<RdxComboboxOpenChange>();\n\n /** Emits as the highlight moves, with the item's value, its index in {@link filteredItems}, and the reason. */\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 /** Constant signals exposed to the combobox context (autocomplete is always single-value). */\n readonly alwaysFalse = signal(false);\n readonly noneMode = signal<'none'>('none');\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 /** Whether built-in filtering applies in the current mode (`list` / `both`). */\n private readonly filteringMode = computed(() => this.mode() === 'list' || this.mode() === 'both');\n\n /** Whether inline completion applies in the current mode (`both` / `inline`). */\n readonly inlineMode = computed(() => this.mode() === 'both' || this.mode() === 'inline');\n\n /**\n * Whether the input text is a fresh user query rather than a committed selection's label. While\n * `false` (just opened, or showing a committed selection), the list is unfiltered; it flips `true`\n * on the first keystroke.\n */\n private readonly typed = signal(false);\n\n /** The text the user actually typed, used as the filter query. */\n readonly query = computed(() => (this.typed() ? (this.value() ?? '') : ''));\n\n /** The shared engine: item registry, filtering, highlight navigation (grid), inline, transition. */\n private readonly engine: ComboboxEngine = useComboboxEngine({\n injector: this.injector,\n listIdPrefix: 'rdx-autocomplete-list-',\n popupSelector: '[rdxAutocompletePopup]',\n open: this.open,\n query: this.query,\n filteringEnabled: this.filteringMode,\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('[rdxAutocompleteRow]'),\n inlineMode: this.inlineMode,\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 /** What the input element displays: the inline preview if any, else the committed value. */\n readonly displayValue = computed(() => this.engine.inlinePreview() ?? this.value() ?? '');\n\n // --- engine-backed surface read by the parts / tests ---\n get listId() {\n return this.engine.listId;\n }\n get labelId() {\n return this.engine.labelId;\n }\n get inputElement() {\n return this.engine.inputElement;\n }\n setInputElement(el: HTMLInputElement | null): void {\n this.engine.setInputElement(el);\n }\n setInputLayout(layout: ComboboxInputLayout): void {\n this.engine.setInputLayout(layout);\n }\n setPopupMounted(value: boolean): void {\n this.engine.setPopupMounted(value);\n }\n get inputLayout() {\n return this.engine.inputLayout;\n }\n get openedByTouch() {\n return this.engine.openedByTouch;\n }\n get popupMounted() {\n return this.engine.popupMounted;\n }\n get highlight() {\n return this.engine.highlight;\n }\n get highlightedItem() {\n return this.engine.highlightedItem;\n }\n get highlightedIndex() {\n return this.engine.highlightedIndex;\n }\n get activeId() {\n return this.engine.activeId;\n }\n get filteredItems() {\n return this.engine.filteredItems;\n }\n get visibleCount() {\n return this.engine.visibleCount;\n }\n get inlinePreview() {\n return this.engine.inlinePreview;\n }\n get transitionStatus() {\n return this.engine.transitionStatus;\n }\n get registerTransitionElement() {\n return this.engine.registerTransitionElement;\n }\n get triggerElement() {\n return this.engine.triggerElement;\n }\n\n private onChange?: (value: string) => void;\n private onTouched?: () => void;\n\n constructor() {\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) === '') {\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 — warn once in dev.\n if (isDevMode()) {\n effect(() => {\n if (!this.virtualized() || this.itemToStringValue()) {\n return;\n }\n if (this.items()?.some((value) => value !== null && typeof value === 'object')) {\n rdxDevWarning(\n 'autocomplete/virtualized-item-label',\n '`rdxAutocompleteRoot` `virtualized` with object item values needs `itemToStringValue` ' +\n 'to render correct labels; falling back to a generic label.',\n 'components/autocomplete'\n );\n }\n });\n }\n }\n\n setSuppressInline(value: boolean): void {\n this.engine.setSuppressInline(value);\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('autocomplete.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('autocomplete.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 /** Whether the item's value/label matches the current input value (combobox context contract). */\n isSelectedValue(value: AcceptableValue): boolean {\n const current = this.value();\n if (!current) {\n return false;\n }\n return value === current || itemsEqual(value, current, this.isItemEqualToValue());\n }\n\n setOpen(\n open: boolean,\n reason: RdxComboboxOpenChangeReason = 'none',\n event: Event = new Event('autocomplete.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('autocomplete.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 this.engine.clearInlinePreview();\n if (revert) {\n this.typed.set(false);\n }\n this.markAsTouched();\n }\n\n /** Updates the input text from user typing (marks it a fresh query, emits change). */\n setQuery(value: string): void {\n this.commitValue(value, 'input-change');\n this.typed.set(true);\n // Inline modes (`both` / `inline`) implicitly highlight the first prefix match so the input can\n // be inline-completed even without an explicit `autoHighlight`.\n if (this.autoHighlightMode() !== 'off' || (this.inlineMode() && value.length > 0)) {\n this.engine.setPendingHighlightEdge('first-match');\n }\n }\n\n labelFor(value: AcceptableValue): string {\n const custom = this.itemToStringValue();\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 itemId(index: number): string {\n return this.engine.itemId(index);\n }\n\n isVisible(item: ComboboxItemRef): boolean {\n return this.engine.isVisible(item);\n }\n\n registerItem(item: ComboboxItemRef): void {\n this.engine.registerItem(item);\n }\n\n unregisterItem(item: ComboboxItemRef): void {\n this.engine.unregisterItem(item);\n }\n\n handleSelect(item: ComboboxItemRef, event: Event = new Event('autocomplete.item-press')): void {\n if (this.disabledState() || this.readOnly() || item.disabled()) {\n return;\n }\n this.commitSelection(item.textValue() || this.labelFor(item.value()), event);\n }\n\n /** Selects the filtered item at `index` (virtualized mode). */\n selectIndex(index: number, event: Event = new Event('autocomplete.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.commitSelection(this.labelFor(value), event);\n }\n\n /** Commits a selection: the input value becomes the item's label, the popup closes. */\n private commitSelection(label: string, event: Event = new Event('autocomplete.item-press')): void {\n // Capture focus before `commitValue` emits `onValueChange`, so restoration is skipped when the\n // consumer moves focus in that callback (e.g. focusing a message field after an emoji press).\n const activeBefore = typeof document !== 'undefined' ? document.activeElement : null;\n this.engine.clearInlinePreview();\n this.commitValue(label, 'item-press');\n this.typed.set(false);\n this.closePopup(false, 'item-press', event);\n this.engine.restoreFocusAfterSelect(activeBefore);\n this.maybeSubmit();\n }\n\n private maybeSubmit(): void {\n if (this.submitOnItemClick()) {\n this.engine.inputElement()?.form?.requestSubmit?.();\n }\n }\n\n selectHighlighted(event: Event = new Event('autocomplete.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 // --- highlight navigation facade (delegates to the engine; grid-aware) ---\n\n navigateByKeyboard(direction: 1 | -1, event: Event = new Event('autocomplete.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 moveDown(): void {\n this.engine.highlightNext();\n }\n moveUp(): void {\n this.engine.highlightPrevious();\n }\n moveRight(): void {\n this.engine.highlightNextColumn();\n }\n moveLeft(): void {\n this.engine.highlightPreviousColumn();\n }\n highlightFirst(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.engine.highlightFirst(reason);\n }\n highlightLast(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.engine.highlightLast(reason);\n }\n highlightIndex(index: number, reason: ComboboxHighlightReason): void {\n this.engine.highlightIndex(index, reason);\n }\n setHighlight(item: ComboboxItemRef, reason: ComboboxHighlightReason): void {\n this.engine.setHighlight(item, reason);\n }\n clearHighlightState(): void {\n this.engine.clearHighlightState();\n }\n\n isKeyboardActive(): boolean {\n return this.engine.isKeyboardActive();\n }\n setKeyboardActive(value: boolean): void {\n this.engine.setKeyboardActive(value);\n }\n\n clearValue(): void {\n if (this.disabledState() || this.readOnly()) {\n return;\n }\n this.commitValue('', 'input-clear');\n this.typed.set(true);\n this.engine.clearInlinePreview();\n this.engine.clearHighlightState();\n this.engine.focusInput();\n }\n\n focusInput(): void {\n this.engine.focusInput();\n }\n\n markAsTouched(): void {\n this.onTouched?.();\n }\n\n private commitValue(value: string, reason: AutocompleteChangeReason): void {\n // Mirror combobox's guarded commit: never mutate the value while disabled or read-only\n // (the input is the form value here, so Clear / item-press / typing must all be inert).\n if (this.disabledState() || this.readOnly()) {\n return;\n }\n this.value.set(value);\n this.onValueChange.emit({ value, reason });\n this.onChange?.(value);\n }\n\n private createOpenChangeEvent(\n open: boolean,\n reason: RdxComboboxOpenChangeReason,\n event: Event\n ): RdxAutocompleteOpenChangeTransaction {\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 (the form value is the input string)\n writeValue(value: string | null): void {\n untracked(() => this.value.set(value ?? ''));\n }\n\n registerOnChange(fn: (value: string) => 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 { computed, Directive, inject } from '@angular/core';\nimport { RdxFloatingInsideElement } from '@radix-ng/primitives/dismissable-layer';\nimport { RdxAutocompleteRoot } from './autocomplete-root';\n\n/**\n * Clears the input value. Hidden when there is nothing to clear.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxAutocompleteClear]',\n exportAs: 'rdxAutocompleteClear',\n hostDirectives: [RdxFloatingInsideElement],\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Clear',\n '[hidden]': 'isEmpty()',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '(click)': 'onClick()'\n }\n})\nexport class RdxAutocompleteClear {\n protected readonly root = inject(RdxAutocompleteRoot);\n\n protected readonly isEmpty = computed(() => !this.root.value());\n\n /** Disabled when the control is disabled or read-only (clearing is a mutation). */\n protected readonly isDisabled = computed(() => this.root.disabledState() || this.root.readOnly());\n\n onClick(): void {\n this.root.clearValue();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { injectComboboxRootContext } from '@radix-ng/primitives/combobox';\n\n/**\n * A polite, atomic live region announcing the \"no results\" message. Like the combobox empty part, the\n * element stays mounted and visible at all times (never hidden/unmounted) so the transition to empty is\n * announced; only its projected content is rendered conditionally.\n *\n * @group Components\n */\n@Component({\n selector: '[rdxAutocompleteEmpty]',\n exportAs: 'rdxAutocompleteEmpty',\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 RdxAutocompleteEmpty {\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 { Directive } from '@angular/core';\nimport { RdxComboboxGroup } from '@radix-ng/primitives/combobox';\n\n/**\n * Groups related options under a shared label. Hides itself when all of its items are filtered out.\n * Reuses the combobox group (and exposes the combobox group context for the label + items).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteGroup]',\n exportAs: 'rdxAutocompleteGroup',\n hostDirectives: [RdxComboboxGroup]\n})\nexport class RdxAutocompleteGroup {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxGroupLabel } from '@radix-ng/primitives/combobox';\n\n/**\n * Accessible label for a {@link RdxAutocompleteGroup}. Wires itself up via `aria-labelledby`. Reuses\n * the combobox group label.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteGroupLabel]',\n exportAs: 'rdxAutocompleteGroupLabel',\n hostDirectives: [RdxComboboxGroupLabel]\n})\nexport class RdxAutocompleteGroupLabel {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxIcon } from '@radix-ng/primitives/combobox';\n\n/**\n * Decorative icon inside the trigger. Hidden from assistive technology. Reuses the combobox icon.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteIcon]',\n exportAs: 'rdxAutocompleteIcon',\n hostDirectives: [RdxComboboxIcon]\n})\nexport class RdxAutocompleteIcon {}\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 { RdxAutocompleteRoot } from './autocomplete-root';\n\n/**\n * Positions the autocomplete 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 autocomplete's Base UI-aligned defaults through\n * the config provider (the same building block the combobox positioner uses).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompletePositioner]',\n exportAs: 'rdxAutocompletePositioner',\n providers: [\n ...provideRdxPopperContentWrapper(RdxAutocompletePositioner),\n provideRdxPopperContentConfig({ sideOffset: 4, align: 'start' })\n ]\n})\nexport class RdxAutocompletePositioner extends RdxPopperContentWrapper {\n constructor() {\n super();\n const root = inject(RdxAutocompleteRoot);\n const injector = inject(Injector);\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n // A modal autocomplete isolates the background with an internal backdrop (Base UI); the input stays\n // clickable through a cutout. (Autocomplete is non-modal by default — usually no backdrop.)\n afterNextRender(() =>\n setupInternalBackdrop(host, injector, {\n isOpen: () => root.open(),\n shouldRender: () => root.modal(),\n cutout: () => root.inputElement() ?? null\n })\n );\n }\n}\n","import {\n afterNextRender,\n afterRenderEffect,\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 { RdxAutocompletePositioner } from './autocomplete-positioner';\nimport { RdxAutocompleteRoot } from './autocomplete-root';\n\nconst attr = (value: boolean) => (value ? '' : undefined);\n\n/**\n * The autocomplete text input. Holds DOM focus at all times; the highlighted option is referenced via\n * `aria-activedescendant`. In `both` / `inline` modes it shows the active item's inline completion\n * with the completed suffix selected. Integrates with Field for labeling and validation state.\n *\n * @group Components\n */\n@Directive({\n selector: 'input[rdxAutocompleteInput]',\n exportAs: 'rdxAutocompleteInput',\n hostDirectives: [RdxPopperAnchor, RdxFloatingInsideElement],\n host: {\n role: 'combobox',\n autocomplete: 'off',\n '[attr.aria-autocomplete]': 'ariaAutocomplete()',\n '[attr.id]': 'id()',\n '[attr.aria-haspopup]': 'root.grid() ? \"grid\" : \"listbox\"',\n '[attr.aria-expanded]': 'root.open()',\n '[attr.aria-controls]': 'root.listId',\n '[attr.aria-labelledby]': 'root.labelId()',\n '[attr.aria-activedescendant]': 'root.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]': 'root.readOnly() ? \"\" : undefined',\n '[attr.required]': 'requiredState() ? \"\" : undefined',\n '[value]': 'root.displayValue()',\n '[attr.data-popup-open]': 'dataAttr(root.open())',\n '[attr.data-list-empty]': 'dataAttr(root.visibleCount() === 0)',\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 RdxAutocompleteInput {\n protected readonly root = inject(RdxAutocompleteRoot);\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-autocomplete-input-'));\n\n /** Marks the input as invalid independently of any Field state. */\n readonly invalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n // Mirrors the configured mode (matches Base UI): 'list' | 'both' | 'inline' | 'none' — all valid\n // `aria-autocomplete` tokens. Must reflect the static mechanism, not the transient inline preview.\n protected readonly ariaAutocomplete = computed(() => this.root.mode());\n\n protected readonly invalidState = computed(() => this.invalid() || Boolean(this.fieldRootContext?.invalidState()));\n protected readonly disabledState = computed(\n () => this.root.disabledState() || Boolean(this.fieldRootContext?.disabledState())\n );\n protected readonly requiredState = computed(\n () => this.root.requiredState() || Boolean(this.fieldRootContext?.requiredState())\n );\n protected readonly filledState = computed(\n () => Boolean(this.root.value()) || Boolean(this.fieldRootContext?.filledState())\n );\n protected readonly focusedState = computed(() => Boolean(this.fieldRootContext?.focusedState()));\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.root.setInputElement(this.element);\n // Report the layout (Base UI's `inputInsidePopup`): a positioner ancestor means the input lives\n // inside the popup, so the Trigger becomes the focusable `role=\"combobox\"`; otherwise the input\n // is the tab stop and the Trigger is a `tabindex=\"-1\"` toggle.\n this.root.setInputLayout(inject(RdxAutocompletePositioner, { optional: true }) ? 'inside' : 'outside');\n\n afterNextRender(() => {\n this.fieldRootContext?.setControlId(this.id());\n });\n\n // Select the completed part of an inline preview so the next keystroke replaces it: the suffix\n // after the typed prefix when the label prefix-matches, otherwise the whole navigated label.\n afterRenderEffect(() => {\n const preview = this.root.inlinePreview();\n if (preview === null) {\n return;\n }\n const query = this.root.query();\n const start = query && preview.toLowerCase().startsWith(query.toLowerCase()) ? query.length : 0;\n this.element.setSelectionRange(start, preview.length);\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.root.inputElement() === this.element) {\n this.root.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 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 opens on input only for a non-empty trimmed value — whitespace alone won't open it.\n if (!this.root.open() && value.trim() !== '') {\n this.root.setOpen(true, 'input-change', event);\n }\n this.root.setQuery(value);\n }\n\n onClick(event: MouseEvent): void {\n if (this.root.openOnInputClick()) {\n this.root.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 if (event.isComposing || this.composing) {\n return;\n }\n // Backspace / Delete must never re-add an inline completion for the resulting edit.\n this.root.setSuppressInline(event.key === 'Backspace' || event.key === 'Delete');\n\n if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey) {\n return;\n }\n\n const open = this.root.open();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.root.setKeyboardActive(true);\n if (!open) {\n this.root.openAndHighlight('first', 'list-navigation', event);\n } else {\n this.root.moveDown();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.root.setKeyboardActive(true);\n if (!open) {\n this.root.openAndHighlight('last', 'list-navigation', event);\n } else {\n this.root.moveUp();\n }\n break;\n case 'ArrowRight':\n if (open && this.root.grid()) {\n event.preventDefault();\n this.root.setKeyboardActive(true);\n this.root.moveRight();\n }\n break;\n case 'ArrowLeft':\n if (open && this.root.grid()) {\n event.preventDefault();\n this.root.setKeyboardActive(true);\n this.root.moveLeft();\n }\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.root.grid()) {\n event.preventDefault();\n this.root.setKeyboardActive(true);\n this.root.highlightFirst();\n }\n break;\n case 'End':\n if (open && this.root.grid()) {\n event.preventDefault();\n this.root.setKeyboardActive(true);\n this.root.highlightLast();\n }\n break;\n case 'Enter':\n if (open) {\n const hasHighlight = this.root.virtualized()\n ? this.root.highlightedIndex() >= 0\n : this.root.highlightedItem() !== null;\n if (hasHighlight) {\n event.preventDefault();\n this.root.selectHighlighted(event);\n } else if (!this.root.inlineMode()) {\n // Non-inline: close and let native form submission proceed. Inline modes keep the\n // popup open on Enter without a highlight (matches Base UI).\n this.root.closePopup(true, 'none', event);\n }\n }\n break;\n case 'Escape':\n if (open) {\n event.preventDefault();\n this.root.closePopup(true, 'escape-key', event);\n } else if (!this.root.popupMounted()) {\n // Base UI: Escape on a closed autocomplete clears the input value (a no-op while\n // read-only / disabled). Guard on `popupMounted` so the same Escape that just closed\n // an open popup (the `open` branch above) doesn't also clear.\n this.root.clearValue();\n }\n break;\n case 'Tab':\n // Tab dismisses a real popup and lets focus move on. With no popup (the always-open,\n // inline \"command palette\" layout), Tab must NOT close — it just moves focus within the\n // surrounding dialog. Guard on `popupMounted` so closing doesn't tear down that dialog.\n if (open && this.root.popupMounted()) {\n this.root.closePopup(true, 'none', event);\n }\n break;\n }\n }\n\n protected readonly dataAttr = attr;\n}\n","import { Directive, inject } from '@angular/core';\nimport { RdxAutocompleteRoot } from './autocomplete-root';\n\nconst attr = (value: boolean) => (value ? '' : undefined);\n\n/**\n * Optional wrapper around the input and its adornments (icon, clear, trigger). Mirrors the input's\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: '[rdxAutocompleteInputGroup]',\n exportAs: 'rdxAutocompleteInputGroup',\n host: {\n '[attr.data-popup-open]': 'dataAttr(root.open())',\n '[attr.data-disabled]': 'dataAttr(root.disabledState())',\n '[attr.data-required]': 'dataAttr(root.requiredState())',\n '[attr.data-filled]': 'dataAttr(!!root.value())'\n }\n})\nexport class RdxAutocompleteInputGroup {\n protected readonly root = inject(RdxAutocompleteRoot);\n protected readonly dataAttr = attr;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A row in a grid-layout autocomplete list. Groups the items in one row so the root can navigate by\n * row (ArrowUp / ArrowDown) and within a row (ArrowLeft / ArrowRight). Only meaningful when the root\n * has `grid` enabled; the root resolves an item's row from its nearest `[rdxAutocompleteRow]` ancestor.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteRow]',\n exportAs: 'rdxAutocompleteRow',\n host: {\n role: 'row'\n }\n})\nexport class RdxAutocompleteRow {}\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} from '@angular/core';\nimport {\n ComboboxItemRef,\n injectComboboxGroupContext,\n injectComboboxRootContext,\n provideComboboxItemContext\n} from '@radix-ng/primitives/combobox';\nimport { AcceptableValue, injectId } from '@radix-ng/primitives/core';\nimport { RdxAutocompleteRow } from './autocomplete-row';\n\nconst itemContext = () => {\n const item = inject(RdxAutocompleteItem);\n return {\n isSelected: item.isSelected,\n isHighlighted: item.isHighlighted,\n disabled: item.disabled,\n value: item.value\n };\n};\n\n/**\n * A selectable suggestion. 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 * Selecting an item writes its text into the input. Unlike the combobox item, the `value` is optional;\n * when omitted, selection falls back to the option's text content (autocomplete's value is the input string).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteItem]',\n exportAs: 'rdxAutocompleteItem',\n providers: [provideComboboxItemContext(itemContext)],\n host: {\n '[attr.role]': 'role()',\n '[attr.id]': 'elementId()',\n // Autocomplete is always `selectionMode=\"none\"`, so options carry no selection state: Base UI\n // omits `aria-selected` / `data-selected` here entirely (rather than rendering `false`).\n '[attr.aria-disabled]': 'disabled() ? \"true\" : undefined',\n '[attr.aria-setsize]': 'ariaSetSize()',\n '[attr.aria-posinset]': 'ariaPosInSet()',\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()',\n '(pointermove)': 'onPointerMove()',\n '(pointerleave)': 'onPointerLeave($event)'\n }\n})\nexport class RdxAutocompleteItem implements ComboboxItemRef {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n readonly id = injectId('rdx-autocomplete-item-');\n\n /**\n * The explicit `[value]`, or `undefined` when omitted. Read the resolved {@link value} instead —\n * it falls back to the text content only when no value was bound (so explicit falsy values like\n * `0` / `''` / `null` are preserved for the filter and selection).\n */\n readonly valueInput = input<AcceptableValue | undefined>(undefined, { alias: 'value' });\n\n /** Explicit text matched against the query and written to the input. Defaults to 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 /** The option's index in the list. Required in virtualized mode. */\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 /**\n * The option's effective value: the explicit `[value]` if bound (preserving `0` / `''` / `null`),\n * otherwise the text content (autocomplete's value is the input string). Only an absent input —\n * `undefined` — falls back, so a custom filter still sees the real `itemValue` for falsy values.\n */\n readonly value = computed<AcceptableValue>(() => {\n const bound = this.valueInput();\n return bound === undefined ? this.textValue() : bound;\n });\n\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(RdxAutocompleteRow, { optional: true });\n\n /** `gridcell` only when actually inside a `RdxAutocompleteRow` of a grid list; otherwise `option`. */\n protected readonly role = computed(() => (this.rootContext.grid() && this.row ? 'gridcell' : 'option'));\n\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 if (this.virtualized()) {\n return;\n }\n if (!this.textValueInput()) {\n const clone = this.element.cloneNode(true) as HTMLElement;\n clone.querySelectorAll('[rdxAutocompleteItemIndicator]').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 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();\n }\n\n onClick(): void {\n // Primary selection trigger; also fires for programmatic `.click()`.\n this.commitSelection();\n }\n\n private commitSelection(): 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 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 { RdxComboboxItemIndicator } from '@radix-ng/primitives/combobox';\n\n/**\n * Renders only when its item is selected (e.g. a checkmark). Reuses the combobox item indicator,\n * which reads the item context provided by {@link RdxAutocompleteItem}.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteItemIndicator]',\n exportAs: 'rdxAutocompleteItemIndicator',\n hostDirectives: [RdxComboboxItemIndicator]\n})\nexport class RdxAutocompleteItemIndicator {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxLabel } from '@radix-ng/primitives/combobox';\n\n/**\n * An accessible label for the autocomplete. Registers its id so the input (and trigger) reference it\n * via `aria-labelledby`. Reuses the combobox label behavior.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteLabel]',\n exportAs: 'rdxAutocompleteLabel',\n hostDirectives: [RdxComboboxLabel]\n})\nexport class RdxAutocompleteLabel {}\n","import { Directive, inject } from '@angular/core';\nimport { RdxAutocompleteRoot } from './autocomplete-root';\n\n/**\n * The listbox (or grid) container for suggestions. Carries the id referenced by the input's\n * `aria-controls`, and switches its role to `grid` when the root has `grid` enabled.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteList]',\n exportAs: 'rdxAutocompleteList',\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]': 'root.grid() ? \"grid\" : \"listbox\"',\n '[attr.id]': 'root.listId',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxAutocompleteList {\n protected readonly root = inject(RdxAutocompleteRoot);\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.root.disabledState() || this.root.readOnly()) {\n return;\n }\n const hasHighlight = this.root.virtualized()\n ? this.root.highlightedIndex() >= 0\n : this.root.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.root.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 { RdxAutocompleteRoot } from './autocomplete-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. When\n * the input lives **inside** the popup (the \"input in popup\" / emoji-picker pattern), it moves focus\n * to the input once the popup is positioned.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompletePopup]',\n exportAs: 'rdxAutocompletePopup',\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]': 'root.inputLayout() === \"inside\" ? \"dialog\" : \"presentation\"',\n '[attr.data-state]': 'root.open() ? \"open\" : \"closed\"',\n '[attr.data-open]': 'root.open() ? \"\" : undefined',\n '[attr.data-closed]': 'root.open() ? undefined : \"\"',\n '[attr.data-starting-style]': 'root.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'root.transitionStatus() === \"ending\" ? \"\" : undefined',\n '(focusin)': 'onFocusIn($event)'\n }\n})\nexport class RdxAutocompletePopup {\n protected readonly root = inject(RdxAutocompleteRoot);\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, gated on\n // `open` (not mounted) so the lock releases at close-start. For a **touch** open the anchored\n // helper only locks when the popup is effectively viewport-width (a small dropdown stays\n // swipe-to-dismissable on mobile, §3).\n useAnchoredScrollLock(\n computed(() => this.root.open() && this.root.modal()),\n {\n touchOpen: () => this.root.openedByTouch(),\n element: () => this.element\n }\n );\n\n const unregister = this.root.registerTransitionElement(this.element);\n // Track mounted state so Escape can tell \"closing this open popup\" from \"already closed\".\n this.root.setPopupMounted(true);\n inject(DestroyRef).onDestroy(() => {\n unregister();\n this.root.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 autocomplete. The\n // input / trigger / clear are registered as \"inside\" (RdxFloatingInsideElement), so the input keeping\n // focus — or a press on those parts — never self-dismisses. Escape is owned by the input (it\n // 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.root.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 positioned. Use\n // `afterRenderEffect` (not `effect`): when `isPositioned` flips true the popup's final\n // position/visibility is applied in the *following* render, so a synchronous `effect` would\n // call `focus()` while the element is still unfocusable and silently no-op. Running after the\n // render guarantees the input is focusable.\n afterRenderEffect(() => {\n if (!this.popper.isPositioned() || !this.root.open()) {\n return;\n }\n const input = this.root.inputElement();\n if (input && input.closest('[rdxAutocompletePopup]')) {\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.root.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 parked on the popup to keep the Android\n * virtual keyboard closed.\n */\n onFocusIn(event: FocusEvent): void {\n if (this.root.openedByTouch()) {\n return;\n }\n const input = this.root.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('[rdxAutocompleteList]')) {\n input.focus();\n }\n }\n}\n","import { Directive, isDevMode } from '@angular/core';\nimport { RdxComboboxPortal } from '@radix-ng/primitives/combobox';\nimport { rdxDevError } from '@radix-ng/primitives/core';\n\n/**\n * Structural directive that teleports the autocomplete popup into a container (default\n * `document.body`) while the autocomplete is open, keeping it mounted until any CSS exit `@keyframes`\n * finishes. Composes the structural {@link RdxComboboxPortal} (which reads the open state from the\n * combobox root context provided by `RdxAutocompleteRoot`).\n *\n * Apply it with the `*` microsyntax on the positioner —\n * `<div *rdxAutocompletePortal rdxAutocompletePositioner>` — or as an explicit\n * `<ng-template rdxAutocompletePortal>`. For a custom container use the explicit form with `[container]`.\n *\n * @group Components\n */\n@Directive({\n selector: 'ng-template[rdxAutocompletePortal]',\n exportAs: 'rdxAutocompletePortal',\n hostDirectives: [{ directive: RdxComboboxPortal, inputs: ['container'] }]\n})\nexport class RdxAutocompletePortal {}\n\n/**\n * Dev-mode guard: `rdxAutocompletePortal` is now structural, so the old `<div rdxAutocompletePortal>`\n * markup would silently stop portaling — fail loudly instead.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompletePortal]:not(ng-template)'\n})\nexport class RdxAutocompletePortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n rdxDevError(\n 'autocomplete/portal-on-element',\n '`rdxAutocompletePortal` is now a structural directive. ' +\n 'Use `*rdxAutocompletePortal` on the positioner element or `<ng-template rdxAutocompletePortal>`. ' +\n 'rdxAutocompletePortalPresence has been removed.',\n 'components/autocomplete'\n );\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxSeparator } from '@radix-ng/primitives/combobox';\n\n/**\n * A visual separator between groups of suggestions (`role=\"separator\"`). Reuses the combobox separator.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteSeparator]',\n exportAs: 'rdxAutocompleteSeparator',\n hostDirectives: [RdxComboboxSeparator]\n})\nexport class RdxAutocompleteSeparator {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxStatus } from '@radix-ng/primitives/combobox';\n\n/**\n * A polite live region for async status (loading, result counts) announced without moving focus.\n * Reuses the combobox status region.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteStatus]',\n exportAs: 'rdxAutocompleteStatus',\n hostDirectives: [RdxComboboxStatus]\n})\nexport class RdxAutocompleteStatus {}\n","import { Directive } from '@angular/core';\nimport { RdxComboboxTrigger } from '@radix-ng/primitives/combobox';\n\n/**\n * Toggles the autocomplete popup. Reuses the combobox trigger: a `tabindex=\"-1\"` toggle when the input\n * sits outside the popup, or the focusable `role=\"combobox\"` control when the input is inside it.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxAutocompleteTrigger]',\n exportAs: 'rdxAutocompleteTrigger',\n hostDirectives: [RdxComboboxTrigger]\n})\nexport class RdxAutocompleteTrigger {}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { RdxAutocompleteRoot } from './autocomplete-root';\n\n/**\n * Renders the current input value as text. Useful for a read-only display of the committed value.\n * Read `slotText()` in the template. Exposes `data-placeholder` while the value is empty.\n *\n * @example\n * <span #value=\"rdxAutocompleteValue\" rdxAutocompleteValue placeholder=\"Empty\">{{ value.slotText() }}</span>\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxAutocompleteValue]',\n exportAs: 'rdxAutocompleteValue',\n host: {\n '[attr.data-placeholder]': 'isEmpty() ? \"\" : undefined'\n }\n})\nexport class RdxAutocompleteValue {\n private readonly root = inject(RdxAutocompleteRoot);\n\n /** Text shown when the value is empty. */\n readonly placeholder = input<string>();\n\n readonly isEmpty = computed(() => !this.root.value());\n\n /** The current input value, or the `placeholder` when empty. */\n readonly slotText = computed(() => this.root.value() || (this.placeholder() ?? ''));\n}\n","import { NgModule } from '@angular/core';\nimport { RdxAutocompleteAnchor } from './src/autocomplete-anchor';\nimport { RdxAutocompleteArrow } from './src/autocomplete-arrow';\nimport { RdxAutocompleteBackdrop } from './src/autocomplete-backdrop';\nimport { RdxAutocompleteClear } from './src/autocomplete-clear';\nimport { RdxAutocompleteEmpty } from './src/autocomplete-empty';\nimport { RdxAutocompleteGroup } from './src/autocomplete-group';\nimport { RdxAutocompleteGroupLabel } from './src/autocomplete-group-label';\nimport { RdxAutocompleteIcon } from './src/autocomplete-icon';\nimport { RdxAutocompleteInput } from './src/autocomplete-input';\nimport { RdxAutocompleteInputGroup } from './src/autocomplete-input-group';\nimport { RdxAutocompleteItem } from './src/autocomplete-item';\nimport { RdxAutocompleteItemIndicator } from './src/autocomplete-item-indicator';\nimport { RdxAutocompleteLabel } from './src/autocomplete-label';\nimport { RdxAutocompleteList } from './src/autocomplete-list';\nimport { RdxAutocompletePopup } from './src/autocomplete-popup';\nimport { RdxAutocompletePortal, RdxAutocompletePortalMisuseGuard } from './src/autocomplete-portal';\nimport { RdxAutocompletePositioner } from './src/autocomplete-positioner';\nimport { RdxAutocompleteRoot } from './src/autocomplete-root';\nimport { RdxAutocompleteRow } from './src/autocomplete-row';\nimport { RdxAutocompleteSeparator } from './src/autocomplete-separator';\nimport { RdxAutocompleteStatus } from './src/autocomplete-status';\nimport { RdxAutocompleteTrigger } from './src/autocomplete-trigger';\nimport { RdxAutocompleteValue } from './src/autocomplete-value';\n\nexport * from './src/autocomplete-anchor';\nexport * from './src/autocomplete-arrow';\nexport * from './src/autocomplete-backdrop';\nexport * from './src/autocomplete-clear';\nexport * from './src/autocomplete-empty';\nexport * from './src/autocomplete-group';\nexport * from './src/autocomplete-group-label';\nexport * from './src/autocomplete-icon';\nexport * from './src/autocomplete-input';\nexport * from './src/autocomplete-input-group';\nexport * from './src/autocomplete-item';\nexport * from './src/autocomplete-item-indicator';\nexport * from './src/autocomplete-label';\nexport * from './src/autocomplete-list';\nexport * from './src/autocomplete-popup';\nexport * from './src/autocomplete-portal';\nexport * from './src/autocomplete-positioner';\nexport * from './src/autocomplete-root';\nexport * from './src/autocomplete-row';\nexport * from './src/autocomplete-separator';\nexport * from './src/autocomplete-status';\nexport * from './src/autocomplete-trigger';\nexport * from './src/autocomplete-value';\n\nexport const _importsAutocomplete = [\n RdxAutocompleteRoot,\n RdxAutocompleteAnchor,\n RdxAutocompleteLabel,\n RdxAutocompleteInputGroup,\n RdxAutocompleteInput,\n RdxAutocompleteValue,\n RdxAutocompleteTrigger,\n RdxAutocompleteIcon,\n RdxAutocompleteClear,\n RdxAutocompletePortal,\n RdxAutocompletePortalMisuseGuard,\n RdxAutocompleteBackdrop,\n RdxAutocompletePositioner,\n RdxAutocompletePopup,\n RdxAutocompleteArrow,\n RdxAutocompleteList,\n RdxAutocompleteRow,\n RdxAutocompleteSeparator,\n RdxAutocompleteItem,\n RdxAutocompleteItemIndicator,\n RdxAutocompleteGroup,\n RdxAutocompleteGroupLabel,\n RdxAutocompleteEmpty,\n RdxAutocompleteStatus\n];\n\n@NgModule({\n imports: [..._importsAutocomplete],\n exports: [..._importsAutocomplete]\n})\nexport class RdxAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","itemsEqual","defaultItemToStringLabel","attr","i2"],"mappings":"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"}