@radix-ng/primitives 1.0.6 → 1.0.8

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 (83) hide show
  1. package/aspect-ratio/README.md +1 -1
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +6 -1
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +9 -34
  5. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-autocomplete.mjs +43 -9
  7. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-avatar.mjs +69 -18
  9. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-checkbox.mjs +93 -16
  11. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-collapsible.mjs +4 -3
  13. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-combobox.mjs +43 -9
  15. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-core.mjs +208 -2
  17. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-date-field.mjs +50 -9
  19. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-editable.mjs +31 -5
  21. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-field.mjs +276 -58
  23. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-form.mjs +111 -27
  25. package/fesm2022/radix-ng-primitives-form.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-input.mjs +16 -6
  27. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-label.mjs +5 -4
  29. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-number-field.mjs +39 -10
  31. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-progress.mjs +37 -22
  33. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-radio.mjs +18 -9
  35. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-scroll-area.mjs +4 -4
  37. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-select.mjs +26 -8
  39. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-separator.mjs +7 -13
  41. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-signal-forms.mjs +184 -0
  43. package/fesm2022/radix-ng-primitives-signal-forms.mjs.map +1 -0
  44. package/fesm2022/radix-ng-primitives-slider.mjs +25 -10
  45. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-switch.mjs +32 -8
  47. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-tabs.mjs +4 -4
  49. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-time-field.mjs +49 -9
  51. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-toggle-group.mjs +33 -16
  53. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-toggle.mjs +24 -29
  55. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-toolbar.mjs +15 -2
  57. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  58. package/package.json +11 -1
  59. package/types/radix-ng-primitives-accordion.d.ts +1 -0
  60. package/types/radix-ng-primitives-aspect-ratio.d.ts +10 -23
  61. package/types/radix-ng-primitives-autocomplete.d.ts +21 -2
  62. package/types/radix-ng-primitives-avatar.d.ts +51 -25
  63. package/types/radix-ng-primitives-checkbox.d.ts +78 -101
  64. package/types/radix-ng-primitives-combobox.d.ts +51 -2
  65. package/types/radix-ng-primitives-core.d.ts +206 -3
  66. package/types/radix-ng-primitives-date-field.d.ts +27 -2
  67. package/types/radix-ng-primitives-editable.d.ts +15 -2
  68. package/types/radix-ng-primitives-field.d.ts +165 -236
  69. package/types/radix-ng-primitives-form.d.ts +122 -37
  70. package/types/radix-ng-primitives-input.d.ts +8 -1
  71. package/types/radix-ng-primitives-label.d.ts +3 -2
  72. package/types/radix-ng-primitives-number-field.d.ts +15 -4
  73. package/types/radix-ng-primitives-progress.d.ts +59 -121
  74. package/types/radix-ng-primitives-radio.d.ts +7 -3
  75. package/types/radix-ng-primitives-select.d.ts +11 -3
  76. package/types/radix-ng-primitives-separator.d.ts +0 -7
  77. package/types/radix-ng-primitives-signal-forms.d.ts +97 -0
  78. package/types/radix-ng-primitives-slider.d.ts +9 -7
  79. package/types/radix-ng-primitives-switch.d.ts +15 -2
  80. package/types/radix-ng-primitives-time-field.d.ts +26 -2
  81. package/types/radix-ng-primitives-toggle-group.d.ts +13 -7
  82. package/types/radix-ng-primitives-toggle.d.ts +8 -8
  83. package/types/radix-ng-primitives-toolbar.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-checkbox.mjs","sources":["../../../packages/primitives/checkbox/src/checkbox-group.ts","../../../packages/primitives/checkbox/src/checkbox-root.ts","../../../packages/primitives/checkbox/src/checkbox-button.ts","../../../packages/primitives/checkbox/src/checkbox-indicator.ts","../../../packages/primitives/checkbox/src/checkbox-input.ts","../../../packages/primitives/checkbox/index.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n Signal\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n provideValueAccessor,\n RdxCancelableChangeEventDetails\n} from '@radix-ng/primitives/core';\nimport type { CheckedState } from './checkbox-root';\n\nexport type RdxCheckboxGroupValueChangeReason = 'none';\nexport type RdxCheckboxGroupValueChangeEventDetails =\n RdxCancelableChangeEventDetails<RdxCheckboxGroupValueChangeReason>;\n\nexport interface RdxCheckboxGroupValueChangeEvent {\n value: string[];\n eventDetails: RdxCheckboxGroupValueChangeEventDetails;\n}\n\nexport interface RdxCheckboxGroupContext {\n /** The names of the currently checked checkboxes. */\n value: Signal<string[]>;\n /** All checkbox names, used by a `parent` checkbox to check/uncheck every child. */\n allValues: Signal<string[]>;\n /** Whether the whole group is disabled. */\n disabled: Signal<boolean>;\n /** The derived state of a `parent` checkbox: all / none / some checked. */\n parentState: Signal<CheckedState>;\n /** The space-separated control ids the `parent` checkbox controls (for `aria-controls`). */\n controlledIds: Signal<string | undefined>;\n /** A stable id for a child's control element, derived from the group id and the child name. */\n controlId: (name: string) => string;\n /** Toggle a single child by name. */\n toggleValue: (name: string, event?: Event) => void;\n /** Toggle every child on or off (used by a `parent` checkbox). */\n toggleAll: (event?: Event) => void;\n /** Register a child's name and disabled state so the parent can preserve disabled items. */\n registerChild: (name: string, disabled: Signal<boolean>) => () => void;\n /** Register a child's control element id so the parent can reference it via `aria-controls`. */\n registerControl: (name: string, id: string) => () => void;\n}\n\nexport const [injectCheckboxGroupContext, provideCheckboxGroupContext] = createContext<RdxCheckboxGroupContext>(\n 'CheckboxGroupContext',\n 'components/checkbox'\n);\n\nconst groupContext = (): RdxCheckboxGroupContext => {\n const group = inject(RdxCheckboxGroupDirective);\n return {\n value: group.value,\n allValues: group.allValues,\n disabled: group.disabledState,\n parentState: group.parentState,\n controlledIds: group.controlledIds,\n controlId: (name) => group.controlId(name),\n toggleValue: (name, event) => group.toggleValue(name, event),\n toggleAll: (event) => group.toggleAll(event),\n registerChild: (name, disabled) => group.registerChild(name, disabled),\n registerControl: (name, id) => group.registerControl(name, id)\n };\n};\n\nlet nextCheckboxGroupId = 0;\n\n/**\n * Groups a set of checkboxes that share a single array value (the names of the checked boxes).\n *\n * Each child `rdxCheckboxRoot` participates by its `name`. A child marked `parent` becomes a\n * \"select all\" checkbox whose state is derived from `allValues`.\n */\n@Directive({\n selector: '[rdxCheckboxGroup]',\n exportAs: 'rdxCheckboxGroup',\n providers: [provideValueAccessor(RdxCheckboxGroupDirective), provideCheckboxGroupContext(groupContext)],\n host: {\n role: 'group',\n '[attr.data-disabled]': 'disabledState() ? \"\" : undefined'\n }\n})\nexport class RdxCheckboxGroupDirective implements ControlValueAccessor {\n /** The names of the currently checked checkboxes. Use with `onValueChange` or `[(value)]`. */\n readonly value = model<string[]>([]);\n\n /** The names checked initially when the group is uncontrolled. */\n readonly defaultValue = input<string[]>();\n\n /** All checkbox names in the group. Required for a `parent` (select-all) checkbox. */\n readonly allValues = input<string[]>([]);\n\n /** Whether the whole group is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Emits the new array of checked names whenever the value changes. */\n readonly onValueChange = output<RdxCheckboxGroupValueChangeEvent>();\n\n private readonly disabledByCva = signal(false);\n readonly disabledState = computed(() => this.disabledByCva() || this.disabled());\n\n /** Derived state for a `parent` checkbox: `true` (all), `false` (none) or `'indeterminate'`. */\n readonly parentState = computed<CheckedState>(() => {\n const total = this.allValues().length;\n const count = this.value().length;\n if (total > 0 && count === total) {\n return true;\n }\n return count > 0 ? 'indeterminate' : false;\n });\n\n /**\n * The value as last set directly by a child (or the initial value) — the \"remembered\" partial\n * selection that a `parent` checkbox cycles back to, mirroring Base UI's `uncontrolledStateRef`.\n */\n private uncontrolledState: string[] = [];\n private seeded = false;\n /** Where the parent is in its mixed → on → off cycle. Reset to `mixed` on any direct child change. */\n private parentStatus: 'on' | 'off' | 'mixed' = 'mixed';\n /** Per-name disabled signals, so the parent can preserve disabled-but-checked children. */\n private readonly disabledByName = new Map<string, Signal<boolean>>();\n\n /** Stable group id used to derive child control ids when the consumer sets none. */\n private readonly elementId = `rdx-checkbox-group-${nextCheckboxGroupId++}`;\n /** Registered control element ids, keyed by child name. */\n private readonly controlIds = signal<Record<string, string>>({});\n\n /** The space-separated control ids in `allValues` order, for the parent's `aria-controls`. */\n readonly controlledIds = computed<string | undefined>(() => {\n const ids = this.controlIds();\n const list = this.allValues()\n .map((name) => ids[name])\n .filter((id): id is string => id !== undefined);\n return list.length > 0 ? list.join(' ') : undefined;\n });\n\n private hasAppliedDefault = false;\n private onChange: (value: string[]) => void = () => {\n /* Empty */\n };\n onTouched: () => void = () => {\n /* Empty */\n };\n\n constructor() {\n effect(() => {\n const defaultValue = this.defaultValue();\n if (!this.hasAppliedDefault && defaultValue !== undefined) {\n this.hasAppliedDefault = true;\n this.value.set(defaultValue);\n }\n });\n }\n\n /** @ignore Register a child's disabled signal keyed by its name. */\n registerChild(name: string, disabled: Signal<boolean>): () => void {\n this.disabledByName.set(name, disabled);\n return () => {\n if (this.disabledByName.get(name) === disabled) {\n this.disabledByName.delete(name);\n }\n };\n }\n\n /** A stable control id for a child, derived from the group id and the child name. */\n controlId(name: string): string {\n return `${this.elementId}-${name}`;\n }\n\n /** @ignore Register a child's control element id so the parent can list it in `aria-controls`. */\n registerControl(name: string, id: string): () => void {\n this.controlIds.update((ids) => ({ ...ids, [name]: id }));\n return () => {\n this.controlIds.update((ids) => {\n if (ids[name] !== id) {\n return ids;\n }\n const next = { ...ids };\n delete next[name];\n return next;\n });\n };\n }\n\n /** Add/remove a single child name from the value (a direct child change). */\n toggleValue(name: string, event?: Event): void {\n if (this.disabledState()) {\n return;\n }\n\n const current = this.value();\n const next = current.includes(name) ? current.filter((v) => v !== name) : [...current, name];\n if (!this.emit(next, event)) {\n return;\n }\n\n // A direct child change becomes the new \"remembered\" selection and resets the parent cycle.\n this.seeded = true;\n this.uncontrolledState = next;\n this.parentStatus = 'mixed';\n }\n\n /**\n * Toggle from the `parent` checkbox. Mirrors Base UI's `useCheckboxGroupParent`:\n *\n * - When the remembered selection is all/none, this is a plain check-all ↔ uncheck-all toggle.\n * - When it is a partial selection, clicks cycle: partial → all → none → partial → …, so the\n * user's original partial choice is restored rather than lost.\n *\n * Disabled-but-checked children are always preserved (they cannot be toggled programmatically).\n */\n toggleAll(event?: Event): void {\n if (this.disabledState()) {\n return;\n }\n\n this.ensureSeeded();\n\n const allValues = this.allValues();\n const remembered = this.uncontrolledState;\n\n // Disabled children that were checked stay checked through every transition.\n const none = allValues.filter((name) => this.isNameDisabled(name) && remembered.includes(name));\n const all = allValues.filter((name) => !this.isNameDisabled(name) || remembered.includes(name));\n\n const rememberedIsAllOrNone = remembered.length === all.length || remembered.length === 0;\n if (rememberedIsAllOrNone) {\n this.emit(this.value().length === all.length ? none : all, event);\n return;\n }\n\n let nextStatus: 'on' | 'off' | 'mixed' = 'mixed';\n let nextValue = remembered;\n if (this.parentStatus === 'mixed') {\n nextStatus = 'on';\n nextValue = all;\n } else if (this.parentStatus === 'on') {\n nextStatus = 'off';\n nextValue = none;\n }\n\n if (!this.emit(nextValue, event)) {\n return;\n }\n this.parentStatus = nextStatus;\n }\n\n private isNameDisabled(name: string): boolean {\n return this.disabledByName.get(name)?.() ?? false;\n }\n\n /** Seed the remembered selection from the current value the first time the parent is used. */\n private ensureSeeded(): void {\n if (!this.seeded) {\n this.seeded = true;\n this.uncontrolledState = this.value();\n }\n }\n\n private emit(next: string[], event?: Event): boolean {\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails } = createCancelableChangeEventDetails(\n 'none',\n event ?? new Event('checkbox-group.value-change'),\n trigger\n );\n this.onValueChange.emit({ value: next, eventDetails });\n if (eventDetails.isCanceled()) {\n return false;\n }\n\n this.value.set(next);\n this.onChange(next);\n this.onTouched();\n return true;\n }\n\n /** @ignore */\n writeValue(value: string[] | null): void {\n this.value.set(value ?? []);\n }\n\n /** @ignore */\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean): void {\n this.disabledByCva.set(isDisabled);\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n Renderer2\n} from '@angular/core';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n RdxCancelableChangeEventDetails,\n RdxControlValueAccessor,\n RdxFormCheckboxControl\n} from '@radix-ng/primitives/core';\nimport { injectCheckboxGroupContext } from './checkbox-group';\n\n/**\n * Internal tri-state used only for the derived `parent` (select-all) state in\n * `rdxCheckboxGroup` and compatibility helpers. The public `checked` member is\n * a plain `boolean`; mixed state is exposed via the separate `indeterminate`\n * member (Base UI shape).\n */\nexport type CheckedState = boolean | 'indeterminate';\n\nexport function isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nexport function getState(checked: CheckedState) {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nexport type RdxCheckboxCheckedChangeReason = 'none';\nexport type RdxCheckboxCheckedChangeEventDetails = RdxCancelableChangeEventDetails<RdxCheckboxCheckedChangeReason>;\n\nexport interface RdxCheckboxCheckedChangeEvent {\n checked: boolean;\n eventDetails: RdxCheckboxCheckedChangeEventDetails;\n}\n\nconst rootContext = () => {\n const checkbox = inject(RdxCheckboxRootDirective);\n\n // `checked`/`disabled` come from the directive so they reflect group membership when the\n // checkbox is inside a `rdxCheckboxGroup`; otherwise they fall back to the CVA.\n return {\n checked: checkbox.checkedState,\n indeterminate: checkbox.indeterminateState,\n disabled: checkbox.disabledState,\n required: checkbox.required,\n value: checkbox.submitValue,\n name: checkbox.name,\n parent: checkbox.parent,\n form: checkbox.form,\n readonly: checkbox.readOnlyState,\n state: checkbox.state,\n uncheckedValue: checkbox.uncheckedValue,\n toggle(event?: Event) {\n checkbox.toggle(event);\n }\n };\n};\n\nexport type CheckboxRootContext = ReturnType<typeof rootContext>;\n\nexport const [injectCheckboxRootContext, provideCheckboxRootContext] = createContext<CheckboxRootContext>(\n 'CheckboxRootContext',\n 'components/checkbox'\n);\n\n/**\n * @group Components\n */\n@Directive({\n selector: '[rdxCheckboxRoot]',\n providers: [provideCheckboxRootContext(rootContext)],\n hostDirectives: [\n {\n directive: RdxControlValueAccessor,\n inputs: ['value:checked', 'disabled']\n }\n ],\n host: {\n '[attr.data-checked]': 'checkedState() && !indeterminateState() ? \"\" : undefined',\n '[attr.data-unchecked]': '!checkedState() && !indeterminateState() ? \"\" : undefined',\n '[attr.data-indeterminate]': 'indeterminateState() ? \"\" : undefined',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'readOnlyState() ? \"\" : undefined',\n '[attr.data-required]': 'required() ? \"\" : undefined'\n }\n})\nexport class RdxCheckboxRootDirective implements RdxFormCheckboxControl {\n private readonly controlValueAccessor = inject(RdxControlValueAccessor);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private uncheckedInputElement: HTMLInputElement | null = null;\n\n /** The group this checkbox belongs to, if it is rendered inside a `rdxCheckboxGroup`. */\n private readonly group = injectCheckboxGroupContext(true);\n\n /**\n * @ignore\n * Reflects the effective disabled state (CVA, covering reactive-forms `.disable()`, plus the\n * group's disabled state), used for the `data-disabled` host attribute.\n */\n protected readonly isDisabled = computed(() => this.disabledState());\n\n /**\n * The controlled checked state of the checkbox. Must be used in conjunction with onCheckedChange.\n *\n * Mixed state is no longer expressed through `checked` — use the separate\n * `indeterminate` input (Base UI shape). This `boolean` model is what\n * `RdxFormCheckboxControl` / Angular Signal Forms bind to.\n * @group Props\n */\n readonly checked = model<boolean>(false);\n\n /**\n * The state of the checkbox when it is initially rendered.\n *\n * @default false\n * @group Props\n */\n readonly defaultChecked = input<boolean | undefined, BooleanInput | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value))\n });\n\n /**\n * Whether the checkbox is in a mixed state: neither ticked nor unticked.\n * Orthogonal to `checked` and not part of the submitted form value. A user\n * click resolves the checkbox to `checked` and clears `indeterminate`.\n * @group Props\n */\n readonly indeterminate = model<boolean>(false);\n\n /**\n * The value of the checkbox. This is what is submitted with the form when the checkbox is checked.\n *\n * Bound publicly as `[value]`; the TS member is named `submitValue` so the\n * directive can satisfy `RdxFormCheckboxControl`, whose contract reserves a\n * `value` member for `RdxFormValueControl` and forbids it on checkbox-style\n * controls. (Checkbox is not yet marked `implements` — its `checked` is still\n * `CheckedState`; see the `indeterminate` half of collision #1.)\n * @group Props\n */\n readonly submitValue = input<string>('on', { alias: 'value' });\n\n /**\n * The value submitted with the form when the checkbox is unchecked.\n * By default, unchecked checkboxes do not submit any value, matching native checkbox behavior.\n *\n * @group Props\n */\n readonly uncheckedValue = input<string>();\n\n /**\n * Whether or not the checkbox button is disabled. This prevents the user from interacting with it.\n * @group Props\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the user should be unable to tick or untick the checkbox. Bound in templates as\n * `readOnly` (Base UI spelling); the TS member stays `readonly` to satisfy `RdxFormCheckboxControl`.\n * @group Props\n */\n readonly readonly = input<boolean, BooleanInput>(false, { alias: 'readOnly', transform: booleanAttribute });\n\n /**\n * Whether or not the checkbox is required.\n * @group Props\n */\n readonly required = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Name of the form control. Submitted with the form as part of a name/value pair. Inside a\n * `rdxCheckboxGroup` this also identifies the checkbox in the group's value array.\n * @group Props\n */\n readonly name = input<string>();\n\n /**\n * When inside a `rdxCheckboxGroup`, marks this as the \"select all\" checkbox: its state is\n * derived from the group's `allValues`, and toggling it checks or unchecks every child.\n * @group Props\n */\n readonly parent = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Associates the control with a form element.\n * @group Props\n */\n readonly form = input<string>();\n\n /**\n * Event emitted when the checkbox checked state changes.\n * @group Emits\n */\n readonly onCheckedChange = output<RdxCheckboxCheckedChangeEvent>();\n\n /**\n * @ignore\n * The effective checked state as a `boolean`. Inside a `rdxCheckboxGroup` it is derived from the\n * group (a `parent` checkbox is checked only when every child is; a child from whether its `name`\n * is in the group value); standalone it reads the CVA value.\n */\n readonly checkedState = computed<boolean>(() => {\n const group = this.group;\n if (group) {\n if (this.parent()) {\n return group.parentState() === true;\n }\n\n const name = this.name();\n if (name !== undefined) {\n return group.value().includes(name);\n }\n }\n\n return !!this.controlValueAccessor.value();\n });\n\n /**\n * @ignore\n * The effective mixed state. A `parent` checkbox is indeterminate when some — but not all —\n * children are checked; otherwise it follows the `indeterminate` input.\n */\n readonly indeterminateState = computed<boolean>(() => {\n const group = this.group;\n if (group && this.parent()) {\n return group.parentState() === 'indeterminate';\n }\n\n return this.indeterminate();\n });\n\n /** @ignore The effective disabled state, including the group. */\n readonly disabledState = computed(() => this.controlValueAccessor.disabled() || (this.group?.disabled() ?? false));\n readonly readOnlyState = computed(() => this.readonly());\n\n readonly state = computed(() =>\n this.indeterminateState() ? 'indeterminate' : this.checkedState() ? 'checked' : 'unchecked'\n );\n\n constructor() {\n // Inside a group, register this child's name and its own disabled state so a `parent`\n // checkbox can preserve disabled-but-checked children when selecting/deselecting all.\n effect((onCleanup) => {\n const group = this.group;\n const name = this.name();\n if (group && !this.parent() && name !== undefined) {\n onCleanup(group.registerChild(name, this.controlValueAccessor.disabled));\n }\n });\n\n let hasAppliedDefault = false;\n effect(() => {\n const defaultChecked = this.defaultChecked();\n if (!hasAppliedDefault && defaultChecked !== undefined) {\n hasAppliedDefault = true;\n this.checked.set(defaultChecked);\n this.controlValueAccessor.setValue(defaultChecked);\n }\n });\n\n effect(() => {\n this.syncUncheckedInput();\n });\n\n inject(DestroyRef).onDestroy(() => {\n this.removeUncheckedInput();\n });\n }\n\n toggle(event?: Event) {\n if (this.disabledState() || this.readOnlyState()) {\n return;\n }\n\n const group = this.group;\n if (group) {\n if (this.parent()) {\n group.toggleAll(event);\n return;\n }\n\n const name = this.name();\n if (name !== undefined) {\n group.toggleValue(name, event);\n return;\n }\n }\n\n // From the indeterminate state a click resolves to checked (matching\n // native + Base UI), otherwise it flips the boolean. A single setValue so\n // onCheckedChange fires once; the `checked`/`indeterminate` models are\n // kept in sync so `[(checked)]` / `[(indeterminate)]` reflect the change.\n const next = this.indeterminateState() ? true : !this.checkedState();\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails } = createCancelableChangeEventDetails(\n 'none',\n event ?? new Event('checkbox.checked-change'),\n trigger\n );\n this.onCheckedChange.emit({ checked: next, eventDetails });\n if (eventDetails.isCanceled()) {\n return;\n }\n\n this.indeterminate.set(false);\n this.checked.set(next);\n this.controlValueAccessor.setValue(next);\n }\n\n private syncUncheckedInput(): void {\n const name = this.name();\n const uncheckedValue = this.uncheckedValue();\n const shouldRender =\n !this.checkedState() && !this.group && !this.parent() && name !== undefined && uncheckedValue !== undefined;\n\n if (!shouldRender) {\n this.removeUncheckedInput();\n return;\n }\n\n const input = this.ensureUncheckedInput();\n this.renderer.setAttribute(input, 'type', 'hidden');\n this.renderer.setAttribute(input, 'name', name);\n this.renderer.setAttribute(input, 'value', uncheckedValue);\n this.setOptionalAttribute(input, 'form', this.form());\n this.setBooleanAttribute(input, 'disabled', this.disabledState());\n }\n\n private ensureUncheckedInput(): HTMLInputElement {\n if (this.uncheckedInputElement) {\n return this.uncheckedInputElement;\n }\n\n const host = this.elementRef.nativeElement;\n const parent = host.parentNode;\n const input = this.renderer.createElement('input') as HTMLInputElement;\n if (parent) {\n this.renderer.insertBefore(parent, input, host.nextSibling);\n }\n this.uncheckedInputElement = input;\n return input;\n }\n\n private removeUncheckedInput(): void {\n const input = this.uncheckedInputElement;\n if (!input) {\n return;\n }\n\n const parent = input.parentNode;\n if (parent) {\n this.renderer.removeChild(parent, input);\n }\n this.uncheckedInputElement = null;\n }\n\n private setOptionalAttribute(element: HTMLElement, name: string, value: string | undefined): void {\n if (value) {\n this.renderer.setAttribute(element, name, value);\n } else {\n this.renderer.removeAttribute(element, name);\n }\n }\n\n private setBooleanAttribute(element: HTMLElement, name: string, value: boolean): void {\n if (value) {\n this.renderer.setAttribute(element, name, '');\n } else {\n this.renderer.removeAttribute(element, name);\n }\n }\n}\n","import { computed, Directive, effect, ElementRef, inject } from '@angular/core';\nimport { injectCheckboxGroupContext } from './checkbox-group';\nimport { injectCheckboxRootContext } from './checkbox-root';\n\n/**\n * Directive: rdxCheckboxButton\n * Purpose: Turns a native <button> into an accessible checkbox control bound to the Radix Checkbox context.\n * It mirrors the checkbox state via ARIA/data attributes, toggles on click, and prevents Enter activation per WAI-ARIA.\n * In forms, it stops the button's click from bubbling so only the hidden input emits the native event used for form/validator integration.\n */\n@Directive({\n selector: 'button[rdxCheckboxButton]',\n host: {\n type: 'button',\n role: 'checkbox',\n '[attr.aria-checked]': 'rootContext.indeterminate() ? \"mixed\" : rootContext.checked()',\n '[attr.aria-controls]': 'ariaControls()',\n '[attr.aria-disabled]': 'rootContext.disabled() ? \"true\" : undefined',\n '[attr.aria-required]': 'rootContext.required() || undefined',\n '[attr.aria-readonly]': 'rootContext.readonly() || undefined',\n '[attr.data-checked]': 'rootContext.checked() && !rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-unchecked]': '!rootContext.checked() && !rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-indeterminate]': 'rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.data-required]': 'rootContext.required() ? \"\" : undefined',\n '(click)': 'clicked($event)',\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n '(keydown.enter)': '$event.preventDefault()'\n }\n})\nexport class RdxCheckboxButtonDirective {\n protected readonly rootContext = injectCheckboxRootContext();\n private readonly group = injectCheckboxGroupContext(true);\n\n private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n /** A `parent` checkbox lists the ids of the children it controls. */\n protected readonly ariaControls = computed(() =>\n this.group && this.rootContext.parent() ? this.group.controlledIds() : undefined\n );\n\n constructor() {\n // A child checkbox in a group exposes its control id so the parent can reference it via\n // `aria-controls`. Use the consumer's id when present, otherwise derive a stable one.\n effect((onCleanup) => {\n const group = this.group;\n const name = this.rootContext.name();\n if (!group || this.rootContext.parent() || name === undefined) {\n return;\n }\n\n const el = this.elementRef.nativeElement;\n if (!el.id) {\n el.id = group.controlId(name);\n }\n onCleanup(group.registerControl(name, el.id));\n });\n }\n\n protected clicked(event: MouseEvent) {\n if (event.defaultPrevented || this.rootContext.disabled() || this.rootContext.readonly()) {\n return;\n }\n\n this.rootContext.toggle(event);\n\n if (this.rootContext.form() || this.elementRef.nativeElement.closest('form')) {\n // if checkbox is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect checkbox updates.\n event.stopPropagation();\n }\n }\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectCheckboxRootContext } from './checkbox-root';\n\n@Directive({\n selector: '[rdxCheckboxIndicator]',\n host: {\n '[attr.data-checked]': 'rootContext.checked() && !rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-unchecked]': '!rootContext.checked() && !rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-indeterminate]': 'rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.data-required]': 'rootContext.required() ? \"\" : undefined',\n '[attr.data-starting-style]': 'isVisible() ? \"\" : undefined',\n '[attr.data-ending-style]': '!isVisible() ? \"\" : undefined',\n '[style.display]': '!keepMounted() && !isVisible() ? \"none\" : null',\n '[style.pointer-events]': '\"none\"'\n }\n})\nexport class RdxCheckboxIndicatorDirective {\n protected readonly rootContext = injectCheckboxRootContext();\n\n /** Keep the indicator in the DOM when unchecked so CSS exit animations can play. */\n readonly keepMounted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly isVisible = computed(() => this.rootContext.checked() || this.rootContext.indeterminate());\n}\n","import { Directive, effect, ElementRef, inject } from '@angular/core';\nimport { injectCheckboxRootContext } from './checkbox-root';\n\n@Directive({\n selector: 'input[rdxCheckboxInput]',\n host: {\n type: 'checkbox',\n tabindex: '-1',\n 'aria-hidden': 'true',\n '[attr.name]': 'rootContext.parent() ? undefined : rootContext.name() || undefined',\n // Only a truly checked box is submitted; `indeterminate` is a property\n // (set below), never a submitted \"checked\" value.\n '[attr.checked]': 'rootContext.state() === \"checked\" ? \"\" : undefined',\n '[checked]': 'rootContext.checked()',\n '[attr.form]': 'rootContext.form() || undefined',\n '[attr.value]': 'rootContext.value()',\n '[required]': 'rootContext.required()',\n '[disabled]': 'rootContext.disabled()',\n '[style]': `{\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n inset: 0,\n transform: 'translateX(-100%)',\n }`\n }\n})\nexport class RdxCheckboxInputDirective {\n protected readonly rootContext = injectCheckboxRootContext();\n\n private readonly input = inject<ElementRef<HTMLInputElement>>(ElementRef).nativeElement;\n\n constructor() {\n let isInitial = true;\n\n /**\n * Keeps the hidden native input in sync so form submission, native\n * validation and form events reflect the checkbox state.\n *\n * - `indeterminate` is a native property (not a submittable value), so we\n * mirror it here rather than via an attribute.\n * - On every change (but not the initial render) we emit bubbling\n * `input`/`change` events so native form listeners react. We do NOT\n * dispatch a `click`: a click on a checkbox runs the toggle activation\n * behavior and would desync the input from the bound state.\n */\n effect(() => {\n // Track both so the native input mirrors the checkbox and emits change\n // events when either the checked or indeterminate state moves.\n this.rootContext.checked();\n this.input.indeterminate = this.rootContext.indeterminate();\n\n if (isInitial) {\n isInitial = false;\n return;\n }\n\n this.input.dispatchEvent(new Event('input', { bubbles: true }));\n this.input.dispatchEvent(new Event('change', { bubbles: true }));\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxCheckboxButtonDirective } from './src/checkbox-button';\nimport { RdxCheckboxGroupDirective } from './src/checkbox-group';\nimport { RdxCheckboxIndicatorDirective } from './src/checkbox-indicator';\nimport { RdxCheckboxInputDirective } from './src/checkbox-input';\nimport { RdxCheckboxRootDirective } from './src/checkbox-root';\n\nexport * from './src/checkbox-button';\nexport * from './src/checkbox-group';\nexport * from './src/checkbox-indicator';\nexport * from './src/checkbox-input';\nexport * from './src/checkbox-root';\nexport type { CheckedState } from './src/checkbox-root';\n\nexport const checkboxImports = [\n RdxCheckboxInputDirective,\n RdxCheckboxRootDirective,\n RdxCheckboxButtonDirective,\n RdxCheckboxIndicatorDirective,\n RdxCheckboxGroupDirective\n];\n\n@NgModule({\n imports: [...checkboxImports],\n exports: [...checkboxImports]\n})\nexport class RdxCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-checkbox.mjs","sources":["../../../packages/primitives/checkbox/src/checkbox-group.ts","../../../packages/primitives/checkbox/src/checkbox-root.ts","../../../packages/primitives/checkbox/src/checkbox-button.ts","../../../packages/primitives/checkbox/src/checkbox-indicator.ts","../../../packages/primitives/checkbox/src/checkbox-input.ts","../../../packages/primitives/checkbox/index.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n Signal\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n provideFormUiState,\n provideValueAccessor,\n RdxCancelableChangeEventDetails,\n RdxFormUiControlBase,\n RdxFormUiStateHost,\n RdxFormUiTouchTarget,\n RdxFormValueControl\n} from '@radix-ng/primitives/core';\nimport type { CheckedState } from './checkbox-root';\n\nexport type RdxCheckboxGroupValueChangeReason = 'none';\nexport type RdxCheckboxGroupValueChangeEventDetails =\n RdxCancelableChangeEventDetails<RdxCheckboxGroupValueChangeReason>;\n\nexport interface RdxCheckboxGroupValueChangeEvent {\n value: string[];\n eventDetails: RdxCheckboxGroupValueChangeEventDetails;\n}\n\nexport interface RdxCheckboxGroupContext {\n /** The names of the currently checked checkboxes. */\n value: Signal<string[]>;\n /** All checkbox names, used by a `parent` checkbox to check/uncheck every child. */\n allValues: Signal<string[]>;\n /** Whether the whole group is disabled. */\n disabled: Signal<boolean>;\n /** The derived state of a `parent` checkbox: all / none / some checked. */\n parentState: Signal<CheckedState>;\n /** The space-separated control ids the `parent` checkbox controls (for `aria-controls`). */\n controlledIds: Signal<string | undefined>;\n /** A stable id for a child's control element, derived from the group id and the child name. */\n controlId: (name: string) => string;\n /** Toggle a single child by name. */\n toggleValue: (name: string, event?: Event) => void;\n /** Toggle every child on or off (used by a `parent` checkbox). */\n toggleAll: (event?: Event) => void;\n /** Register a child's name and disabled state so the parent can preserve disabled items. */\n registerChild: (name: string, disabled: Signal<boolean>) => () => void;\n /** Register a child's control element id so the parent can reference it via `aria-controls`. */\n registerControl: (name: string, id: string) => () => void;\n}\n\nexport const [injectCheckboxGroupContext, provideCheckboxGroupContext] = createContext<RdxCheckboxGroupContext>(\n 'CheckboxGroupContext',\n 'components/checkbox'\n);\n\nconst groupContext = (): RdxCheckboxGroupContext => {\n const group = inject(RdxCheckboxGroupDirective);\n return {\n value: group.value,\n allValues: group.allValues,\n disabled: group.disabledState,\n parentState: group.parentState,\n controlledIds: group.controlledIds,\n controlId: (name) => group.controlId(name),\n toggleValue: (name, event) => group.toggleValue(name, event),\n toggleAll: (event) => group.toggleAll(event),\n registerChild: (name, disabled) => group.registerChild(name, disabled),\n registerControl: (name, id) => group.registerControl(name, id)\n };\n};\n\nlet nextCheckboxGroupId = 0;\n\n/**\n * Groups a set of checkboxes that share a single array value (the names of the checked boxes).\n *\n * Each child `rdxCheckboxRoot` participates by its `name`. A child marked `parent` becomes a\n * \"select all\" checkbox whose state is derived from `allValues`.\n */\n@Directive({\n selector: '[rdxCheckboxGroup]',\n exportAs: 'rdxCheckboxGroup',\n hostDirectives: [RdxFormUiStateHost],\n providers: [\n provideValueAccessor(RdxCheckboxGroupDirective),\n provideCheckboxGroupContext(groupContext),\n provideFormUiState(() => inject(RdxCheckboxGroupDirective).formUi)\n ],\n host: {\n role: 'group',\n '[attr.data-disabled]': 'disabledState() ? \"\" : undefined'\n }\n})\nexport class RdxCheckboxGroupDirective\n extends RdxFormUiControlBase\n implements ControlValueAccessor, RdxFormValueControl<string[]>\n{\n /** The names of the currently checked checkboxes. Use with `onValueChange` or `[(value)]`. */\n readonly value = model<string[]>([]);\n\n /** The names checked initially when the group is uncontrolled. */\n readonly defaultValue = input<string[]>();\n\n /** All checkbox names in the group. Required for a `parent` (select-all) checkbox. */\n readonly allValues = input<string[]>([]);\n\n /** Whether the whole group is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Emits the new array of checked names whenever the value changes. */\n readonly onValueChange = output<RdxCheckboxGroupValueChangeEvent>();\n\n private readonly disabledByCva = signal(false);\n readonly disabledState = computed(() => this.disabledByCva() || this.disabled());\n\n /** Derived state for a `parent` checkbox: `true` (all), `false` (none) or `'indeterminate'`. */\n readonly parentState = computed<CheckedState>(() => {\n const total = this.allValues().length;\n const count = this.value().length;\n if (total > 0 && count === total) {\n return true;\n }\n return count > 0 ? 'indeterminate' : false;\n });\n\n /**\n * The value as last set directly by a child (or the initial value) — the \"remembered\" partial\n * selection that a `parent` checkbox cycles back to, mirroring Base UI's `uncontrolledStateRef`.\n */\n private uncontrolledState: string[] = [];\n private seeded = false;\n /** Where the parent is in its mixed → on → off cycle. Reset to `mixed` on any direct child change. */\n private parentStatus: 'on' | 'off' | 'mixed' = 'mixed';\n /** Per-name disabled signals, so the parent can preserve disabled-but-checked children. */\n private readonly disabledByName = new Map<string, Signal<boolean>>();\n\n /** Stable group id used to derive child control ids when the consumer sets none. */\n private readonly elementId = `rdx-checkbox-group-${nextCheckboxGroupId++}`;\n /** Registered control element ids, keyed by child name. */\n private readonly controlIds = signal<Record<string, string>>({});\n\n /** The space-separated control ids in `allValues` order, for the parent's `aria-controls`. */\n readonly controlledIds = computed<string | undefined>(() => {\n const ids = this.controlIds();\n const list = this.allValues()\n .map((name) => ids[name])\n .filter((id): id is string => id !== undefined);\n return list.length > 0 ? list.join(' ') : undefined;\n });\n\n private hasAppliedDefault = false;\n private onChange: (value: string[]) => void = () => {\n /* Empty */\n };\n onTouched: () => void = () => {\n /* Empty */\n };\n\n constructor() {\n super();\n\n effect(() => {\n const defaultValue = this.defaultValue();\n if (!this.hasAppliedDefault && defaultValue !== undefined) {\n this.hasAppliedDefault = true;\n this.value.set(defaultValue);\n }\n });\n }\n\n /** @ignore Bridge the CVA `onTouched` so `markAsTouched()` also notifies Reactive/template forms. */\n protected override formUiTouchTarget(): RdxFormUiTouchTarget {\n return { markAsTouched: () => this.onTouched() };\n }\n\n /** @ignore Register a child's disabled signal keyed by its name. */\n registerChild(name: string, disabled: Signal<boolean>): () => void {\n this.disabledByName.set(name, disabled);\n return () => {\n if (this.disabledByName.get(name) === disabled) {\n this.disabledByName.delete(name);\n }\n };\n }\n\n /** A stable control id for a child, derived from the group id and the child name. */\n controlId(name: string): string {\n return `${this.elementId}-${name}`;\n }\n\n /** @ignore Register a child's control element id so the parent can list it in `aria-controls`. */\n registerControl(name: string, id: string): () => void {\n this.controlIds.update((ids) => ({ ...ids, [name]: id }));\n return () => {\n this.controlIds.update((ids) => {\n if (ids[name] !== id) {\n return ids;\n }\n const next = { ...ids };\n delete next[name];\n return next;\n });\n };\n }\n\n /** Add/remove a single child name from the value (a direct child change). */\n toggleValue(name: string, event?: Event): void {\n if (this.disabledState()) {\n return;\n }\n\n const current = this.value();\n const next = current.includes(name) ? current.filter((v) => v !== name) : [...current, name];\n if (!this.emit(next, event)) {\n return;\n }\n\n // A direct child change becomes the new \"remembered\" selection and resets the parent cycle.\n this.seeded = true;\n this.uncontrolledState = next;\n this.parentStatus = 'mixed';\n }\n\n /**\n * Toggle from the `parent` checkbox. Mirrors Base UI's `useCheckboxGroupParent`:\n *\n * - When the remembered selection is all/none, this is a plain check-all ↔ uncheck-all toggle.\n * - When it is a partial selection, clicks cycle: partial → all → none → partial → …, so the\n * user's original partial choice is restored rather than lost.\n *\n * Disabled-but-checked children are always preserved (they cannot be toggled programmatically).\n */\n toggleAll(event?: Event): void {\n if (this.disabledState()) {\n return;\n }\n\n this.ensureSeeded();\n\n const allValues = this.allValues();\n const remembered = this.uncontrolledState;\n\n // Disabled children that were checked stay checked through every transition.\n const none = allValues.filter((name) => this.isNameDisabled(name) && remembered.includes(name));\n const all = allValues.filter((name) => !this.isNameDisabled(name) || remembered.includes(name));\n\n const rememberedIsAllOrNone = remembered.length === all.length || remembered.length === 0;\n if (rememberedIsAllOrNone) {\n this.emit(this.value().length === all.length ? none : all, event);\n return;\n }\n\n let nextStatus: 'on' | 'off' | 'mixed' = 'mixed';\n let nextValue = remembered;\n if (this.parentStatus === 'mixed') {\n nextStatus = 'on';\n nextValue = all;\n } else if (this.parentStatus === 'on') {\n nextStatus = 'off';\n nextValue = none;\n }\n\n if (!this.emit(nextValue, event)) {\n return;\n }\n this.parentStatus = nextStatus;\n }\n\n private isNameDisabled(name: string): boolean {\n return this.disabledByName.get(name)?.() ?? false;\n }\n\n /** Seed the remembered selection from the current value the first time the parent is used. */\n private ensureSeeded(): void {\n if (!this.seeded) {\n this.seeded = true;\n this.uncontrolledState = this.value();\n }\n }\n\n private emit(next: string[], event?: Event): boolean {\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails } = createCancelableChangeEventDetails(\n 'none',\n event ?? new Event('checkbox-group.value-change'),\n trigger\n );\n this.onValueChange.emit({ value: next, eventDetails });\n if (eventDetails.isCanceled()) {\n return false;\n }\n\n this.value.set(next);\n this.formUi.markDirty();\n this.onChange(next);\n this.onTouched();\n return true;\n }\n\n /** @ignore */\n writeValue(value: string[] | null): void {\n this.value.set(value ?? []);\n }\n\n /** @ignore */\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean): void {\n this.disabledByCva.set(isDisabled);\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n Renderer2,\n signal,\n Signal\n} from '@angular/core';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n RDX_FIELD_VALIDITY,\n RdxCancelableChangeEventDetails,\n RdxControlValueAccessor,\n RdxFormCheckboxControl,\n RdxValidationError\n} from '@radix-ng/primitives/core';\nimport { injectCheckboxGroupContext } from './checkbox-group';\n\n/**\n * Internal tri-state used only for the derived `parent` (select-all) state in\n * `rdxCheckboxGroup` and compatibility helpers. The public `checked` member is\n * a plain `boolean`; mixed state is exposed via the separate `indeterminate`\n * member (Base UI shape).\n */\nexport type CheckedState = boolean | 'indeterminate';\n\nexport function isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nexport function getState(checked: CheckedState) {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nexport type RdxCheckboxCheckedChangeReason = 'none';\nexport type RdxCheckboxCheckedChangeEventDetails = RdxCancelableChangeEventDetails<RdxCheckboxCheckedChangeReason>;\n\nexport interface RdxCheckboxCheckedChangeEvent {\n checked: boolean;\n eventDetails: RdxCheckboxCheckedChangeEventDetails;\n}\n\nexport interface CheckboxRootContext {\n checked: Signal<boolean>;\n indeterminate: Signal<boolean>;\n disabled: Signal<boolean>;\n required: Signal<boolean>;\n value: Signal<string>;\n name: Signal<string | undefined>;\n parent: Signal<boolean>;\n form: Signal<string | undefined>;\n readonly: Signal<boolean>;\n state: Signal<'indeterminate' | 'checked' | 'unchecked'>;\n invalidState: Signal<boolean>;\n /** Tri-state displayed validity (`true`/`false`/`null`) — the field's gated state when standalone in a Field. */\n displayValid: Signal<boolean | null>;\n touchedState: Signal<boolean>;\n dirtyState: Signal<boolean>;\n uncheckedValue: Signal<string | undefined>;\n toggle: (event?: Event) => void;\n}\n\nconst rootContext = (): CheckboxRootContext => {\n const checkbox = inject(RdxCheckboxRootDirective);\n\n // `checked`/`disabled` come from the directive so they reflect group membership when the\n // checkbox is inside a `rdxCheckboxGroup`; otherwise they fall back to the CVA.\n return {\n checked: checkbox.checkedState,\n indeterminate: checkbox.indeterminateState,\n disabled: checkbox.disabledState,\n required: checkbox.required,\n value: checkbox.submitValue,\n name: checkbox.name,\n parent: checkbox.parent,\n form: checkbox.form,\n readonly: checkbox.readOnlyState,\n state: checkbox.state,\n invalidState: checkbox.invalidState,\n displayValid: checkbox.displayValid,\n touchedState: checkbox.touchedState,\n dirtyState: checkbox.dirtyState,\n uncheckedValue: checkbox.uncheckedValue,\n toggle(event?: Event) {\n checkbox.toggle(event);\n }\n };\n};\n\nexport const [injectCheckboxRootContext, provideCheckboxRootContext] = createContext<CheckboxRootContext>(\n 'CheckboxRootContext',\n 'components/checkbox'\n);\n\n/**\n * @group Components\n */\n@Directive({\n selector: '[rdxCheckboxRoot]',\n providers: [provideCheckboxRootContext(rootContext)],\n hostDirectives: [\n {\n directive: RdxControlValueAccessor,\n inputs: ['value:checked', 'disabled']\n }\n ],\n host: {\n '[attr.data-checked]': 'checkedState() && !indeterminateState() ? \"\" : undefined',\n '[attr.data-unchecked]': '!checkedState() && !indeterminateState() ? \"\" : undefined',\n '[attr.data-indeterminate]': 'indeterminateState() ? \"\" : undefined',\n '[attr.data-disabled]': 'disabledState() ? \"\" : undefined',\n '[attr.data-readonly]': 'readOnlyState() ? \"\" : undefined',\n '[attr.data-required]': 'required() ? \"\" : undefined',\n '[attr.data-invalid]': 'displayValid() === false ? \"\" : undefined',\n '[attr.data-valid]': 'displayValid() === true ? \"\" : undefined',\n '[attr.data-touched]': 'touchedState() ? \"\" : undefined',\n '[attr.data-dirty]': 'dirtyState() ? \"\" : undefined'\n }\n})\nexport class RdxCheckboxRootDirective implements RdxFormCheckboxControl {\n private readonly controlValueAccessor = inject(RdxControlValueAccessor);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private uncheckedInputElement: HTMLInputElement | null = null;\n\n /** The group this checkbox belongs to, if it is rendered inside a `rdxCheckboxGroup`. */\n private readonly group = injectCheckboxGroupContext(true);\n\n /**\n * The controlled checked state of the checkbox. Must be used in conjunction with onCheckedChange.\n *\n * Mixed state is no longer expressed through `checked` — use the separate\n * `indeterminate` input (Base UI shape). This `boolean` model is what\n * `RdxFormCheckboxControl` / Angular Signal Forms bind to.\n * @group Props\n */\n readonly checked = model<boolean>(false);\n\n /**\n * The state of the checkbox when it is initially rendered.\n *\n * @default false\n * @group Props\n */\n readonly defaultChecked = input<boolean | undefined, BooleanInput | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value))\n });\n\n /**\n * Whether the checkbox is in a mixed state: neither ticked nor unticked.\n * Orthogonal to `checked` and not part of the submitted form value. A user\n * click resolves the checkbox to `checked` and clears `indeterminate`.\n * @group Props\n */\n readonly indeterminate = model<boolean>(false);\n\n /**\n * The value of the checkbox. This is what is submitted with the form when the checkbox is checked.\n *\n * Bound publicly as `[value]`; the TS member is named `submitValue` so the\n * directive can satisfy `RdxFormCheckboxControl`, whose contract reserves a\n * `value` member for `RdxFormValueControl` and forbids it on checkbox-style\n * controls. (Checkbox is not yet marked `implements` — its `checked` is still\n * `CheckedState`; see the `indeterminate` half of collision #1.)\n * @group Props\n */\n readonly submitValue = input<string>('on', { alias: 'value' });\n\n /**\n * The value submitted with the form when the checkbox is unchecked.\n * By default, unchecked checkboxes do not submit any value, matching native checkbox behavior.\n *\n * @group Props\n */\n readonly uncheckedValue = input<string>();\n\n /**\n * Whether or not the checkbox button is disabled. This prevents the user from interacting with it.\n * @group Props\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the user should be unable to tick or untick the checkbox. Bound in templates as\n * `readOnly` (Base UI spelling); the TS member stays `readonly` to satisfy `RdxFormCheckboxControl`.\n * @group Props\n */\n readonly readonly = input<boolean, BooleanInput>(false, { alias: 'readOnly', transform: booleanAttribute });\n\n /**\n * Whether or not the checkbox is required.\n * @group Props\n */\n readonly required = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the checkbox is invalid. A non-empty {@link errors} list also marks it invalid.\n * @group Props\n */\n readonly invalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the checkbox has been touched. A `model()` so Signal Forms can write it; the checkbox\n * also sets it on toggle (and emits {@link touch}).\n * @group Props\n */\n readonly touched = model<boolean>(false);\n\n /**\n * Whether the checked state changed from its initial value. Merged with internal tracking.\n * @group Props\n */\n readonly dirty = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Validation errors for the checkbox. A non-empty list marks it invalid.\n * @group Props\n */\n readonly errors = input<readonly RdxValidationError[]>([]);\n\n /**\n * Name of the form control. Submitted with the form as part of a name/value pair. Inside a\n * `rdxCheckboxGroup` this also identifies the checkbox in the group's value array.\n * @group Props\n */\n readonly name = input<string>();\n\n /**\n * When inside a `rdxCheckboxGroup`, marks this as the \"select all\" checkbox: its state is\n * derived from the group's `allValues`, and toggling it checks or unchecks every child.\n * @group Props\n */\n readonly parent = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Associates the control with a form element.\n * @group Props\n */\n readonly form = input<string>();\n\n /**\n * Event emitted when the checkbox checked state changes.\n * @group Emits\n */\n readonly onCheckedChange = output<RdxCheckboxCheckedChangeEvent>();\n\n /**\n * Emits on interaction, notifying Signal Forms the checkbox was touched.\n * @group Emits\n */\n readonly touch = output<void>();\n\n /**\n * @ignore\n * The effective checked state as a `boolean`. Inside a `rdxCheckboxGroup` it is derived from the\n * group (a `parent` checkbox is checked only when every child is; a child from whether its `name`\n * is in the group value); standalone it reads the CVA value.\n */\n readonly checkedState = computed<boolean>(() => {\n const group = this.group;\n if (group) {\n if (this.parent()) {\n return group.parentState() === true;\n }\n\n const name = this.name();\n if (name !== undefined) {\n return group.value().includes(name);\n }\n }\n\n return !!this.controlValueAccessor.value();\n });\n\n /**\n * @ignore\n * The effective mixed state. A `parent` checkbox is indeterminate when some — but not all —\n * children are checked; otherwise it follows the `indeterminate` input.\n */\n readonly indeterminateState = computed<boolean>(() => {\n const group = this.group;\n if (group && this.parent()) {\n return group.parentState() === 'indeterminate';\n }\n\n return this.indeterminate();\n });\n\n /** @ignore The effective disabled state, including the group. */\n readonly disabledState = computed(() => this.controlValueAccessor.disabled() || (this.group?.disabled() ?? false));\n readonly readOnlyState = computed(() => this.readonly());\n\n private readonly dirtyValue = signal(false);\n /** @ignore Invalid when the `invalid` input is set or the `errors` list is non-empty. */\n readonly invalidState = computed(() => this.invalid() || (this.errors()?.length ?? 0) > 0);\n\n /** Tri-state display validity exposed by an enclosing Field; absent when standalone. */\n private readonly fieldValidity = inject(RDX_FIELD_VALIDITY, { optional: true });\n /**\n * @ignore Tri-state *displayed* validity. A **standalone** checkbox inside a `rdxFieldRoot` defers to\n * the field's gated `validState` (so a field whose `validationMode` defers display (e.g. `onBlur`) stays neutral); inside a\n * `rdxCheckboxGroup` the group owns the field relationship, so the item keeps its own binary validity\n * (the field's invalid must not paint every checkbox red).\n */\n readonly displayValid = computed<boolean | null>(() =>\n !this.group && this.fieldValidity ? this.fieldValidity() : this.invalidState() ? false : true\n );\n /** @ignore */\n readonly touchedState = computed(() => this.touched());\n /** @ignore */\n readonly dirtyState = computed(() => this.dirty() || this.dirtyValue());\n\n readonly state = computed(() =>\n this.indeterminateState() ? 'indeterminate' : this.checkedState() ? 'checked' : 'unchecked'\n );\n\n constructor() {\n // Inside a group, register this child's name and its own disabled state so a `parent`\n // checkbox can preserve disabled-but-checked children when selecting/deselecting all.\n effect((onCleanup) => {\n const group = this.group;\n const name = this.name();\n if (group && !this.parent() && name !== undefined) {\n onCleanup(group.registerChild(name, this.controlValueAccessor.disabled));\n }\n });\n\n let hasAppliedDefault = false;\n effect(() => {\n const defaultChecked = this.defaultChecked();\n if (!hasAppliedDefault && defaultChecked !== undefined) {\n hasAppliedDefault = true;\n this.checked.set(defaultChecked);\n this.controlValueAccessor.setValue(defaultChecked);\n }\n });\n\n effect(() => {\n this.syncUncheckedInput();\n });\n\n inject(DestroyRef).onDestroy(() => {\n this.removeUncheckedInput();\n });\n }\n\n toggle(event?: Event) {\n if (this.disabledState() || this.readOnlyState()) {\n return;\n }\n\n const group = this.group;\n if (group) {\n if (this.parent()) {\n group.toggleAll(event);\n return;\n }\n\n const name = this.name();\n if (name !== undefined) {\n group.toggleValue(name, event);\n return;\n }\n }\n\n // From the indeterminate state a click resolves to checked (matching\n // native + Base UI), otherwise it flips the boolean. A single setValue so\n // onCheckedChange fires once; the `checked`/`indeterminate` models are\n // kept in sync so `[(checked)]` / `[(indeterminate)]` reflect the change.\n const next = this.indeterminateState() ? true : !this.checkedState();\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails } = createCancelableChangeEventDetails(\n 'none',\n event ?? new Event('checkbox.checked-change'),\n trigger\n );\n this.onCheckedChange.emit({ checked: next, eventDetails });\n if (eventDetails.isCanceled()) {\n return;\n }\n\n this.indeterminate.set(false);\n this.checked.set(next);\n this.controlValueAccessor.setValue(next);\n this.dirtyValue.set(true);\n // Mark the form control touched on user interaction so `touched`-gated validation shows\n // (the visible control is the button, not the hidden input, so blur alone is unreliable).\n // Both channels: CVA for Reactive forms, the `touched` model + `touch` output for Signal Forms.\n this.controlValueAccessor.markAsTouched();\n this.touched.set(true);\n this.touch.emit();\n }\n\n private syncUncheckedInput(): void {\n const name = this.name();\n const uncheckedValue = this.uncheckedValue();\n const shouldRender =\n !this.checkedState() && !this.group && !this.parent() && name !== undefined && uncheckedValue !== undefined;\n\n if (!shouldRender) {\n this.removeUncheckedInput();\n return;\n }\n\n const input = this.ensureUncheckedInput();\n this.renderer.setAttribute(input, 'type', 'hidden');\n this.renderer.setAttribute(input, 'name', name);\n this.renderer.setAttribute(input, 'value', uncheckedValue);\n this.setOptionalAttribute(input, 'form', this.form());\n this.setBooleanAttribute(input, 'disabled', this.disabledState());\n }\n\n private ensureUncheckedInput(): HTMLInputElement {\n if (this.uncheckedInputElement) {\n return this.uncheckedInputElement;\n }\n\n const host = this.elementRef.nativeElement;\n const parent = host.parentNode;\n const input = this.renderer.createElement('input') as HTMLInputElement;\n if (parent) {\n this.renderer.insertBefore(parent, input, host.nextSibling);\n }\n this.uncheckedInputElement = input;\n return input;\n }\n\n private removeUncheckedInput(): void {\n const input = this.uncheckedInputElement;\n if (!input) {\n return;\n }\n\n const parent = input.parentNode;\n if (parent) {\n this.renderer.removeChild(parent, input);\n }\n this.uncheckedInputElement = null;\n }\n\n private setOptionalAttribute(element: HTMLElement, name: string, value: string | undefined): void {\n if (value) {\n this.renderer.setAttribute(element, name, value);\n } else {\n this.renderer.removeAttribute(element, name);\n }\n }\n\n private setBooleanAttribute(element: HTMLElement, name: string, value: boolean): void {\n if (value) {\n this.renderer.setAttribute(element, name, '');\n } else {\n this.renderer.removeAttribute(element, name);\n }\n }\n}\n","import { computed, Directive, effect, ElementRef, inject } from '@angular/core';\nimport { injectCheckboxGroupContext } from './checkbox-group';\nimport { injectCheckboxRootContext } from './checkbox-root';\n\n/**\n * Directive: rdxCheckboxButton\n * Purpose: Turns a native <button> into an accessible checkbox control bound to the Radix Checkbox context.\n * It mirrors the checkbox state via ARIA/data attributes, toggles on click, and prevents Enter activation per WAI-ARIA.\n * In forms, it stops the button's click from bubbling so only the hidden input emits the native event used for form/validator integration.\n */\n@Directive({\n selector: 'button[rdxCheckboxButton]',\n host: {\n type: 'button',\n role: 'checkbox',\n '[attr.aria-checked]': 'rootContext.indeterminate() ? \"mixed\" : rootContext.checked()',\n '[attr.aria-controls]': 'ariaControls()',\n '[attr.aria-disabled]': 'rootContext.disabled() ? \"true\" : undefined',\n '[attr.aria-required]': 'rootContext.required() || undefined',\n '[attr.aria-readonly]': 'rootContext.readonly() || undefined',\n '[attr.aria-invalid]': 'rootContext.displayValid() === false ? \"true\" : undefined',\n '[attr.data-checked]': 'rootContext.checked() && !rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-unchecked]': '!rootContext.checked() && !rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-indeterminate]': 'rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.data-required]': 'rootContext.required() ? \"\" : undefined',\n '[attr.data-invalid]': 'rootContext.displayValid() === false ? \"\" : undefined',\n '[attr.data-valid]': 'rootContext.displayValid() === true ? \"\" : undefined',\n '[attr.data-touched]': 'rootContext.touchedState() ? \"\" : undefined',\n '[attr.data-dirty]': 'rootContext.dirtyState() ? \"\" : undefined',\n '(click)': 'clicked($event)',\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n '(keydown.enter)': '$event.preventDefault()'\n }\n})\nexport class RdxCheckboxButtonDirective {\n protected readonly rootContext = injectCheckboxRootContext();\n private readonly group = injectCheckboxGroupContext(true);\n\n private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n /** A `parent` checkbox lists the ids of the children it controls. */\n protected readonly ariaControls = computed(() =>\n this.group && this.rootContext.parent() ? this.group.controlledIds() : undefined\n );\n\n constructor() {\n // A child checkbox in a group exposes its control id so the parent can reference it via\n // `aria-controls`. Use the consumer's id when present, otherwise derive a stable one.\n effect((onCleanup) => {\n const group = this.group;\n const name = this.rootContext.name();\n if (!group || this.rootContext.parent() || name === undefined) {\n return;\n }\n\n const el = this.elementRef.nativeElement;\n if (!el.id) {\n el.id = group.controlId(name);\n }\n onCleanup(group.registerControl(name, el.id));\n });\n }\n\n protected clicked(event: MouseEvent) {\n if (event.defaultPrevented || this.rootContext.disabled() || this.rootContext.readonly()) {\n return;\n }\n\n this.rootContext.toggle(event);\n\n if (this.rootContext.form() || this.elementRef.nativeElement.closest('form')) {\n // if checkbox is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect checkbox updates.\n event.stopPropagation();\n }\n }\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectCheckboxRootContext } from './checkbox-root';\n\n@Directive({\n selector: '[rdxCheckboxIndicator]',\n host: {\n '[attr.data-checked]': 'rootContext.checked() && !rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-unchecked]': '!rootContext.checked() && !rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-indeterminate]': 'rootContext.indeterminate() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.data-required]': 'rootContext.required() ? \"\" : undefined',\n '[attr.data-starting-style]': 'isVisible() ? \"\" : undefined',\n '[attr.data-ending-style]': '!isVisible() ? \"\" : undefined',\n '[style.display]': '!keepMounted() && !isVisible() ? \"none\" : null',\n '[style.pointer-events]': '\"none\"'\n }\n})\nexport class RdxCheckboxIndicatorDirective {\n protected readonly rootContext = injectCheckboxRootContext();\n\n /** Keep the indicator in the DOM when unchecked so CSS exit animations can play. */\n readonly keepMounted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly isVisible = computed(() => this.rootContext.checked() || this.rootContext.indeterminate());\n}\n","import { Directive, effect, ElementRef, inject } from '@angular/core';\nimport { injectCheckboxRootContext } from './checkbox-root';\n\n@Directive({\n selector: 'input[rdxCheckboxInput]',\n host: {\n type: 'checkbox',\n tabindex: '-1',\n 'aria-hidden': 'true',\n '[attr.name]': 'rootContext.parent() ? undefined : rootContext.name() || undefined',\n // Only a truly checked box is submitted; `indeterminate` is a property\n // (set below), never a submitted \"checked\" value.\n '[attr.checked]': 'rootContext.state() === \"checked\" ? \"\" : undefined',\n '[checked]': 'rootContext.checked()',\n '[attr.form]': 'rootContext.form() || undefined',\n '[attr.value]': 'rootContext.value()',\n '[required]': 'rootContext.required()',\n '[disabled]': 'rootContext.disabled()',\n '[style]': `{\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n inset: 0,\n transform: 'translateX(-100%)',\n }`\n }\n})\nexport class RdxCheckboxInputDirective {\n protected readonly rootContext = injectCheckboxRootContext();\n\n private readonly input = inject<ElementRef<HTMLInputElement>>(ElementRef).nativeElement;\n\n constructor() {\n let isInitial = true;\n\n /**\n * Keeps the hidden native input in sync so form submission, native\n * validation and form events reflect the checkbox state.\n *\n * - `indeterminate` is a native property (not a submittable value), so we\n * mirror it here rather than via an attribute.\n * - On every change (but not the initial render) we emit bubbling\n * `input`/`change` events so native form listeners react. We do NOT\n * dispatch a `click`: a click on a checkbox runs the toggle activation\n * behavior and would desync the input from the bound state.\n */\n effect(() => {\n // Track both so the native input mirrors the checkbox and emits change\n // events when either the checked or indeterminate state moves.\n this.rootContext.checked();\n this.input.indeterminate = this.rootContext.indeterminate();\n\n if (isInitial) {\n isInitial = false;\n return;\n }\n\n this.input.dispatchEvent(new Event('input', { bubbles: true }));\n this.input.dispatchEvent(new Event('change', { bubbles: true }));\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxCheckboxButtonDirective } from './src/checkbox-button';\nimport { RdxCheckboxGroupDirective } from './src/checkbox-group';\nimport { RdxCheckboxIndicatorDirective } from './src/checkbox-indicator';\nimport { RdxCheckboxInputDirective } from './src/checkbox-input';\nimport { RdxCheckboxRootDirective } from './src/checkbox-root';\n\nexport * from './src/checkbox-button';\nexport * from './src/checkbox-group';\nexport * from './src/checkbox-indicator';\nexport * from './src/checkbox-input';\nexport * from './src/checkbox-root';\nexport type { CheckedState } from './src/checkbox-root';\n\nexport const checkboxImports = [\n RdxCheckboxInputDirective,\n RdxCheckboxRootDirective,\n RdxCheckboxButtonDirective,\n RdxCheckboxIndicatorDirective,\n RdxCheckboxGroupDirective\n];\n\n@NgModule({\n imports: [...checkboxImports],\n exports: [...checkboxImports]\n})\nexport class RdxCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -313,7 +313,7 @@ class RdxCollapsiblePanelDirective {
313
313
  this.isFirstMeasure = false;
314
314
  }
315
315
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCollapsiblePanelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
316
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxCollapsiblePanelDirective, isStandalone: true, selector: "[rdxCollapsiblePanel]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, keepMounted: { classPropertyName: "keepMounted", publicName: "keepMounted", isSignal: true, isRequired: false, transformFunction: null }, hiddenUntilFound: { classPropertyName: "hiddenUntilFound", publicName: "hiddenUntilFound", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "rootContext.panelId()", "attr.data-open": "rootContext.open() ? \"\" : undefined", "attr.data-closed": "rootContext.open() ? undefined : \"\"", "attr.data-disabled": "rootContext.disabled() ? \"\" : undefined", "attr.data-starting-style": "rootContext.transitionStatus() === \"starting\" ? \"\" : undefined", "attr.data-ending-style": "rootContext.transitionStatus() === \"ending\" ? \"\" : undefined", "attr.hidden": "hidden()", "style.--collapsible-panel-width.px": "width()", "style.--collapsible-panel-height.px": "height()" } }, ngImport: i0 }); }
316
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxCollapsiblePanelDirective, isStandalone: true, selector: "[rdxCollapsiblePanel]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, keepMounted: { classPropertyName: "keepMounted", publicName: "keepMounted", isSignal: true, isRequired: false, transformFunction: null }, hiddenUntilFound: { classPropertyName: "hiddenUntilFound", publicName: "hiddenUntilFound", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "rootContext.panelId()", "attr.data-open": "rootContext.open() ? \"\" : undefined", "attr.data-closed": "rootContext.open() ? undefined : \"\"", "attr.data-starting-style": "rootContext.transitionStatus() === \"starting\" ? \"\" : undefined", "attr.data-ending-style": "rootContext.transitionStatus() === \"ending\" ? \"\" : undefined", "attr.hidden": "hidden()", "style.--collapsible-panel-width.px": "width()", "style.--collapsible-panel-height.px": "height()" } }, ngImport: i0 }); }
317
317
  }
