@radix-ng/primitives 0.51.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 (178) hide show
  1. package/fesm2022/radix-ng-primitives-accordion.mjs +105 -38
  2. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  3. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +221 -129
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-arrow.mjs +20 -4
  6. package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-avatar.mjs +54 -61
  9. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-button.mjs +123 -0
  11. package/fesm2022/radix-ng-primitives-button.mjs.map +1 -0
  12. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-checkbox.mjs +378 -54
  14. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-collapsible.mjs +182 -81
  16. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  17. package/fesm2022/radix-ng-primitives-collection.mjs +40 -57
  18. package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-context-menu.mjs +140 -424
  21. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-core.mjs +735 -744
  23. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-cropper.mjs +1 -0
  25. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-date-field.mjs +51 -45
  27. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-dialog.mjs +655 -327
  29. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +70 -46
  31. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-drawer.mjs +1059 -0
  33. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -0
  34. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-field.mjs +363 -0
  36. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -0
  37. package/fesm2022/radix-ng-primitives-fieldset.mjs +79 -0
  38. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -0
  39. package/fesm2022/radix-ng-primitives-focus-scope.mjs +23 -8
  40. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  41. package/fesm2022/radix-ng-primitives-input.mjs +172 -0
  42. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -0
  43. package/fesm2022/radix-ng-primitives-label.mjs +6 -6
  44. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  45. package/fesm2022/radix-ng-primitives-menu.mjs +1480 -344
  46. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  47. package/fesm2022/radix-ng-primitives-menubar.mjs +290 -162
  48. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  49. package/fesm2022/radix-ng-primitives-meter.mjs +271 -0
  50. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -0
  51. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1052 -1553
  52. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  53. package/fesm2022/radix-ng-primitives-number-field.mjs +1102 -367
  54. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-popover.mjs +978 -989
  57. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-popper.mjs +91 -41
  59. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-portal.mjs +34 -10
  61. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-presence.mjs +134 -246
  63. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-preview-card.mjs +997 -0
  65. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -0
  66. package/fesm2022/radix-ng-primitives-progress.mjs +223 -84
  67. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-radio.mjs +191 -51
  69. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-roving-focus.mjs +96 -50
  71. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-select.mjs +791 -509
  73. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  74. package/fesm2022/radix-ng-primitives-separator.mjs +12 -35
  75. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  76. package/fesm2022/radix-ng-primitives-slider.mjs +969 -717
  77. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  78. package/fesm2022/radix-ng-primitives-stepper.mjs +15 -19
  79. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-switch.mjs +125 -113
  81. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-tabs.mjs +381 -108
  83. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-time-field.mjs +55 -46
  85. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-toggle-group.mjs +121 -247
  87. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-toggle.mjs +98 -61
  89. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-toolbar.mjs +303 -92
  91. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-tooltip.mjs +690 -1071
  93. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +25 -66
  95. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  96. package/meter/README.md +3 -0
  97. package/navigation-menu/README.md +2 -1
  98. package/package.json +31 -18
  99. package/portal/README.md +2 -0
  100. package/preview-card/README.md +3 -0
  101. package/schematics/collection.json +1 -0
  102. package/schematics/ng-add/index.d.ts +3 -2
  103. package/schematics/ng-add/index.js +62 -31
  104. package/schematics/ng-add/index.js.map +1 -1
  105. package/schematics/ng-add/package-config.d.ts +4 -2
  106. package/schematics/ng-add/package-config.js +10 -2
  107. package/schematics/ng-add/package-config.js.map +1 -1
  108. package/schematics/ng-add/schema.d.ts +3 -0
  109. package/schematics/ng-add/schema.js +3 -0
  110. package/schematics/ng-add/schema.js.map +1 -0
  111. package/schematics/ng-add/schema.json +14 -0
  112. package/select/README.md +2 -0
  113. package/types/radix-ng-primitives-accordion.d.ts +48 -14
  114. package/types/radix-ng-primitives-alert-dialog.d.ts +95 -38
  115. package/types/radix-ng-primitives-arrow.d.ts +1 -1
  116. package/types/radix-ng-primitives-aspect-ratio.d.ts +1 -1
  117. package/types/radix-ng-primitives-avatar.d.ts +7 -11
  118. package/types/radix-ng-primitives-button.d.ts +73 -0
  119. package/types/radix-ng-primitives-calendar.d.ts +1 -2
  120. package/types/radix-ng-primitives-checkbox.d.ts +201 -32
  121. package/types/radix-ng-primitives-collapsible.d.ts +112 -39
  122. package/types/radix-ng-primitives-collection.d.ts +38 -34
  123. package/types/radix-ng-primitives-config.d.ts +1 -1
  124. package/types/radix-ng-primitives-context-menu.d.ts +60 -116
  125. package/types/radix-ng-primitives-core.d.ts +307 -236
  126. package/types/radix-ng-primitives-cropper.d.ts +2 -2
  127. package/types/radix-ng-primitives-date-field.d.ts +38 -23
  128. package/types/radix-ng-primitives-dialog.d.ts +282 -165
  129. package/types/radix-ng-primitives-dismissable-layer.d.ts +15 -7
  130. package/types/radix-ng-primitives-drawer.d.ts +448 -0
  131. package/types/radix-ng-primitives-editable.d.ts +1 -1
  132. package/types/radix-ng-primitives-field.d.ts +373 -0
  133. package/types/radix-ng-primitives-fieldset.d.ts +48 -0
  134. package/types/radix-ng-primitives-focus-scope.d.ts +13 -5
  135. package/types/radix-ng-primitives-input.d.ts +87 -0
  136. package/types/radix-ng-primitives-label.d.ts +0 -1
  137. package/types/radix-ng-primitives-menu.d.ts +572 -99
  138. package/types/radix-ng-primitives-menubar.d.ts +60 -50
  139. package/types/radix-ng-primitives-meter.d.ts +193 -0
  140. package/types/radix-ng-primitives-navigation-menu.d.ts +422 -340
  141. package/types/radix-ng-primitives-number-field.d.ts +405 -145
  142. package/types/radix-ng-primitives-pagination.d.ts +2 -2
  143. package/types/radix-ng-primitives-popover.d.ts +365 -351
  144. package/types/radix-ng-primitives-popper.d.ts +49 -9
  145. package/types/radix-ng-primitives-portal.d.ts +14 -6
  146. package/types/radix-ng-primitives-presence.d.ts +28 -76
  147. package/types/radix-ng-primitives-preview-card.d.ts +359 -0
  148. package/types/radix-ng-primitives-progress.d.ts +174 -48
  149. package/types/radix-ng-primitives-radio.d.ts +55 -25
  150. package/types/radix-ng-primitives-roving-focus.d.ts +30 -21
  151. package/types/radix-ng-primitives-select.d.ts +475 -177
  152. package/types/radix-ng-primitives-separator.d.ts +7 -32
  153. package/types/radix-ng-primitives-slider.d.ts +315 -201
  154. package/types/radix-ng-primitives-stepper.d.ts +5 -7
  155. package/types/radix-ng-primitives-switch.d.ts +86 -71
  156. package/types/radix-ng-primitives-tabs.d.ts +213 -79
  157. package/types/radix-ng-primitives-time-field.d.ts +42 -27
  158. package/types/radix-ng-primitives-toggle-group.d.ts +85 -164
  159. package/types/radix-ng-primitives-toggle.d.ts +43 -53
  160. package/types/radix-ng-primitives-toolbar.d.ts +163 -38
  161. package/types/radix-ng-primitives-tooltip.d.ts +347 -384
  162. package/types/radix-ng-primitives-visually-hidden.d.ts +19 -19
  163. package/dropdown-menu/README.md +0 -1
  164. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -581
  165. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
  166. package/fesm2022/radix-ng-primitives-hover-card.mjs +0 -1238
  167. package/fesm2022/radix-ng-primitives-hover-card.mjs.map +0 -1
  168. package/fesm2022/radix-ng-primitives-select2.mjs +0 -897
  169. package/fesm2022/radix-ng-primitives-select2.mjs.map +0 -1
  170. package/fesm2022/radix-ng-primitives-tooltip2.mjs +0 -735
  171. package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +0 -1
  172. package/hover-card/README.md +0 -3
  173. package/select2/README.md +0 -3
  174. package/tooltip2/README.md +0 -3
  175. package/types/radix-ng-primitives-dropdown-menu.d.ts +0 -171
  176. package/types/radix-ng-primitives-hover-card.d.ts +0 -471
  177. package/types/radix-ng-primitives-select2.d.ts +0 -511
  178. package/types/radix-ng-primitives-tooltip2.d.ts +0 -325
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef } from '@angular/core';
3
- import { NumberInput, BooleanInput } from '@angular/cdk/coercion';
4
- import { Middleware, Placement } from '@floating-ui/dom';
2
+ import { ElementRef, InjectionToken, Provider } from '@angular/core';
3
+ import { ReferenceElement, Placement, Middleware, VirtualElement } from '@floating-ui/dom';
4
+ import { NumberInput, BooleanInput } from '@radix-ng/primitives/core';
5
5
 
