@radix-ng/primitives 0.50.0 → 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/collection/README.md +1 -0
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +134 -66
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +224 -132
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-arrow.mjs +26 -10
  7. package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +6 -6
  9. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-avatar.mjs +68 -75
  11. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-button.mjs +123 -0
  13. package/fesm2022/radix-ng-primitives-button.mjs.map +1 -0
  14. package/fesm2022/radix-ng-primitives-calendar.mjs +104 -103
  15. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-checkbox.mjs +414 -80
  17. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-collapsible.mjs +193 -92
  19. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-collection.mjs +72 -0
  21. package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -0
  22. package/fesm2022/radix-ng-primitives-config.mjs +5 -5
  23. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-context-menu.mjs +143 -427
  25. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-core.mjs +757 -757
  27. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-cropper.mjs +55 -53
  29. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-date-field.mjs +93 -86
  31. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-dialog.mjs +658 -330
  33. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +98 -76
  35. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-drawer.mjs +1059 -0
  37. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -0
  38. package/fesm2022/radix-ng-primitives-editable.mjs +20 -20
  39. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-field.mjs +363 -0
  41. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -0
  42. package/fesm2022/radix-ng-primitives-fieldset.mjs +79 -0
  43. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -0
  44. package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
  45. package/fesm2022/radix-ng-primitives-focus-guards.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-focus-scope.mjs +29 -14
  47. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-input.mjs +172 -0
  49. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -0
  50. package/fesm2022/radix-ng-primitives-label.mjs +11 -11
  51. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-menu.mjs +1484 -353
  53. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-menubar.mjs +290 -162
  55. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-meter.mjs +271 -0
  57. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -0
  58. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1060 -1553
  59. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-number-field.mjs +1102 -366
  61. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-pagination.mjs +51 -51
  63. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-popover.mjs +980 -995
  65. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-popper.mjs +137 -82
  67. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-portal.mjs +40 -16
  69. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-presence.mjs +134 -246
  71. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-preview-card.mjs +997 -0
  73. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -0
  74. package/fesm2022/radix-ng-primitives-progress.mjs +231 -92
  75. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  76. package/fesm2022/radix-ng-primitives-radio.mjs +211 -70
  77. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  78. package/fesm2022/radix-ng-primitives-roving-focus.mjs +127 -77
  79. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-select.mjs +791 -511
  81. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-separator.mjs +16 -45
  83. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-slider.mjs +976 -720
  85. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-stepper.mjs +69 -71
  87. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-switch.mjs +128 -124
  89. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-tabs.mjs +388 -115
  91. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-time-field.mjs +111 -117
  93. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-toggle-group.mjs +122 -248
  95. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  96. package/fesm2022/radix-ng-primitives-toggle.mjs +99 -62
  97. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  98. package/fesm2022/radix-ng-primitives-toolbar.mjs +307 -94
  99. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  100. package/fesm2022/radix-ng-primitives-tooltip.mjs +690 -1079
  101. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  102. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +46 -87
  103. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  104. package/fesm2022/radix-ng-primitives.mjs.map +1 -1
  105. package/meter/README.md +3 -0
  106. package/navigation-menu/README.md +2 -1
  107. package/package.json +85 -63
  108. package/portal/README.md +2 -0
  109. package/preview-card/README.md +3 -0
  110. package/schematics/collection.json +1 -0
  111. package/schematics/ng-add/index.d.ts +3 -2
  112. package/schematics/ng-add/index.js +62 -31
  113. package/schematics/ng-add/index.js.map +1 -1
  114. package/schematics/ng-add/package-config.d.ts +4 -2
  115. package/schematics/ng-add/package-config.js +10 -2
  116. package/schematics/ng-add/package-config.js.map +1 -1
  117. package/schematics/ng-add/schema.d.ts +3 -0
  118. package/schematics/ng-add/schema.js +3 -0
  119. package/schematics/ng-add/schema.js.map +1 -0
  120. package/schematics/ng-add/schema.json +14 -0
  121. package/select/README.md +2 -0
  122. package/{accordion/index.d.ts → types/radix-ng-primitives-accordion.d.ts} +102 -67
  123. package/types/radix-ng-primitives-alert-dialog.d.ts +114 -0
  124. package/{arrow/index.d.ts → types/radix-ng-primitives-arrow.d.ts} +1 -1
  125. package/{aspect-ratio/index.d.ts → types/radix-ng-primitives-aspect-ratio.d.ts} +1 -1
  126. package/{avatar/index.d.ts → types/radix-ng-primitives-avatar.d.ts} +7 -11
  127. package/types/radix-ng-primitives-button.d.ts +73 -0
  128. package/{calendar/index.d.ts → types/radix-ng-primitives-calendar.d.ts} +2 -3
  129. package/types/radix-ng-primitives-checkbox.d.ts +337 -0
  130. package/types/radix-ng-primitives-collapsible.d.ts +159 -0
  131. package/types/radix-ng-primitives-collection.d.ts +44 -0
  132. package/{config/index.d.ts → types/radix-ng-primitives-config.d.ts} +1 -1
  133. package/types/radix-ng-primitives-context-menu.d.ts +73 -0
  134. package/{core/index.d.ts → types/radix-ng-primitives-core.d.ts} +311 -236
  135. package/{cropper/index.d.ts → types/radix-ng-primitives-cropper.d.ts} +6 -5
  136. package/{date-field/index.d.ts → types/radix-ng-primitives-date-field.d.ts} +42 -27
  137. package/types/radix-ng-primitives-dialog.d.ts +323 -0
  138. package/{dismissable-layer/index.d.ts → types/radix-ng-primitives-dismissable-layer.d.ts} +15 -7
  139. package/types/radix-ng-primitives-drawer.d.ts +448 -0
  140. package/{editable/index.d.ts → types/radix-ng-primitives-editable.d.ts} +1 -1
  141. package/types/radix-ng-primitives-field.d.ts +373 -0
  142. package/types/radix-ng-primitives-fieldset.d.ts +48 -0
  143. package/{focus-scope/index.d.ts → types/radix-ng-primitives-focus-scope.d.ts} +13 -5
  144. package/types/radix-ng-primitives-input.d.ts +87 -0
  145. package/{label/index.d.ts → types/radix-ng-primitives-label.d.ts} +0 -1
  146. package/types/radix-ng-primitives-menu.d.ts +612 -0
  147. package/types/radix-ng-primitives-menubar.d.ts +66 -0
  148. package/types/radix-ng-primitives-meter.d.ts +193 -0
  149. package/types/radix-ng-primitives-navigation-menu.d.ts +488 -0
  150. package/types/radix-ng-primitives-number-field.d.ts +464 -0
  151. package/{pagination/index.d.ts → types/radix-ng-primitives-pagination.d.ts} +2 -2
  152. package/types/radix-ng-primitives-popover.d.ts +416 -0
  153. package/{popper/index.d.ts → types/radix-ng-primitives-popper.d.ts} +50 -9
  154. package/types/radix-ng-primitives-portal.d.ts +30 -0
  155. package/types/radix-ng-primitives-presence.d.ts +55 -0
  156. package/types/radix-ng-primitives-preview-card.d.ts +359 -0
  157. package/types/radix-ng-primitives-progress.d.ts +206 -0
  158. package/{radio/index.d.ts → types/radix-ng-primitives-radio.d.ts} +56 -26
  159. package/{roving-focus/index.d.ts → types/radix-ng-primitives-roving-focus.d.ts} +38 -27
  160. package/types/radix-ng-primitives-select.d.ts +512 -0
  161. package/types/radix-ng-primitives-separator.d.ts +38 -0
  162. package/types/radix-ng-primitives-slider.d.ts +377 -0
  163. package/{stepper/index.d.ts → types/radix-ng-primitives-stepper.d.ts} +21 -22
  164. package/types/radix-ng-primitives-switch.d.ts +121 -0
  165. package/types/radix-ng-primitives-tabs.d.ts +247 -0
  166. package/{time-field/index.d.ts → types/radix-ng-primitives-time-field.d.ts} +46 -31
  167. package/types/radix-ng-primitives-toggle-group.d.ts +116 -0
  168. package/types/radix-ng-primitives-toggle.d.ts +65 -0
  169. package/types/radix-ng-primitives-toolbar.d.ts +180 -0
  170. package/types/radix-ng-primitives-tooltip.d.ts +395 -0
  171. package/{visually-hidden/index.d.ts → types/radix-ng-primitives-visually-hidden.d.ts} +19 -19
  172. package/alert-dialog/index.d.ts +0 -57
  173. package/checkbox/index.d.ts +0 -164
  174. package/collapsible/index.d.ts +0 -85
  175. package/context-menu/index.d.ts +0 -129
  176. package/dialog/index.d.ts +0 -205
  177. package/dropdown-menu/README.md +0 -1
  178. package/dropdown-menu/index.d.ts +0 -171
  179. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -583
  180. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
  181. package/fesm2022/radix-ng-primitives-hover-card.mjs +0 -1246
  182. package/fesm2022/radix-ng-primitives-hover-card.mjs.map +0 -1
  183. package/fesm2022/radix-ng-primitives-tooltip2.mjs +0 -740
  184. package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +0 -1
  185. package/hover-card/README.md +0 -3
  186. package/hover-card/index.d.ts +0 -472
  187. package/menu/index.d.ts +0 -139
  188. package/menubar/index.d.ts +0 -56
  189. package/navigation-menu/index.d.ts +0 -405
  190. package/number-field/index.d.ts +0 -203
  191. package/popover/index.d.ts +0 -403
  192. package/portal/index.d.ts +0 -22
  193. package/presence/index.d.ts +0 -103
  194. package/progress/index.d.ts +0 -79
  195. package/select/index.d.ts +0 -214
  196. package/separator/index.d.ts +0 -63
  197. package/slider/index.d.ts +0 -263
  198. package/switch/index.d.ts +0 -105
  199. package/tabs/index.d.ts +0 -112
  200. package/toggle/index.d.ts +0 -75
  201. package/toggle-group/index.d.ts +0 -194
  202. package/toolbar/index.d.ts +0 -55
  203. package/tooltip/index.d.ts +0 -433
  204. package/tooltip2/README.md +0 -3
  205. package/tooltip2/index.d.ts +0 -325
  206. /package/{focus-guards/index.d.ts → types/radix-ng-primitives-focus-guards.d.ts} +0 -0
  207. /package/{index.d.ts → types/radix-ng-primitives.d.ts} +0 -0