318
318
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCollapsiblePanelDirective, decorators: [{
319
319
  type: Directive,
@@ -323,7 +323,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
323
323
  '[id]': 'rootContext.panelId()',
324
324
  '[attr.data-open]': 'rootContext.open() ? "" : undefined',
325
325
  '[attr.data-closed]': 'rootContext.open() ? undefined : ""',
326
- '[attr.data-disabled]': 'rootContext.disabled() ? "" : undefined',
327
326
  '[attr.data-starting-style]': 'rootContext.transitionStatus() === "starting" ? "" : undefined',
328
327
  '[attr.data-ending-style]': 'rootContext.transitionStatus() === "ending" ? "" : undefined',
329
328
  '[attr.hidden]': 'hidden()',
@@ -345,7 +344,7 @@ class RdxCollapsibleTriggerDirective {
345
344
  this.rootContext.toggle(event, this.elementRef.nativeElement);
346
345
  }
347
346
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCollapsibleTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
348
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxCollapsibleTriggerDirective, isStandalone: true, selector: "[rdxCollapsibleTrigger]", host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-controls": "rootContext.open() ? rootContext.panelId() : undefined", "attr.aria-expanded": "rootContext.open()", "attr.data-panel-open": "rootContext.open() ? \"\" : undefined", "attr.data-disabled": "rootContext.disabled() ? \"\" : undefined", "attr.aria-disabled": "rootContext.disabled() ? \"true\" : undefined" } }, ngImport: i0 }); }
347
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxCollapsibleTriggerDirective, isStandalone: true, selector: "[rdxCollapsibleTrigger]", host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-controls": "rootContext.open() ? rootContext.panelId() : undefined", "attr.aria-expanded": "rootContext.open()", "attr.data-panel-open": "rootContext.open() ? \"\" : undefined", "attr.data-disabled": "rootContext.disabled() ? \"\" : undefined", "attr.data-starting-style": "rootContext.transitionStatus() === \"starting\" ? \"\" : undefined", "attr.data-ending-style": "rootContext.transitionStatus() === \"ending\" ? \"\" : undefined", "attr.aria-disabled": "rootContext.disabled() ? \"true\" : undefined" } }, ngImport: i0 }); }
349
348
  }
