@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
@@ -0,0 +1,416 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Signal, ElementRef } from '@angular/core';
3
+ import * as i1 from '@radix-ng/primitives/presence';
4
+ import { RdxTransitionStatus, BooleanInput, NumberInput } from '@radix-ng/primitives/core';
5
+ import * as i1$1 from '@radix-ng/primitives/popper';
6
+ import { RdxPopperContentWrapper, RdxPopperAnchorElement } from '@radix-ng/primitives/popper';
7
+ import * as _radix_ng_primitives_popover from '@radix-ng/primitives/popover';
8
+ import * as i1$2 from '@radix-ng/primitives/portal';
9
+ import { RdxPortalContainer } from '@radix-ng/primitives/portal';
10
+ import * as i2 from '@radix-ng/primitives/dismissable-layer';
11
+ import * as i3 from '@radix-ng/primitives/focus-scope';
12
+
13
+ /**
14
+ * Mounts the portal while the popover is open and waits for CSS exit keyframes before unmounting.
15
+ */
16
+ declare class RdxPopoverPortalPresence {
17
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverPortalPresence, never>;
18
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverPortalPresence, "ng-template[rdxPopoverPortalPresence]", never, {}, {}, never, never, true, [{ directive: typeof i1.RdxPresenceDirective; inputs: {}; outputs: {}; }]>;
19
+ }
20
+
21
+ declare class RdxPopoverHandle<Payload = unknown> {
22
+ private readonly rootContext;
23
+ private readonly triggers;
24
+ private readonly rootTriggerCleanups;
25
+ readonly isOpen: _angular_core.Signal<boolean>;
26
+ open(triggerId: string): void;
27
+ close(): void;
28
+ toggle(triggerId: string, event?: Event): void;
29
+ registerRoot(rootContext: RdxPopoverRootContext): () => void;
30
+ registerTrigger(id: string, trigger: HTMLElement, payload: () => Payload | undefined): () => void;
31
+ context(): RdxPopoverRootContext | undefined;
32
+ }
33
+ declare function createRdxPopoverHandle<Payload = unknown>(): RdxPopoverHandle<Payload>;
34
+
35
+ type RdxPopoverModal = boolean | 'trap-focus';
36
+ type RdxPopoverOpenChangeReason = 'trigger-hover' | 'trigger-focus' | 'trigger-press' | 'outside-press' | 'escape-key' | 'close-press' | 'focus-out' | 'imperative-action' | 'none';
37
+ interface RdxPopoverOpenChange {
38
+ open: boolean;
39
+ triggerId: string | null;
40
+ trigger: HTMLElement | undefined;
41
+ reason: RdxPopoverOpenChangeReason;
42
+ event: Event;
43
+ }
44
+ interface RdxPopoverRootContext {
45
+ contentId: string;
46
+ descriptionId: Signal<string | undefined>;
47
+ isOpen: Signal<boolean>;
48
+ modal: Signal<RdxPopoverModal>;
49
+ titleId: Signal<string | undefined>;
50
+ trigger: Signal<HTMLElement | undefined>;
51
+ triggers: Signal<HTMLElement[]>;
52
+ hasPopupClose: Signal<boolean>;
53
+ isHoverActive: Signal<boolean>;
54
+ instant: Signal<boolean>;
55
+ openChangeReason: Signal<RdxPopoverOpenChangeReason>;
56
+ isPointerDownOnTrigger: Signal<boolean>;
57
+ close: (reason?: RdxPopoverOpenChangeReason, event?: Event) => void;
58
+ cancelHoverClose: () => void;
59
+ cancelHoverOpen: () => void;
60
+ closeOnHover: () => void;
61
+ payload: Signal<unknown>;
62
+ open: (trigger?: HTMLElement, payload?: unknown, triggerId?: string, reason?: RdxPopoverOpenChangeReason, event?: Event) => void;
63
+ openOnHover: (trigger: HTMLElement, payload: unknown, triggerId: string, event: PointerEvent) => void;
64
+ registerTrigger: (id: string, trigger: HTMLElement, payload: () => unknown) => () => void;
65
+ setDescriptionId: (id: string | undefined) => void;
66
+ setTitleId: (id: string | undefined) => void;
67
+ setPointerDownOnTrigger: (pointerDown: boolean) => void;
68
+ setHoverDelays: (delay: number, closeDelay: number) => void;
69
+ registerPopupClose: () => () => void;
70
+ registerTransitionElement: (element: HTMLElement) => () => void;
71
+ transitionStatus: Signal<RdxPopoverTransitionStatus>;
72
+ registerViewport: (onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void) => () => void;
73
+ toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;
74
+ }
75
+ declare const injectRdxPopoverRootContext: (optional?: boolean) => RdxPopoverRootContext | null;
76
+ declare const provideRdxPopoverRootContext: (useFactory: () => RdxPopoverRootContext) => _angular_core.Provider;
77
+ type RdxPopoverTransitionStatus = RdxTransitionStatus;
78
+ /**
79
+ * Groups all parts of the popover.
80
+ */
81
+ declare class RdxPopoverRoot {
82
+ private readonly popper;
83
+ private readonly destroyRef;
84
+ private hasAppliedDefaultOpen;
85
+ private hasAppliedDefaultTriggerId;
86
+ private openTimer;
87
+ private closeTimer;
88
+ private hoverDelay;
89
+ private hoverCloseDelay;
90
+ private instantFrame;
91
+ private readonly transition;
92
+ readonly isHoverActive: _angular_core.WritableSignal<boolean>;
93
+ readonly instant: _angular_core.WritableSignal<boolean>;
94
+ readonly openChangeReason: _angular_core.WritableSignal<RdxPopoverOpenChangeReason>;
95
+ readonly transitionStatus: Signal<RdxTransitionStatus>;
96
+ /**
97
+ * Whether the popover is currently open.
98
+ */
99
+ readonly open: _angular_core.ModelSignal<boolean>;
100
+ /**
101
+ * Whether the popover is initially open.
102
+ */
103
+ readonly defaultOpen: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
104
+ /**
105
+ * ID of the trigger associated with a controlled popover.
106
+ */
107
+ readonly triggerId: _angular_core.ModelSignal<string | null>;
108
+ /**
109
+ * ID of the trigger associated with an initially open uncontrolled popover.
110
+ */
111
+ readonly defaultTriggerId: _angular_core.InputSignal<string | null>;
112
+ /**
113
+ * Determines whether the popover blocks outside interaction or only traps focus.
114
+ */
115
+ readonly modal: _angular_core.InputSignalWithTransform<RdxPopoverModal, BooleanInput>;
116
+ /**
117
+ * Associates this root with detached trigger elements.
118
+ */
119
+ readonly handle: _angular_core.InputSignal<RdxPopoverHandle<any> | undefined>;
120
+ readonly contentId: string;
121
+ readonly descriptionId: _angular_core.WritableSignal<string | undefined>;
122
+ readonly titleId: _angular_core.WritableSignal<string | undefined>;
123
+ readonly trigger: _angular_core.WritableSignal<HTMLElement | undefined>;
124
+ readonly triggers: _angular_core.WritableSignal<HTMLElement[]>;
125
+ readonly payload: _angular_core.WritableSignal<unknown>;
126
+ readonly isPointerDownOnTrigger: _angular_core.WritableSignal<boolean>;
127
+ readonly popupCloseCount: _angular_core.WritableSignal<number>;
128
+ readonly onOpenChange: _angular_core.OutputEmitterRef<RdxPopoverOpenChange>;
129
+ readonly onOpenChangeComplete: _angular_core.OutputEmitterRef<boolean>;
130
+ private readonly registeredTriggers;
131
+ private readonly viewportTriggerChange;
132
+ readonly state: Signal<"open" | "closed">;
133
+ constructor();
134
+ show(trigger?: HTMLElement | undefined, payload?: unknown, triggerId?: string, reason?: RdxPopoverOpenChangeReason, event?: Event, fromHover?: boolean): void;
135
+ close(reason?: RdxPopoverOpenChangeReason, event?: Event): void;
136
+ toggle(triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event): void;
137
+ openOnHover(trigger: HTMLElement, payload: unknown, triggerId: string, event: PointerEvent): void;
138
+ closeOnHover(): void;
139
+ cancelHoverClose(): void;
140
+ cancelHoverOpen(): void;
141
+ setHoverDelays(delay: number, closeDelay: number): void;
142
+ registerTrigger(id: string, trigger: HTMLElement, payload: () => unknown): () => void;
143
+ registerViewport(onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void): () => boolean;
144
+ registerTransitionElement(element: HTMLElement): () => void;
145
+ private syncTriggerId;
146
+ private emitOpenChange;
147
+ private clearHoverTimers;
148
+ private clearOpenTimer;
149
+ private clearCloseTimer;
150
+ private scheduleInstantReset;
151
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverRoot, never>;
152
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverRoot, "[rdxPopoverRoot]", ["rdxPopoverRoot"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "triggerId": { "alias": "triggerId"; "required": false; "isSignal": true; }; "defaultTriggerId": { "alias": "defaultTriggerId"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "handle": { "alias": "handle"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "triggerId": "triggerIdChange"; "onOpenChange": "onOpenChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1$1.RdxPopper; inputs: {}; outputs: {}; }]>;
153
+ }
154
+
155
+ /**
156
+ * A button that opens the popover.
157
+ */
158
+ declare class RdxPopoverTrigger {
159
+ private readonly parentRootContext;
160
+ readonly elementRef: ElementRef<HTMLElement>;
161
+ /**
162
+ * Associates this trigger with a detached popover root.
163
+ */
164
+ readonly handle: _angular_core.InputSignal<RdxPopoverHandle<any> | undefined>;
165
+ /**
166
+ * Data associated with this trigger while it is active.
167
+ */
168
+ readonly payload: _angular_core.InputSignal<unknown>;
169
+ /**
170
+ * ID used to identify this trigger when opening a detached popover imperatively.
171
+ */
172
+ readonly id: _angular_core.InputSignal<string | undefined>;
173
+ /**
174
+ * Whether the trigger should ignore user interaction.
175
+ */
176
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
177
+ /**
178
+ * Whether the popover should also open when this trigger is hovered.
179
+ */
180
+ readonly openOnHover: _angular_core.InputSignalWithTransform<boolean, unknown>;
181
+ /**
182
+ * How long to wait before opening the popover on hover, in milliseconds.
183
+ */
184
+ readonly delay: _angular_core.InputSignalWithTransform<number, NumberInput>;
185
+ /**
186
+ * How long to wait before closing a hover-opened popover, in milliseconds.
187
+ */
188
+ readonly closeDelay: _angular_core.InputSignalWithTransform<number, NumberInput>;
189
+ protected readonly triggerId: _angular_core.Signal<string>;
190
+ protected readonly rootContext: _angular_core.Signal<_radix_ng_primitives_popover.RdxPopoverRootContext | null>;
191
+ protected readonly isOpen: _angular_core.Signal<boolean>;
192
+ protected readonly isPressed: _angular_core.Signal<boolean>;
193
+ private readonly generatedId;
194
+ constructor();
195
+ protected handleClick(event: MouseEvent): void;
196
+ protected handlePointerEnter(event: PointerEvent): void;
197
+ protected handlePointerLeave(event: PointerEvent): void;
198
+ protected handlePointerDown(): void;
199
+ protected handlePointerUp(): void;
200
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverTrigger, never>;
201
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverTrigger, "button[rdxPopoverTrigger]", never, { "handle": { "alias": "handle"; "required": false; "isSignal": true; }; "payload": { "alias": "payload"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "openOnHover": { "alias": "openOnHover"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$1.RdxPopperAnchor; inputs: {}; outputs: {}; }]>;
202
+ }
203
+
204
+ /**
205
+ * Moves the popover to a different part of the DOM.
206
+ */
207
+ declare class RdxPopoverPortal {
208
+ protected readonly rootContext: _radix_ng_primitives_popover.RdxPopoverRootContext;
209
+ /**
210
+ * Optional container to portal the content into. Defaults to `document.body`.
211
+ */
212
+ readonly container: _angular_core.InputSignal<RdxPortalContainer | undefined>;
213
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverPortal, never>;
214
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverPortal, "[rdxPopoverPortal]", never, { "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$2.RdxPortal; inputs: { "container": "container"; }; outputs: {}; }]>;
215
+ }
216
+
217
+ /**
218
+ * An optional backdrop rendered behind the popup.
219
+ */
220
+ declare class RdxPopoverBackdrop {
221
+ protected readonly rootContext: _radix_ng_primitives_popover.RdxPopoverRootContext;
222
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverBackdrop, never>;
223
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverBackdrop, "[rdxPopoverBackdrop]", never, {}, {}, never, never, true, never>;
224
+ }
225
+
226
+ /**
227
+ * Positions the popover against its trigger.
228
+ */
229
+ declare class RdxPopoverPositioner {
230
+ protected readonly rootContext: _radix_ng_primitives_popover.RdxPopoverRootContext;
231
+ protected readonly wrapper: RdxPopperContentWrapper;
232
+ private readonly elementRef;
233
+ private readonly triggerEl;
234
+ private readonly containerEl;
235
+ private readonly graceArea;
236
+ /**
237
+ * An element to position the popup against. Defaults to the trigger.
238
+ */
239
+ readonly anchor: _angular_core.InputSignal<RdxPopperAnchorElement>;
240
+ /**
241
+ * The preferred side of the trigger to render against when open.
242
+ */
243
+ readonly side: _angular_core.InputSignal<"top" | "right" | "bottom" | "left">;
244
+ /**
245
+ * Distance between the trigger and the popup in pixels.
246
+ */
247
+ readonly sideOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
248
+ /**
249
+ * How to align the popup relative to the specified side.
250
+ */
251
+ readonly align: _angular_core.InputSignal<"start" | "center" | "end">;
252
+ /**
253
+ * An offset in pixels from the `start` or `end` alignment options.
254
+ */
255
+ readonly alignOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
256
+ /**
257
+ * Minimum distance to maintain between the arrow and the edges of the popup.
258
+ */
259
+ readonly arrowPadding: _angular_core.InputSignalWithTransform<number, NumberInput>;
260
+ /**
261
+ * Whether to override side and alignment preferences to prevent collisions.
262
+ */
263
+ readonly avoidCollisions: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
264
+ /**
265
+ * The element used as the collision boundary.
266
+ */
267
+ readonly collisionBoundary: _angular_core.InputSignal<ElementRef<HTMLElement> | ElementRef<HTMLElement>[] | undefined>;
268
+ /**
269
+ * Distance in pixels from the boundary edges where collision detection should occur.
270
+ */
271
+ readonly collisionPadding: _angular_core.InputSignal<number | Partial<Record<"top" | "right" | "bottom" | "left", number>>>;
272
+ /**
273
+ * The sticky behavior on the alignment axis.
274
+ */
275
+ readonly sticky: _angular_core.InputSignal<"always" | "partial">;
276
+ /**
277
+ * Whether to hide the popup when the trigger becomes fully occluded.
278
+ */
279
+ readonly hideWhenDetached: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
280
+ /**
281
+ * The CSS position strategy used by Floating UI.
282
+ */
283
+ readonly positionStrategy: _angular_core.InputSignal<"fixed" | "absolute">;
284
+ /**
285
+ * Whether to update position on every animation frame.
286
+ */
287
+ readonly updatePositionStrategy: _angular_core.InputSignal<"always" | "optimized">;
288
+ /**
289
+ * Emits when the popup has been placed.
290
+ */
291
+ readonly placed: _angular_core.OutputRef<void>;
292
+ constructor();
293
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverPositioner, never>;
294
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverPositioner, "[rdxPopoverPositioner]", 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"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContentWrapper; inputs: { "anchor": "anchor"; "side": "side"; "sideOffset": "sideOffset"; "align": "align"; "alignOffset": "alignOffset"; "arrowPadding": "arrowPadding"; "avoidCollisions": "avoidCollisions"; "collisionBoundary": "collisionBoundary"; "collisionPadding": "collisionPadding"; "sticky": "sticky"; "hideWhenDetached": "hideWhenDetached"; "positionStrategy": "positionStrategy"; "updatePositionStrategy": "updatePositionStrategy"; }; outputs: {}; }]>;
295
+ }
296
+
297
+ /**
298
+ * A container for the popover contents.
299
+ */
300
+ declare class RdxPopoverPopup {
301
+ protected readonly rootContext: _radix_ng_primitives_popover.RdxPopoverRootContext;
302
+ private readonly dismissableLayer;
303
+ private readonly focusScope;
304
+ private readonly wrapper;
305
+ protected readonly align: _angular_core.Signal<"start" | "center" | "end" | undefined>;
306
+ protected readonly side: _angular_core.Signal<"top" | "right" | "bottom" | "left" | undefined>;
307
+ private dismissDetails;
308
+ /**
309
+ * Event handler called when the escape key is down. Can be prevented.
310
+ */
311
+ readonly escapeKeyDown: _angular_core.OutputRef<KeyboardEvent>;
312
+ /**
313
+ * Event handler called when a pointerdown event happens outside of the popup. Can be prevented.
314
+ */
315
+ readonly pointerDownOutside: _angular_core.OutputRef<PointerEvent>;
316
+ /**
317
+ * Event handler called when focus moves outside of the popup. Can be prevented.
318
+ */
319
+ readonly focusOutside: _angular_core.OutputRef<FocusEvent>;
320
+ /**
321
+ * Event handler called when an interaction happens outside of the popup. Can be prevented.
322
+ */
323
+ readonly interactOutside: _angular_core.OutputRef<PointerEvent | FocusEvent>;
324
+ /**
325
+ * Event handler called before focus moves into the popup. Can be prevented.
326
+ */
327
+ readonly openAutoFocus: _angular_core.OutputRef<Event>;
328
+ /**
329
+ * Event handler called before focus returns after the popup is removed. Can be prevented.
330
+ */
331
+ readonly closeAutoFocus: _angular_core.OutputRef<Event>;
332
+ constructor();
333
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverPopup, never>;
334
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverPopup, "[rdxPopoverPopup]", never, {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; "openAutoFocus": "openAutoFocus"; "closeAutoFocus": "closeAutoFocus"; }, never, never, true, [{ directive: typeof i1$1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof i2.RdxDismissableLayer; inputs: {}; outputs: {}; }, { directive: typeof i3.RdxFocusScope; inputs: {}; outputs: {}; }]>;
335
+ }
336
+
337
+ /**
338
+ * An optional arrow element rendered alongside the popover.
339
+ */
340
+ declare class RdxPopoverArrow {
341
+ protected readonly rootContext: _radix_ng_primitives_popover.RdxPopoverRootContext;
342
+ private readonly wrapper;
343
+ protected readonly side: _angular_core.Signal<"top" | "right" | "bottom" | "left" | undefined>;
344
+ protected readonly align: _angular_core.Signal<"start" | "center" | "end" | undefined>;
345
+ protected readonly uncentered: _angular_core.Signal<boolean>;
346
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverArrow, never>;
347
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverArrow, "[rdxPopoverArrow]", never, {}, {}, never, never, true, [{ directive: typeof i1$1.RdxPopperArrow; inputs: {}; outputs: {}; }]>;
348
+ }
349
+
350
+ /**
351
+ * An accessible title for the popover.
352
+ */
353
+ declare class RdxPopoverTitle {
354
+ private readonly rootContext;
355
+ readonly id: string;
356
+ constructor();
357
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverTitle, never>;
358
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverTitle, "[rdxPopoverTitle]", never, {}, {}, never, never, true, never>;
359
+ }
360
+
361
+ /**
362
+ * An accessible description for the popover.
363
+ */
364
+ declare class RdxPopoverDescription {
365
+ private readonly rootContext;
366
+ readonly id: string;
367
+ constructor();
368
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverDescription, never>;
369
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverDescription, "[rdxPopoverDescription]", never, {}, {}, never, never, true, never>;
370
+ }
371
+
372
+ /**
373
+ * A button that closes the popover.
374
+ */
375
+ declare class RdxPopoverClose {
376
+ protected readonly rootContext: _radix_ng_primitives_popover.RdxPopoverRootContext;
377
+ constructor();
378
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverClose, never>;
379
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverClose, "button[rdxPopoverClose]", never, {}, {}, never, never, true, never>;
380
+ }
381
+
382
+ /**
383
+ * A viewport for animating content changes when a popover moves between triggers.
384
+ *
385
+ * Render one direct child inside the viewport. It is marked with `data-current`;
386
+ * when the active trigger changes, a DOM snapshot is retained as `data-previous`
387
+ * until its CSS animation or transition completes.
388
+ */
389
+ declare class RdxPopoverViewport {
390
+ private readonly rootContext;
391
+ private readonly elementRef;
392
+ private readonly destroyRef;
393
+ private previous;
394
+ private cleanupTimer;
395
+ private observer;
396
+ protected readonly activationDirection: _angular_core.WritableSignal<string | undefined>;
397
+ protected readonly transitioning: _angular_core.WritableSignal<boolean>;
398
+ constructor();
399
+ private startTransition;
400
+ private markCurrent;
401
+ private current;
402
+ private scheduleCleanup;
403
+ private cleanupPrevious;
404
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverViewport, never>;
405
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPopoverViewport, "[rdxPopoverViewport]", never, {}, {}, never, never, true, never>;
406
+ }
407
+
408
+ declare const popoverImports: (typeof RdxPopoverPortalPresence)[];
409
+ declare class RdxPopoverModule {
410
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopoverModule, never>;
411
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxPopoverModule, never, [typeof RdxPopoverRoot, typeof RdxPopoverTrigger, typeof RdxPopoverPortalPresence, typeof RdxPopoverPortal, typeof RdxPopoverBackdrop, typeof RdxPopoverPositioner, typeof RdxPopoverPopup, typeof RdxPopoverArrow, typeof RdxPopoverTitle, typeof RdxPopoverDescription, typeof RdxPopoverClose, typeof RdxPopoverViewport], [typeof RdxPopoverRoot, typeof RdxPopoverTrigger, typeof RdxPopoverPortalPresence, typeof RdxPopoverPortal, typeof RdxPopoverBackdrop, typeof RdxPopoverPositioner, typeof RdxPopoverPopup, typeof RdxPopoverArrow, typeof RdxPopoverTitle, typeof RdxPopoverDescription, typeof RdxPopoverClose, typeof RdxPopoverViewport]>;
412
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<RdxPopoverModule>;
413
+ }
414
+
415
+ export { RdxPopoverArrow, RdxPopoverBackdrop, RdxPopoverClose, RdxPopoverDescription, RdxPopoverHandle, RdxPopoverModule, RdxPopoverPopup, RdxPopoverPortal, RdxPopoverPortalPresence, RdxPopoverPositioner, RdxPopoverRoot, RdxPopoverTitle, RdxPopoverTrigger, RdxPopoverViewport, createRdxPopoverHandle, injectRdxPopoverRootContext, popoverImports, provideRdxPopoverRootContext };
416
+ export type { RdxPopoverModal, RdxPopoverOpenChange, RdxPopoverOpenChangeReason, RdxPopoverRootContext, RdxPopoverTransitionStatus };
@@ -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,10 +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;
195
+ constructor();
178
196
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPopperContentWrapper, never>;
179
- 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>;
180
198
  }
181
199
 
182
200
  declare class RdxPopperArrow {
@@ -200,7 +218,30 @@ declare class RdxPopperArrow {
200
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>;
201
219
  }
202
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
+
203
244
  declare const popperImports: (typeof RdxPopperAnchor | typeof RdxPopper | typeof RdxPopperContent | typeof RdxPopperContentWrapper)[];
204
245
 
205
- export { RdxPopper, RdxPopperAnchor, RdxPopperArrow, RdxPopperContent, RdxPopperContentWrapper, getSideAndAlignFromPlacement, injectPopperContentWrapperContext, isNotNull, popperImports, providePopperContentWrapperContext, transformOrigin };
206
- 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 };
@@ -0,0 +1,30 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef } from '@angular/core';
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;
9
+ declare class RdxPortal {
10
+ private readonly elementRef;
11
+ private readonly platformId;
12
+ private readonly document;
13
+ private readonly destroyRef;
14
+ /**
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).
17
+ */
18
+ readonly container: _angular_core.InputSignal<RdxPortalContainer | undefined>;
19
+ private readonly _computedContainer;
20
+ readonly computedContainer: _angular_core.Signal<RdxPortalContainer | undefined>;
21
+ private readonly elementContainer;
22
+ constructor();
23
+ setContainer(container: RdxPortalContainer): void;
24
+ private resolveContainer;
25
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPortal, never>;
26
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPortal, "[rdxPortal]", ["rdxPortal"], { "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
27
+ }
28
+
29
+ export { RdxPortal };
30
+ export type { RdxPortalContainer };
@@ -0,0 +1,55 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Signal, Provider } from '@angular/core';
3
+
4
+ /**
5
+ * Context interface for RdxPresence directive
6
+ * Contains a Signal that indicates whether the content should be present in the DOM
7
+ */
8
+ type RdxPresenceContext = {
9
+ present: Signal<boolean>;
10
+ };
11
+ declare const RDX_PRESENCE_CONTEXT: InjectionToken<RdxPresenceContext>;
12
+ /**
13
+ * Factory provider helper.
14
+ * In your parent component/directive you can write:
15
+ *
16
+ * providers: [
17
+ * provideRdxPresenceContext(() => ({ present: myBooleanSignal }))
18
+ * ]
19
+ */
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
+ */
29
+ declare class RdxPresenceDirective {
30
+ private readonly context;
31
+ private readonly viewContainerRef;
32
+ private readonly templateRef;
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;
50
+ static ɵfac: i0.ɵɵFactoryDeclaration<RdxPresenceDirective, never>;
51
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RdxPresenceDirective, never, never, {}, {}, never, never, true, never>;
52
+ }
53
+
54
+ export { RDX_PRESENCE_CONTEXT, RdxPresenceDirective, provideRdxPresenceContext };
55
+ export type { RdxPresenceContext };