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

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 (107) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +76 -6
  3. package/fesm2022/radix-ng-primitives-accordion.mjs +2 -2
  4. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +30 -24
  6. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-autocomplete.mjs +1786 -0
  8. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -0
  9. package/fesm2022/radix-ng-primitives-calendar.mjs +14 -1
  10. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  11. package/fesm2022/radix-ng-primitives-checkbox.mjs +2 -2
  12. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-collapsible.mjs +1 -1
  14. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-combobox.mjs +1983 -0
  16. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -0
  17. package/fesm2022/radix-ng-primitives-context-menu.mjs +1 -1
  18. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-core.mjs +480 -469
  20. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  21. package/fesm2022/radix-ng-primitives-cropper.mjs +1 -1
  22. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  23. package/fesm2022/radix-ng-primitives-date-field.mjs +11 -0
  24. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  25. package/fesm2022/radix-ng-primitives-dialog.mjs +44 -46
  26. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  27. package/fesm2022/radix-ng-primitives-drawer.mjs +154 -64
  28. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  29. package/fesm2022/radix-ng-primitives-editable.mjs +1 -1
  30. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  31. package/fesm2022/radix-ng-primitives-field.mjs +86 -6
  32. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  33. package/fesm2022/radix-ng-primitives-fieldset.mjs +1 -1
  34. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-focus-scope.mjs +1 -1
  36. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  37. package/fesm2022/radix-ng-primitives-form.mjs +207 -0
  38. package/fesm2022/radix-ng-primitives-form.mjs.map +1 -0
  39. package/fesm2022/radix-ng-primitives-input.mjs +85 -4
  40. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
  41. package/fesm2022/radix-ng-primitives-menu.mjs +44 -24
  42. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  43. package/fesm2022/radix-ng-primitives-menubar.mjs +1 -1
  44. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  45. package/fesm2022/radix-ng-primitives-meter.mjs +1 -1
  46. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
  47. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +39 -55
  48. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  49. package/fesm2022/radix-ng-primitives-number-field.mjs +2 -2
  50. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  51. package/fesm2022/radix-ng-primitives-popover.mjs +36 -51
  52. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  53. package/fesm2022/radix-ng-primitives-popper.mjs +12 -6
  54. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-portal.mjs +107 -17
  56. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  57. package/fesm2022/radix-ng-primitives-presence.mjs +262 -79
  58. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  59. package/fesm2022/radix-ng-primitives-preview-card.mjs +37 -51
  60. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  61. package/fesm2022/radix-ng-primitives-progress.mjs +1 -1
  62. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  63. package/fesm2022/radix-ng-primitives-roving-focus.mjs +1 -1
  64. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  65. package/fesm2022/radix-ng-primitives-scroll-area.mjs +3 -3
  66. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  67. package/fesm2022/radix-ng-primitives-select.mjs +469 -258
  68. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  69. package/fesm2022/radix-ng-primitives-slider.mjs +1 -1
  70. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  71. package/fesm2022/radix-ng-primitives-switch.mjs +3 -2
  72. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  73. package/fesm2022/radix-ng-primitives-tabs.mjs +1 -1
  74. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  75. package/fesm2022/radix-ng-primitives-time-field.mjs +27 -3
  76. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  77. package/fesm2022/radix-ng-primitives-toast.mjs +1 -1
  78. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  79. package/fesm2022/radix-ng-primitives-toggle-group.mjs +1 -1
  80. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  81. package/fesm2022/radix-ng-primitives-toolbar.mjs +2 -2
  82. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  83. package/fesm2022/radix-ng-primitives-tooltip.mjs +39 -42
  84. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  85. package/package.json +13 -1
  86. package/schematics/ng-add/index.js +57 -0
  87. package/schematics/ng-add/index.js.map +1 -1
  88. package/schematics/ng-add/schema.d.ts +1 -0
  89. package/schematics/ng-add/schema.json +6 -0
  90. package/types/radix-ng-primitives-alert-dialog.d.ts +17 -11
  91. package/types/radix-ng-primitives-autocomplete.d.ts +596 -0
  92. package/types/radix-ng-primitives-combobox.d.ts +1310 -0
  93. package/types/radix-ng-primitives-core.d.ts +148 -56
  94. package/types/radix-ng-primitives-dialog.d.ts +32 -25
  95. package/types/radix-ng-primitives-drawer.d.ts +49 -22
  96. package/types/radix-ng-primitives-field.d.ts +71 -2
  97. package/types/radix-ng-primitives-form.d.ts +124 -0
  98. package/types/radix-ng-primitives-input.d.ts +75 -5
  99. package/types/radix-ng-primitives-menu.d.ts +19 -10
  100. package/types/radix-ng-primitives-navigation-menu.d.ts +24 -26
  101. package/types/radix-ng-primitives-popover.d.ts +23 -23
  102. package/types/radix-ng-primitives-popper.d.ts +7 -1
  103. package/types/radix-ng-primitives-portal.d.ts +53 -8
  104. package/types/radix-ng-primitives-presence.d.ts +98 -17
  105. package/types/radix-ng-primitives-preview-card.d.ts +24 -23
  106. package/types/radix-ng-primitives-select.d.ts +294 -137
  107. package/types/radix-ng-primitives-tooltip.d.ts +26 -19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-combobox.mjs","sources":["../../../packages/primitives/combobox/src/combobox-anchor.ts","../../../packages/primitives/combobox/src/combobox-arrow.ts","../../../packages/primitives/combobox/src/combobox-root.ts","../../../packages/primitives/combobox/src/combobox-backdrop.ts","../../../packages/primitives/combobox/src/combobox-chips.ts","../../../packages/primitives/combobox/src/combobox-chip.ts","../../../packages/primitives/combobox/src/combobox-chip-remove.ts","../../../packages/primitives/combobox/src/combobox-clear.ts","../../../packages/primitives/combobox/src/combobox-empty.ts","../../../packages/primitives/combobox/src/combobox-group.ts","../../../packages/primitives/combobox/src/combobox-group-label.ts","../../../packages/primitives/combobox/src/combobox-icon.ts","../../../packages/primitives/combobox/src/combobox-input.ts","../../../packages/primitives/combobox/src/combobox-item.ts","../../../packages/primitives/combobox/src/combobox-item-indicator.ts","../../../packages/primitives/combobox/src/combobox-label.ts","../../../packages/primitives/combobox/src/combobox-list.ts","../../../packages/primitives/combobox/src/combobox-popup.ts","../../../packages/primitives/combobox/src/combobox-portal.ts","../../../packages/primitives/combobox/src/combobox-positioner.ts","../../../packages/primitives/combobox/src/combobox-status.ts","../../../packages/primitives/combobox/src/combobox-trigger.ts","../../../packages/primitives/combobox/src/combobox-value.ts","../../../packages/primitives/combobox/index.ts","../../../packages/primitives/combobox/radix-ng-primitives-combobox.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\n\n/**\n * Optional positioning anchor for the popup. Put it on the element the popup should align to — for\n * example a control that wraps chips + input in `multiple` mode. When present it takes precedence\n * over the input (the popper resolves the first `RdxPopperAnchor` in DOM order, and this part sits\n * above the input). When absent, the input itself is the anchor, which is ideal when the input fills\n * the control.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxAnchor]',\n exportAs: 'rdxComboboxAnchor',\n hostDirectives: [RdxPopperAnchor]\n})\nexport class RdxComboboxAnchor {}\n","import { Directive } from '@angular/core';\nimport { RdxPopperArrow } from '@radix-ng/primitives/popper';\n\n/**\n * An optional arrow that points from the popup to the anchor. Composes the popper arrow, which keeps\n * it aligned as the popup flips sides.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxArrow]',\n exportAs: 'rdxComboboxArrow',\n hostDirectives: [{ directive: RdxPopperArrow, inputs: ['width', 'height'] }]\n})\nexport class RdxComboboxArrow {}\n","import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n model,\n numberAttribute,\n output,\n signal,\n Signal,\n untracked\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n AcceptableValue,\n BooleanInput,\n createContext,\n itemToStringLabel as defaultItemToStringLabel,\n Direction,\n injectId,\n isItemEqualToValue,\n isNullish,\n ItemValueComparator,\n useFilter,\n useListHighlight,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\n\n/** The value a combobox can hold: a single value, an array (multiple mode), or nothing. */\nexport type ComboboxValue = AcceptableValue | AcceptableValue[];\n\n/**\n * A combobox item, registered with the root so it participates in filtering, navigation, and\n * selection. Implemented by `RdxComboboxItem`; the root only depends on this structural shape to\n * avoid a circular import.\n */\nexport interface ComboboxItemRef {\n /** The option's element id, exposed via `aria-activedescendant` when highlighted. */\n readonly id: string;\n /** The option's host element, used for DOM-order sorting. */\n readonly element: HTMLElement;\n /** The option's value. */\n readonly value: Signal<AcceptableValue>;\n /** The text matched against the query and written to the input on selection. */\n readonly textValue: Signal<string>;\n /** Whether the option is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\n/** A custom filter predicate: `(itemText, query) => matches`. */\nexport type ComboboxFilter = (itemText: string, query: string) => boolean;\n\n/** Why the highlight moved: keyboard navigation, pointer hover, or a programmatic change. */\nexport type ComboboxHighlightReason = 'keyboard' | 'pointer' | 'none';\n\n/** Payload of {@link RdxComboboxRoot.onItemHighlighted}. */\nexport interface ComboboxItemHighlightedDetails {\n /** The highlighted item's value, or `null` when the highlight is cleared. */\n value: AcceptableValue | null;\n /**\n * The highlighted item's index in the visible/filtered list (`-1` when cleared). In virtualized\n * mode this is the index into {@link RdxComboboxRoot.filteredItems} — pass it to the virtualizer's\n * `scrollToIndex` so the item mounts before it needs DOM focus.\n */\n index: number;\n /** What caused the highlight to move. */\n reason: ComboboxHighlightReason;\n}\n\nconst context = () => {\n const root = inject(RdxComboboxRoot);\n return {\n listId: root.listId,\n labelId: root.labelId,\n setLabelId: (id: string | undefined) => root.labelId.set(id),\n dir: root.dir,\n value: root.value,\n inputValue: root.inputValue,\n open: root.open,\n multiple: root.multiple,\n selectionMode: root.mode,\n disabledState: root.disabledState,\n readonly: root.readonly,\n requiredState: root.requiredState,\n openOnInputClick: root.openOnInputClick,\n modal: root.modal,\n virtualized: root.virtualized,\n filteredItems: root.filteredItems,\n highlightedItem: root.highlightedItem,\n highlightedIndex: root.highlightedIndex.asReadonly(),\n activeId: root.activeId,\n itemId: (index: number) => root.itemId(index),\n isKeyboardActive: () => root.isKeyboardActive(),\n setKeyboardActive: (value: boolean) => root.setKeyboardActive(value),\n transitionStatus: root.transitionStatus,\n registerTransitionElement: root.registerTransitionElement,\n visibleCount: root.visibleCount,\n isVisible: (item: ComboboxItemRef) => root.isVisible(item),\n isSelected: (value: AcceptableValue) => root.isSelected(value),\n registerItem: (item: ComboboxItemRef) => root.registerItem(item),\n unregisterItem: (item: ComboboxItemRef) => root.unregisterItem(item),\n highlight: root.highlight,\n highlightNext: () => root.highlightNext('keyboard'),\n highlightPrevious: () => root.highlightPrevious('keyboard'),\n highlightFirst: () => root.highlightFirst('keyboard'),\n highlightLast: () => root.highlightLast('keyboard'),\n highlightIndex: (index: number, reason: ComboboxHighlightReason) => root.highlightIndex(index, reason),\n setHighlight: (item: ComboboxItemRef, reason: ComboboxHighlightReason) => root.setHighlight(item, reason),\n clearHighlight: () => root.clearHighlightState(),\n highlightItemOnHover: root.highlightItemOnHover,\n keepHighlight: root.keepHighlight,\n inputElement: root.inputElement.asReadonly(),\n setInputElement: (el: HTMLInputElement | null) => root.inputElement.set(el),\n registerTrigger: (el: HTMLElement | null) => (root.triggerElement = el),\n focusInput: () => root.focusInput(),\n openPopup: () => root.setOpen(true),\n openForBrowse: () => root.openForBrowse(),\n closePopup: (revert = true) => root.closePopup(revert),\n setInputValue: (value: string) => root.setInputValue(value),\n openAndHighlight: (edge: 'first' | 'last') => root.openAndHighlight(edge),\n select: (item: ComboboxItemRef) => root.handleSelect(item),\n selectIndex: (index: number) => root.selectIndex(index),\n selectHighlighted: () => root.selectHighlighted(),\n clearSelection: () => root.clearSelection(),\n removeValue: (value: AcceptableValue) => root.removeValue(value),\n removeLastValue: () => root.removeLastValue(),\n registerChipsNav: (fn: (() => boolean) | null) => root.registerChipsNav(fn),\n focusLastChip: () => root.focusLastChip(),\n labelFor: (value: AcceptableValue) => root.labelFor(value),\n markAsTouched: () => root.markAsTouched()\n };\n};\n\nexport type RdxComboboxRootContext = ReturnType<typeof context>;\n\nexport const [injectComboboxRootContext, provideComboboxRootContext] = createContext<RdxComboboxRootContext>(\n 'RdxComboboxRootContext',\n 'components/combobox'\n);\n\n/**\n * `autoHighlight` transform: pass the `'always'` / `'input-change'` string modes through verbatim,\n * coerce everything else as a boolean attribute (so the bare `autoHighlight` attribute reads `true`).\n *\n * Kept as a named module-level function rather than an inline `transform` arrow: compodoc 1.2.1\n * (the metadata source for the API contract and Storybook ArgTypes) hangs parsing an inline arrow\n * combined with explicit generic union type arguments on `input()`. A plain function reference sidesteps it.\n */\nfunction coerceAutoHighlight(value: BooleanInput | 'always' | 'input-change'): boolean | 'always' | 'input-change' {\n return value === 'always' || value === 'input-change' ? value : booleanAttribute(value);\n}\n\n/**\n * Root of a Combobox — a filterable select. Owns selection, input text, open state, filtering, and\n * highlight-model navigation, and exposes them to the parts through {@link RdxComboboxRootContext}.\n * Implements `ControlValueAccessor` for forms.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxRoot]',\n exportAs: 'rdxComboboxRoot',\n providers: [\n provideComboboxRootContext(context),\n { provide: NG_VALUE_ACCESSOR, useExisting: RdxComboboxRoot, multi: true }\n ],\n hostDirectives: [RdxPopper],\n host: {\n '[attr.data-disabled]': 'disabledState() ? \"\" : undefined'\n }\n})\nexport class RdxComboboxRoot implements ControlValueAccessor {\n private readonly injector = inject(Injector);\n\n /** Selected value(s). A single value in single mode, an array in `multiple` mode. */\n readonly value = model<ComboboxValue | null>(null);\n\n /** Initial value when uncontrolled. */\n readonly defaultValue = input<ComboboxValue | null>();\n\n /** The text currently in the input. */\n readonly inputValue = model<string>('');\n\n /** Whether the popup is open. */\n readonly open = model<boolean>(false);\n\n /** Initial open state when uncontrolled. */\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n\n /** Whether multiple values can be selected. Shorthand for `selectionMode=\"multiple\"`. */\n readonly multipleInput = input(false, { alias: 'multiple', transform: booleanAttribute });\n\n /**\n * Selection behavior. `'single'` / `'multiple'` commit a value; `'none'` filters without\n * selecting (a pure search/command UI). Defaults from the `multiple` shorthand.\n */\n readonly selectionMode = input<'single' | 'multiple' | 'none'>();\n\n /** Resolved selection mode. */\n readonly mode = computed<'single' | 'multiple' | 'none'>(\n () => this.selectionMode() ?? (this.multipleInput() ? 'multiple' : 'single')\n );\n\n /** Whether the combobox is in multiple-selection mode. */\n readonly multiple = computed(() => this.mode() === 'multiple');\n\n /** In `'none'` mode, whether pressing an item fills the input with its label. */\n readonly fillInputOnItemPress = input(true, { transform: booleanAttribute });\n\n /** Text direction. */\n readonly dir = input<Direction>('ltr');\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether the combobox is read-only. */\n readonly readonly = input(false, { transform: booleanAttribute });\n\n /** Whether a value is required (for forms). */\n readonly required = input(false, { transform: booleanAttribute });\n\n /** Whether keyboard navigation wraps at the list boundaries. */\n readonly loopFocus = input(true, { transform: booleanAttribute });\n\n /**\n * Auto-highlight behavior:\n * - `false` (default): never auto-highlight;\n * - `true` (also the bare `autoHighlight` attribute) / `'input-change'`: highlight the first match as the query changes;\n * - `'always'`: keep the first navigable item highlighted whenever the popup is open.\n */\n readonly autoHighlight = input(false, { transform: coerceAutoHighlight });\n\n /** Resolved auto-highlight mode. */\n readonly autoHighlightMode = computed<'off' | 'input-change' | 'always'>(() => {\n const value = this.autoHighlight();\n if (value === 'always') {\n return 'always';\n }\n if (value === true || value === 'input-change') {\n return 'input-change';\n }\n return 'off';\n });\n\n /**\n * Whether moving the pointer over an item highlights it. `true` (default) paints `data-highlighted`\n * on hover; `false` suppresses hover-driven highlight entirely, letting CSS `:hover` stay distinct\n * from the `data-highlighted` (keyboard) state. Clicking an item still selects it.\n */\n readonly highlightItemOnHover = input(true, { transform: booleanAttribute });\n\n /**\n * Whether a pointer-driven highlight is kept when the cursor leaves the list. `false` (default)\n * clears the highlight on pointer-leave; `true` retains the last hovered item highlighted. Keyboard\n * navigation and auto-highlight are unaffected.\n */\n readonly keepHighlight = input(false, { transform: booleanAttribute });\n\n /** Whether clicking the input opens the popup. */\n readonly openOnInputClick = input(true, { transform: booleanAttribute });\n\n /** Whether the popup is modal: locks page scroll and makes outside content inert while open. */\n readonly modal = input(false, { transform: booleanAttribute });\n\n /** Whether selecting an item requests submit of the closest form. */\n readonly submitOnItemClick = input(false, { transform: booleanAttribute });\n\n /**\n * Filter applied to items against the input query.\n * - `undefined` (default): locale-aware \"contains\" via {@link useFilter};\n * - a function: custom matching;\n * - `null`: built-in filtering disabled (the consumer controls which items exist).\n */\n readonly filter = input<ComboboxFilter | null | undefined>(undefined);\n\n /** Maximum number of matching items to show. `-1` (default) means no limit. */\n readonly limit = input(-1, { transform: numberAttribute });\n\n /**\n * The full set of item values, used as the source of truth for filtering and navigation in\n * {@link virtualized} mode (where only a window of `RdxComboboxItem` is mounted). The filtered\n * subset is exposed as {@link filteredItems} for an external virtualizer to render.\n */\n readonly items = input<readonly AcceptableValue[]>();\n\n /**\n * Whether the list is externally virtualized — only a window of items is rendered, so navigation\n * runs over {@link items}/{@link filteredItems} by index instead of over mounted DOM elements.\n * Requires {@link items}, and {@link itemToStringLabel} for selection labels/filter text. Disabled\n * items outside the rendered window are not skipped by keyboard navigation.\n */\n readonly virtualized = input(false, { transform: booleanAttribute });\n\n /** How item values are compared for equality (function or object key). */\n readonly by = input<ItemValueComparator<AcceptableValue>>();\n\n /** Converts a value to its display label. Defaults to the matching item's text. */\n readonly itemToStringLabel = input<(value: AcceptableValue) => string>();\n\n /** Emits when the selection changes. */\n readonly onValueChange = output<ComboboxValue | null>();\n\n /** Emits when the input text changes. */\n readonly onInputValueChange = output<string>();\n\n /** Emits when the popup opens or closes. */\n readonly onOpenChange = output<boolean>();\n\n /**\n * Emits as the highlight moves, with the item's value, its index in {@link filteredItems}, and the\n * reason. In virtualized mode, use `index` to call the virtualizer's `scrollToIndex`.\n */\n readonly onItemHighlighted = output<ComboboxItemHighlightedDetails>();\n\n /** Emits after the open/close transition (including any exit animation) finishes. */\n readonly onOpenChangeComplete = output<boolean>();\n\n private readonly transition = useTransitionStatus((open) => this.onOpenChangeComplete.emit(open));\n\n /** Open/close transition phase, for `data-starting-style` / `data-ending-style`. */\n readonly transitionStatus = this.transition.status;\n\n /** Registers the popup element whose animation determines transition completion. */\n readonly registerTransitionElement = this.transition.registerElement;\n\n readonly listId = injectId('rdx-combobox-list-');\n\n readonly labelId = signal<string | undefined>(undefined);\n\n readonly inputElement = signal<HTMLInputElement | null>(null);\n\n private readonly cvaDisabled = signal(false);\n readonly disabledState = computed(() => this.disabled() || this.cvaDisabled());\n readonly requiredState = computed(() => this.required());\n\n private readonly defaultFilter = useFilter();\n\n /**\n * Whether the input text is a fresh user query rather than the current selection's label. While\n * `false` (just opened, or showing a selected label), the list is unfiltered so the user can\n * browse; it flips `true` on the first keystroke.\n */\n private readonly typed = signal(false);\n\n private readonly _items = signal<readonly ComboboxItemRef[]>([]);\n\n /** Registered items, sorted into DOM order. */\n readonly orderedItems = computed(() => {\n const items = [...this._items()];\n return items.sort((a, b) => {\n const position = a.element.compareDocumentPosition(b.element);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n return 0;\n });\n });\n\n /** Matching items in DOM order, capped at `limit`. The set of items the list shows. */\n readonly visibleItems = computed(() => {\n const matching = this.orderedItems().filter((item) => this.matchesFilter(item));\n const limit = this.limit();\n return limit >= 0 ? matching.slice(0, limit) : matching;\n });\n\n private readonly visibleSet = computed(() => new Set(this.visibleItems()));\n\n /**\n * The filtered item values an external virtualizer should render (the analogue of Base UI's\n * `useFilteredItems`). Driven by {@link items} when provided (virtualized mode), capped by\n * {@link limit}; otherwise mirrors the values of the mounted {@link visibleItems}.\n */\n readonly filteredItems = computed<readonly AcceptableValue[]>(() => {\n const data = this.items();\n if (data === undefined) {\n return this.visibleItems().map((item) => item.value());\n }\n const limit = this.limit();\n const cap = (arr: readonly AcceptableValue[]) => (limit >= 0 ? arr.slice(0, limit) : arr);\n\n const filter = this.filter();\n if (filter === null) {\n return cap(data);\n }\n const query = this.typed() ? (this.inputValue() ?? '') : '';\n if (!query) {\n return cap(data);\n }\n const matcher = filter ?? this.defaultFilter.contains;\n return cap(data.filter((value) => matcher(this.textFor(value), query)));\n });\n\n readonly visibleCount = computed(() =>\n this.virtualized() ? this.filteredItems().length : this.visibleItems().length\n );\n\n readonly highlight = useListHighlight<ComboboxItemRef>({\n items: this.orderedItems,\n isNavigable: (item) => this.isVisible(item) && !item.disabled(),\n getId: (item) => item.id,\n loop: this.loopFocus,\n injector: this.injector\n });\n\n readonly highlightedItem = this.highlight.highlightedItem;\n\n /** Highlighted index into {@link filteredItems} in virtualized mode (`-1` when cleared). */\n readonly highlightedIndex = signal(-1);\n\n /** Why the highlight last moved; read when emitting {@link onItemHighlighted}. */\n private readonly highlightReason = signal<ComboboxHighlightReason>('none');\n\n readonly activeId = computed(() => {\n if (this.virtualized()) {\n const index = this.highlightedIndex();\n return index >= 0 ? this.itemId(index) : undefined;\n }\n return this.highlight.activeId();\n });\n\n /** Edge to highlight once the list has mounted (items register asynchronously after opening). */\n private readonly pendingHighlightEdge = signal<'first' | 'last' | null>(null);\n\n private onChange?: (value: ComboboxValue | null) => void;\n private onTouched?: () => void;\n\n constructor() {\n // Apply uncontrolled defaults once.\n effect(() => {\n const initial = this.defaultValue();\n if (initial !== undefined && untracked(this.value) === null) {\n this.value.set(initial);\n }\n });\n effect(() => {\n if (untracked(this.open) === false && this.defaultOpen()) {\n this.open.set(true);\n }\n });\n\n // Emit open changes and drive the open/close transition (skip the initial run).\n let previousOpen = untracked(this.open);\n effect(() => {\n const open = this.open();\n if (open === previousOpen) {\n return;\n }\n previousOpen = open;\n untracked(() => {\n this.onOpenChange.emit(open);\n this.transition.start(open);\n });\n });\n\n // Emit highlight changes (skip the initial run). Tracks both the DOM-ref highlight and the\n // virtualized index; only one is active per mode, so the other never fires spuriously.\n let highlightInitialized = false;\n effect(() => {\n const item = this.highlightedItem();\n const index = this.highlightedIndex();\n if (!highlightInitialized) {\n highlightInitialized = true;\n return;\n }\n untracked(() => {\n const reason = this.highlightReason();\n if (this.virtualized()) {\n const value = index >= 0 ? (this.filteredItems()[index] ?? null) : null;\n this.onItemHighlighted.emit({ value, index, reason });\n } else {\n const value = item ? item.value() : null;\n const itemIndex = item ? this.visibleItems().indexOf(item) : -1;\n this.onItemHighlighted.emit({ value, index: itemIndex, reason });\n }\n });\n });\n\n // Apply a deferred open-edge highlight once items (DOM refs) or filtered data have registered.\n effect(() => {\n const edge = this.pendingHighlightEdge();\n const count = this.virtualized() ? this.filteredItems().length : this.orderedItems().length;\n if (!this.open() || edge === null || count === 0) {\n return;\n }\n untracked(() => {\n // Programmatic move — reset the reason in both modes so the emit reports 'none', not a\n // stale 'keyboard'/'pointer' left by the previous user interaction.\n this.highlightReason.set('none');\n if (this.virtualized()) {\n this.highlightedIndex.set(edge === 'first' ? 0 : count - 1);\n } else if (edge === 'first') {\n this.highlight.first();\n } else {\n this.highlight.last();\n }\n this.pendingHighlightEdge.set(null);\n });\n });\n\n // autoHighlight 'always': keep the first navigable item highlighted whenever the popup is\n // open. `visibleCount` re-runs this when filtering changes; the current highlight is read\n // untracked to re-establish a highlight only after the self-heal clears it (no loop).\n effect(() => {\n this.orderedItems();\n this.visibleCount();\n if (this.autoHighlightMode() === 'always' && this.open()) {\n untracked(() => {\n if (this.virtualized()) {\n // Re-seed when the index is cleared OR has fallen out of range, so this works\n // regardless of whether the self-heal effect ran first (no ordering dependency).\n const length = this.filteredItems().length;\n const index = this.highlightedIndex();\n if ((index < 0 || index >= length) && length > 0) {\n this.highlightReason.set('none');\n this.highlightedIndex.set(0);\n }\n } else if (this.highlightedItem() === null) {\n this.highlightReason.set('none');\n this.highlight.first();\n }\n });\n }\n });\n\n // Virtualized self-heal: clear a highlight that filtering has pushed out of range, so\n // `activeId` never references an index past the end of the filtered list.\n effect(() => {\n if (!this.virtualized()) {\n return;\n }\n const length = this.filteredItems().length;\n untracked(() => {\n const index = this.highlightedIndex();\n if (index >= length && index !== -1) {\n this.highlightReason.set('none');\n this.highlightedIndex.set(-1);\n }\n });\n });\n\n // Virtualized object values can't be labelled from the DOM (items aren't registered) — without\n // `itemToStringLabel`, selection/revert fall back to a generic label. Warn once in dev.\n if (isDevMode()) {\n let warned = false;\n effect(() => {\n if (warned || !this.virtualized() || this.itemToStringLabel()) {\n return;\n }\n if (this.items()?.some((value) => value !== null && typeof value === 'object')) {\n warned = true;\n console.warn(\n '[rdxComboboxRoot] `virtualized` with object item values needs `itemToStringLabel` ' +\n 'to render correct selection labels; falling back to a generic label.'\n );\n }\n });\n }\n }\n\n /** Opens the popup for browsing (resets the query to \"pristine\" and selects the input text). */\n openForBrowse(): void {\n if (!this.open()) {\n this.typed.set(false);\n }\n this.setOpen(true);\n this.selectInputText();\n if (this.autoHighlightMode() === 'always') {\n this.pendingHighlightEdge.set('first');\n }\n }\n\n /** Opens the popup and highlights the given edge once the list mounts. */\n openAndHighlight(edge: 'first' | 'last'): void {\n if (!this.open()) {\n this.typed.set(false);\n }\n this.setOpen(true);\n this.selectInputText();\n this.pendingHighlightEdge.set(edge);\n }\n\n /** Whether the item matches the active query (ignores the `limit` cap). */\n private matchesFilter(item: ComboboxItemRef): boolean {\n const filter = this.filter();\n if (filter === null) {\n return true;\n }\n // Until the user types a fresh query, show the whole list (the input may still hold the\n // selected item's label, which must not filter everything down to just that item).\n const query = this.typed() ? (this.inputValue() ?? '') : '';\n const matcher = filter ?? this.defaultFilter.contains;\n return matcher(item.textValue(), query);\n }\n\n /** Whether the item is shown in the list (matches the query and is within `limit`). */\n isVisible(item: ComboboxItemRef): boolean {\n return this.visibleSet().has(item);\n }\n\n // Tracks whether the last interaction was the keyboard, so the highlight doesn't jump to an item\n // the cursor happens to rest on when arrow-key navigation scrolls the list under a still pointer.\n private keyboardActive = false;\n isKeyboardActive(): boolean {\n return this.keyboardActive;\n }\n setKeyboardActive(value: boolean): void {\n this.keyboardActive = value;\n }\n\n isSelected(value: AcceptableValue): boolean {\n if (this.mode() === 'none') {\n return false;\n }\n const current = this.value();\n if (this.multiple()) {\n return Array.isArray(current) && current.some((v) => isItemEqualToValue(v, value, this.by()));\n }\n return !isNullish(current) && isItemEqualToValue(current as AcceptableValue, value, this.by());\n }\n\n registerItem(item: ComboboxItemRef): void {\n this._items.update((items) => [...items, item]);\n }\n\n unregisterItem(item: ComboboxItemRef): void {\n this._items.update((items) => items.filter((i) => i !== item));\n }\n\n setOpen(open: boolean): void {\n if (this.disabledState() || this.readonly()) {\n return;\n }\n this.open.set(open);\n }\n\n closePopup(revert = true): void {\n if (!this.open()) {\n return;\n }\n this.open.set(false);\n this.clearHighlightState();\n if (revert) {\n this.revertInputValue();\n }\n this.markAsTouched();\n }\n\n /** Updates the input text from user typing (marks the query as a fresh user query). */\n setInputValue(value: string): void {\n this.inputValue.set(value);\n this.typed.set(true);\n this.onInputValueChange.emit(value);\n // Auto-highlight the first match as the query changes (deferred so it lands after items mount).\n if (this.autoHighlightMode() !== 'off') {\n this.pendingHighlightEdge.set('first');\n }\n }\n\n /** Sets the input text programmatically (a selection label / revert) — not a user query. */\n private setLabel(value: string): void {\n this.inputValue.set(value);\n this.typed.set(false);\n this.onInputValueChange.emit(value);\n }\n\n /** Selects all input text so the next keystroke replaces a stale selection label. */\n selectInputText(): void {\n this.inputElement()?.select();\n }\n\n /** Resets the input text to the current selection's label (single mode) or empty. */\n private revertInputValue(): void {\n if (this.multiple()) {\n this.setLabel('');\n return;\n }\n const current = this.value();\n this.setLabel(isNullish(current) ? '' : this.labelFor(current as AcceptableValue));\n }\n\n labelFor(value: AcceptableValue): string {\n const custom = this.itemToStringLabel();\n if (custom) {\n return custom(value);\n }\n const item = this.orderedItems().find((i) => isItemEqualToValue(i.value(), value, this.by()));\n return item ? item.textValue() : defaultItemToStringLabel(value);\n }\n\n /** Filter/label text for a raw item value (virtualized mode, no DOM element to read from). */\n private textFor(value: AcceptableValue): string {\n const custom = this.itemToStringLabel();\n return custom ? custom(value) : defaultItemToStringLabel(value);\n }\n\n /** Deterministic id for the item at `index` in virtualized mode (matches `aria-activedescendant`). */\n itemId(index: number): string {\n return `${this.listId}-item-${index}`;\n }\n\n handleSelect(item: ComboboxItemRef): void {\n if (this.disabledState() || this.readonly() || item.disabled()) {\n return;\n }\n this.handleSelectValue(item.value(), item.textValue() || this.labelFor(item.value()));\n }\n\n /** Selects the filtered item at `index` (virtualized mode). The label comes from {@link labelFor}. */\n selectIndex(index: number): void {\n if (this.disabledState() || this.readonly()) {\n return;\n }\n const value = this.filteredItems()[index];\n if (value === undefined) {\n return;\n }\n this.handleSelectValue(value, this.labelFor(value));\n }\n\n /** Commits a selection from a resolved value/label, independent of whether a DOM item exists. */\n private handleSelectValue(value: AcceptableValue, textValue: string): void {\n if (this.mode() === 'none') {\n // No value is committed; `onValueChange` fires as a pointer/keyboard activation signal so\n // command-palette consumers can react. Optionally fill the input, then close.\n this.onValueChange.emit(value);\n if (this.fillInputOnItemPress()) {\n this.setLabel(textValue);\n }\n this.open.set(false);\n this.clearHighlightState();\n this.restoreFocusAfterSelect();\n this.maybeSubmit();\n return;\n }\n\n if (this.multiple()) {\n const current = Array.isArray(this.value()) ? [...(this.value() as AcceptableValue[])] : [];\n const index = current.findIndex((v) => isItemEqualToValue(v, value, this.by()));\n if (index === -1) {\n current.push(value);\n } else {\n current.splice(index, 1);\n }\n this.commitValue(current);\n this.setLabel('');\n this.focusInput();\n } else {\n this.commitValue(value);\n this.setLabel(textValue);\n this.open.set(false);\n this.clearHighlightState();\n this.restoreFocusAfterSelect();\n }\n\n this.maybeSubmit();\n }\n\n /** Requests submit of the closest form when `submitOnItemClick` is enabled. */\n private maybeSubmit(): void {\n if (this.submitOnItemClick()) {\n this.inputElement()?.form?.requestSubmit?.();\n }\n }\n\n selectHighlighted(): void {\n if (this.virtualized()) {\n const index = this.highlightedIndex();\n if (index >= 0) {\n this.selectIndex(index);\n }\n return;\n }\n const item = this.highlightedItem();\n if (item) {\n this.handleSelect(item);\n }\n }\n\n // --- Highlight navigation facade (mode-aware: index-based when virtualized, else DOM-ref) ---\n\n highlightNext(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.highlightReason.set(reason);\n if (this.virtualized()) {\n this.stepIndex(1);\n } else {\n this.highlight.next();\n }\n }\n\n highlightPrevious(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.highlightReason.set(reason);\n if (this.virtualized()) {\n this.stepIndex(-1);\n } else {\n this.highlight.previous();\n }\n }\n\n highlightFirst(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.highlightReason.set(reason);\n if (this.virtualized()) {\n this.highlightedIndex.set(this.filteredItems().length > 0 ? 0 : -1);\n } else {\n this.highlight.first();\n }\n }\n\n highlightLast(reason: ComboboxHighlightReason = 'keyboard'): void {\n this.highlightReason.set(reason);\n if (this.virtualized()) {\n const length = this.filteredItems().length;\n this.highlightedIndex.set(length > 0 ? length - 1 : -1);\n } else {\n this.highlight.last();\n }\n }\n\n /** Highlights a specific index in virtualized mode (e.g. pointer hover). Ignored if out of range. */\n highlightIndex(index: number, reason: ComboboxHighlightReason): void {\n if (index < 0 || index >= this.filteredItems().length) {\n return;\n }\n this.highlightReason.set(reason);\n this.highlightedIndex.set(index);\n }\n\n /** Highlights a DOM-ref item (non-virtualized pointer hover). */\n setHighlight(item: ComboboxItemRef, reason: ComboboxHighlightReason): void {\n this.highlightReason.set(reason);\n this.highlight.set(item);\n }\n\n /** Clears whichever highlight model is active. */\n clearHighlightState(): void {\n this.highlight.clear();\n this.highlightedIndex.set(-1);\n }\n\n /** Steps the virtualized highlight index by `direction`, wrapping when {@link loopFocus}. */\n private stepIndex(direction: 1 | -1): void {\n const length = this.filteredItems().length;\n if (length === 0) {\n this.highlightedIndex.set(-1);\n return;\n }\n const current = this.highlightedIndex();\n if (current < 0) {\n this.highlightedIndex.set(direction === 1 ? 0 : length - 1);\n return;\n }\n let next = current + direction;\n const loop = this.loopFocus();\n if (next < 0) {\n next = loop ? length - 1 : 0;\n } else if (next >= length) {\n next = loop ? 0 : length - 1;\n }\n this.highlightedIndex.set(next);\n }\n\n clearSelection(): void {\n this.commitValue(this.multiple() ? [] : null);\n this.setLabel('');\n this.focusInput();\n }\n\n removeValue(value: AcceptableValue): void {\n if (!this.multiple() || !Array.isArray(this.value())) {\n return;\n }\n const next = (this.value() as AcceptableValue[]).filter((v) => !isItemEqualToValue(v, value, this.by()));\n this.commitValue(next);\n }\n\n removeLastValue(): void {\n if (!this.multiple() || !Array.isArray(this.value())) {\n return;\n }\n const current = this.value() as AcceptableValue[];\n if (current.length > 0) {\n this.commitValue(current.slice(0, -1));\n }\n }\n\n /** The trigger element, used as a focus fallback when the input lives inside the popup. */\n triggerElement: HTMLElement | null = null;\n\n focusInput(): void {\n this.inputElement()?.focus();\n }\n\n /**\n * Restores focus after a selection closes the popup, so the keyboard can reopen it. When the\n * input lives inside the popup it is about to unmount, so focus goes to the trigger instead;\n * otherwise it returns to the input. Done synchronously while the input is still in the DOM.\n */\n restoreFocusAfterSelect(): void {\n const input = this.inputElement();\n if (input && !input.closest('[rdxComboboxPopup]')) {\n input.focus();\n } else {\n this.triggerElement?.focus();\n }\n }\n\n private chipsFocusLast: (() => boolean) | null = null;\n\n /** Registered by `RdxComboboxChips` so the input can hand keyboard focus to the chips. */\n registerChipsNav(fn: (() => boolean) | null): void {\n this.chipsFocusLast = fn;\n }\n\n /** Moves focus to the last chip, if any. Returns whether a chip was focused. */\n focusLastChip(): boolean {\n return this.chipsFocusLast?.() ?? false;\n }\n\n markAsTouched(): void {\n this.onTouched?.();\n }\n\n private commitValue(value: ComboboxValue | null): void {\n this.value.set(value);\n this.onValueChange.emit(value);\n this.onChange?.(value);\n }\n\n // ControlValueAccessor\n writeValue(value: ComboboxValue | null): void {\n untracked(() => this.value.set(value));\n }\n\n registerOnChange(fn: (value: ComboboxValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * An overlay rendered beneath the popup in `modal` mode. Place it inside the portal/presence; style\n * it `position: fixed; inset: 0`. Give it `pointer-events: auto` so a click on it dismisses the popup\n * (with `modal`, the rest of the page is inert). Exposes `data-open` / `data-closed` for animation.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxBackdrop]',\n exportAs: 'rdxComboboxBackdrop',\n host: {\n 'aria-hidden': 'true',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.open() ? undefined : \"\"'\n }\n})\nexport class RdxComboboxBackdrop {\n protected readonly rootContext = injectComboboxRootContext();\n}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Container for the selected-value chips in `multiple` mode. Sits before the input and coordinates\n * arrow-key navigation across the chips (the chips themselves handle the key events).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxChips]',\n exportAs: 'rdxComboboxChips',\n hostDirectives: [RdxDismissableLayerBranch],\n host: {\n role: 'list'\n }\n})\nexport class RdxComboboxChips {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly rootContext = injectComboboxRootContext();\n\n constructor() {\n this.rootContext.registerChipsNav(() => this.focusLast());\n inject(DestroyRef).onDestroy(() => this.rootContext.registerChipsNav(null));\n }\n\n /** The chip elements in DOM order. */\n getChips(): HTMLElement[] {\n return Array.from(this.host.querySelectorAll<HTMLElement>('[rdxComboboxChip]'));\n }\n\n /** Focuses the last chip. Returns whether there was one. */\n focusLast(): boolean {\n const chips = this.getChips();\n if (chips.length === 0) {\n return false;\n }\n chips[chips.length - 1].focus();\n return true;\n }\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { AcceptableValue, createContext } from '@radix-ng/primitives/core';\nimport { RdxComboboxChips } from './combobox-chips';\nimport { injectComboboxRootContext } from './combobox-root';\n\nconst chipContext = () => {\n const chip = inject(RdxComboboxChip);\n return { value: chip.value };\n};\n\nexport type RdxComboboxChipContext = ReturnType<typeof chipContext>;\n\nexport const [injectComboboxChipContext, provideComboboxChipContext] = createContext<RdxComboboxChipContext>(\n 'RdxComboboxChipContext',\n 'components/combobox'\n);\n\n/**\n * A single selected-value chip. Provide its `value` so {@link RdxComboboxChipRemove} can deselect it.\n * Chips are focusable and navigable with the arrow keys; Backspace / Delete removes the chip.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxChip]',\n exportAs: 'rdxComboboxChip',\n providers: [provideComboboxChipContext(chipContext)],\n host: {\n role: 'listitem',\n tabindex: '-1',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxComboboxChip {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly chips = inject(RdxComboboxChips, { optional: true });\n private readonly rootContext = injectComboboxRootContext();\n\n /** The value this chip represents. */\n readonly value = input.required<AcceptableValue>();\n\n onKeydown(event: KeyboardEvent): void {\n const list = this.chips?.getChips() ?? [];\n const index = list.indexOf(this.element);\n\n switch (event.key) {\n case 'ArrowLeft':\n if (index > 0) {\n event.preventDefault();\n list[index - 1].focus();\n }\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (index < list.length - 1) {\n list[index + 1].focus();\n } else {\n this.rootContext.focusInput();\n }\n break;\n case 'Home':\n if (list.length) {\n event.preventDefault();\n list[0].focus();\n }\n break;\n case 'End':\n event.preventDefault();\n this.rootContext.focusInput();\n break;\n case 'Backspace':\n case 'Delete': {\n event.preventDefault();\n // The @for tracks by value, so the previous/next chip nodes survive this removal.\n const prev = list[index - 1];\n const next = list[index + 1];\n this.rootContext.removeValue(this.value());\n if (prev) {\n prev.focus();\n } else if (next) {\n next.focus();\n } else {\n this.rootContext.focusInput();\n }\n break;\n }\n case 'Escape':\n this.rootContext.focusInput();\n break;\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxChipContext } from './combobox-chip';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Removes its chip's value from the selection, keeping focus in the input.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxComboboxChipRemove]',\n exportAs: 'rdxComboboxChipRemove',\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Remove',\n '(click)': 'onClick()'\n }\n})\nexport class RdxComboboxChipRemove {\n private readonly rootContext = injectComboboxRootContext();\n private readonly chipContext = injectComboboxChipContext();\n\n onClick(): void {\n this.rootContext.removeValue(this.chipContext.value());\n this.rootContext.focusInput();\n }\n}\n","import { computed, Directive } from '@angular/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Clears the current selection and the input text. Hidden when there is nothing to clear.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxComboboxClear]',\n exportAs: 'rdxComboboxClear',\n hostDirectives: [RdxDismissableLayerBranch],\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Clear',\n '[hidden]': 'isEmpty()',\n '[attr.disabled]': 'rootContext.disabledState() ? \"\" : undefined',\n '(click)': 'onClick()'\n }\n})\nexport class RdxComboboxClear {\n protected readonly rootContext = injectComboboxRootContext();\n\n protected readonly isEmpty = computed(() => {\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n return value === null || value === undefined;\n });\n\n onClick(): void {\n this.rootContext.clearSelection();\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Shown only when no items match the current query.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxEmpty]',\n exportAs: 'rdxComboboxEmpty',\n host: {\n role: 'presentation',\n '[hidden]': 'rootContext.visibleCount() > 0'\n }\n})\nexport class RdxComboboxEmpty {\n protected readonly rootContext = injectComboboxRootContext();\n}\n","import { computed, Directive, inject, signal } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\nimport { ComboboxItemRef, injectComboboxRootContext } from './combobox-root';\n\nconst groupContext = () => {\n const group = inject(RdxComboboxGroup);\n return {\n labelId: group.labelId,\n registerItem: (item: ComboboxItemRef) => group.registerItem(item),\n unregisterItem: (item: ComboboxItemRef) => group.unregisterItem(item)\n };\n};\n\nexport type RdxComboboxGroupContext = ReturnType<typeof groupContext>;\n\nexport const [injectComboboxGroupContext, provideComboboxGroupContext] = createContext<RdxComboboxGroupContext>(\n 'RdxComboboxGroupContext',\n 'components/combobox'\n);\n\n/**\n * Groups related options under a shared label. Hides itself when all of its items are filtered out,\n * so a group heading never lingers above an empty section.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxGroup]',\n exportAs: 'rdxComboboxGroup',\n providers: [provideComboboxGroupContext(groupContext)],\n host: {\n role: 'group',\n '[attr.aria-labelledby]': 'labelId()',\n '[hidden]': 'hasItems() && !hasVisibleItems()'\n }\n})\nexport class RdxComboboxGroup {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly labelId = signal<string | undefined>(undefined);\n\n private readonly items = signal<readonly ComboboxItemRef[]>([]);\n\n protected readonly hasItems = computed(() => this.items().length > 0);\n protected readonly hasVisibleItems = computed(() => this.items().some((item) => this.rootContext.isVisible(item)));\n\n registerItem(item: ComboboxItemRef): void {\n this.items.update((items) => [...items, item]);\n }\n\n unregisterItem(item: ComboboxItemRef): void {\n this.items.update((items) => items.filter((i) => i !== item));\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectComboboxGroupContext } from './combobox-group';\n\n/**\n * Accessible label for a {@link RdxComboboxGroup}. Wires itself up via `aria-labelledby`.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxGroupLabel]',\n exportAs: 'rdxComboboxGroupLabel',\n host: {\n '[attr.id]': 'id'\n }\n})\nexport class RdxComboboxGroupLabel {\n private readonly groupContext = injectComboboxGroupContext();\n\n readonly id = injectId('rdx-combobox-group-label-');\n\n constructor() {\n this.groupContext.labelId.set(this.id);\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Decorative icon inside the trigger. Hidden from assistive technology.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxIcon]',\n exportAs: 'rdxComboboxIcon',\n host: {\n 'aria-hidden': 'true'\n }\n})\nexport class RdxComboboxIcon {}\n","import {\n afterNextRender,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input\n} from '@angular/core';\nimport { BooleanInput, injectId } from '@radix-ng/primitives/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { injectFieldRootContext } from '@radix-ng/primitives/field';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { injectComboboxRootContext } from './combobox-root';\n\nconst attr = (value: boolean) => (value ? '' : undefined);\n\n/**\n * The combobox text input. Holds DOM focus at all times; the highlighted option is referenced via\n * `aria-activedescendant`. Integrates with Field for labeling, description, and validation state.\n *\n * @group Components\n */\n@Directive({\n selector: 'input[rdxComboboxInput]',\n exportAs: 'rdxComboboxInput',\n hostDirectives: [RdxPopperAnchor, RdxDismissableLayerBranch],\n host: {\n role: 'combobox',\n autocomplete: 'off',\n 'aria-autocomplete': 'list',\n '[attr.id]': 'id()',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.aria-controls]': 'rootContext.listId',\n '[attr.aria-labelledby]': 'rootContext.labelId()',\n '[attr.aria-activedescendant]': 'rootContext.activeId()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': 'invalidState() ? \"true\" : undefined',\n '[attr.aria-required]': 'requiredState() ? \"true\" : undefined',\n '[attr.aria-disabled]': 'disabledState() ? \"true\" : undefined',\n '[attr.disabled]': 'disabledState() ? \"\" : undefined',\n '[attr.readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.required]': 'requiredState() ? \"\" : undefined',\n '[value]': 'rootContext.inputValue()',\n '[attr.data-popup-open]': 'dataAttr(rootContext.open())',\n '[attr.data-list-empty]': 'dataAttr(rootContext.visibleCount() === 0)',\n '[attr.data-placeholder]': 'dataAttr(isEmptyValue())',\n '[attr.data-invalid]': 'dataAttr(invalidState())',\n '[attr.data-valid]': 'dataAttr(!invalidState())',\n '[attr.data-disabled]': 'dataAttr(disabledState())',\n '[attr.data-required]': 'dataAttr(requiredState())',\n '[attr.data-filled]': 'dataAttr(filledState())',\n '[attr.data-focused]': 'dataAttr(focusedState())',\n '(input)': 'onInput($event)',\n '(click)': 'onClick()',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeydown($event)',\n '(compositionstart)': 'composing = true',\n '(compositionend)': 'onCompositionEnd($event)'\n }\n})\nexport class RdxComboboxInput {\n protected readonly rootContext = injectComboboxRootContext();\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef).nativeElement;\n private readonly fieldRootContext = injectFieldRootContext(true);\n\n /** The input id; Field labels and descriptions reference it for accessible relationships. */\n readonly id = input(injectId('rdx-combobox-input-'));\n\n /** Marks the input as invalid independently of any Field state. */\n readonly invalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly invalidState = computed(() => this.invalid() || Boolean(this.fieldRootContext?.invalidState()));\n protected readonly disabledState = computed(\n () => this.rootContext.disabledState() || Boolean(this.fieldRootContext?.disabledState())\n );\n protected readonly requiredState = computed(\n () => this.rootContext.requiredState() || Boolean(this.fieldRootContext?.requiredState())\n );\n protected readonly filledState = computed(\n () => !this.isEmptyValue() || Boolean(this.fieldRootContext?.filledState())\n );\n protected readonly focusedState = computed(() => Boolean(this.fieldRootContext?.focusedState()));\n\n protected readonly isEmptyValue = computed(() => {\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n return value === null || value === undefined;\n });\n\n protected readonly describedBy = computed(() => {\n if (!this.fieldRootContext) {\n return undefined;\n }\n const ids = [\n ...this.fieldRootContext.descriptionIds(),\n ...(this.fieldRootContext.invalidState() ? this.fieldRootContext.errorIds() : [])\n ];\n return ids.length ? ids.join(' ') : undefined;\n });\n\n constructor() {\n this.rootContext.setInputElement(this.element);\n\n afterNextRender(() => {\n this.fieldRootContext?.setControlId(this.id());\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.rootContext.inputElement() === this.element) {\n this.rootContext.setInputElement(null);\n }\n });\n }\n\n /** Whether an IME composition is in progress (CJK). While composing, don't filter or select. */\n protected composing = false;\n\n onInput(event: Event): void {\n // Defer filtering until the composition ends so intermediate IME text doesn't filter/select.\n if (this.composing || (event as InputEvent).isComposing) {\n return;\n }\n this.commitInput((event.target as HTMLInputElement).value);\n }\n\n onCompositionEnd(event: CompositionEvent): void {\n this.composing = false;\n this.commitInput((event.target as HTMLInputElement).value);\n }\n\n private commitInput(value: string): void {\n if (!this.rootContext.open()) {\n this.rootContext.openPopup();\n }\n // setInputValue applies any autoHighlight (deferred until items mount).\n this.rootContext.setInputValue(value);\n }\n\n onClick(): void {\n if (this.rootContext.openOnInputClick()) {\n this.rootContext.openForBrowse();\n }\n }\n\n onFocus(): void {\n this.fieldRootContext?.setFocused(true);\n }\n\n onBlur(): void {\n this.fieldRootContext?.setFocused(false);\n this.fieldRootContext?.setTouched(true);\n }\n\n onKeydown(event: KeyboardEvent): void {\n // Don't interfere with IME composition or text-editing shortcuts / range selection. Home/End\n // and Shift+Arrows must keep moving the caret, Ctrl/Meta combos stay browser shortcuts.\n if (event.isComposing || this.composing) {\n return;\n }\n if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey) {\n return;\n }\n\n const open = this.rootContext.open();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.rootContext.setKeyboardActive(true);\n if (!open) {\n this.rootContext.openAndHighlight('first');\n } else {\n this.rootContext.highlightNext();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.rootContext.setKeyboardActive(true);\n if (!open) {\n this.rootContext.openAndHighlight('last');\n } else {\n this.rootContext.highlightPrevious();\n }\n break;\n case 'Enter':\n if (open) {\n const hasHighlight = this.rootContext.virtualized()\n ? this.rootContext.highlightedIndex() >= 0\n : this.rootContext.highlightedItem() !== null;\n if (hasHighlight) {\n // Select the highlighted item (and prevent an accidental form submit).\n event.preventDefault();\n this.rootContext.selectHighlighted();\n } else {\n // Nothing highlighted: just close, and let the form submit.\n this.rootContext.closePopup(true);\n }\n }\n break;\n case 'Escape':\n // Just close the popup (reverting the in-progress query); never clear the selection.\n if (open) {\n event.preventDefault();\n this.rootContext.closePopup(true);\n }\n break;\n case 'Tab':\n if (open) {\n this.rootContext.closePopup(true);\n }\n break;\n case 'ArrowLeft':\n // From the very start of the input in multiple mode, step into the chips.\n if (\n this.rootContext.multiple() &&\n this.element.selectionStart === 0 &&\n this.element.selectionEnd === 0 &&\n this.rootContext.focusLastChip()\n ) {\n event.preventDefault();\n }\n break;\n case 'Backspace':\n if (this.rootContext.multiple() && this.element.value === '') {\n this.rootContext.removeLastValue();\n }\n break;\n }\n }\n\n protected readonly dataAttr = attr;\n}\n","import {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { AcceptableValue, createContext, injectId } from '@radix-ng/primitives/core';\nimport { injectComboboxGroupContext } from './combobox-group';\nimport { ComboboxItemRef, injectComboboxRootContext } from './combobox-root';\n\nconst itemContext = () => {\n const item = inject(RdxComboboxItem);\n return {\n isSelected: item.isSelected,\n isHighlighted: item.isHighlighted,\n disabled: item.disabled,\n value: item.value\n };\n};\n\nexport type RdxComboboxItemContext = ReturnType<typeof itemContext>;\n\nexport const [injectComboboxItemContext, provideComboboxItemContext] = createContext<RdxComboboxItemContext>(\n 'RdxComboboxItemContext',\n 'components/combobox'\n);\n\n/**\n * A selectable option. Registers itself with the root for filtering and navigation. Highlight is\n * virtual (`data-highlighted` + `aria-activedescendant` on the input) — items never take DOM focus.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxItem]',\n exportAs: 'rdxComboboxItem',\n providers: [provideComboboxItemContext(itemContext)],\n host: {\n role: 'option',\n '[attr.id]': 'elementId()',\n '[attr.aria-selected]': 'isSelected()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : undefined',\n '[attr.aria-setsize]': 'ariaSetSize()',\n '[attr.aria-posinset]': 'ariaPosInSet()',\n '[attr.data-selected]': 'isSelected() ? \"\" : undefined',\n '[attr.data-highlighted]': 'isHighlighted() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[hidden]': '!isVisible()',\n '[attr.data-hidden]': 'isVisible() ? undefined : \"\"',\n '(pointerdown)': 'onPointerDown($event)',\n '(mousedown)': 'onPointerDown($event)',\n '(pointerup)': 'onPointerUp()',\n '(pointermove)': 'onPointerMove()',\n '(pointerleave)': 'onPointerLeave($event)'\n }\n})\nexport class RdxComboboxItem implements ComboboxItemRef {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n readonly id = injectId('rdx-combobox-item-');\n\n /** The option's value. */\n readonly value = input.required<AcceptableValue>();\n\n /** Explicit text matched against the query. Defaults to the element's text content. */\n readonly textValueInput = input<string>('', { alias: 'textValue' });\n\n /** Whether the option is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * The option's index in the list. Required in virtualized mode — it drives the deterministic id\n * (for `aria-activedescendant`), highlight matching, and selection when only a window is mounted.\n */\n readonly index = input<number>();\n\n protected readonly virtualized = this.rootContext.virtualized;\n\n private readonly autoTextValue = signal('');\n\n readonly textValue = computed(() => this.textValueInput() || this.autoTextValue());\n\n /** Host id: deterministic per-index in virtualized mode, otherwise a generated unique id. */\n protected readonly elementId = computed(() =>\n this.virtualized() ? this.rootContext.itemId(this.index() ?? -1) : this.id\n );\n\n protected readonly ariaSetSize = computed(() =>\n this.virtualized() ? this.rootContext.filteredItems().length : undefined\n );\n protected readonly ariaPosInSet = computed(() => (this.virtualized() ? (this.index() ?? -1) + 1 : undefined));\n\n // Virtualized items are always rendered (the consumer only mounts the filtered window).\n readonly isVisible = computed(() => (this.virtualized() ? true : this.rootContext.isVisible(this)));\n readonly isSelected = computed(() => this.rootContext.isSelected(this.value()));\n readonly isHighlighted = computed(() =>\n this.virtualized()\n ? this.rootContext.highlightedIndex() === this.index()\n : this.rootContext.highlightedItem() === this\n );\n\n private readonly group = injectComboboxGroupContext(true);\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n // Virtualized items are not registered: the root navigates over `items` data by index, and\n // a windowed item mounting/unmounting must not churn the DOM-ordered registry or `labelFor`.\n if (this.virtualized()) {\n return;\n }\n if (!this.textValueInput()) {\n // Derive the match/label text from the element, excluding decorative indicator text\n // (e.g. a checkmark) so it doesn't pollute filtering or the input label.\n const clone = this.element.cloneNode(true) as HTMLElement;\n clone.querySelectorAll('[rdxComboboxItemIndicator]').forEach((node) => node.remove());\n this.autoTextValue.set(clone.textContent?.trim() ?? '');\n }\n this.rootContext.registerItem(this);\n this.group?.registerItem(this);\n });\n\n destroyRef.onDestroy(() => {\n if (this.virtualized()) {\n return;\n }\n this.rootContext.unregisterItem(this);\n this.group?.unregisterItem(this);\n });\n\n // Keep the highlighted option in view while navigating a scrollable popup. `block: 'nearest'`\n // makes hover a no-op (the item is already visible) and only scrolls on keyboard navigation.\n afterRenderEffect(() => {\n if (!this.virtualized() && this.isHighlighted()) {\n this.element.scrollIntoView({ block: 'nearest' });\n }\n });\n }\n\n onPointerDown(event: MouseEvent): void {\n // Keep focus on the input; prevent the item from stealing focus on pointer/mouse down.\n event.preventDefault();\n this.rootContext.setKeyboardActive(false);\n }\n\n onPointerUp(): void {\n if (this.virtualized()) {\n this.rootContext.selectIndex(this.index() ?? -1);\n } else {\n this.rootContext.select(this);\n }\n }\n\n onPointerMove(): void {\n // Hover highlighting disabled: leave `data-highlighted` to keyboard/auto-highlight only.\n if (!this.rootContext.highlightItemOnHover()) {\n return;\n }\n // Ignore the first move after keyboard navigation: arrow keys scroll the list under a still\n // cursor, and the resulting pointer event must not yank the highlight off the keyboard target.\n if (this.rootContext.isKeyboardActive()) {\n this.rootContext.setKeyboardActive(false);\n return;\n }\n if (this.disabled()) {\n return;\n }\n if (this.virtualized()) {\n this.rootContext.highlightIndex(this.index() ?? -1, 'pointer');\n } else if (this.isVisible()) {\n this.rootContext.setHighlight(this, 'pointer');\n }\n }\n\n // Clear a pointer-driven highlight when the cursor leaves the list (unless `keepHighlight`).\n // Moving to another element inside the list keeps it (the next item's move re-highlights).\n onPointerLeave(event: PointerEvent): void {\n if (\n event.pointerType === 'touch' ||\n !this.rootContext.open() ||\n !this.rootContext.highlightItemOnHover() ||\n this.rootContext.keepHighlight()\n ) {\n return;\n }\n const related = event.relatedTarget as Node | null;\n const list = related && document.getElementById(this.rootContext.listId);\n if (list && list.contains(related)) {\n return;\n }\n this.rootContext.clearHighlight();\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxItemContext } from './combobox-item';\n\n/**\n * Renders only when its item is selected (e.g. a checkmark).\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxItemIndicator]',\n exportAs: 'rdxComboboxItemIndicator',\n host: {\n 'aria-hidden': 'true',\n '[hidden]': '!itemContext.isSelected()'\n }\n})\nexport class RdxComboboxItemIndicator {\n protected readonly itemContext = injectComboboxItemContext();\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * An accessible label for the combobox. Registers its id so the input (and trigger) reference it via\n * `aria-labelledby`.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxLabel]',\n exportAs: 'rdxComboboxLabel',\n host: {\n '[attr.id]': 'id'\n }\n})\nexport class RdxComboboxLabel {\n private readonly rootContext = injectComboboxRootContext();\n\n readonly id = injectId('rdx-combobox-label-');\n\n constructor() {\n this.rootContext.setLabelId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setLabelId(undefined));\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * The listbox container for options. Carries the id referenced by the input's `aria-controls`.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxList]',\n exportAs: 'rdxComboboxList',\n host: {\n role: 'listbox',\n '[attr.id]': 'rootContext.listId',\n '[attr.aria-multiselectable]': 'rootContext.multiple() ? \"true\" : undefined'\n }\n})\nexport class RdxComboboxList {\n protected readonly rootContext = injectComboboxRootContext();\n}\n","import { afterRenderEffect, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { useScrollLock } from '@radix-ng/primitives/core';\nimport { provideRdxDismissableLayerConfig, RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';\nimport { injectPopperContentWrapperContext, RdxPopperContent } from '@radix-ng/primitives/popper';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * The popup surface. Composes the popper content (for `data-side` / `data-align`) and a dismissable\n * layer for outside-dismiss. It does **not** trap focus — focus stays in the input throughout.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxPopup]',\n exportAs: 'rdxComboboxPopup',\n hostDirectives: [RdxPopperContent, RdxDismissableLayer],\n providers: [\n // In modal mode, make content outside the popup inert (Base UI's `modal`).\n provideRdxDismissableLayerConfig(() => ({ disableOutsidePointerEvents: injectComboboxRootContext().modal }))\n ],\n host: {\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.open() ? undefined : \"\"',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined'\n }\n})\nexport class RdxComboboxPopup {\n protected readonly rootContext = injectComboboxRootContext();\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly popper = injectPopperContentWrapperContext();\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n constructor() {\n // The popup mounts only while open, so locking on `modal` locks scroll for as long as a modal\n // popup is open and releases it on close.\n useScrollLock(this.rootContext.modal);\n\n // The popup's animation determines when the open/close transition (onOpenChangeComplete) is done.\n const unregister = this.rootContext.registerTransitionElement(this.element);\n inject(DestroyRef).onDestroy(unregister);\n\n // The input keeps focus while the popup is open; it is registered as a layer branch, so\n // focus/pointer interactions on it don't count as \"outside\" and won't self-dismiss. Escape\n // is handled by the input (which calls preventDefault), so the layer won't dismiss for it.\n this.dismissableLayer.dismiss.subscribe(() => this.rootContext.closePopup(true));\n\n // For the \"input inside the popup\" pattern, move focus to the input once the popup is\n // positioned. Use `afterRenderEffect` (not `effect`): when `isPositioned` flips true the\n // popup's final position/visibility is applied in the *following* render, so a synchronous\n // `effect` would call `focus()` while the element is still unfocusable and silently no-op.\n afterRenderEffect(() => {\n if (!this.popper.isPositioned() || !this.rootContext.open()) {\n return;\n }\n const input = this.rootContext.inputElement();\n if (input && input.closest('[rdxComboboxPopup]')) {\n input.focus();\n input.select();\n }\n });\n }\n}\n","import { Directive, input, isDevMode } from '@angular/core';\nimport { RdxPortalContainer, RdxPortalPresence } from '@radix-ng/primitives/portal';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Structural directive that teleports the combobox popup into a container (default `document.body`)\n * while the combobox is open, and keeps it mounted until any CSS exit `@keyframes` finishes.\n *\n * Apply it with the `*` microsyntax on the positioner —\n * `<div *rdxComboboxPortal rdxComboboxPositioner>` — or as an explicit `<ng-template rdxComboboxPortal>`.\n * For a custom container use the explicit form with `[container]`.\n *\n * @group Components\n */\n@Directive({\n selector: 'ng-template[rdxComboboxPortal]',\n exportAs: 'rdxComboboxPortal',\n hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],\n providers: [provideRdxPresenceContext(() => ({ present: injectComboboxRootContext().open }))]\n})\nexport class RdxComboboxPortal {\n /**\n * Optional container to portal the content into. Defaults to `document.body`. Declared here (and\n * forwarded to the composed {@link RdxPortalPresence}) so the autocomplete portal can re-expose it\n * through its own `hostDirectives`.\n */\n readonly container = input<RdxPortalContainer>();\n}\n\n/**\n * Dev-mode guard: `rdxComboboxPortal` used to be an attribute directive on a `<div>`. It is now\n * structural, so the old `<div rdxComboboxPortal>` markup would silently stop portaling — fail loudly\n * instead.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxPortal]:not(ng-template)'\n})\nexport class RdxComboboxPortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n throw new Error(\n '[rdxComboboxPortal] is now a structural directive. ' +\n 'Use `*rdxComboboxPortal` on the positioner element or `<ng-template rdxComboboxPortal>`. ' +\n 'rdxComboboxPortalPresence has been removed. See https://radix-ng.com/components/combobox.md'\n );\n }\n }\n}\n","import { booleanAttribute, Directive, ElementRef, input, numberAttribute } from '@angular/core';\nimport { Align, RdxPopperContentWrapper, Side } from '@radix-ng/primitives/popper';\n\n/**\n * Positions the popup relative to the input anchor using the popper engine. Re-exposes the popper\n * positioning inputs.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxPositioner]',\n exportAs: 'rdxComboboxPositioner',\n hostDirectives: [\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n '[style]': `{\n 'boxSizing': 'border-box',\n '--radix-combobox-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-combobox-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-combobox-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-combobox-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-combobox-trigger-height': 'var(--radix-popper-anchor-height)'\n }`\n }\n})\nexport class RdxComboboxPositioner {\n readonly side = input<Side>('bottom');\n readonly sideOffset = input(4, { transform: numberAttribute });\n readonly align = input<Align>('start');\n readonly alignOffset = input(0, { transform: numberAttribute });\n readonly arrowPadding = input(0, { transform: numberAttribute });\n readonly avoidCollisions = input(true, { transform: booleanAttribute });\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(0);\n readonly sticky = input<'partial' | 'always'>('partial');\n readonly hideWhenDetached = input(false, { transform: booleanAttribute });\n readonly updatePositionStrategy = input<'optimized' | 'always'>('optimized');\n}\n","import { Directive } from '@angular/core';\n\n/**\n * A polite live region for async status (loading, result counts) announced without moving focus.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxStatus]',\n exportAs: 'rdxComboboxStatus',\n host: {\n role: 'status',\n 'aria-live': 'polite'\n }\n})\nexport class RdxComboboxStatus {}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxDismissableLayerBranch } from '@radix-ng/primitives/dismissable-layer';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Toggles the combobox popup. Carries `tabindex=\"-1\"` so it never steals focus from the input.\n *\n * @group Components\n */\n@Directive({\n selector: 'button[rdxComboboxTrigger]',\n exportAs: 'rdxComboboxTrigger',\n hostDirectives: [RdxDismissableLayerBranch],\n host: {\n type: 'button',\n tabindex: '-1',\n 'aria-label': 'Open',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.aria-controls]': 'rootContext.listId',\n '[attr.aria-labelledby]': 'rootContext.labelId()',\n '[attr.disabled]': 'rootContext.disabledState() ? \"\" : undefined',\n '[attr.data-popup-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabledState() ? \"\" : undefined',\n '(click)': 'onClick()'\n }\n})\nexport class RdxComboboxTrigger {\n protected readonly rootContext = injectComboboxRootContext();\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n constructor() {\n this.rootContext.registerTrigger(this.element);\n inject(DestroyRef).onDestroy(() => this.rootContext.registerTrigger(null));\n }\n\n onClick(): void {\n if (this.rootContext.open()) {\n this.rootContext.closePopup(true);\n } else {\n this.rootContext.focusInput();\n this.rootContext.openForBrowse();\n }\n }\n}\n","import { computed, Directive, input } from '@angular/core';\nimport { AcceptableValue, isNullish } from '@radix-ng/primitives/core';\nimport { injectComboboxRootContext } from './combobox-root';\n\n/**\n * Renders the current selection's label(s) — typically inside a {@link RdxComboboxTrigger} for a\n * select-like control. Read `slotText()` in the template, or compose your own from `selectedLabels()`.\n * Exposes `data-placeholder` while nothing is selected.\n *\n * @example\n * <span #value=\"rdxComboboxValue\" rdxComboboxValue placeholder=\"Select…\">{{ value.slotText() }}</span>\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxComboboxValue]',\n exportAs: 'rdxComboboxValue',\n host: {\n '[attr.data-placeholder]': 'isEmpty() ? \"\" : undefined'\n }\n})\nexport class RdxComboboxValue {\n private readonly rootContext = injectComboboxRootContext();\n\n /** Text shown when there is no selection. */\n readonly placeholder = input<string>();\n\n /** The label(s) of the current selection, resolved via the root's `itemToStringLabel`/items. */\n readonly selectedLabels = computed<string[]>(() => {\n const value = this.rootContext.value();\n if (Array.isArray(value)) {\n return value.map((v) => this.rootContext.labelFor(v)).filter(Boolean);\n }\n return isNullish(value) ? [] : [this.rootContext.labelFor(value as AcceptableValue)].filter(Boolean);\n });\n\n readonly isEmpty = computed(() => this.selectedLabels().length === 0);\n\n /** The selection joined for display, or the `placeholder` when empty. */\n readonly slotText = computed(() => {\n const labels = this.selectedLabels();\n return labels.length ? labels.join(', ') : (this.placeholder() ?? '');\n });\n}\n","import { NgModule } from '@angular/core';\nimport { RdxComboboxAnchor } from './src/combobox-anchor';\nimport { RdxComboboxArrow } from './src/combobox-arrow';\nimport { RdxComboboxBackdrop } from './src/combobox-backdrop';\nimport { RdxComboboxChip } from './src/combobox-chip';\nimport { RdxComboboxChipRemove } from './src/combobox-chip-remove';\nimport { RdxComboboxChips } from './src/combobox-chips';\nimport { RdxComboboxClear } from './src/combobox-clear';\nimport { RdxComboboxEmpty } from './src/combobox-empty';\nimport { RdxComboboxGroup } from './src/combobox-group';\nimport { RdxComboboxGroupLabel } from './src/combobox-group-label';\nimport { RdxComboboxIcon } from './src/combobox-icon';\nimport { RdxComboboxInput } from './src/combobox-input';\nimport { RdxComboboxItem } from './src/combobox-item';\nimport { RdxComboboxItemIndicator } from './src/combobox-item-indicator';\nimport { RdxComboboxLabel } from './src/combobox-label';\nimport { RdxComboboxList } from './src/combobox-list';\nimport { RdxComboboxPopup } from './src/combobox-popup';\nimport { RdxComboboxPortal, RdxComboboxPortalMisuseGuard } from './src/combobox-portal';\nimport { RdxComboboxPositioner } from './src/combobox-positioner';\nimport { RdxComboboxRoot } from './src/combobox-root';\nimport { RdxComboboxStatus } from './src/combobox-status';\nimport { RdxComboboxTrigger } from './src/combobox-trigger';\nimport { RdxComboboxValue } from './src/combobox-value';\n\nexport * from './src/combobox-anchor';\nexport * from './src/combobox-arrow';\nexport * from './src/combobox-backdrop';\nexport * from './src/combobox-chip';\nexport * from './src/combobox-chip-remove';\nexport * from './src/combobox-chips';\nexport * from './src/combobox-clear';\nexport * from './src/combobox-empty';\nexport * from './src/combobox-group';\nexport * from './src/combobox-group-label';\nexport * from './src/combobox-icon';\nexport * from './src/combobox-input';\nexport * from './src/combobox-item';\nexport * from './src/combobox-item-indicator';\nexport * from './src/combobox-label';\nexport * from './src/combobox-list';\nexport * from './src/combobox-popup';\nexport * from './src/combobox-portal';\nexport * from './src/combobox-positioner';\nexport * from './src/combobox-root';\nexport * from './src/combobox-status';\nexport * from './src/combobox-trigger';\nexport * from './src/combobox-value';\n\nexport const _importsCombobox = [\n RdxComboboxRoot,\n RdxComboboxAnchor,\n RdxComboboxLabel,\n RdxComboboxInput,\n RdxComboboxValue,\n RdxComboboxTrigger,\n RdxComboboxIcon,\n RdxComboboxClear,\n RdxComboboxPortal,\n RdxComboboxPortalMisuseGuard,\n RdxComboboxBackdrop,\n RdxComboboxPositioner,\n RdxComboboxPopup,\n RdxComboboxArrow,\n RdxComboboxList,\n RdxComboboxItem,\n RdxComboboxItemIndicator,\n RdxComboboxGroup,\n RdxComboboxGroupLabel,\n RdxComboboxEmpty,\n RdxComboboxStatus,\n RdxComboboxChips,\n RdxComboboxChip,\n RdxComboboxChipRemove\n];\n\n@NgModule({\n imports: [..._importsCombobox],\n exports: [..._importsCombobox]\n})\nexport class RdxComboboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultItemToStringLabel","i1","i2"],"mappings":"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"}
@@ -5,7 +5,7 @@ import * as i1 from '@radix-ng/primitives/menu';
5
5
  import { RdxMenuRoot } from '@radix-ng/primitives/menu';
6
6
  import { RdxPopper } from '@radix-ng/primitives/popper';
7
7
 
8
- const [injectRdxContextMenuRootContext, provideRdxContextMenuRootContext] = createContext('RdxContextMenuRootContext');
8
+ const [injectRdxContextMenuRootContext, provideRdxContextMenuRootContext] = createContext('RdxContextMenuRootContext', 'components/context-menu');
9
9
  const contextFactory = () => {
10
10
  const root = inject(RdxContextMenuRoot);
11
11
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-context-menu.mjs","sources":["../../../packages/primitives/context-menu/src/context-menu-root.ts","../../../packages/primitives/context-menu/src/context-menu-trigger.ts","../../../packages/primitives/context-menu/index.ts","../../../packages/primitives/context-menu/radix-ng-primitives-context-menu.ts"],"sourcesContent":["import { Directive, inject, Signal } from '@angular/core';\nimport type { VirtualElement } from '@floating-ui/dom';\nimport { createContext } from '@radix-ng/primitives/core';\nimport { RdxMenuAutoFocusInput, RdxMenuRoot } from '@radix-ng/primitives/menu';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\n\nexport interface RdxContextMenuRootContext {\n /** Whether the context menu is currently open. */\n isOpen: Signal<boolean>;\n /** Whether the whole menu is disabled. */\n disabled: Signal<boolean>;\n /** Open the menu anchored at the given viewport coordinates. */\n openAt: (clientX: number, clientY: number, autoFocus?: RdxMenuAutoFocusInput) => void;\n /** Close the menu. */\n close: () => void;\n}\n\nexport const [injectRdxContextMenuRootContext, provideRdxContextMenuRootContext] =\n createContext<RdxContextMenuRootContext>('RdxContextMenuRootContext');\n\nconst contextFactory = (): RdxContextMenuRootContext => {\n const root = inject(RdxContextMenuRoot);\n return {\n isOpen: root.menuRoot.open,\n disabled: root.menuRoot.disabled,\n openAt: (clientX, clientY, autoFocus) => root.openAt(clientX, clientY, autoFocus),\n close: () => root.menuRoot.close()\n };\n};\n\n/**\n * Groups all parts of a context menu. Composes the Menu primitive but, instead of anchoring the\n * popup to a trigger element, anchors it to the pointer position captured by `rdxContextMenuTrigger`.\n *\n * Reuse the Menu popup parts inside it — `rdxMenuPositioner`, `rdxMenuPopup`, `rdxMenuItem`,\n * `rdxMenuCheckboxItem`, `rdxMenuRadioGroup`, `rdxMenuSubTrigger`, `rdxMenuSeparator`, … all behave\n * identically here.\n */\n@Directive({\n selector: '[rdxContextMenuRoot]',\n exportAs: 'rdxContextMenuRoot',\n hostDirectives: [\n {\n directive: RdxMenuRoot,\n inputs: ['open', 'modal', 'loopFocus', 'highlightItemOnHover'],\n outputs: ['openChange', 'onOpenChange', 'onOpenChangeComplete']\n }\n ],\n providers: [provideRdxContextMenuRootContext(contextFactory)]\n})\nexport class RdxContextMenuRoot {\n readonly menuRoot = inject(RdxMenuRoot);\n private readonly popper = inject(RdxPopper);\n\n /**\n * Open the menu with the popup anchored at the given viewport coordinates.\n *\n * `autoFocus` defaults to `'popup'` so a right-click opens with the popup focused but no item\n * highlighted (matching Base UI's pointer behavior). Pass `'first'` for keyboard opening.\n */\n openAt(clientX: number, clientY: number, autoFocus: RdxMenuAutoFocusInput = 'popup'): void {\n if (this.menuRoot.disabled()) {\n return;\n }\n\n const anchor: VirtualElement = {\n getBoundingClientRect: () =>\n ({\n width: 0,\n height: 0,\n x: clientX,\n y: clientY,\n top: clientY,\n left: clientX,\n right: clientX,\n bottom: clientY,\n toJSON: () => ({})\n }) as DOMRect\n };\n\n this.popper.anchorOverride.set(anchor);\n // Move focus into the popup so keyboard navigation and outside-dismiss work immediately.\n this.menuRoot.show(autoFocus);\n }\n}\n","import { booleanAttribute, DestroyRef, Directive, inject, input, numberAttribute } from '@angular/core';\nimport { BooleanInput, NumberInput } from '@radix-ng/primitives/core';\nimport { injectRdxContextMenuRootContext } from './context-menu-root';\n\n/**\n * An area that opens the context menu on right click (or a touch long-press).\n *\n * Apply it to the element that should respond to the context-menu gesture; the popup is positioned\n * at the pointer, not against this element.\n */\n@Directive({\n selector: '[rdxContextMenuTrigger]',\n exportAs: 'rdxContextMenuTrigger',\n host: {\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '(contextmenu)': 'onContextMenu($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerup)': 'cancelLongPress()',\n '(pointercancel)': 'cancelLongPress()',\n '(pointerleave)': 'cancelLongPress()'\n }\n})\nexport class RdxContextMenuTrigger {\n protected readonly rootContext = injectRdxContextMenuRootContext();\n\n /** Whether the trigger is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** How long (ms) a touch must be held before the menu opens. */\n readonly longPressDelay = input<number, NumberInput>(500, { transform: numberAttribute });\n\n private longPressTimer: ReturnType<typeof setTimeout> | undefined;\n private longPressOrigin: { x: number; y: number } | undefined;\n private lastPointerDownTime = 0;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this.cancelLongPress());\n }\n\n protected onContextMenu(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n\n // Suppress the native context menu and open ours at the pointer.\n event.preventDefault();\n this.cancelLongPress();\n\n // A keyboard-initiated context menu (e.g. the Menu key / Shift+F10) is not preceded by a\n // pointerdown, so it opens with the first item highlighted; a pointer opens the popup\n // without highlighting an item.\n const fromKeyboard = event.timeStamp - this.lastPointerDownTime > 300;\n this.rootContext.openAt(event.clientX, event.clientY, fromKeyboard ? 'first' : 'popup');\n }\n\n protected onPointerDown(event: PointerEvent): void {\n this.lastPointerDownTime = event.timeStamp;\n\n if (this.disabled() || event.pointerType !== 'touch') {\n return;\n }\n\n const { clientX, clientY } = event;\n this.longPressOrigin = { x: clientX, y: clientY };\n this.cancelLongPress();\n this.longPressTimer = setTimeout(() => {\n this.longPressTimer = undefined;\n this.rootContext.openAt(clientX, clientY);\n }, this.longPressDelay());\n }\n\n protected onPointerMove(event: PointerEvent): void {\n // A finger that drifts more than ~10px is a scroll/drag, not a long-press.\n if (!this.longPressOrigin) {\n return;\n }\n\n const dx = event.clientX - this.longPressOrigin.x;\n const dy = event.clientY - this.longPressOrigin.y;\n if (Math.hypot(dx, dy) > 10) {\n this.cancelLongPress();\n }\n }\n\n protected cancelLongPress(): void {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = undefined;\n this.longPressOrigin = undefined;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxContextMenuRoot } from './src/context-menu-root';\nimport { RdxContextMenuTrigger } from './src/context-menu-trigger';\n\nexport * from './src/context-menu-root';\nexport * from './src/context-menu-trigger';\n\n/**\n * Context-menu-specific parts. The popup, items, checkbox/radio, submenus, separators, etc. come\n * from `@radix-ng/primitives/menu` (`RdxMenuModule`) and behave identically inside a context menu.\n */\nconst contextMenuImports = [RdxContextMenuRoot, RdxContextMenuTrigger];\n\n@NgModule({\n imports: [...contextMenuImports],\n exports: [...contextMenuImports]\n})\nexport class RdxContextMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAiBO,MAAM,CAAC,+BAA+B,EAAE,gCAAgC,CAAC,GAC5E,aAAa,CAA4B,2BAA2B;AAExE,MAAM,cAAc,GAAG,MAAgC;AACnD,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACvC,OAAO;AACH,QAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;AAC1B,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAChC,QAAA,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QACjF,KAAK,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK;KACnC;AACL,CAAC;AAED;;;;;;;AAOG;MAaU,kBAAkB,CAAA;AAZ/B,IAAA,WAAA,GAAA;AAaa,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AACtB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAgC9C,IAAA;AA9BG;;;;;AAKG;AACH,IAAA,MAAM,CAAC,OAAe,EAAE,OAAe,EAAE,YAAmC,OAAO,EAAA;AAC/E,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;YAC1B;QACJ;AAEA,QAAA,MAAM,MAAM,GAAmB;AAC3B,YAAA,qBAAqB,EAAE,OAClB;AACG,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,CAAC,EAAE,OAAO;AACV,gBAAA,CAAC,EAAE,OAAO;AACV,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,MAAM,EAAE,OAAO,EAAE;aACpB;SACR;QAED,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;;AAEtC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC;8GAjCS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,mEAFhB,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEpD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,WAAW;4BACtB,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,CAAC;AAC9D,4BAAA,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,sBAAsB;AACjE;AACJ,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,gCAAgC,CAAC,cAAc,CAAC;AAC/D,iBAAA;;;AC7CD;;;;;AAKG;MAeU,qBAAqB,CAAA;AAa9B,IAAA,WAAA,GAAA;QAZmB,IAAA,CAAA,WAAW,GAAG,+BAA+B,EAAE;;QAGzD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG/E,IAAA,CAAA,cAAc,GAAG,KAAK,CAAsB,GAAG,sFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;QAIjF,IAAA,CAAA,mBAAmB,GAAG,CAAC;AAG3B,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC9D;AAEU,IAAA,aAAa,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB;QACJ;;QAGA,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,eAAe,EAAE;;;;QAKtB,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG;QACrE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3F;AAEU,IAAA,aAAa,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,SAAS;QAE1C,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE;YAClD;QACJ;AAEA,QAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK;AAClC,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE;QACjD,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;YAC/B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7C,QAAA,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;IAC7B;AAEU,IAAA,aAAa,CAAC,KAAmB,EAAA;;AAEvC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB;QACJ;QAEA,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,CAAC,eAAe,EAAE;QAC1B;IACJ;IAEU,eAAe,GAAA;AACrB,QAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;IACpC;8GAlES,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,8CAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACF,wBAAA,mBAAmB,EAAE,0CAA0C;AAC/D,wBAAA,sBAAsB,EAAE,6BAA6B;AACrD,wBAAA,eAAe,EAAE,uBAAuB;AACxC,wBAAA,eAAe,EAAE,uBAAuB;AACxC,wBAAA,eAAe,EAAE,uBAAuB;AACxC,wBAAA,aAAa,EAAE,mBAAmB;AAClC,wBAAA,iBAAiB,EAAE,mBAAmB;AACtC,wBAAA,gBAAgB,EAAE;AACrB;AACJ,iBAAA;;;AChBD;;;AAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;MAMzD,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YANL,kBAAkB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAAzC,kBAAkB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;+GAMxD,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC;AAChC,oBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB;AAClC,iBAAA;;;AChBD;;AAEG;;;;"}
1
+ {"version":3,"file":"radix-ng-primitives-context-menu.mjs","sources":["../../../packages/primitives/context-menu/src/context-menu-root.ts","../../../packages/primitives/context-menu/src/context-menu-trigger.ts","../../../packages/primitives/context-menu/index.ts","../../../packages/primitives/context-menu/radix-ng-primitives-context-menu.ts"],"sourcesContent":["import { Directive, inject, Signal } from '@angular/core';\nimport type { VirtualElement } from '@floating-ui/dom';\nimport { createContext } from '@radix-ng/primitives/core';\nimport { RdxMenuAutoFocusInput, RdxMenuRoot } from '@radix-ng/primitives/menu';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\n\nexport interface RdxContextMenuRootContext {\n /** Whether the context menu is currently open. */\n isOpen: Signal<boolean>;\n /** Whether the whole menu is disabled. */\n disabled: Signal<boolean>;\n /** Open the menu anchored at the given viewport coordinates. */\n openAt: (clientX: number, clientY: number, autoFocus?: RdxMenuAutoFocusInput) => void;\n /** Close the menu. */\n close: () => void;\n}\n\nexport const [injectRdxContextMenuRootContext, provideRdxContextMenuRootContext] =\n createContext<RdxContextMenuRootContext>('RdxContextMenuRootContext', 'components/context-menu');\n\nconst contextFactory = (): RdxContextMenuRootContext => {\n const root = inject(RdxContextMenuRoot);\n return {\n isOpen: root.menuRoot.open,\n disabled: root.menuRoot.disabled,\n openAt: (clientX, clientY, autoFocus) => root.openAt(clientX, clientY, autoFocus),\n close: () => root.menuRoot.close()\n };\n};\n\n/**\n * Groups all parts of a context menu. Composes the Menu primitive but, instead of anchoring the\n * popup to a trigger element, anchors it to the pointer position captured by `rdxContextMenuTrigger`.\n *\n * Reuse the Menu popup parts inside it — `rdxMenuPositioner`, `rdxMenuPopup`, `rdxMenuItem`,\n * `rdxMenuCheckboxItem`, `rdxMenuRadioGroup`, `rdxMenuSubTrigger`, `rdxMenuSeparator`, … all behave\n * identically here.\n */\n@Directive({\n selector: '[rdxContextMenuRoot]',\n exportAs: 'rdxContextMenuRoot',\n hostDirectives: [\n {\n directive: RdxMenuRoot,\n inputs: ['open', 'modal', 'loopFocus', 'highlightItemOnHover'],\n outputs: ['openChange', 'onOpenChange', 'onOpenChangeComplete']\n }\n ],\n providers: [provideRdxContextMenuRootContext(contextFactory)]\n})\nexport class RdxContextMenuRoot {\n readonly menuRoot = inject(RdxMenuRoot);\n private readonly popper = inject(RdxPopper);\n\n /**\n * Open the menu with the popup anchored at the given viewport coordinates.\n *\n * `autoFocus` defaults to `'popup'` so a right-click opens with the popup focused but no item\n * highlighted (matching Base UI's pointer behavior). Pass `'first'` for keyboard opening.\n */\n openAt(clientX: number, clientY: number, autoFocus: RdxMenuAutoFocusInput = 'popup'): void {\n if (this.menuRoot.disabled()) {\n return;\n }\n\n const anchor: VirtualElement = {\n getBoundingClientRect: () =>\n ({\n width: 0,\n height: 0,\n x: clientX,\n y: clientY,\n top: clientY,\n left: clientX,\n right: clientX,\n bottom: clientY,\n toJSON: () => ({})\n }) as DOMRect\n };\n\n this.popper.anchorOverride.set(anchor);\n // Move focus into the popup so keyboard navigation and outside-dismiss work immediately.\n this.menuRoot.show(autoFocus);\n }\n}\n","import { booleanAttribute, DestroyRef, Directive, inject, input, numberAttribute } from '@angular/core';\nimport { BooleanInput, NumberInput } from '@radix-ng/primitives/core';\nimport { injectRdxContextMenuRootContext } from './context-menu-root';\n\n/**\n * An area that opens the context menu on right click (or a touch long-press).\n *\n * Apply it to the element that should respond to the context-menu gesture; the popup is positioned\n * at the pointer, not against this element.\n */\n@Directive({\n selector: '[rdxContextMenuTrigger]',\n exportAs: 'rdxContextMenuTrigger',\n host: {\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '(contextmenu)': 'onContextMenu($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerup)': 'cancelLongPress()',\n '(pointercancel)': 'cancelLongPress()',\n '(pointerleave)': 'cancelLongPress()'\n }\n})\nexport class RdxContextMenuTrigger {\n protected readonly rootContext = injectRdxContextMenuRootContext();\n\n /** Whether the trigger is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** How long (ms) a touch must be held before the menu opens. */\n readonly longPressDelay = input<number, NumberInput>(500, { transform: numberAttribute });\n\n private longPressTimer: ReturnType<typeof setTimeout> | undefined;\n private longPressOrigin: { x: number; y: number } | undefined;\n private lastPointerDownTime = 0;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this.cancelLongPress());\n }\n\n protected onContextMenu(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n\n // Suppress the native context menu and open ours at the pointer.\n event.preventDefault();\n this.cancelLongPress();\n\n // A keyboard-initiated context menu (e.g. the Menu key / Shift+F10) is not preceded by a\n // pointerdown, so it opens with the first item highlighted; a pointer opens the popup\n // without highlighting an item.\n const fromKeyboard = event.timeStamp - this.lastPointerDownTime > 300;\n this.rootContext.openAt(event.clientX, event.clientY, fromKeyboard ? 'first' : 'popup');\n }\n\n protected onPointerDown(event: PointerEvent): void {\n this.lastPointerDownTime = event.timeStamp;\n\n if (this.disabled() || event.pointerType !== 'touch') {\n return;\n }\n\n const { clientX, clientY } = event;\n this.longPressOrigin = { x: clientX, y: clientY };\n this.cancelLongPress();\n this.longPressTimer = setTimeout(() => {\n this.longPressTimer = undefined;\n this.rootContext.openAt(clientX, clientY);\n }, this.longPressDelay());\n }\n\n protected onPointerMove(event: PointerEvent): void {\n // A finger that drifts more than ~10px is a scroll/drag, not a long-press.\n if (!this.longPressOrigin) {\n return;\n }\n\n const dx = event.clientX - this.longPressOrigin.x;\n const dy = event.clientY - this.longPressOrigin.y;\n if (Math.hypot(dx, dy) > 10) {\n this.cancelLongPress();\n }\n }\n\n protected cancelLongPress(): void {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = undefined;\n this.longPressOrigin = undefined;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxContextMenuRoot } from './src/context-menu-root';\nimport { RdxContextMenuTrigger } from './src/context-menu-trigger';\n\nexport * from './src/context-menu-root';\nexport * from './src/context-menu-trigger';\n\n/**\n * Context-menu-specific parts. The popup, items, checkbox/radio, submenus, separators, etc. come\n * from `@radix-ng/primitives/menu` (`RdxMenuModule`) and behave identically inside a context menu.\n */\nconst contextMenuImports = [RdxContextMenuRoot, RdxContextMenuTrigger];\n\n@NgModule({\n imports: [...contextMenuImports],\n exports: [...contextMenuImports]\n})\nexport class RdxContextMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}