350
349
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCollapsibleTriggerDirective, decorators: [{
351
350
  type: Directive,
@@ -356,6 +355,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
356
355
  '[attr.aria-expanded]': 'rootContext.open()',
357
356
  '[attr.data-panel-open]': 'rootContext.open() ? "" : undefined',
358
357
  '[attr.data-disabled]': 'rootContext.disabled() ? "" : undefined',
358
+ '[attr.data-starting-style]': 'rootContext.transitionStatus() === "starting" ? "" : undefined',
359
+ '[attr.data-ending-style]': 'rootContext.transitionStatus() === "ending" ? "" : undefined',
359
360
  '[attr.aria-disabled]': 'rootContext.disabled() ? "true" : undefined',
360
361
  '(click)': 'handleClick($event)'
361
362
  }
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-collapsible.mjs","sources":["../../../packages/primitives/collapsible/src/collapsible-root.directive.ts","../../../packages/primitives/collapsible/src/collapsible-panel.directive.ts","../../../packages/primitives/collapsible/src/collapsible-trigger.directive.ts","../../../packages/primitives/collapsible/index.ts","../../../packages/primitives/collapsible/radix-ng-primitives-collapsible.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n input,\n model,\n ModelSignal,\n output,\n signal,\n Signal,\n untracked,\n WritableSignal\n} from '@angular/core';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n injectId,\n RdxCancelableChangeEventDetails,\n RdxTransitionStatus,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\n\nexport type RdxCollapsibleState = 'open' | 'closed';\nexport type RdxCollapsibleOpenChangeReason = 'trigger-press' | 'none';\nexport type RdxCollapsibleOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxCollapsibleOpenChangeReason>;\nexport interface RdxCollapsibleOpenChangeEvent {\n open: boolean;\n eventDetails: RdxCollapsibleOpenChangeEventDetails;\n}\n\nexport interface CollapsibleRootContext {\n /** Stable id linking the trigger's `aria-controls` to the panel. */\n panelId: Signal<string>;\n /** Writable so composing primitives (Accordion) can drive the state. */\n open: ModelSignal<boolean>;\n disabled: Signal<boolean>;\n /** Open/close transition phase, for `data-starting-style` / `data-ending-style`. */\n transitionStatus: Signal<RdxTransitionStatus>;\n /** `true` while the panel should stay rendered: open, or running its exit transition. */\n mounted: Signal<boolean>;\n /**\n * Composition fallbacks. The standalone Panel inputs write here, and Accordion writes here\n * directly; the Panel reads these so both wiring paths converge on a single source of truth.\n */\n keepMounted: WritableSignal<boolean>;\n hiddenUntilFound: WritableSignal<boolean>;\n toggle: (event: Event, trigger?: HTMLElement) => void;\n setOpen: (open: boolean, reason: RdxCollapsibleOpenChangeReason, event: Event, trigger?: HTMLElement) => boolean;\n setPanelIdState: (id: string | undefined) => void;\n /** Registers the panel element whose transition duration gates the close completion. */\n registerTransitionElement: (element: HTMLElement) => () => void;\n}\n\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext] = createContext<CollapsibleRootContext>(\n 'CollapsibleRootContext',\n 'components/collapsible'\n);\n\nconst rootContext = (): CollapsibleRootContext => {\n const instance = inject(RdxCollapsibleRootDirective);\n\n return {\n panelId: instance.resolvedPanelId,\n open: instance.open,\n disabled: instance.disabled,\n transitionStatus: instance.transitionStatus,\n mounted: instance.mounted,\n keepMounted: instance.keepMountedContext,\n hiddenUntilFound: instance.hiddenUntilFoundContext,\n setOpen: (open, reason, event, trigger) => instance.setOpen(open, reason, event, trigger),\n setPanelIdState: (id) => instance.setPanelIdState(id),\n registerTransitionElement: (element) => instance.registerTransitionElement(element),\n toggle: (event, trigger) => {\n if (instance.disabled()) {\n return;\n }\n\n instance.setOpen(!instance.open(), 'trigger-press', event, trigger);\n }\n };\n};\n\n/**\n * Groups all parts of the collapsible.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxCollapsibleRoot]',\n exportAs: 'rdxCollapsibleRoot',\n providers: [provideCollapsibleRootContext(rootContext)],\n host: {\n '[attr.data-open]': 'open() ? \"\" : undefined',\n '[attr.data-closed]': 'open() ? undefined : \"\"',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n})\nexport class RdxCollapsibleRootDirective {\n private readonly transition = useTransitionStatus((open) => this.onOpenChangeComplete.emit(open));\n\n private readonly generatedPanelId = injectId('rdx-collapsible-panel-');\n private readonly panelIdState = signal<string | undefined>(undefined);\n\n /** Reactive open/close transition phase (`'starting'` | `'ending'` | `undefined`). */\n readonly transitionStatus = this.transition.status;\n\n /** Registers the panel element whose transition duration gates the close completion. */\n readonly registerTransitionElement = this.transition.registerElement;\n\n /**\n * The controlled open state of the collapsible.\n * `true` - expanded, `false` - collapsed.\n *\n * @group Props\n * @defaultValue false\n */\n readonly open = model<boolean>(false);\n\n /**\n * The open state of the collapsible when it is initially rendered.\n * Use when you do not need to control its open state.\n *\n * @group Props\n * @defaultValue false\n */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the component should ignore user interaction.\n *\n * @group Props\n * @defaultValue false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Stable id linking the trigger's `aria-controls` to the panel. */\n readonly panelId = input<string | undefined>(undefined);\n\n /** Stable id linking the trigger's `aria-controls` to the panel. */\n readonly resolvedPanelId = computed(() => this.panelIdState() ?? this.panelId() ?? this.generatedPanelId);\n\n /** Composition fallbacks (see {@link CollapsibleRootContext}). Default `false`. */\n readonly keepMountedContext = signal(false);\n readonly hiddenUntilFoundContext = signal(false);\n\n /** `true` while the panel must stay rendered: open, or mid exit transition. */\n readonly mounted = computed(() => this.open() || this.transitionStatus() === 'ending');\n\n /**\n * Event handler called when the open state of the collapsible changes.\n *\n * @group Emits\n */\n readonly onOpenChange = output<RdxCollapsibleOpenChangeEvent>();\n\n /**\n * Event handler called after the open/close transition has finished.\n *\n * @group Emits\n */\n readonly onOpenChangeComplete = output<boolean>();\n\n private hasAppliedDefaultOpen = false;\n private previousOpen = this.open();\n\n setPanelIdState(id: string | undefined): void {\n this.panelIdState.set(id);\n }\n\n setOpen(nextOpen: boolean, reason: RdxCollapsibleOpenChangeReason, event: Event, trigger?: HTMLElement): boolean {\n if (nextOpen === this.open()) {\n return true;\n }\n\n const { eventDetails } = createCancelableChangeEventDetails(reason, event, trigger);\n\n this.onOpenChange.emit({ open: nextOpen, eventDetails });\n\n if (eventDetails.isCanceled()) {\n return false;\n }\n\n untracked(() => {\n this.open.set(nextOpen);\n });\n\n return true;\n }\n\n constructor() {\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n untracked(() => {\n this.open.set(true);\n // Treat an initially-open collapsible as settled so it doesn't play an\n // enter transition on first render.\n this.previousOpen = true;\n });\n }\n });\n\n effect(() => {\n const open = this.open();\n\n if (open !== this.previousOpen) {\n this.previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n }\n}\n","import {\n afterRenderEffect,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n untracked\n} from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectCollapsibleRootContext } from './collapsible-root.directive';\n\n/**\n * Coerces a collapsible boolean input that distinguishes \"not set\" (`undefined`) from `false`,\n * so the Panel only overrides the shared context value when the consumer passes the input.\n */\nconst optionalBoolean = (value: BooleanInput | undefined): boolean | undefined =>\n value === undefined ? undefined : booleanAttribute(value);\n\n/**\n * A panel with the collapsible contents.\n */\n@Directive({\n selector: '[rdxCollapsiblePanel]',\n host: {\n '[id]': 'rootContext.panelId()',\n '[attr.data-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.open() ? undefined : \"\"',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.hidden]': 'hidden()',\n '[style.--collapsible-panel-width.px]': 'width()',\n '[style.--collapsible-panel-height.px]': 'height()'\n }\n})\nexport class RdxCollapsiblePanelDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly marker = this.renderer.createComment('rdx-collapsible-panel');\n\n private parentNode: Node | null = null;\n private isAttached = true;\n\n protected readonly rootContext = injectCollapsibleRootContext();\n\n /**\n * Optional explicit panel id. When set, the trigger's `aria-controls` points to this id.\n *\n * @group Props\n */\n readonly id = input<string | undefined>(undefined, { alias: 'id' });\n\n /**\n * Whether to keep the element in the DOM while the panel is closed.\n * When `true`, the closed panel keeps its element and receives the `hidden` attribute once the\n * close transition finishes.\n *\n * @group Props\n * @defaultValue false\n */\n readonly keepMounted = input<boolean | undefined, BooleanInput | undefined>(undefined, {\n transform: optionalBoolean\n });\n\n /**\n * Allows the browser's built-in page search to find and expand the panel contents.\n * When `true`, the closed panel uses `hidden=\"until-found\"` instead of plain `hidden`.\n *\n * @group Props\n * @defaultValue false\n */\n readonly hiddenUntilFound = input<boolean | undefined, BooleanInput | undefined>(undefined, {\n transform: optionalBoolean\n });\n\n readonly height = signal<number | null>(null);\n readonly width = signal<number | null>(null);\n\n /** Mirrors Base UI's `shouldRender`: hidden panels unmount unless kept for search/measurement. */\n readonly shouldRender = computed(\n () =>\n this.rootContext.keepMounted() ||\n this.rootContext.hiddenUntilFound() ||\n this.rootContext.mounted() ||\n this.rootContext.open()\n );\n\n /**\n * The `hidden` attribute value. The panel is shown while open or while its exit transition runs.\n * A kept-mounted panel remains in the DOM but is still hidden while closed.\n */\n readonly hidden = computed<'' | 'until-found' | undefined>(() => {\n const visible = this.rootContext.open() || this.rootContext.transitionStatus() === 'ending';\n\n if (visible) {\n return undefined;\n }\n\n return this.rootContext.hiddenUntilFound() ? 'until-found' : '';\n });\n\n /**\n * The first measurement (the initial mount) must not re-enable animations, so an element that\n * mounts already open renders at its final size without playing the open animation.\n */\n private isFirstMeasure = true;\n private originalStyles?: { transitionDuration: string; animationName: string };\n\n constructor() {\n const unregister = this.rootContext.registerTransitionElement(this.elementRef.nativeElement);\n this.destroyRef.onDestroy(unregister);\n\n this.insertMarker();\n\n const unlistenBeforeMatch = this.renderer.listen(\n this.elementRef.nativeElement,\n 'beforematch',\n (event: Event) => {\n this.rootContext.setOpen(true, 'none', event);\n }\n );\n\n this.destroyRef.onDestroy(() => {\n unlistenBeforeMatch();\n this.removeMarker();\n });\n\n effect(() => {\n this.rootContext.setPanelIdState(this.id());\n });\n\n this.destroyRef.onDestroy(() => {\n this.rootContext.setPanelIdState(undefined);\n });\n\n effect(() => {\n this.syncRenderedState();\n });\n\n // Forward the Panel inputs into the shared context, but only when the consumer actually\n // sets them — so Accordion's context writes are never clobbered by the Panel defaults.\n effect(() => {\n const keepMounted = this.keepMounted();\n if (keepMounted !== undefined) {\n untracked(() => this.rootContext.keepMounted.set(keepMounted));\n }\n });\n\n effect(() => {\n const hiddenUntilFound = this.hiddenUntilFound();\n if (hiddenUntilFound !== undefined) {\n untracked(() => this.rootContext.hiddenUntilFound.set(hiddenUntilFound));\n }\n });\n\n // `afterRenderEffect` runs after the DOM is committed (but before paint) with the settled\n // `open` state — no `requestAnimationFrame` race — and is a no-op during SSR.\n afterRenderEffect(() => {\n // Re-measure whenever the open state flips; the panel is visible at that point (during\n // an exit it is kept rendered by the `ending` transition phase).\n this.rootContext.open();\n this.updateDimensions();\n });\n }\n\n private insertMarker(): void {\n const host = this.elementRef.nativeElement;\n const parent = this.renderer.parentNode(host) as Node | null;\n\n if (!parent) {\n return;\n }\n\n this.parentNode = parent;\n this.renderer.insertBefore(parent, this.marker, host);\n }\n\n private removeMarker(): void {\n const parent = this.renderer.parentNode(this.marker) as Node | null;\n\n if (parent) {\n this.renderer.removeChild(parent, this.marker);\n }\n }\n\n private syncRenderedState(): void {\n const parent = this.parentNode;\n\n if (!parent) {\n return;\n }\n\n const host = this.elementRef.nativeElement;\n const shouldRender = this.shouldRender();\n\n if (shouldRender && !this.isAttached) {\n this.renderer.insertBefore(parent, host, this.renderer.nextSibling(this.marker));\n this.isAttached = true;\n return;\n }\n\n if (!shouldRender && this.isAttached) {\n this.renderer.removeChild(parent, host);\n this.isAttached = false;\n }\n }\n\n private updateDimensions(): void {\n const node = this.elementRef.nativeElement;\n if (!node) return;\n\n this.originalStyles ??= {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n };\n\n // Block any animation/transition so we can measure the element at its natural size.\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n // Let the element take its natural height while measuring, so a `height` bound to the very\n // variable we are computing (the Base UI collapse pattern) does not feed back into itself.\n const previousHeight = node.style.height;\n node.style.height = 'auto';\n\n const rect = node.getBoundingClientRect();\n this.height.set(rect.height);\n this.width.set(rect.width);\n\n node.style.height = previousHeight;\n\n // Re-enable the original animation, unless this is the very first (mount) measurement.\n if (!this.isFirstMeasure) {\n node.style.transitionDuration = this.originalStyles.transitionDuration;\n node.style.animationName = this.originalStyles.animationName;\n }\n\n this.isFirstMeasure = false;\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { injectCollapsibleRootContext } from './collapsible-root.directive';\n\n/**\n * A button that opens and closes the collapsible panel.\n */\n@Directive({\n selector: '[rdxCollapsibleTrigger]',\n host: {\n '[attr.aria-controls]': 'rootContext.open() ? rootContext.panelId() : undefined',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.data-panel-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'rootContext.disabled() ? \"true\" : undefined',\n\n '(click)': 'handleClick($event)'\n }\n})\nexport class RdxCollapsibleTriggerDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly rootContext = injectCollapsibleRootContext();\n\n protected handleClick(event: MouseEvent): void {\n this.rootContext.toggle(event, this.elementRef.nativeElement);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxCollapsiblePanelDirective } from './src/collapsible-panel.directive';\nimport { RdxCollapsibleRootDirective } from './src/collapsible-root.directive';\nimport { RdxCollapsibleTriggerDirective } from './src/collapsible-trigger.directive';\n\nexport * from './src/collapsible-panel.directive';\nexport * from './src/collapsible-root.directive';\nexport * from './src/collapsible-trigger.directive';\n\nconst _imports = [RdxCollapsiblePanelDirective, RdxCollapsibleRootDirective, RdxCollapsibleTriggerDirective];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxCollapsibleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAwDO,MAAM,CAAC,4BAA4B,EAAE,6BAA6B,CAAC,GAAG,aAAa,CACtF,wBAAwB,EACxB,wBAAwB;AAG5B,MAAM,WAAW,GAAG,MAA6B;AAC7C,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,2BAA2B,CAAC;IAEpD,OAAO;QACH,OAAO,EAAE,QAAQ,CAAC,eAAe;QACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,QAAQ,CAAC,kBAAkB;QACxC,gBAAgB,EAAE,QAAQ,CAAC,uBAAuB;QAClD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;QACzF,eAAe,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACrD,yBAAyB,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,yBAAyB,CAAC,OAAO,CAAC;AACnF,QAAA,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAI;AACvB,YAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBACrB;YACJ;AAEA,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC;QACvE;KACH;AACL,CAAC;AAED;;;;AAIG;MAWU,2BAA2B,CAAA;AAoEpC,IAAA,eAAe,CAAC,EAAsB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7B;AAEA,IAAA,OAAO,CAAC,QAAiB,EAAE,MAAsC,EAAE,KAAY,EAAE,OAAqB,EAAA;AAClG,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE;AAC1B,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,kCAAkC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;AAEnF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAExD,QAAA,IAAI,YAAY,CAAC,UAAU,EAAE,EAAE;AAC3B,YAAA,OAAO,KAAK;QAChB;QAEA,SAAS,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,WAAA,GAAA;AA3FiB,QAAA,IAAA,CAAA,UAAU,GAAG,mBAAmB,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,wBAAwB,CAAC;QACrD,IAAA,CAAA,YAAY,GAAG,MAAM,CAAqB,SAAS;yFAAC;;AAG5D,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;;AAGzC,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe;AAEpE;;;;;;AAMG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAAU,KAAK;iFAAC;AAErC;;;;;;AAMG;QACM,IAAA,CAAA,WAAW,GAAG,KAAK,CAAwB,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3F;;;;;AAKG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG/E,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,SAAS;oFAAC;;AAG9C,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,gBAAgB;4FAAC;;QAGhG,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK;+FAAC;QAClC,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,KAAK;oGAAC;;AAGvC,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,QAAQ;oFAAC;AAEtF;;;;AAIG;QACM,IAAA,CAAA,YAAY,GAAG,MAAM,EAAiC;AAE/D;;;;AAIG;QACM,IAAA,CAAA,oBAAoB,GAAG,MAAM,EAAW;QAEzC,IAAA,CAAA,qBAAqB,GAAG,KAAK;AAC7B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;QA2B9B,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AAEtC,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,WAAW,EAAE;AAC5C,gBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;gBACjC,SAAS,CAAC,MAAK;AACX,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAGnB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAC5B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAExB,YAAA,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;AAC5B,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD;AACJ,QAAA,CAAC,CAAC;IACN;8GAnHS,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,22BAPzB,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAO9C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;AACvD,oBAAA,IAAI,EAAE;AACF,wBAAA,kBAAkB,EAAE,yBAAyB;AAC7C,wBAAA,oBAAoB,EAAE,yBAAyB;AAC/C,wBAAA,sBAAsB,EAAE;AAC3B;AACJ,iBAAA;;;AClFD;;;AAGG;AACH,MAAM,eAAe,GAAG,CAAC,KAA+B,KACpD,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAE7D;;AAEG;MAeU,4BAA4B,CAAA;AA0ErC,IAAA,WAAA,GAAA;AAzEiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC;QAEtE,IAAA,CAAA,UAAU,GAAgB,IAAI;QAC9B,IAAA,CAAA,UAAU,GAAG,IAAI;QAEN,IAAA,CAAA,WAAW,GAAG,4BAA4B,EAAE;AAE/D;;;;AAIG;QACM,IAAA,CAAA,EAAE,GAAG,KAAK,CAAqB,SAAS,0EAAI,KAAK,EAAE,IAAI,EAAA,CAAG;AAEnE;;;;;;;AAOG;QACM,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgD,SAAS,mFACjF,SAAS,EAAE,eAAe,EAAA,CAC5B;AAEF;;;;;;AAMG;QACM,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAgD,SAAS,wFACtF,SAAS,EAAE,eAAe,EAAA,CAC5B;QAEO,IAAA,CAAA,MAAM,GAAG,MAAM,CAAgB,IAAI;mFAAC;QACpC,IAAA,CAAA,KAAK,GAAG,MAAM,CAAgB,IAAI;kFAAC;;QAGnC,IAAA,CAAA,YAAY,GAAG,QAAQ,CAC5B,MACI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;yFAC9B;AAED;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAiC,MAAK;AAC5D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,QAAQ;YAE3F,IAAI,OAAO,EAAE;AACT,gBAAA,OAAO,SAAS;YACpB;AAEA,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,aAAa,GAAG,EAAE;QACnE,CAAC;mFAAC;AAEF;;;AAGG;QACK,IAAA,CAAA,cAAc,GAAG,IAAI;AAIzB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAC5F,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC;QAErC,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC5C,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,aAAa,EACb,CAAC,KAAY,KAAI;YACb,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;AACjD,QAAA,CAAC,CACJ;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC3B,YAAA,mBAAmB,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE;AACvB,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AAC/C,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC;AAC/C,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,iBAAiB,EAAE;AAC5B,QAAA,CAAC,CAAC;;;QAIF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC3B,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAClE;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,YAAA,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAChC,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC5E;AACJ,QAAA,CAAC,CAAC;;;QAIF,iBAAiB,CAAC,MAAK;;;AAGnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACvB,IAAI,CAAC,gBAAgB,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEQ,YAAY,GAAA;AAChB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAgB;QAE5D,IAAI,CAAC,MAAM,EAAE;YACT;QACJ;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;IACzD;IAEQ,YAAY,GAAA;AAChB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAgB;QAEnE,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QAClD;IACJ;IAEQ,iBAAiB,GAAA;AACrB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU;QAE9B,IAAI,CAAC,MAAM,EAAE;YACT;QACJ;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AAExC,QAAA,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB;QACJ;AAEA,QAAA,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;AACvC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QAC3B;IACJ;IAEQ,gBAAgB,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC1C,QAAA,IAAI,CAAC,IAAI;YAAE;QAEX,IAAI,CAAC,cAAc,KAAK;AACpB,YAAA,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;AACjD,YAAA,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC;SAC7B;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;;;AAIjC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAE1B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc;;AAGlC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB;YACtE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa;QAChE;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC/B;8GA5MS,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,uCAAA,EAAA,kBAAA,EAAA,uCAAA,EAAA,oBAAA,EAAA,2CAAA,EAAA,0BAAA,EAAA,oEAAA,EAAA,wBAAA,EAAA,kEAAA,EAAA,aAAA,EAAA,UAAA,EAAA,oCAAA,EAAA,SAAA,EAAA,qCAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAdxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACF,wBAAA,MAAM,EAAE,uBAAuB;AAC/B,wBAAA,kBAAkB,EAAE,qCAAqC;AACzD,wBAAA,oBAAoB,EAAE,qCAAqC;AAC3D,wBAAA,sBAAsB,EAAE,yCAAyC;AACjE,wBAAA,4BAA4B,EAAE,gEAAgE;AAC9F,wBAAA,0BAA0B,EAAE,8DAA8D;AAC1F,wBAAA,eAAe,EAAE,UAAU;AAC3B,wBAAA,sCAAsC,EAAE,SAAS;AACjD,wBAAA,uCAAuC,EAAE;AAC5C;AACJ,iBAAA;;;ACrCD;;AAEG;MAaU,8BAA8B,CAAA;AAZ3C,IAAA,WAAA,GAAA;AAaqB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QAEtD,IAAA,CAAA,WAAW,GAAG,4BAA4B,EAAE;AAKlE,IAAA;AAHa,IAAA,WAAW,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACjE;8GAPS,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,wDAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uCAAA,EAAA,oBAAA,EAAA,2CAAA,EAAA,oBAAA,EAAA,+CAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAZ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE;AACF,wBAAA,sBAAsB,EAAE,wDAAwD;AAChF,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,wBAAwB,EAAE,qCAAqC;AAC/D,wBAAA,sBAAsB,EAAE,yCAAyC;AACjE,wBAAA,sBAAsB,EAAE,6CAA6C;AAErE,wBAAA,SAAS,EAAE;AACd;AACJ,iBAAA;;;ACRD,MAAM,QAAQ,GAAG,CAAC,4BAA4B,EAAE,2BAA2B,EAAE,8BAA8B,CAAC;MAM/F,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,OAAA,EAAA,CANf,4BAA4B,EAAE,2BAA2B,EAAE,8BAA8B,CAAA,EAAA,OAAA,EAAA,CAAzF,4BAA4B,EAAE,2BAA2B,EAAE,8BAA8B,CAAA,EAAA,CAAA,CAAA;+GAM9F,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;AACtB,oBAAA,OAAO,EAAE,CAAC,GAAG,QAAQ;AACxB,iBAAA;;;ACdD;;AAEG;;;;"}
1
+ {"version":3,"file":"radix-ng-primitives-collapsible.mjs","sources":["../../../packages/primitives/collapsible/src/collapsible-root.directive.ts","../../../packages/primitives/collapsible/src/collapsible-panel.directive.ts","../../../packages/primitives/collapsible/src/collapsible-trigger.directive.ts","../../../packages/primitives/collapsible/index.ts","../../../packages/primitives/collapsible/radix-ng-primitives-collapsible.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n input,\n model,\n ModelSignal,\n output,\n signal,\n Signal,\n untracked,\n WritableSignal\n} from '@angular/core';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n injectId,\n RdxCancelableChangeEventDetails,\n RdxTransitionStatus,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\n\nexport type RdxCollapsibleState = 'open' | 'closed';\nexport type RdxCollapsibleOpenChangeReason = 'trigger-press' | 'none';\nexport type RdxCollapsibleOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxCollapsibleOpenChangeReason>;\nexport interface RdxCollapsibleOpenChangeEvent {\n open: boolean;\n eventDetails: RdxCollapsibleOpenChangeEventDetails;\n}\n\nexport interface CollapsibleRootContext {\n /** Stable id linking the trigger's `aria-controls` to the panel. */\n panelId: Signal<string>;\n /** Writable so composing primitives (Accordion) can drive the state. */\n open: ModelSignal<boolean>;\n disabled: Signal<boolean>;\n /** Open/close transition phase, for `data-starting-style` / `data-ending-style`. */\n transitionStatus: Signal<RdxTransitionStatus>;\n /** `true` while the panel should stay rendered: open, or running its exit transition. */\n mounted: Signal<boolean>;\n /**\n * Composition fallbacks. The standalone Panel inputs write here, and Accordion writes here\n * directly; the Panel reads these so both wiring paths converge on a single source of truth.\n */\n keepMounted: WritableSignal<boolean>;\n hiddenUntilFound: WritableSignal<boolean>;\n toggle: (event: Event, trigger?: HTMLElement) => void;\n setOpen: (open: boolean, reason: RdxCollapsibleOpenChangeReason, event: Event, trigger?: HTMLElement) => boolean;\n setPanelIdState: (id: string | undefined) => void;\n /** Registers the panel element whose transition duration gates the close completion. */\n registerTransitionElement: (element: HTMLElement) => () => void;\n}\n\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext] = createContext<CollapsibleRootContext>(\n 'CollapsibleRootContext',\n 'components/collapsible'\n);\n\nconst rootContext = (): CollapsibleRootContext => {\n const instance = inject(RdxCollapsibleRootDirective);\n\n return {\n panelId: instance.resolvedPanelId,\n open: instance.open,\n disabled: instance.disabled,\n transitionStatus: instance.transitionStatus,\n mounted: instance.mounted,\n keepMounted: instance.keepMountedContext,\n hiddenUntilFound: instance.hiddenUntilFoundContext,\n setOpen: (open, reason, event, trigger) => instance.setOpen(open, reason, event, trigger),\n setPanelIdState: (id) => instance.setPanelIdState(id),\n registerTransitionElement: (element) => instance.registerTransitionElement(element),\n toggle: (event, trigger) => {\n if (instance.disabled()) {\n return;\n }\n\n instance.setOpen(!instance.open(), 'trigger-press', event, trigger);\n }\n };\n};\n\n/**\n * Groups all parts of the collapsible.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxCollapsibleRoot]',\n exportAs: 'rdxCollapsibleRoot',\n providers: [provideCollapsibleRootContext(rootContext)],\n host: {\n '[attr.data-open]': 'open() ? \"\" : undefined',\n '[attr.data-closed]': 'open() ? undefined : \"\"',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n})\nexport class RdxCollapsibleRootDirective {\n private readonly transition = useTransitionStatus((open) => this.onOpenChangeComplete.emit(open));\n\n private readonly generatedPanelId = injectId('rdx-collapsible-panel-');\n private readonly panelIdState = signal<string | undefined>(undefined);\n\n /** Reactive open/close transition phase (`'starting'` | `'ending'` | `undefined`). */\n readonly transitionStatus = this.transition.status;\n\n /** Registers the panel element whose transition duration gates the close completion. */\n readonly registerTransitionElement = this.transition.registerElement;\n\n /**\n * The controlled open state of the collapsible.\n * `true` - expanded, `false` - collapsed.\n *\n * @group Props\n * @defaultValue false\n */\n readonly open = model<boolean>(false);\n\n /**\n * The open state of the collapsible when it is initially rendered.\n * Use when you do not need to control its open state.\n *\n * @group Props\n * @defaultValue false\n */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the component should ignore user interaction.\n *\n * @group Props\n * @defaultValue false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Stable id linking the trigger's `aria-controls` to the panel. */\n readonly panelId = input<string | undefined>(undefined);\n\n /** Stable id linking the trigger's `aria-controls` to the panel. */\n readonly resolvedPanelId = computed(() => this.panelIdState() ?? this.panelId() ?? this.generatedPanelId);\n\n /** Composition fallbacks (see {@link CollapsibleRootContext}). Default `false`. */\n readonly keepMountedContext = signal(false);\n readonly hiddenUntilFoundContext = signal(false);\n\n /** `true` while the panel must stay rendered: open, or mid exit transition. */\n readonly mounted = computed(() => this.open() || this.transitionStatus() === 'ending');\n\n /**\n * Event handler called when the open state of the collapsible changes.\n *\n * @group Emits\n */\n readonly onOpenChange = output<RdxCollapsibleOpenChangeEvent>();\n\n /**\n * Event handler called after the open/close transition has finished.\n *\n * @group Emits\n */\n readonly onOpenChangeComplete = output<boolean>();\n\n private hasAppliedDefaultOpen = false;\n private previousOpen = this.open();\n\n setPanelIdState(id: string | undefined): void {\n this.panelIdState.set(id);\n }\n\n setOpen(nextOpen: boolean, reason: RdxCollapsibleOpenChangeReason, event: Event, trigger?: HTMLElement): boolean {\n if (nextOpen === this.open()) {\n return true;\n }\n\n const { eventDetails } = createCancelableChangeEventDetails(reason, event, trigger);\n\n this.onOpenChange.emit({ open: nextOpen, eventDetails });\n\n if (eventDetails.isCanceled()) {\n return false;\n }\n\n untracked(() => {\n this.open.set(nextOpen);\n });\n\n return true;\n }\n\n constructor() {\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n untracked(() => {\n this.open.set(true);\n // Treat an initially-open collapsible as settled so it doesn't play an\n // enter transition on first render.\n this.previousOpen = true;\n });\n }\n });\n\n effect(() => {\n const open = this.open();\n\n if (open !== this.previousOpen) {\n this.previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n }\n}\n","import {\n afterRenderEffect,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n untracked\n} from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectCollapsibleRootContext } from './collapsible-root.directive';\n\n/**\n * Coerces a collapsible boolean input that distinguishes \"not set\" (`undefined`) from `false`,\n * so the Panel only overrides the shared context value when the consumer passes the input.\n */\nconst optionalBoolean = (value: BooleanInput | undefined): boolean | undefined =>\n value === undefined ? undefined : booleanAttribute(value);\n\n/**\n * A panel with the collapsible contents.\n */\n@Directive({\n selector: '[rdxCollapsiblePanel]',\n host: {\n '[id]': 'rootContext.panelId()',\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 '[attr.hidden]': 'hidden()',\n '[style.--collapsible-panel-width.px]': 'width()',\n '[style.--collapsible-panel-height.px]': 'height()'\n }\n})\nexport class RdxCollapsiblePanelDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly marker = this.renderer.createComment('rdx-collapsible-panel');\n\n private parentNode: Node | null = null;\n private isAttached = true;\n\n protected readonly rootContext = injectCollapsibleRootContext();\n\n /**\n * Optional explicit panel id. When set, the trigger's `aria-controls` points to this id.\n *\n * @group Props\n */\n readonly id = input<string | undefined>(undefined, { alias: 'id' });\n\n /**\n * Whether to keep the element in the DOM while the panel is closed.\n * When `true`, the closed panel keeps its element and receives the `hidden` attribute once the\n * close transition finishes.\n *\n * @group Props\n * @defaultValue false\n */\n readonly keepMounted = input<boolean | undefined, BooleanInput | undefined>(undefined, {\n transform: optionalBoolean\n });\n\n /**\n * Allows the browser's built-in page search to find and expand the panel contents.\n * When `true`, the closed panel uses `hidden=\"until-found\"` instead of plain `hidden`.\n *\n * @group Props\n * @defaultValue false\n */\n readonly hiddenUntilFound = input<boolean | undefined, BooleanInput | undefined>(undefined, {\n transform: optionalBoolean\n });\n\n readonly height = signal<number | null>(null);\n readonly width = signal<number | null>(null);\n\n /** Mirrors Base UI's `shouldRender`: hidden panels unmount unless kept for search/measurement. */\n readonly shouldRender = computed(\n () =>\n this.rootContext.keepMounted() ||\n this.rootContext.hiddenUntilFound() ||\n this.rootContext.mounted() ||\n this.rootContext.open()\n );\n\n /**\n * The `hidden` attribute value. The panel is shown while open or while its exit transition runs.\n * A kept-mounted panel remains in the DOM but is still hidden while closed.\n */\n readonly hidden = computed<'' | 'until-found' | undefined>(() => {\n const visible = this.rootContext.open() || this.rootContext.transitionStatus() === 'ending';\n\n if (visible) {\n return undefined;\n }\n\n return this.rootContext.hiddenUntilFound() ? 'until-found' : '';\n });\n\n /**\n * The first measurement (the initial mount) must not re-enable animations, so an element that\n * mounts already open renders at its final size without playing the open animation.\n */\n private isFirstMeasure = true;\n private originalStyles?: { transitionDuration: string; animationName: string };\n\n constructor() {\n const unregister = this.rootContext.registerTransitionElement(this.elementRef.nativeElement);\n this.destroyRef.onDestroy(unregister);\n\n this.insertMarker();\n\n const unlistenBeforeMatch = this.renderer.listen(\n this.elementRef.nativeElement,\n 'beforematch',\n (event: Event) => {\n this.rootContext.setOpen(true, 'none', event);\n }\n );\n\n this.destroyRef.onDestroy(() => {\n unlistenBeforeMatch();\n this.removeMarker();\n });\n\n effect(() => {\n this.rootContext.setPanelIdState(this.id());\n });\n\n this.destroyRef.onDestroy(() => {\n this.rootContext.setPanelIdState(undefined);\n });\n\n effect(() => {\n this.syncRenderedState();\n });\n\n // Forward the Panel inputs into the shared context, but only when the consumer actually\n // sets them — so Accordion's context writes are never clobbered by the Panel defaults.\n effect(() => {\n const keepMounted = this.keepMounted();\n if (keepMounted !== undefined) {\n untracked(() => this.rootContext.keepMounted.set(keepMounted));\n }\n });\n\n effect(() => {\n const hiddenUntilFound = this.hiddenUntilFound();\n if (hiddenUntilFound !== undefined) {\n untracked(() => this.rootContext.hiddenUntilFound.set(hiddenUntilFound));\n }\n });\n\n // `afterRenderEffect` runs after the DOM is committed (but before paint) with the settled\n // `open` state — no `requestAnimationFrame` race — and is a no-op during SSR.\n afterRenderEffect(() => {\n // Re-measure whenever the open state flips; the panel is visible at that point (during\n // an exit it is kept rendered by the `ending` transition phase).\n this.rootContext.open();\n this.updateDimensions();\n });\n }\n\n private insertMarker(): void {\n const host = this.elementRef.nativeElement;\n const parent = this.renderer.parentNode(host) as Node | null;\n\n if (!parent) {\n return;\n }\n\n this.parentNode = parent;\n this.renderer.insertBefore(parent, this.marker, host);\n }\n\n private removeMarker(): void {\n const parent = this.renderer.parentNode(this.marker) as Node | null;\n\n if (parent) {\n this.renderer.removeChild(parent, this.marker);\n }\n }\n\n private syncRenderedState(): void {\n const parent = this.parentNode;\n\n if (!parent) {\n return;\n }\n\n const host = this.elementRef.nativeElement;\n const shouldRender = this.shouldRender();\n\n if (shouldRender && !this.isAttached) {\n this.renderer.insertBefore(parent, host, this.renderer.nextSibling(this.marker));\n this.isAttached = true;\n return;\n }\n\n if (!shouldRender && this.isAttached) {\n this.renderer.removeChild(parent, host);\n this.isAttached = false;\n }\n }\n\n private updateDimensions(): void {\n const node = this.elementRef.nativeElement;\n if (!node) return;\n\n this.originalStyles ??= {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n };\n\n // Block any animation/transition so we can measure the element at its natural size.\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n // Let the element take its natural height while measuring, so a `height` bound to the very\n // variable we are computing (the Base UI collapse pattern) does not feed back into itself.\n const previousHeight = node.style.height;\n node.style.height = 'auto';\n\n const rect = node.getBoundingClientRect();\n this.height.set(rect.height);\n this.width.set(rect.width);\n\n node.style.height = previousHeight;\n\n // Re-enable the original animation, unless this is the very first (mount) measurement.\n if (!this.isFirstMeasure) {\n node.style.transitionDuration = this.originalStyles.transitionDuration;\n node.style.animationName = this.originalStyles.animationName;\n }\n\n this.isFirstMeasure = false;\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { injectCollapsibleRootContext } from './collapsible-root.directive';\n\n/**\n * A button that opens and closes the collapsible panel.\n */\n@Directive({\n selector: '[rdxCollapsibleTrigger]',\n host: {\n '[attr.aria-controls]': 'rootContext.open() ? rootContext.panelId() : undefined',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.data-panel-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.aria-disabled]': 'rootContext.disabled() ? \"true\" : undefined',\n\n '(click)': 'handleClick($event)'\n }\n})\nexport class RdxCollapsibleTriggerDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly rootContext = injectCollapsibleRootContext();\n\n protected handleClick(event: MouseEvent): void {\n this.rootContext.toggle(event, this.elementRef.nativeElement);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxCollapsiblePanelDirective } from './src/collapsible-panel.directive';\nimport { RdxCollapsibleRootDirective } from './src/collapsible-root.directive';\nimport { RdxCollapsibleTriggerDirective } from './src/collapsible-trigger.directive';\n\nexport * from './src/collapsible-panel.directive';\nexport * from './src/collapsible-root.directive';\nexport * from './src/collapsible-trigger.directive';\n\nconst _imports = [RdxCollapsiblePanelDirective, RdxCollapsibleRootDirective, RdxCollapsibleTriggerDirective];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxCollapsibleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}