6
6
  declare class RdxPopperAnchor {
7
7
  readonly elementRef: ElementRef<HTMLElement>;
@@ -10,7 +10,8 @@ declare class RdxPopperAnchor {
10
10
  }
11
11
 
12
12
  declare class RdxPopper {
13
- readonly anchor: _angular_core.Signal<RdxPopperAnchor>;
13
+ readonly anchor: _angular_core.Signal<RdxPopperAnchor | undefined>;
14
+ readonly anchorOverride: _angular_core.WritableSignal<ReferenceElement | undefined>;
14
15
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopper, never>;
15
16
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopper, "[rdxPopperRoot]", never, {}, {}, ["anchor"], never, true, never>;
16
17
  }
@@ -23,6 +24,7 @@ declare class RdxPopperContent {
23
24
  arrowY: _angular_core.Signal<number | undefined>;
24
25
  shouldHideArrow: _angular_core.Signal<boolean>;
25
26
  isPositioned: _angular_core.Signal<boolean>;
27
+ anchorHidden: _angular_core.Signal<boolean>;
26
28
  };
27
29
  /**
28
30
  * if the PopperContent hasn't been placed yet (not all measurements done)
@@ -46,6 +48,7 @@ declare function transformOrigin(options: {
46
48
  }): Middleware;
47
49
  declare function getSideAndAlignFromPlacement(placement: Placement): readonly ["top" | "right" | "bottom" | "left", "start" | "center" | "end"];
48
50
 
51
+ type RdxPopperAnchorElement = Element | ElementRef<Element> | VirtualElement | (() => Element | VirtualElement | null) | null | undefined;
49
52
  declare const context: () => {
50
53
  placedSide: _angular_core.Signal<"top" | "right" | "bottom" | "left" | undefined>;
51
54
  placedAlign: _angular_core.Signal<"start" | "center" | "end" | undefined>;
@@ -53,6 +56,7 @@ declare const context: () => {
53
56
  arrowY: _angular_core.Signal<number | undefined>;
54
57
  shouldHideArrow: _angular_core.Signal<boolean>;
55
58
  isPositioned: _angular_core.Signal<boolean>;
59
+ anchorHidden: _angular_core.Signal<boolean>;
56
60
  };
57
61
  type PopperContentWrapperContext = ReturnType<typeof context>;
58
62
  declare const injectPopperContentWrapperContext: (optional?: boolean) => {
@@ -62,6 +66,7 @@ declare const injectPopperContentWrapperContext: (optional?: boolean) => {
62
66
  arrowY: _angular_core.Signal<number | undefined>;
63
67
  shouldHideArrow: _angular_core.Signal<boolean>;
64
68
  isPositioned: _angular_core.Signal<boolean>;
69
+ anchorHidden: _angular_core.Signal<boolean>;
65
70
  } | null;
66
71
  declare const providePopperContentWrapperContext: (useFactory: () => {
67
72
  placedSide: _angular_core.Signal<"top" | "right" | "bottom" | "left" | undefined>;
@@ -70,13 +75,19 @@ declare const providePopperContentWrapperContext: (useFactory: () => {
70
75
  arrowY: _angular_core.Signal<number | undefined>;
71
76
  shouldHideArrow: _angular_core.Signal<boolean>;
72
77
  isPositioned: _angular_core.Signal<boolean>;
78
+ anchorHidden: _angular_core.Signal<boolean>;
73
79
  }) => _angular_core.Provider;
74
80
  declare class RdxPopperContentWrapper {
75
81
  private readonly elementRef;
76
- private readonly destroyRef;
77
82
  private readonly injector;
78
83
  private readonly context;
79
84
  private readonly isBrowser;
85
+ /** Optional positioning defaults provided by a composing primitive (e.g. tooltip). */
86
+ private readonly config;
87
+ /**
88
+ * An element to position the popup against. Defaults to the popper anchor.
89
+ */
90
+ readonly anchor: _angular_core.InputSignal<RdxPopperAnchorElement>;
80
91
  /**
81
92
  * The preferred side of the anchor to render against when open.
82
93
  * Will be reversed when collisions occur and avoidCollisions is enabled.
@@ -134,13 +145,17 @@ declare class RdxPopperContentWrapper {
134
145
  readonly placed: _angular_core.OutputEmitterRef<void>;
135
146
  readonly arrow: _angular_core.Signal<any>;
136
147
  readonly shouldHideArrow: _angular_core.Signal<boolean>;
148
+ /** Whether the arrow could not be centered on the anchor because the popup was shifted. */
149
+ readonly arrowUncentered: _angular_core.Signal<boolean>;
137
150
  readonly arrowX: _angular_core.Signal<number | undefined>;
138
151
  readonly arrowY: _angular_core.Signal<number | undefined>;
152
+ readonly anchorHidden: _angular_core.Signal<boolean>;
139
153
  private readonly desiredPlacement;
140
154
  private readonly arrowSize;
141
155
  private readonly boundary;
142
156
  private readonly hasExplicitBoundaries;
143
157
  private readonly detectOverflowOptions;
158
+ private readonly resolvedAnchor;
144
159
  private readonly position;
145
160
  /**
146
161
  * Whether the panel is positioned.
@@ -173,11 +188,13 @@ declare class RdxPopperContentWrapper {
173
188
  top: string;
174
189
  left: string;
175
190
  '--radix-popper-transform-origin': string;
191
+ '--radix-popper-content-wrapper-width': string;
192
+ '--radix-popper-content-wrapper-height': string;
176
193
  }>;
177
- private readonly afterNextRender;
194
+ private readonly afterRenderEffect;
178
195
  constructor();
179
196
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopperContentWrapper, never>;
180
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopperContentWrapper, "[rdxPopperContentWrapper]", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "alignOffset"; "required": false; "isSignal": true; }; "arrowPadding": { "alias": "arrowPadding"; "required": false; "isSignal": true; }; "avoidCollisions": { "alias": "avoidCollisions"; "required": false; "isSignal": true; }; "collisionBoundary": { "alias": "collisionBoundary"; "required": false; "isSignal": true; }; "collisionPadding": { "alias": "collisionPadding"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "hideWhenDetached": { "alias": "hideWhenDetached"; "required": false; "isSignal": true; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; "isSignal": true; }; "updatePositionStrategy": { "alias": "updatePositionStrategy"; "required": false; "isSignal": true; }; }, { "placed": "placed"; }, ["arrow", "contentElementRef"], never, true, never>;
197
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopperContentWrapper, "[rdxPopperContentWrapper]", never, { "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "alignOffset"; "required": false; "isSignal": true; }; "arrowPadding": { "alias": "arrowPadding"; "required": false; "isSignal": true; }; "avoidCollisions": { "alias": "avoidCollisions"; "required": false; "isSignal": true; }; "collisionBoundary": { "alias": "collisionBoundary"; "required": false; "isSignal": true; }; "collisionPadding": { "alias": "collisionPadding"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "hideWhenDetached": { "alias": "hideWhenDetached"; "required": false; "isSignal": true; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; "isSignal": true; }; "updatePositionStrategy": { "alias": "updatePositionStrategy"; "required": false; "isSignal": true; }; }, { "placed": "placed"; }, ["arrow", "contentElementRef"], never, true, never>;
181
198
  }
182
199
 
183
200
  declare class RdxPopperArrow {
@@ -201,7 +218,30 @@ declare class RdxPopperArrow {
201
218
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopperArrow, "[rdxPopperArrow]", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
202
219
  }
203
220
 
221
+ /**
222
+ * Default positioning values for `RdxPopperContentWrapper`.
223
+ *
224
+ * Lets a composing primitive (e.g. tooltip) provide its own Base UI-aligned defaults without
225
+ * changing the shared popper defaults that other consumers (e.g. popover) rely on. Any value left
226
+ * `undefined` falls back to the wrapper's built-in default. Consumer template bindings always win.
227
+ */
228
+ interface RdxPopperContentConfig {
229
+ side?: Side;
230
+ align?: Align;
231
+ sideOffset?: number;
232
+ alignOffset?: number;
233
+ arrowPadding?: number;
234
+ avoidCollisions?: boolean;
235
+ collisionPadding?: number | Partial<Record<Side, number>>;
236
+ sticky?: 'partial' | 'always';
237
+ hideWhenDetached?: boolean;
238
+ positionStrategy?: 'fixed' | 'absolute';
239
+ updatePositionStrategy?: 'optimized' | 'always';
240
+ }
241
+ declare const RdxPopperContentConfigToken: InjectionToken<RdxPopperContentConfig>;
242
+ declare function provideRdxPopperContentConfig(config: RdxPopperContentConfig): Provider;
243
+
204
244
  declare const popperImports: (typeof RdxPopperAnchor | typeof RdxPopper | typeof RdxPopperContent | typeof RdxPopperContentWrapper)[];
205
245
 
206
- export { RdxPopper, RdxPopperAnchor, RdxPopperArrow, RdxPopperContent, RdxPopperContentWrapper, getSideAndAlignFromPlacement, injectPopperContentWrapperContext, isNotNull, popperImports, providePopperContentWrapperContext, transformOrigin };
207
- export type { Align, PopperContentWrapperContext, Side };
246
+ export { RdxPopper, RdxPopperAnchor, RdxPopperArrow, RdxPopperContent, RdxPopperContentConfigToken, RdxPopperContentWrapper, getSideAndAlignFromPlacement, injectPopperContentWrapperContext, isNotNull, popperImports, providePopperContentWrapperContext, provideRdxPopperContentConfig, transformOrigin };
247
+ export type { Align, PopperContentWrapperContext, RdxPopperAnchorElement, RdxPopperContentConfig, Side };
@@ -1,22 +1,30 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { ElementRef } from '@angular/core';
3
3
 
4
+ /**
5
+ * A target container for the portal. Accepts an `ElementRef`, a native element, or a CSS selector
6
+ * resolved against the document.
7
+ */
8
+ type RdxPortalContainer = ElementRef<HTMLElement> | HTMLElement | string;
4
9
  declare class RdxPortal {
5
10
  private readonly elementRef;
6
11
  private readonly platformId;
7
12
  private readonly document;
8
13
  private readonly destroyRef;
9
14
  /**
10
- * Specify a container element to portal the content into.
15
+ * Specify a container to portal the content into. Can be an `ElementRef`, a native element, or a
16
+ * CSS selector. Defaults to `document.body` when not set (or when a selector matches nothing).
11
17
  */
12
- readonly container: _angular_core.InputSignal<ElementRef<HTMLElement> | undefined>;
13
- private _computedContainer;
14
- readonly computedContainer: _angular_core.WritableSignal<ElementRef<HTMLElement> | undefined>;
18
+ readonly container: _angular_core.InputSignal<RdxPortalContainer | undefined>;
19
+ private readonly _computedContainer;
20
+ readonly computedContainer: _angular_core.Signal<RdxPortalContainer | undefined>;
15
21
  private readonly elementContainer;
16
22
  constructor();
17
- setContainer(container: ElementRef<HTMLElement>): void;
23
+ setContainer(container: RdxPortalContainer): void;
24
+ private resolveContainer;
18
25
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPortal, never>;
19
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPortal, "[rdxPortal]", never, { "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
26
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPortal, "[rdxPortal]", ["rdxPortal"], { "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
27
  }
21
28
 
22
29
  export { RdxPortal };
30
+ export type { RdxPortalContainer };
@@ -1,59 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgZone, Signal, InjectionToken, Provider } from '@angular/core';
3
- import { Subject, Observable } from 'rxjs';
4
-
5
- type TransitionOptions<T> = {
6
- context?: T;
7
- animation: boolean;
8
- state?: 'continue' | 'stop';
9
- transitionTimerDelayMs?: number;
10
- };
11
- type TransitionContext<T> = {
12
- transition$: Subject<any>;
13
- complete: () => void;
14
- context: T;
15
- };
16
- type TransitionStartFn<T = any> = (element: HTMLElement, animation: boolean, context: T) => TransitionEndFn | void;
17
- type TransitionEndFn = () => void;
18
-
19
- /**
20
- * Manages the presence of an element with optional transition animation.
21
- *
22
- * @template T - The type of the context object used in the transition.
23
- * @param {NgZone} zone - The Angular zone to control the change detection context.
24
- * @param {HTMLElement} element - The target HTML element to apply the transition.
25
- * @param {TransitionOptions<T>} options - Options for controlling the transition behavior.
26
- * @param {T} [options.context] - An optional context object to pass through the transition.
27
- * @param {boolean} options.animation - A flag indicating if the transition should be animated.
28
- * @param {'start' | 'continue' | 'stop'} options.state - The desired state of the transition.
29
- * @param {TransitionStartFn<T>} startFn - A function to start the transition.
30
- * @returns {Observable<void>} - An observable that emits when the transition completes.
31
- *
32
- * The `usePresence` function is designed to manage the presence and visibility of an HTML element,
33
- * optionally applying a transition animation. It utilizes Angular's NgZone for efficient change
34
- * detection management and allows for different states of transitions ('start', 'continue', 'stop').
35
- * The function takes a start function to handle the beginning of the transition and returns an
36
- * observable that completes when the transition ends.
37
- *
38
- * Example usage:
39
- *
40
- * const options: TransitionOptions<MyContext> = {
41
- * context: {}, // your context object
42
- * animation: true,
43
- * state: 'start'
44
- * };
45
- *
46
- * const startFn: TransitionStartFn<MyContext> = (el, animation, context) => {
47
- * el.classList.add('active');
48
- * return () => el.classList.remove('active');
49
- * };
50
- *
51
- * usePresence(zone, element, startFn, options).subscribe(() => {
52
- * console.log('Transition completed');
53
- * });
54
- */
55
- declare const usePresence: <T>(zone: NgZone, element: HTMLElement, startFn: TransitionStartFn<T>, options: TransitionOptions<T>) => Observable<void>;
56
- declare const completeTransition: (element: HTMLElement) => void;
2
+ import { InjectionToken, Signal, Provider } from '@angular/core';
57
3
 
58
4
  /**
59
5
  * Context interface for RdxPresence directive
@@ -72,32 +18,38 @@ declare const RDX_PRESENCE_CONTEXT: InjectionToken<RdxPresenceContext>;
72
18
  * ]
73
19
  */
74
20
  declare function provideRdxPresenceContext(contextFactory: () => RdxPresenceContext): Provider;
21
+ /**
22
+ * Headless structural directive that conditionally renders its template based on a reactive
23
+ * `present` signal supplied through {@link RDX_PRESENCE_CONTEXT}.
24
+ *
25
+ * Unlike a plain `*ngIf`, it keeps the content mounted while a CSS exit animation
26
+ * (`@keyframes` applied for the closed state) is running, and unmounts it only once that
27
+ * animation finishes. If the content has no exit animation, it unmounts immediately.
28
+ */
75
29
  declare class RdxPresenceDirective {
76
30
  private readonly context;
77
31
  private readonly viewContainerRef;
78
32
  private readonly templateRef;
79
- private effectRef;
33
+ private readonly injector;
34
+ private readonly isBrowser;
35
+ private viewRef;
36
+ private node;
37
+ private removeListeners;
38
+ private state;
39
+ private prevPresent;
40
+ private prevAnimationName;
41
+ constructor();
42
+ /** Decides whether to suspend the unmount for an exit animation (port of Radix' logic). */
43
+ private evaluateExit;
44
+ private send;
45
+ private mountView;
46
+ private destroyView;
47
+ private addAnimationListeners;
48
+ private getComputedStyles;
49
+ private getAnimationName;
80
50
  static ɵfac: i0.ɵɵFactoryDeclaration<RdxPresenceDirective, never>;
81
51
  static ɵdir: i0.ɵɵDirectiveDeclaration<RdxPresenceDirective, never, never, {}, {}, never, never, true, never>;
82
52
  }
83
53
 
84
- type CollapseContext = {
85
- direction: 'show' | 'hide';
86
- dimension: 'width' | 'height';
87
- maxSize?: string;
88
- };
89
- /**
90
- * Function to handle the start of a collapsing transition.
91
- *
92
- * @param element - The HTML element to animate.
93
- * @param animation - Whether to use animation or not.
94
- * @param context - The context containing direction and dimension information.
95
- * @returns A function to clean up the animation.
96
- */
97
- declare const transitionCollapsing: TransitionStartFn<CollapseContext>;
98
-
99
- declare const toastFadeInTransition: TransitionStartFn;
100
- declare const toastFadeOutTransition: TransitionStartFn;
101
-
102
- export { RDX_PRESENCE_CONTEXT, RdxPresenceDirective, completeTransition, provideRdxPresenceContext, toastFadeInTransition, toastFadeOutTransition, transitionCollapsing, usePresence };
103
- export type { CollapseContext, RdxPresenceContext, TransitionContext, TransitionEndFn, TransitionOptions, TransitionStartFn };
54
+ export { RDX_PRESENCE_CONTEXT, RdxPresenceDirective, provideRdxPresenceContext };
55
+ export type { RdxPresenceContext };