@@ -1,19 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, untracked, model, input, booleanAttribute, linkedSignal, computed, output, Directive, ElementRef, PLATFORM_ID, signal, effect, afterNextRender, NgModule } from '@angular/core';
2
+ import { inject, untracked, model, input, booleanAttribute, signal, computed, output, effect, Directive, ElementRef, DestroyRef, afterRenderEffect, NgModule } from '@angular/core';
3
3
  import * as i1 from '@radix-ng/primitives/presence';
4
4
  import { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';
5
- import { createContext } from '@radix-ng/primitives/core';
6
- import { isPlatformBrowser } from '@angular/common';
5
+ import { createContext, useTransitionStatus, injectId } from '@radix-ng/primitives/core';
7
6
 
8
7
  const [injectCollapsibleRootContext, provideCollapsibleRootContext] = createContext('CollapsibleRootContext');
9
8
  const rootContext = () => {
10
9
  const instance = inject(RdxCollapsibleRootDirective);
11
10
  return {
12
- contentId: instance.contentId,
13
- disabled: instance.isDisabled,
11
+ panelId: instance.panelId,
14
12
  open: instance.open,
13
+ disabled: instance.disabled,
14
+ transitionStatus: instance.transitionStatus,
15
+ mounted: instance.mounted,
16
+ keepMounted: instance.keepMountedContext,
17
+ hiddenUntilFound: instance.hiddenUntilFoundContext,
18
+ registerTransitionElement: (element) => instance.registerTransitionElement(element),
15
19
  toggle: () => {
16
- if (instance.isDisabled()) {
20
+ if (instance.disabled()) {
17
21
  return;
18
22
  }
19
23
  untracked(() => {
@@ -24,65 +28,115 @@ const rootContext = () => {
24
28
  };
25
29
  };
26
30
  /**
31
+ * Groups all parts of the collapsible.
32
+ *
27
33
  * @group Components
28
34
  */
29
35
  class RdxCollapsibleRootDirective {
30
36
  constructor() {
37
+ this.transition = useTransitionStatus((open) => this.onOpenChangeComplete.emit(open));
38
+ /** Reactive open/close transition phase (`'starting'` | `'ending'` | `undefined`). */
39
+ this.transitionStatus = this.transition.status;
40
+ /** Registers the panel element whose transition duration gates the close completion. */
41
+ this.registerTransitionElement = this.transition.registerElement;
31
42
  /**
32
43
  * The controlled open state of the collapsible.
33
- * Sets the state of the directive. `true` - expanded, `false` - collapsed
44
+ * `true` - expanded, `false` - collapsed.
34
45
  *
35
46
  * @group Props
36
47
  * @defaultValue false
37
48
  */
38
- this.open = model(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
39
- this.contentId = input('', ...(ngDevMode ? [{ debugName: "contentId" }] : []));
49
+ this.open = model(false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
40
50
  /**
41
- * Determines whether a directive is available for interaction.
42
- * When true, prevents the user from interacting with the collapsible.
51
+ * The open state of the collapsible when it is initially rendered.
52
+ * Use when you do not need to control its open state.
43
53
  *
44
54
  * @group Props
55
+ * @defaultValue false
45
56
  */
46
- this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
47
- this._disabled = linkedSignal(this.disabled, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
48
- this.isDisabled = this._disabled.asReadonly();
49
- this.isOpen = computed(() => this.open(), ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
57
+ this.defaultOpen = input(false, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
58
+ /**
59
+ * Whether the component should ignore user interaction.
60
+ *
61
+ * @group Props
62
+ * @defaultValue false
63
+ */
64
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
65
+ /** Stable id linking the trigger's `aria-controls` to the panel. */
66
+ this.panelId = input(injectId('rdx-collapsible-panel-'), ...(ngDevMode ? [{ debugName: "panelId" }] : /* istanbul ignore next */ []));
67
+ /** Composition fallbacks (see {@link CollapsibleRootContext}). Default `false`. */
68
+ this.keepMountedContext = signal(false, ...(ngDevMode ? [{ debugName: "keepMountedContext" }] : /* istanbul ignore next */ []));
69
+ this.hiddenUntilFoundContext = signal(false, ...(ngDevMode ? [{ debugName: "hiddenUntilFoundContext" }] : /* istanbul ignore next */ []));
70
+ /** `true` while the panel must stay rendered: open, or mid exit transition. */
71
+ this.mounted = computed(() => this.open() || this.transitionStatus() === 'ending', ...(ngDevMode ? [{ debugName: "mounted" }] : /* istanbul ignore next */ []));
50
72
  /**
51
- * Emitted with new value when directive state changed.
52
73
  * Event handler called when the open state of the collapsible changes.
53
74
  *
54
75
  * @group Emits
55
76
  */
56
77
  this.onOpenChange = output();
78
+ /**
79
+ * Event handler called after the open/close transition has finished.
80
+ *
81
+ * @group Emits
82
+ */
83
+ this.onOpenChangeComplete = output();
84
+ this.hasAppliedDefaultOpen = false;
85
+ this.previousOpen = this.open();
86
+ effect(() => {
87
+ const defaultOpen = this.defaultOpen();
88
+ if (!this.hasAppliedDefaultOpen && defaultOpen) {
89
+ this.hasAppliedDefaultOpen = true;
90
+ untracked(() => {
91
+ this.open.set(true);
92
+ // Treat an initially-open collapsible as settled so it doesn't play an
93
+ // enter transition on first render.
94
+ this.previousOpen = true;
95
+ });
96
+ }
97
+ });
98
+ effect(() => {
99
+ const open = this.open();
100
+ if (open !== this.previousOpen) {
101
+ this.previousOpen = open;
102
+ untracked(() => this.transition.start(open));
103
+ }
104
+ });
57
105
  }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
59
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: RdxCollapsibleRootDirective, isStandalone: true, selector: "[rdxCollapsibleRoot]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, contentId: { classPropertyName: "contentId", publicName: "contentId", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", onOpenChange: "onOpenChange" }, host: { properties: { "attr.data-state": "open() ? \"open\" : \"closed\"", "attr.data-disabled": "disabled() ? \"\" : undefined" } }, providers: [provideCollapsibleRootContext(rootContext)], exportAs: ["rdxCollapsibleRoot"], ngImport: i0 }); }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsibleRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
107
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxCollapsibleRootDirective, isStandalone: true, selector: "[rdxCollapsibleRoot]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, panelId: { classPropertyName: "panelId", publicName: "panelId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", onOpenChange: "onOpenChange", onOpenChangeComplete: "onOpenChangeComplete" }, host: { properties: { "attr.data-open": "open() ? \"\" : undefined", "attr.data-closed": "open() ? undefined : \"\"", "attr.data-disabled": "disabled() ? \"\" : undefined" } }, providers: [provideCollapsibleRootContext(rootContext)], exportAs: ["rdxCollapsibleRoot"], ngImport: i0 }); }
60
108
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleRootDirective, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsibleRootDirective, decorators: [{
62
110
  type: Directive,
63
111
  args: [{
64
112
  selector: '[rdxCollapsibleRoot]',
65
113
  exportAs: 'rdxCollapsibleRoot',
66
114
  providers: [provideCollapsibleRootContext(rootContext)],
67
115
  host: {
68
- '[attr.data-state]': 'open() ? "open" : "closed"',
116
+ '[attr.data-open]': 'open() ? "" : undefined',
117
+ '[attr.data-closed]': 'open() ? undefined : ""',
69
118
  '[attr.data-disabled]': 'disabled() ? "" : undefined'
70
119
  }
71
120
  }]
72
- }] });
121
+ }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], panelId: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelId", required: false }] }], onOpenChange: [{ type: i0.Output, args: ["onOpenChange"] }], onOpenChangeComplete: [{ type: i0.Output, args: ["onOpenChangeComplete"] }] } });
73
122
 
74
- class RdxCollapsibleContentPresenceDirective {
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleContentPresenceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
76
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: RdxCollapsibleContentPresenceDirective, isStandalone: true, selector: "ng-template[rdxCollapsibleContentPresence]", providers: [
123
+ /**
124
+ * Structural directive that mounts the collapsible panel contents only while open, unmounting them
125
+ * once the exit animation finishes. Opt into this when the closed contents should leave the DOM;
126
+ * otherwise apply `rdxCollapsiblePanel` directly (optionally with `keepMounted`).
127
+ */
128
+ class RdxCollapsiblePanelPresenceDirective {
129
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsiblePanelPresenceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
130
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxCollapsiblePanelPresenceDirective, isStandalone: true, selector: "ng-template[rdxCollapsiblePanelPresence]", providers: [
77
131
  provideRdxPresenceContext(() => ({
78
132
  present: injectCollapsibleRootContext().open
79
133
  }))
80
134
  ], hostDirectives: [{ directive: i1.RdxPresenceDirective }], ngImport: i0 }); }
81
135
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleContentPresenceDirective, decorators: [{
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsiblePanelPresenceDirective, decorators: [{
83
137
  type: Directive,
84
138
  args: [{
85
- selector: 'ng-template[rdxCollapsibleContentPresence]',
139
+ selector: 'ng-template[rdxCollapsiblePanelPresence]',
86
140
  providers: [
87
141
  provideRdxPresenceContext(() => ({
88
142
  present: injectCollapsibleRootContext().open
@@ -92,98 +146,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
92
146
  }]
93
147
  }] });
94
148
 
95
- class RdxCollapsibleContentDirective {
149
+ /**
150
+ * Coerces a collapsible boolean input that distinguishes "not set" (`undefined`) from `false`,
151
+ * so the Panel only overrides the shared context value when the consumer passes the input.
152
+ */
153
+ const optionalBoolean = (value) => value === undefined ? undefined : booleanAttribute(value);
154
+ /**
155
+ * A panel with the collapsible contents.
156
+ */
157
+ class RdxCollapsiblePanelDirective {
96
158
  constructor() {
97
159
  this.elementRef = inject(ElementRef);
98
- this.platformId = inject(PLATFORM_ID);
99
160
  this.rootContext = injectCollapsibleRootContext();
100
- this.isOpen = computed(() => this.rootContext.open(), ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
101
- this.height = signal(null, ...(ngDevMode ? [{ debugName: "height" }] : []));
102
- this.width = signal(null, ...(ngDevMode ? [{ debugName: "width" }] : []));
103
- this.shouldHide = signal(true, ...(ngDevMode ? [{ debugName: "shouldHide" }] : []));
104
- this.isMountAnimationPrevented = signal(true, ...(ngDevMode ? [{ debugName: "isMountAnimationPrevented" }] : []));
105
- this.currentStyle = signal(null, ...(ngDevMode ? [{ debugName: "currentStyle" }] : []));
106
- this.firstRender = true;
161
+ /**
162
+ * Whether to keep the element in the DOM while the panel is closed.
163
+ * When `true`, the closed panel keeps its element (no `hidden` attribute) so the consumer's
164
+ * `data-closed` CSS is responsible for visually collapsing it.
165
+ *
166
+ * @group Props
167
+ * @defaultValue false
168
+ */
169
+ this.keepMounted = input(undefined, { ...(ngDevMode ? { debugName: "keepMounted" } : /* istanbul ignore next */ {}), transform: optionalBoolean });
170
+ /**
171
+ * Allows the browser's built-in page search to find and expand the panel contents.
172
+ * When `true`, the closed panel uses `hidden="until-found"` instead of plain `hidden`.
173
+ *
174
+ * @group Props
175
+ * @defaultValue false
176
+ */
177
+ this.hiddenUntilFound = input(undefined, { ...(ngDevMode ? { debugName: "hiddenUntilFound" } : /* istanbul ignore next */ {}), transform: optionalBoolean });
178
+ this.height = signal(null, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
179
+ this.width = signal(null, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
180
+ /**
181
+ * The `hidden` attribute value. The panel is shown while open or while its exit transition runs;
182
+ * a kept-mounted panel stays visible (the consumer collapses it via CSS); otherwise the closed
183
+ * panel is hidden — with `until-found` when find-in-page support is requested.
184
+ */
185
+ this.hidden = computed(() => {
186
+ const visible = this.rootContext.open() || this.rootContext.transitionStatus() === 'ending';
187
+ if (visible || this.rootContext.keepMounted()) {
188
+ return undefined;
189
+ }
190
+ return this.rootContext.hiddenUntilFound() ? 'until-found' : '';
191
+ }, ...(ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []));
192
+ /**
193
+ * The first measurement (the initial mount) must not re-enable animations, so an element that
194
+ * mounts already open renders at its final size without playing the open animation.
195
+ */
196
+ this.isFirstMeasure = true;
197
+ const unregister = this.rootContext.registerTransitionElement(this.elementRef.nativeElement);
198
+ inject(DestroyRef).onDestroy(unregister);
199
+ // Forward the Panel inputs into the shared context, but only when the consumer actually
200
+ // sets them — so Accordion's context writes are never clobbered by the Panel defaults.
107
201
  effect(() => {
108
- const isOpen = this.isOpen();
109
- if (!isPlatformBrowser(this.platformId)) {
110
- return;
202
+ const keepMounted = this.keepMounted();
203
+ if (keepMounted !== undefined) {
204
+ untracked(() => this.rootContext.keepMounted.set(keepMounted));
111
205
  }
112
- requestAnimationFrame(() => {
113
- this.updateDimensions(isOpen);
114
- });
115
206
  });
116
- afterNextRender(() => {
117
- requestAnimationFrame(() => {
118
- this.isMountAnimationPrevented.set(false);
119
- });
207
+ effect(() => {
208
+ const hiddenUntilFound = this.hiddenUntilFound();
209
+ if (hiddenUntilFound !== undefined) {
210
+ untracked(() => this.rootContext.hiddenUntilFound.set(hiddenUntilFound));
211
+ }
212
+ });
213
+ // `afterRenderEffect` runs after the DOM is committed (but before paint) with the settled
214
+ // `open` state — no `requestAnimationFrame` race — and is a no-op during SSR.
215
+ afterRenderEffect(() => {
216
+ // Re-measure whenever the open state flips; the panel is visible at that point (during
217
+ // an exit it is kept rendered by the `ending` transition phase).
218
+ this.rootContext.open();
219
+ this.updateDimensions();
120
220
  });
121
221
  }
122
- onAnimationEnd() {
123
- if (!this.isOpen()) {
124
- this.shouldHide.set(true);
125
- }
126
- }
127
- async updateDimensions(isOpen) {
222
+ updateDimensions() {
128
223
  const node = this.elementRef.nativeElement;
129
224
  if (!node)
130
225
  return;
131
- if (!this.currentStyle()) {
132
- this.currentStyle.set({
133
- transitionDuration: node.style.transitionDuration,
134
- animationName: node.style.animationName
135
- });
136
- }
137
- if (isOpen) {
138
- this.shouldHide.set(false);
139
- node.hidden = false;
140
- }
226
+ this.originalStyles ??= {
227
+ transitionDuration: node.style.transitionDuration,
228
+ animationName: node.style.animationName
229
+ };
230
+ // Block any animation/transition so we can measure the element at its natural size.
141
231
  node.style.transitionDuration = '0s';
142
232
  node.style.animationName = 'none';
233
+ // Let the element take its natural height while measuring, so a `height` bound to the very
234
+ // variable we are computing (the Base UI collapse pattern) does not feed back into itself.
235
+ const previousHeight = node.style.height;
236
+ node.style.height = 'auto';
143
237
  const rect = node.getBoundingClientRect();
144
238
  this.height.set(rect.height);
145
239
  this.width.set(rect.width);
146
- if (!this.isMountAnimationPrevented() && !this.firstRender) {
147
- node.style.transitionDuration = this.currentStyle()?.transitionDuration || '';
148
- node.style.animationName = this.currentStyle()?.animationName || '';
240
+ node.style.height = previousHeight;
241
+ // Re-enable the original animation, unless this is the very first (mount) measurement.
242
+ if (!this.isFirstMeasure) {
243
+ node.style.transitionDuration = this.originalStyles.transitionDuration;
244
+ node.style.animationName = this.originalStyles.animationName;
149
245
  }
150
- this.firstRender = false;
246
+ this.isFirstMeasure = false;
151
247
  }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
153
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: RdxCollapsibleContentDirective, isStandalone: true, selector: "[rdxCollapsibleContent]", host: { listeners: { "animationend": "onAnimationEnd()" }, properties: { "id": "rootContext.contentId()", "attr.data-state": "rootContext.open() ? \"open\" : \"closed\"", "attr.data-disabled": "rootContext.disabled() ? \"true\" : undefined", "attr.hidden": "shouldHide() ? \"until-found\" : undefined", "style.--radix-collapsible-content-width.px": "width()", "style.--radix-collapsible-content-height.px": "height()" } }, ngImport: i0 }); }
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsiblePanelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
249
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxCollapsiblePanelDirective, isStandalone: true, selector: "[rdxCollapsiblePanel]", inputs: { 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 }); }
154
250
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleContentDirective, decorators: [{
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsiblePanelDirective, decorators: [{
156
252
  type: Directive,
157
253
  args: [{
158
- selector: '[rdxCollapsibleContent]',
254
+ selector: '[rdxCollapsiblePanel]',
159
255
  host: {
160
- '[id]': 'rootContext.contentId()',
161
- '[attr.data-state]': 'rootContext.open() ? "open" : "closed"',
162
- '[attr.data-disabled]': 'rootContext.disabled() ? "true" : undefined',
163
- '[attr.hidden]': 'shouldHide() ? "until-found" : undefined',
164
- '[style.--radix-collapsible-content-width.px]': 'width()',
165
- '[style.--radix-collapsible-content-height.px]': 'height()',
166
- '(animationend)': 'onAnimationEnd()'
256
+ '[id]': 'rootContext.panelId()',
257
+ '[attr.data-open]': 'rootContext.open() ? "" : undefined',
258
+ '[attr.data-closed]': 'rootContext.open() ? undefined : ""',
259
+ '[attr.data-disabled]': 'rootContext.disabled() ? "" : undefined',
260
+ '[attr.data-starting-style]': 'rootContext.transitionStatus() === "starting" ? "" : undefined',
261
+ '[attr.data-ending-style]': 'rootContext.transitionStatus() === "ending" ? "" : undefined',
262
+ '[attr.hidden]': 'hidden()',
263
+ '[style.--collapsible-panel-width.px]': 'width()',
264
+ '[style.--collapsible-panel-height.px]': 'height()'
167
265
  }
168
266
  }]
169
- }], ctorParameters: () => [] });
267
+ }], ctorParameters: () => [], propDecorators: { keepMounted: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepMounted", required: false }] }], hiddenUntilFound: [{ type: i0.Input, args: [{ isSignal: true, alias: "hiddenUntilFound", required: false }] }] } });
170
268
 
269
+ /**
270
+ * A button that opens and closes the collapsible panel.
271
+ */
171
272
  class RdxCollapsibleTriggerDirective {
172
273
  constructor() {
173
274
  this.rootContext = injectCollapsibleRootContext();
174
275
  }
175
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
176
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: RdxCollapsibleTriggerDirective, isStandalone: true, selector: "[rdxCollapsibleTrigger]", host: { listeners: { "click": "rootContext.toggle()" }, properties: { "attr.aria-controls": "rootContext.contentId()", "attr.aria-expanded": "rootContext.open()", "attr.data-state": "rootContext.open() ? \"open\" : \"closed\"", "attr.data-disabled": "rootContext.disabled() ? \"true\" : undefined", "attr.disabled": "rootContext.disabled() || undefined" } }, ngImport: i0 }); }
276
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsibleTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
277
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxCollapsibleTriggerDirective, isStandalone: true, selector: "[rdxCollapsibleTrigger]", host: { listeners: { "click": "rootContext.toggle()" }, properties: { "attr.aria-controls": "rootContext.panelId()", "attr.aria-expanded": "rootContext.open()", "attr.data-panel-open": "rootContext.open() ? \"\" : undefined", "attr.data-disabled": "rootContext.disabled() ? \"\" : undefined", "attr.disabled": "rootContext.disabled() || undefined" } }, ngImport: i0 }); }
177
278
  }
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleTriggerDirective, decorators: [{
279
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsibleTriggerDirective, decorators: [{
179
280
  type: Directive,
180
281
  args: [{
181
282
  selector: '[rdxCollapsibleTrigger]',
182
283
  host: {
183
- '[attr.aria-controls]': 'rootContext.contentId()',
284
+ '[attr.aria-controls]': 'rootContext.panelId()',
184
285
  '[attr.aria-expanded]': 'rootContext.open()',
185
- '[attr.data-state]': 'rootContext.open() ? "open" : "closed"',
186
- '[attr.data-disabled]': 'rootContext.disabled() ? "true" : undefined',
286
+ '[attr.data-panel-open]': 'rootContext.open() ? "" : undefined',
287
+ '[attr.data-disabled]': 'rootContext.disabled() ? "" : undefined',
187
288
  '[attr.disabled]': 'rootContext.disabled() || undefined',
188
289
  '(click)': 'rootContext.toggle()'
189
290
  }
@@ -191,23 +292,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
191
292
  }] });
192
293
 
193
294
  const _imports = [
194
- RdxCollapsibleContentDirective,
295
+ RdxCollapsiblePanelDirective,
195
296
  RdxCollapsibleRootDirective,
196
297
  RdxCollapsibleTriggerDirective,
197
- RdxCollapsibleContentPresenceDirective
298
+ RdxCollapsiblePanelPresenceDirective
198
299
  ];
199
300
  class RdxCollapsibleModule {
200
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
201
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleModule, imports: [RdxCollapsibleContentDirective,
301
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsibleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
302
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsibleModule, imports: [RdxCollapsiblePanelDirective,
202
303
  RdxCollapsibleRootDirective,
203
304
  RdxCollapsibleTriggerDirective,
204
- RdxCollapsibleContentPresenceDirective], exports: [RdxCollapsibleContentDirective,
305
+ RdxCollapsiblePanelPresenceDirective], exports: [RdxCollapsiblePanelDirective,
205
306
  RdxCollapsibleRootDirective,
206
307
  RdxCollapsibleTriggerDirective,
207
- RdxCollapsibleContentPresenceDirective] }); }
208
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleModule }); }
308
+ RdxCollapsiblePanelPresenceDirective] }); }
309
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsibleModule }); }
209
310
  }
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxCollapsibleModule, decorators: [{
311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxCollapsibleModule, decorators: [{
211
312
  type: NgModule,
212
313
  args: [{
213
314
  imports: [..._imports],
@@ -219,5 +320,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
219
320
  * Generated bundle index. Do not edit.
220
321
  */
221
322
 
222
- export { RdxCollapsibleContentDirective, RdxCollapsibleContentPresenceDirective, RdxCollapsibleModule, RdxCollapsibleRootDirective, RdxCollapsibleTriggerDirective, injectCollapsibleRootContext, provideCollapsibleRootContext };
323
+ export { RdxCollapsibleModule, RdxCollapsiblePanelDirective, RdxCollapsiblePanelPresenceDirective, RdxCollapsibleRootDirective, RdxCollapsibleTriggerDirective, injectCollapsibleRootContext, provideCollapsibleRootContext };
223
324
  //# sourceMappingURL=radix-ng-primitives-collapsible.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-collapsible.mjs","sources":["../tmp-esm2022/collapsible/src/collapsible-root.directive.js","../tmp-esm2022/collapsible/src/collapsible-content-presence.directive.js","../tmp-esm2022/collapsible/src/collapsible-content.directive.js","../tmp-esm2022/collapsible/src/collapsible-trigger.directive.js","../tmp-esm2022/collapsible/index.js","../tmp-esm2022/collapsible/radix-ng-primitives-collapsible.js"],"sourcesContent":["import { booleanAttribute, computed, Directive, inject, input, linkedSignal, model, output, untracked } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\nimport * as i0 from \"@angular/core\";\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext] = createContext('CollapsibleRootContext');\nconst rootContext = () => {\n const instance = inject(RdxCollapsibleRootDirective);\n return {\n contentId: instance.contentId,\n disabled: instance.isDisabled,\n open: instance.open,\n toggle: () => {\n if (instance.isDisabled()) {\n return;\n }\n untracked(() => {\n instance.open.set(!instance.open());\n });\n instance.onOpenChange.emit(instance.open());\n }\n };\n};\n/**\n * @group Components\n */\nexport class RdxCollapsibleRootDirective {\n constructor() {\n /**\n * The controlled open state of the collapsible.\n * Sets the state of the directive. `true` - expanded, `false` - collapsed\n *\n * @group Props\n * @defaultValue false\n */\n this.open = model(false, ...(ngDevMode ? [{ debugName: \"open\" }] : []));\n this.contentId = input('', ...(ngDevMode ? [{ debugName: \"contentId\" }] : []));\n /**\n * Determines whether a directive is available for interaction.\n * When true, prevents the user from interacting with the collapsible.\n *\n * @group Props\n */\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this._disabled = linkedSignal(this.disabled, ...(ngDevMode ? [{ debugName: \"_disabled\" }] : []));\n this.isDisabled = this._disabled.asReadonly();\n this.isOpen = computed(() => this.open(), ...(ngDevMode ? [{ debugName: \"isOpen\" }] : []));\n /**\n * Emitted with new value when directive state changed.\n * Event handler called when the open state of the collapsible changes.\n *\n * @group Emits\n */\n this.onOpenChange = output();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: RdxCollapsibleRootDirective, isStandalone: true, selector: \"[rdxCollapsibleRoot]\", inputs: { open: { classPropertyName: \"open\", publicName: \"open\", isSignal: true, isRequired: false, transformFunction: null }, contentId: { classPropertyName: \"contentId\", publicName: \"contentId\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: \"openChange\", onOpenChange: \"onOpenChange\" }, host: { properties: { \"attr.data-state\": \"open() ? \\\"open\\\" : \\\"closed\\\"\", \"attr.data-disabled\": \"disabled() ? \\\"\\\" : undefined\" } }, providers: [provideCollapsibleRootContext(rootContext)], exportAs: [\"rdxCollapsibleRoot\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleRootDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxCollapsibleRoot]',\n exportAs: 'rdxCollapsibleRoot',\n providers: [provideCollapsibleRootContext(rootContext)],\n host: {\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtcm9vdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvbGxhcHNpYmxlL3NyYy9jb2xsYXBzaWJsZS1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFFTCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQVcxRCxNQUFNLENBQUMsTUFBTSxDQUFDLDRCQUE0QixFQUFFLDZCQUE2QixDQUFDLEdBQ3RFLGFBQWEsQ0FBeUIsd0JBQXdCLENBQUMsQ0FBQztBQUVwRSxNQUFNLFdBQVcsR0FBRyxHQUEyQixFQUFFO0lBQzdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBRXJELE9BQU87UUFDSCxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7UUFDN0IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1FBQzdCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtRQUNuQixNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ1QsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztZQUNYLENBQUM7WUFFRCxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNYLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBVUgsTUFBTSxPQUFPLDJCQUEyQjtJQVR4QztRQVVJOzs7Ozs7V0FNRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQVUsS0FBSyxnREFBQyxDQUFDO1FBRTdCLGNBQVMsR0FBRyxLQUFLLENBQVMsRUFBRSxxREFBQyxDQUFDO1FBRXZDOzs7OztXQUtHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyw0Q0FBSSxTQUFTLEVBQUUsZ0JBQWdCLE9BQTdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUMsQ0FBQztRQUVoRixjQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLHFEQUFDLENBQUM7UUFFeEMsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFekMsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGtEQUFDLENBQUM7UUFFOUM7Ozs7O1dBS0c7UUFDTSxpQkFBWSxHQUFHLE1BQU0sRUFBVyxDQUFDO0tBQzdDOzhHQWpDWSwyQkFBMkI7a0dBQTNCLDJCQUEyQiw4b0JBTnpCLENBQUMsNkJBQTZCLENBQUMsV0FBVyxDQUFDLENBQUM7OzJGQU05QywyQkFBMkI7a0JBVHZDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3ZELElBQUksRUFBRTt3QkFDRixtQkFBbUIsRUFBRSw0QkFBNEI7d0JBQ2pELHNCQUFzQixFQUFFLDZCQUE2QjtxQkFDeEQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgSW5wdXRTaWduYWwsXG4gICAgbGlua2VkU2lnbmFsLFxuICAgIG1vZGVsLFxuICAgIE1vZGVsU2lnbmFsLFxuICAgIG91dHB1dCxcbiAgICBTaWduYWwsXG4gICAgdW50cmFja2VkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gJ0ByYWRpeC1uZy9wcmltaXRpdmVzL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBSZHhDb2xsYXBzaWJsZVN0YXRlID0gJ29wZW4nIHwgJ2Nsb3NlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGFwc2libGVSb290Q29udGV4dCB7XG4gICAgY29udGVudElkOiBJbnB1dFNpZ25hbDxzdHJpbmc+O1xuICAgIG9wZW46IE1vZGVsU2lnbmFsPGJvb2xlYW4+O1xuICAgIHRvZ2dsZTogKCkgPT4gdm9pZDtcbiAgICBkaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgY29uc3QgW2luamVjdENvbGxhcHNpYmxlUm9vdENvbnRleHQsIHByb3ZpZGVDb2xsYXBzaWJsZVJvb3RDb250ZXh0XSA9XG4gICAgY3JlYXRlQ29udGV4dDxDb2xsYXBzaWJsZVJvb3RDb250ZXh0PignQ29sbGFwc2libGVSb290Q29udGV4dCcpO1xuXG5jb25zdCByb290Q29udGV4dCA9ICgpOiBDb2xsYXBzaWJsZVJvb3RDb250ZXh0ID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGluamVjdChSZHhDb2xsYXBzaWJsZVJvb3REaXJlY3RpdmUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudElkOiBpbnN0YW5jZS5jb250ZW50SWQsXG4gICAgICAgIGRpc2FibGVkOiBpbnN0YW5jZS5pc0Rpc2FibGVkLFxuICAgICAgICBvcGVuOiBpbnN0YW5jZS5vcGVuLFxuICAgICAgICB0b2dnbGU6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5pc0Rpc2FibGVkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uub3Blbi5zZXQoIWluc3RhbmNlLm9wZW4oKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaW5zdGFuY2Uub25PcGVuQ2hhbmdlLmVtaXQoaW5zdGFuY2Uub3BlbigpKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuXG4vKipcbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeENvbGxhcHNpYmxlUm9vdF0nLFxuICAgIGV4cG9ydEFzOiAncmR4Q29sbGFwc2libGVSb290JyxcbiAgICBwcm92aWRlcnM6IFtwcm92aWRlQ29sbGFwc2libGVSb290Q29udGV4dChyb290Q29udGV4dCldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ29wZW4oKSA/IFwib3BlblwiIDogXCJjbG9zZWRcIicsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdkaXNhYmxlZCgpID8gXCJcIiA6IHVuZGVmaW5lZCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeENvbGxhcHNpYmxlUm9vdERpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogVGhlIGNvbnRyb2xsZWQgb3BlbiBzdGF0ZSBvZiB0aGUgY29sbGFwc2libGUuXG4gICAgICogU2V0cyB0aGUgc3RhdGUgb2YgdGhlIGRpcmVjdGl2ZS4gYHRydWVgIC0gZXhwYW5kZWQsIGBmYWxzZWAgLSBjb2xsYXBzZWRcbiAgICAgKlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBvcGVuID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcmVhZG9ubHkgY29udGVudElkID0gaW5wdXQ8c3RyaW5nPignJyk7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBkaXJlY3RpdmUgaXMgYXZhaWxhYmxlIGZvciBpbnRlcmFjdGlvbi5cbiAgICAgKiBXaGVuIHRydWUsIHByZXZlbnRzIHRoZSB1c2VyIGZyb20gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgY29sbGFwc2libGUuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgcmVhZG9ubHkgX2Rpc2FibGVkID0gbGlua2VkU2lnbmFsKHRoaXMuZGlzYWJsZWQpO1xuXG4gICAgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IHRoaXMuX2Rpc2FibGVkLmFzUmVhZG9ubHkoKTtcblxuICAgIHJlYWRvbmx5IGlzT3BlbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3BlbigpKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2l0aCBuZXcgdmFsdWUgd2hlbiBkaXJlY3RpdmUgc3RhdGUgY2hhbmdlZC5cbiAgICAgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBjb2xsYXBzaWJsZSBjaGFuZ2VzLlxuICAgICAqXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgcmVhZG9ubHkgb25PcGVuQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG59XG4iXX0=","import { Directive } from '@angular/core';\nimport { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';\nimport { injectCollapsibleRootContext } from './collapsible-root.directive';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@radix-ng/primitives/presence\";\nexport class RdxCollapsibleContentPresenceDirective {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleContentPresenceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: RdxCollapsibleContentPresenceDirective, isStandalone: true, selector: \"ng-template[rdxCollapsibleContentPresence]\", providers: [\n provideRdxPresenceContext(() => ({\n present: injectCollapsibleRootContext().open\n }))\n ], hostDirectives: [{ directive: i1.RdxPresenceDirective }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleContentPresenceDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[rdxCollapsibleContentPresence]',\n providers: [\n provideRdxPresenceContext(() => ({\n present: injectCollapsibleRootContext().open\n }))\n ],\n hostDirectives: [RdxPresenceDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtY29udGVudC1wcmVzZW5jZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvbGxhcHNpYmxlL3NyYy9jb2xsYXBzaWJsZS1jb250ZW50LXByZXNlbmNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFXNUUsTUFBTSxPQUFPLHNDQUFzQzs4R0FBdEMsc0NBQXNDO2tHQUF0QyxzQ0FBc0MseUZBUHBDO1lBQ1AseUJBQXlCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxFQUFFLDRCQUE0QixFQUFHLENBQUMsSUFBSTthQUNoRCxDQUFDLENBQUM7U0FDTjs7MkZBR1Esc0NBQXNDO2tCQVRsRCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw0Q0FBNEM7b0JBQ3RELFNBQVMsRUFBRTt3QkFDUCx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDOzRCQUM3QixPQUFPLEVBQUUsNEJBQTRCLEVBQUcsQ0FBQyxJQUFJO3lCQUNoRCxDQUFDLENBQUM7cUJBQ047b0JBQ0QsY0FBYyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlUmR4UHJlc2VuY2VDb250ZXh0LCBSZHhQcmVzZW5jZURpcmVjdGl2ZSB9IGZyb20gJ0ByYWRpeC1uZy9wcmltaXRpdmVzL3ByZXNlbmNlJztcbmltcG9ydCB7IGluamVjdENvbGxhcHNpYmxlUm9vdENvbnRleHQgfSBmcm9tICcuL2NvbGxhcHNpYmxlLXJvb3QuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtyZHhDb2xsYXBzaWJsZUNvbnRlbnRQcmVzZW5jZV0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlUmR4UHJlc2VuY2VDb250ZXh0KCgpID0+ICh7XG4gICAgICAgICAgICBwcmVzZW50OiBpbmplY3RDb2xsYXBzaWJsZVJvb3RDb250ZXh0KCkhLm9wZW5cbiAgICAgICAgfSkpXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1JkeFByZXNlbmNlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBSZHhDb2xsYXBzaWJsZUNvbnRlbnRQcmVzZW5jZURpcmVjdGl2ZSB7fVxuIl19","import { isPlatformBrowser } from '@angular/common';\nimport { afterNextRender, computed, Directive, effect, ElementRef, inject, PLATFORM_ID, signal } from '@angular/core';\nimport { injectCollapsibleRootContext } from './collapsible-root.directive';\nimport * as i0 from \"@angular/core\";\nexport class RdxCollapsibleContentDirective {\n constructor() {\n this.elementRef = inject(ElementRef);\n this.platformId = inject(PLATFORM_ID);\n this.rootContext = injectCollapsibleRootContext();\n this.isOpen = computed(() => this.rootContext.open(), ...(ngDevMode ? [{ debugName: \"isOpen\" }] : []));\n this.height = signal(null, ...(ngDevMode ? [{ debugName: \"height\" }] : []));\n this.width = signal(null, ...(ngDevMode ? [{ debugName: \"width\" }] : []));\n this.shouldHide = signal(true, ...(ngDevMode ? [{ debugName: \"shouldHide\" }] : []));\n this.isMountAnimationPrevented = signal(true, ...(ngDevMode ? [{ debugName: \"isMountAnimationPrevented\" }] : []));\n this.currentStyle = signal(null, ...(ngDevMode ? [{ debugName: \"currentStyle\" }] : []));\n this.firstRender = true;\n effect(() => {\n const isOpen = this.isOpen();\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n requestAnimationFrame(() => {\n this.updateDimensions(isOpen);\n });\n });\n afterNextRender(() => {\n requestAnimationFrame(() => {\n this.isMountAnimationPrevented.set(false);\n });\n });\n }\n onAnimationEnd() {\n if (!this.isOpen()) {\n this.shouldHide.set(true);\n }\n }\n async updateDimensions(isOpen) {\n const node = this.elementRef.nativeElement;\n if (!node)\n return;\n if (!this.currentStyle()) {\n this.currentStyle.set({\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n });\n }\n if (isOpen) {\n this.shouldHide.set(false);\n node.hidden = false;\n }\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n const rect = node.getBoundingClientRect();\n this.height.set(rect.height);\n this.width.set(rect.width);\n if (!this.isMountAnimationPrevented() && !this.firstRender) {\n node.style.transitionDuration = this.currentStyle()?.transitionDuration || '';\n node.style.animationName = this.currentStyle()?.animationName || '';\n }\n this.firstRender = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: RdxCollapsibleContentDirective, isStandalone: true, selector: \"[rdxCollapsibleContent]\", host: { listeners: { \"animationend\": \"onAnimationEnd()\" }, properties: { \"id\": \"rootContext.contentId()\", \"attr.data-state\": \"rootContext.open() ? \\\"open\\\" : \\\"closed\\\"\", \"attr.data-disabled\": \"rootContext.disabled() ? \\\"true\\\" : undefined\", \"attr.hidden\": \"shouldHide() ? \\\"until-found\\\" : undefined\", \"style.--radix-collapsible-content-width.px\": \"width()\", \"style.--radix-collapsible-content-height.px\": \"height()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleContentDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxCollapsibleContent]',\n host: {\n '[id]': 'rootContext.contentId()',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"true\" : undefined',\n '[attr.hidden]': 'shouldHide() ? \"until-found\" : undefined',\n '[style.--radix-collapsible-content-width.px]': 'width()',\n '[style.--radix-collapsible-content-height.px]': 'height()',\n '(animationend)': 'onAnimationEnd()'\n }\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtY29udGVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvbGxhcHNpYmxlL3NyYy9jb2xsYXBzaWJsZS1jb250ZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFjNUUsTUFBTSxPQUFPLDhCQUE4QjtJQWdCdkM7UUFmaUIsZUFBVSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDekQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvQixnQkFBVyxHQUFHLDRCQUE0QixFQUFHLENBQUM7UUFFeEQsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxrREFBQyxDQUFDO1FBRWpELFdBQU0sR0FBRyxNQUFNLENBQWdCLElBQUksa0RBQUMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsTUFBTSxDQUFnQixJQUFJLGlEQUFDLENBQUM7UUFDcEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLHNEQUFDLENBQUM7UUFDM0IsOEJBQXlCLEdBQUcsTUFBTSxDQUFDLElBQUkscUVBQUMsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLE1BQU0sQ0FBK0QsSUFBSSx3REFBQyxDQUFDO1FBRTFGLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBR3ZCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFN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Q29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIGNvbXB1dGVkLCBEaXJlY3RpdmUsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RDb2xsYXBzaWJsZVJvb3RDb250ZXh0IH0gZnJvbSAnLi9jb2xsYXBzaWJsZS1yb290LmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeENvbGxhcHNpYmxlQ29udGVudF0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tpZF0nOiAncm9vdENvbnRleHQuY29udGVudElkKCknLFxuICAgICAgICAnW2F0dHIuZGF0YS1zdGF0ZV0nOiAncm9vdENvbnRleHQub3BlbigpID8gXCJvcGVuXCIgOiBcImNsb3NlZFwiJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ3Jvb3RDb250ZXh0LmRpc2FibGVkKCkgPyBcInRydWVcIiA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbYXR0ci5oaWRkZW5dJzogJ3Nob3VsZEhpZGUoKSA/IFwidW50aWwtZm91bmRcIiA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbc3R5bGUuLS1yYWRpeC1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoLnB4XSc6ICd3aWR0aCgpJyxcbiAgICAgICAgJ1tzdHlsZS4tLXJhZGl4LWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0LnB4XSc6ICdoZWlnaHQoKScsXG4gICAgICAgICcoYW5pbWF0aW9uZW5kKSc6ICdvbkFuaW1hdGlvbkVuZCgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4Q29sbGFwc2libGVDb250ZW50RGlyZWN0aXZlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm9vdENvbnRleHQgPSBpbmplY3RDb2xsYXBzaWJsZVJvb3RDb250ZXh0KCkhO1xuXG4gICAgcmVhZG9ubHkgaXNPcGVuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yb290Q29udGV4dC5vcGVuKCkpO1xuXG4gICAgcmVhZG9ubHkgaGVpZ2h0ID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xuICAgIHJlYWRvbmx5IHdpZHRoID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xuICAgIHJlYWRvbmx5IHNob3VsZEhpZGUgPSBzaWduYWwodHJ1ZSk7XG4gICAgcHJpdmF0ZSBpc01vdW50QW5pbWF0aW9uUHJldmVudGVkID0gc2lnbmFsKHRydWUpO1xuICAgIHByaXZhdGUgY3VycmVudFN0eWxlID0gc2lnbmFsPHsgdHJhbnNpdGlvbkR1cmF0aW9uOiBzdHJpbmc7IGFuaW1hdGlvbk5hbWU6IHN0cmluZyB9IHwgbnVsbD4obnVsbCk7XG5cbiAgICBwcml2YXRlIGZpcnN0UmVuZGVyID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNPcGVuID0gdGhpcy5pc09wZW4oKTtcblxuICAgICAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRGltZW5zaW9ucyhpc09wZW4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uRW5kKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdWxkSGlkZS5zZXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHVwZGF0ZURpbWVuc2lvbnMoaXNPcGVuOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKCFub2RlKSByZXR1cm47XG5cbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTdHlsZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdHlsZS5zZXQoe1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogbm9kZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uTmFtZTogbm9kZS5zdHlsZS5hbmltYXRpb25OYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdWxkSGlkZS5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgbm9kZS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vZGUuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcbiAgICAgICAgbm9kZS5zdHlsZS5hbmltYXRpb25OYW1lID0gJ25vbmUnO1xuXG4gICAgICAgIGNvbnN0IHJlY3QgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLmhlaWdodC5zZXQocmVjdC5oZWlnaHQpO1xuICAgICAgICB0aGlzLndpZHRoLnNldChyZWN0LndpZHRoKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZCgpICYmICF0aGlzLmZpcnN0UmVuZGVyKSB7XG4gICAgICAgICAgICBub2RlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IHRoaXMuY3VycmVudFN0eWxlKCk/LnRyYW5zaXRpb25EdXJhdGlvbiB8fCAnJztcbiAgICAgICAgICAgIG5vZGUuc3R5bGUuYW5pbWF0aW9uTmFtZSA9IHRoaXMuY3VycmVudFN0eWxlKCk/LmFuaW1hdGlvbk5hbWUgfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpcnN0UmVuZGVyID0gZmFsc2U7XG4gICAgfVxufVxuIl19","import { Directive } from '@angular/core';\nimport { injectCollapsibleRootContext } from './collapsible-root.directive';\nimport * as i0 from \"@angular/core\";\nexport class RdxCollapsibleTriggerDirective {\n constructor() {\n this.rootContext = injectCollapsibleRootContext();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: RdxCollapsibleTriggerDirective, isStandalone: true, selector: \"[rdxCollapsibleTrigger]\", host: { listeners: { \"click\": \"rootContext.toggle()\" }, properties: { \"attr.aria-controls\": \"rootContext.contentId()\", \"attr.aria-expanded\": \"rootContext.open()\", \"attr.data-state\": \"rootContext.open() ? \\\"open\\\" : \\\"closed\\\"\", \"attr.data-disabled\": \"rootContext.disabled() ? \\\"true\\\" : undefined\", \"attr.disabled\": \"rootContext.disabled() || undefined\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleTriggerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxCollapsibleTrigger]',\n host: {\n '[attr.aria-controls]': 'rootContext.contentId()',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"true\" : undefined',\n '[attr.disabled]': 'rootContext.disabled() || undefined',\n '(click)': 'rootContext.toggle()'\n }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtdHJpZ2dlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvbGxhcHNpYmxlL3NyYy9jb2xsYXBzaWJsZS10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQWM1RSxNQUFNLE9BQU8sOEJBQThCO0lBWjNDO1FBYXVCLGdCQUFXLEdBQUcsNEJBQTRCLEVBQUcsQ0FBQztLQUNwRTs4R0FGWSw4QkFBOEI7a0dBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFaMUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxJQUFJLEVBQUU7d0JBQ0Ysc0JBQXNCLEVBQUUseUJBQXlCO3dCQUNqRCxzQkFBc0IsRUFBRSxvQkFBb0I7d0JBQzVDLG1CQUFtQixFQUFFLHdDQUF3Qzt3QkFDN0Qsc0JBQXNCLEVBQUUsNkNBQTZDO3dCQUNyRSxpQkFBaUIsRUFBRSxxQ0FBcUM7d0JBRXhELFNBQVMsRUFBRSxzQkFBc0I7cUJBQ3BDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RDb2xsYXBzaWJsZVJvb3RDb250ZXh0IH0gZnJvbSAnLi9jb2xsYXBzaWJsZS1yb290LmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeENvbGxhcHNpYmxlVHJpZ2dlcl0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmFyaWEtY29udHJvbHNdJzogJ3Jvb3RDb250ZXh0LmNvbnRlbnRJZCgpJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ3Jvb3RDb250ZXh0Lm9wZW4oKScsXG4gICAgICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdyb290Q29udGV4dC5vcGVuKCkgPyBcIm9wZW5cIiA6IFwiY2xvc2VkXCInLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAncm9vdENvbnRleHQuZGlzYWJsZWQoKSA/IFwidHJ1ZVwiIDogdW5kZWZpbmVkJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdyb290Q29udGV4dC5kaXNhYmxlZCgpIHx8IHVuZGVmaW5lZCcsXG5cbiAgICAgICAgJyhjbGljayknOiAncm9vdENvbnRleHQudG9nZ2xlKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhDb2xsYXBzaWJsZVRyaWdnZXJEaXJlY3RpdmUge1xuICAgIHByb3RlY3RlZCByZWFkb25seSByb290Q29udGV4dCA9IGluamVjdENvbGxhcHNpYmxlUm9vdENvbnRleHQoKSE7XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { RdxCollapsibleContentPresenceDirective } from './src/collapsible-content-presence.directive';\nimport { RdxCollapsibleContentDirective } from './src/collapsible-content.directive';\nimport { RdxCollapsibleRootDirective } from './src/collapsible-root.directive';\nimport { RdxCollapsibleTriggerDirective } from './src/collapsible-trigger.directive';\nimport * as i0 from \"@angular/core\";\nexport * from './src/collapsible-content-presence.directive';\nexport * from './src/collapsible-content.directive';\nexport * from './src/collapsible-root.directive';\nexport * from './src/collapsible-trigger.directive';\nconst _imports = [\n RdxCollapsibleContentDirective,\n RdxCollapsibleRootDirective,\n RdxCollapsibleTriggerDirective,\n RdxCollapsibleContentPresenceDirective\n];\nexport class RdxCollapsibleModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleModule, imports: [RdxCollapsibleContentDirective,\n RdxCollapsibleRootDirective,\n RdxCollapsibleTriggerDirective,\n RdxCollapsibleContentPresenceDirective], exports: [RdxCollapsibleContentDirective,\n RdxCollapsibleRootDirective,\n RdxCollapsibleTriggerDirective,\n RdxCollapsibleContentPresenceDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxCollapsibleModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [..._imports],\n exports: [..._imports]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvbGxhcHNpYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBRXJGLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMscUNBQXFDLENBQUM7QUFFcEQsTUFBTSxRQUFRLEdBQUc7SUFDYiw4QkFBOEI7SUFDOUIsMkJBQTJCO0lBQzNCLDhCQUE4QjtJQUM5QixzQ0FBc0M7Q0FDekMsQ0FBQztBQU1GLE1BQU0sT0FBTyxvQkFBb0I7OEdBQXBCLG9CQUFvQjsrR0FBcEIsb0JBQW9CLFlBVjdCLDhCQUE4QjtZQUM5QiwyQkFBMkI7WUFDM0IsOEJBQThCO1lBQzlCLHNDQUFzQyxhQUh0Qyw4QkFBOEI7WUFDOUIsMkJBQTJCO1lBQzNCLDhCQUE4QjtZQUM5QixzQ0FBc0M7K0dBTzdCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFKaEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztvQkFDdEIsT0FBTyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJkeENvbGxhcHNpYmxlQ29udGVudFByZXNlbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9zcmMvY29sbGFwc2libGUtY29udGVudC1wcmVzZW5jZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4Q29sbGFwc2libGVDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9zcmMvY29sbGFwc2libGUtY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4Q29sbGFwc2libGVSb290RGlyZWN0aXZlIH0gZnJvbSAnLi9zcmMvY29sbGFwc2libGUtcm9vdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4Q29sbGFwc2libGVUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9zcmMvY29sbGFwc2libGUtdHJpZ2dlci5kaXJlY3RpdmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb2xsYXBzaWJsZS1jb250ZW50LXByZXNlbmNlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb2xsYXBzaWJsZS1jb250ZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb2xsYXBzaWJsZS1yb290LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb2xsYXBzaWJsZS10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IF9pbXBvcnRzID0gW1xuICAgIFJkeENvbGxhcHNpYmxlQ29udGVudERpcmVjdGl2ZSxcbiAgICBSZHhDb2xsYXBzaWJsZVJvb3REaXJlY3RpdmUsXG4gICAgUmR4Q29sbGFwc2libGVUcmlnZ2VyRGlyZWN0aXZlLFxuICAgIFJkeENvbGxhcHNpYmxlQ29udGVudFByZXNlbmNlRGlyZWN0aXZlXG5dO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFsuLi5faW1wb3J0c10sXG4gICAgZXhwb3J0czogWy4uLl9pbXBvcnRzXVxufSlcbmV4cG9ydCBjbGFzcyBSZHhDb2xsYXBzaWJsZU1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1jb2xsYXBzaWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvY29sbGFwc2libGUvcmFkaXgtbmctcHJpbWl0aXZlcy1jb2xsYXBzaWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-collapsible.mjs","sources":["../../../packages/primitives/collapsible/src/collapsible-root.directive.ts","../../../packages/primitives/collapsible/src/collapsible-panel-presence.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 createContext,\n injectId,\n RdxTransitionStatus,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\n\nexport type RdxCollapsibleState = 'open' | 'closed';\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: () => void;\n /** Registers the panel element whose transition duration gates the close completion. */\n registerTransitionElement: (element: HTMLElement) => () => void;\n}\n\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext] =\n createContext<CollapsibleRootContext>('CollapsibleRootContext');\n\nconst rootContext = (): CollapsibleRootContext => {\n const instance = inject(RdxCollapsibleRootDirective);\n\n return {\n panelId: instance.panelId,\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 registerTransitionElement: (element) => instance.registerTransitionElement(element),\n toggle: () => {\n if (instance.disabled()) {\n return;\n }\n\n untracked(() => {\n instance.open.set(!instance.open());\n });\n\n instance.onOpenChange.emit(instance.open());\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 /** 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>(injectId('rdx-collapsible-panel-'));\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<boolean>();\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 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 { Directive } from '@angular/core';\nimport { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';\nimport { injectCollapsibleRootContext } from './collapsible-root.directive';\n\n/**\n * Structural directive that mounts the collapsible panel contents only while open, unmounting them\n * once the exit animation finishes. Opt into this when the closed contents should leave the DOM;\n * otherwise apply `rdxCollapsiblePanel` directly (optionally with `keepMounted`).\n */\n@Directive({\n selector: 'ng-template[rdxCollapsiblePanelPresence]',\n providers: [\n provideRdxPresenceContext(() => ({\n present: injectCollapsibleRootContext()!.open\n }))\n ],\n hostDirectives: [RdxPresenceDirective]\n})\nexport class RdxCollapsiblePanelPresenceDirective {}\n","import {\n afterRenderEffect,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\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\n protected readonly rootContext = injectCollapsibleRootContext()!;\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 (no `hidden` attribute) so the consumer's\n * `data-closed` CSS is responsible for visually collapsing it.\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 /**\n * The `hidden` attribute value. The panel is shown while open or while its exit transition runs;\n * a kept-mounted panel stays visible (the consumer collapses it via CSS); otherwise the closed\n * panel is hidden — with `until-found` when find-in-page support is requested.\n */\n readonly hidden = computed<'' | 'until-found' | undefined>(() => {\n const visible = this.rootContext.open() || this.rootContext.transitionStatus() === 'ending';\n\n if (visible || this.rootContext.keepMounted()) {\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 inject(DestroyRef).onDestroy(unregister);\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 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 } 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.panelId()',\n '[attr.aria-expanded]': 'rootContext.open()',\n '[attr.data-panel-open]': 'rootContext.open() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.disabled]': 'rootContext.disabled() || undefined',\n\n '(click)': 'rootContext.toggle()'\n }\n})\nexport class RdxCollapsibleTriggerDirective {\n protected readonly rootContext = injectCollapsibleRootContext()!;\n}\n","import { NgModule } from '@angular/core';\nimport { RdxCollapsiblePanelPresenceDirective } from './src/collapsible-panel-presence.directive';\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-presence.directive';\nexport * from './src/collapsible-panel.directive';\nexport * from './src/collapsible-root.directive';\nexport * from './src/collapsible-trigger.directive';\n\nconst _imports = [\n RdxCollapsiblePanelDirective,\n RdxCollapsibleRootDirective,\n RdxCollapsibleTriggerDirective,\n RdxCollapsiblePanelPresenceDirective\n];\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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"}