@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,18 +1,18 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Directive, contentChild, computed, DestroyRef, Injector, PLATFORM_ID, input, numberAttribute, booleanAttribute, output, forwardRef, resource, afterNextRender, EnvironmentInjector, effect, createComponent, inputBinding } from '@angular/core';
2
+ import { inject, ElementRef, Directive, contentChild, signal, computed, InjectionToken, Injector, PLATFORM_ID, input, numberAttribute, booleanAttribute, output, forwardRef, resource, afterRenderEffect, afterNextRender, EnvironmentInjector, effect, createComponent, inputBinding } from '@angular/core';
3
3
  import { RdxArrow } from '@radix-ng/primitives/arrow';
4
4
  import { isPlatformBrowser } from '@angular/common';
5
- import { computePosition, offset, shift, flip, size, arrow, hide, limitShift, autoUpdate } from '@floating-ui/dom';
6
- import { createContext, elementSize } from '@radix-ng/primitives/core';
5
+ import { computePosition, offset, shift, limitShift, flip, size, arrow, hide, autoUpdate } from '@floating-ui/dom';
6
+ import { createContext, elementSize, watch } from '@radix-ng/primitives/core';
7
7
 
8
8
  class RdxPopperAnchor {
9
9
  constructor() {
10
10
  this.elementRef = inject(ElementRef);
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopperAnchor, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: RdxPopperAnchor, isStandalone: true, selector: "[rdxPopperAnchor]", ngImport: i0 }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopperAnchor, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxPopperAnchor, isStandalone: true, selector: "[rdxPopperAnchor]", ngImport: i0 }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopperAnchor, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopperAnchor, decorators: [{
16
16
  type: Directive,
17
17
  args: [{
18
18
  selector: '[rdxPopperAnchor]'
@@ -21,17 +21,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
21
21
 
22
22
  class RdxPopper {
23
23
  constructor() {
24
- this.anchor = contentChild.required(RdxPopperAnchor);
24
+ this.anchor = contentChild(RdxPopperAnchor, ...(ngDevMode ? [{ debugName: "anchor" }] : /* istanbul ignore next */ []));
25
+ this.anchorOverride = signal(undefined, ...(ngDevMode ? [{ debugName: "anchorOverride" }] : /* istanbul ignore next */ []));
25
26
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopper, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
27
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.3", type: RdxPopper, isStandalone: true, selector: "[rdxPopperRoot]", queries: [{ propertyName: "anchor", first: true, predicate: RdxPopperAnchor, descendants: true, isSignal: true }], ngImport: i0 }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopper, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
28
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.9", type: RdxPopper, isStandalone: true, selector: "[rdxPopperRoot]", queries: [{ propertyName: "anchor", first: true, predicate: RdxPopperAnchor, descendants: true, isSignal: true }], ngImport: i0 }); }
28
29
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopper, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopper, decorators: [{
30
31
  type: Directive,
31
32
  args: [{
32
33
  selector: '[rdxPopperRoot]'
33
34
  }]
34
- }] });
35
+ }], propDecorators: { anchor: [{ type: i0.ContentChild, args: [i0.forwardRef(() => RdxPopperAnchor), { isSignal: true }] }] } });
35
36
 
36
37
  class RdxPopperContent {
37
38
  constructor() {
@@ -42,12 +43,12 @@ class RdxPopperContent {
42
43
  */
43
44
  this.style = computed(() => ({
44
45
  animation: !this.popperContentWrapper.isPositioned() ? 'none' : undefined
45
- }), ...(ngDevMode ? [{ debugName: "style" }] : []));
46
+ }), ...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
46
47
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopperContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
48
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: RdxPopperContent, isStandalone: true, selector: "[rdxPopperContent]", host: { properties: { "attr.data-side": "popperContentWrapper.placedSide()", "attr.data-align": "popperContentWrapper.placedAlign()", "style": "style()" } }, ngImport: i0 }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopperContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
49
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxPopperContent, isStandalone: true, selector: "[rdxPopperContent]", host: { properties: { "attr.data-side": "popperContentWrapper.placedSide()", "attr.data-align": "popperContentWrapper.placedAlign()", "style": "style()" } }, ngImport: i0 }); }
49
50
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopperContent, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopperContent, decorators: [{
51
52
  type: Directive,
52
53
  args: [{
53
54
  selector: '[rdxPopperContent]',
@@ -59,6 +60,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
59
60
  }]
60
61
  }] });
61
62
 
63
+ const RdxPopperContentConfigToken = new InjectionToken('RdxPopperContentConfig', {
64
+ factory: () => ({})
65
+ });
66
+ function provideRdxPopperContentConfig(config) {
67
+ return { provide: RdxPopperContentConfigToken, useValue: config };
68
+ }
69
+
62
70
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
63
71
  const SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'];
64
72
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -115,77 +123,86 @@ const context = () => {
115
123
  arrowX: popperContentWrapper.arrowX,
116
124
  arrowY: popperContentWrapper.arrowY,
117
125
  shouldHideArrow: popperContentWrapper.shouldHideArrow,
118
- isPositioned: popperContentWrapper.isPositioned
126
+ isPositioned: popperContentWrapper.isPositioned,
127
+ anchorHidden: popperContentWrapper.anchorHidden
119
128
  };
120
129
  };
121
130
  const [injectPopperContentWrapperContext, providePopperContentWrapperContext] = createContext('PopperContentWrapperContext');
122
131
  class RdxPopperContentWrapper {
123
132
  constructor() {
124
133
  this.elementRef = inject(ElementRef);
125
- this.destroyRef = inject(DestroyRef);
126
134
  this.injector = inject(Injector);
127
135
  this.context = inject(RdxPopper);
128
136
  this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
137
+ /** Optional positioning defaults provided by a composing primitive (e.g. tooltip). */
138
+ this.config = inject(RdxPopperContentConfigToken);
139
+ /**
140
+ * An element to position the popup against. Defaults to the popper anchor.
141
+ */
142
+ this.anchor = input(...(ngDevMode ? [undefined, { debugName: "anchor" }] : /* istanbul ignore next */ []));
129
143
  /**
130
144
  * The preferred side of the anchor to render against when open.
131
145
  * Will be reversed when collisions occur and avoidCollisions is enabled.
132
146
  */
133
- this.side = input('bottom', ...(ngDevMode ? [{ debugName: "side" }] : []));
147
+ this.side = input(this.config.side ?? 'bottom', ...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
134
148
  /**
135
149
  * Distance between the anchor and the popup in pixels.
136
150
  */
137
- this.sideOffset = input(0, ...(ngDevMode ? [{ debugName: "sideOffset", transform: numberAttribute }] : [{ transform: numberAttribute }]));
151
+ this.sideOffset = input(this.config.sideOffset ?? 0, { ...(ngDevMode ? { debugName: "sideOffset" } : /* istanbul ignore next */ {}), transform: numberAttribute });
138
152
  /**
139
153
  * How to align the popup relative to the specified side. May change when collisions occur.
140
154
  */
141
- this.align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : []));
155
+ this.align = input(this.config.align ?? 'center', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
142
156
  /** An offset in pixels from the `start` or `end` alignment options. */
143
- this.alignOffset = input(0, ...(ngDevMode ? [{ debugName: "alignOffset", transform: numberAttribute }] : [{ transform: numberAttribute }]));
157
+ this.alignOffset = input(this.config.alignOffset ?? 0, { ...(ngDevMode ? { debugName: "alignOffset" } : /* istanbul ignore next */ {}), transform: numberAttribute });
144
158
  /**
145
159
  * Minimum distance to maintain between the arrow and the edges of the popup.
146
160
  * If your content has border-radius, this will prevent it from overflowing the corners.
147
161
  */
148
- this.arrowPadding = input(0, ...(ngDevMode ? [{ debugName: "arrowPadding", transform: numberAttribute }] : [{ transform: numberAttribute }]));
162
+ this.arrowPadding = input(this.config.arrowPadding ?? 0, { ...(ngDevMode ? { debugName: "arrowPadding" } : /* istanbul ignore next */ {}), transform: numberAttribute });
149
163
  /** When `true`, overrides the `side` and `align` preferences to prevent collisions with boundary edges. */
150
- this.avoidCollisions = input(true, ...(ngDevMode ? [{ debugName: "avoidCollisions", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
164
+ this.avoidCollisions = input(this.config.avoidCollisions ?? true, { ...(ngDevMode ? { debugName: "avoidCollisions" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
151
165
  /**
152
166
  * The element used as the collision boundary.
153
167
  * By default this is the viewport, though you can provide additional element(s) to be included in this check.
154
168
  */
155
- this.collisionBoundary = input(...(ngDevMode ? [undefined, { debugName: "collisionBoundary" }] : []));
169
+ this.collisionBoundary = input(...(ngDevMode ? [undefined, { debugName: "collisionBoundary" }] : /* istanbul ignore next */ []));
156
170
  /**
157
171
  * The distance in pixels from the boundary edges where collision detection should occur.
158
172
  * Accepts a number (same for all sides), or a partial padding object, for example: `{ top: 20, left: 20 }`.
159
173
  */
160
- this.collisionPadding = input(0, ...(ngDevMode ? [{ debugName: "collisionPadding" }] : []));
174
+ this.collisionPadding = input(this.config.collisionPadding ?? 0, ...(ngDevMode ? [{ debugName: "collisionPadding" }] : /* istanbul ignore next */ []));
161
175
  /**
162
176
  * The sticky behavior on the align axis. `partial` will keep the
163
177
  * content in the boundary as long as the trigger is at least partially
164
178
  * in the boundary whilst "always" will keep the content in the boundary
165
179
  * regardless.
166
180
  */
167
- this.sticky = input('partial', ...(ngDevMode ? [{ debugName: "sticky" }] : []));
181
+ this.sticky = input(this.config.sticky ?? 'partial', ...(ngDevMode ? [{ debugName: "sticky" }] : /* istanbul ignore next */ []));
168
182
  /**
169
183
  * Whether to hide the content when the trigger becomes fully occluded.
170
184
  */
171
- this.hideWhenDetached = input(false, ...(ngDevMode ? [{ debugName: "hideWhenDetached", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
185
+ this.hideWhenDetached = input(this.config.hideWhenDetached ?? false, { ...(ngDevMode ? { debugName: "hideWhenDetached" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
172
186
  /**
173
187
  * The type of CSS position property to use.
174
188
  */
175
- this.positionStrategy = input('fixed', ...(ngDevMode ? [{ debugName: "positionStrategy" }] : []));
189
+ this.positionStrategy = input(this.config.positionStrategy ?? 'fixed', ...(ngDevMode ? [{ debugName: "positionStrategy" }] : /* istanbul ignore next */ []));
176
190
  /**
177
191
  * Strategy to update the position of the floating element on every animation frame.
178
192
  */
179
- this.updatePositionStrategy = input('always', ...(ngDevMode ? [{ debugName: "updatePositionStrategy" }] : []));
193
+ this.updatePositionStrategy = input(this.config.updatePositionStrategy ?? 'optimized', ...(ngDevMode ? [{ debugName: "updatePositionStrategy" }] : /* istanbul ignore next */ []));
180
194
  /**
181
195
  * Emits when the element is placed.
182
196
  */
183
197
  this.placed = output();
184
- this.arrow = contentChild(forwardRef(() => RdxPopperArrow), ...(ngDevMode ? [{ debugName: "arrow" }] : []));
185
- this.shouldHideArrow = computed(() => this.position.value()?.middlewareData['arrow']?.centerOffset !== 0, ...(ngDevMode ? [{ debugName: "shouldHideArrow" }] : []));
186
- this.arrowX = computed(() => this.position.value()?.middlewareData['arrow']?.x, ...(ngDevMode ? [{ debugName: "arrowX" }] : []));
187
- this.arrowY = computed(() => this.position.value()?.middlewareData['arrow']?.y, ...(ngDevMode ? [{ debugName: "arrowY" }] : []));
188
- this.desiredPlacement = computed(() => (this.side() + (this.align() !== 'center' ? '-' + this.align() : '')), ...(ngDevMode ? [{ debugName: "desiredPlacement" }] : []));
198
+ this.arrow = contentChild(forwardRef(() => RdxPopperArrow), ...(ngDevMode ? [{ debugName: "arrow" }] : /* istanbul ignore next */ []));
199
+ this.shouldHideArrow = computed(() => this.position.value()?.middlewareData['arrow']?.centerOffset !== 0, ...(ngDevMode ? [{ debugName: "shouldHideArrow" }] : /* istanbul ignore next */ []));
200
+ /** Whether the arrow could not be centered on the anchor because the popup was shifted. */
201
+ this.arrowUncentered = computed(() => (this.position.value()?.middlewareData['arrow']?.centerOffset ?? 0) !== 0, ...(ngDevMode ? [{ debugName: "arrowUncentered" }] : /* istanbul ignore next */ []));
202
+ this.arrowX = computed(() => this.position.value()?.middlewareData['arrow']?.x, ...(ngDevMode ? [{ debugName: "arrowX" }] : /* istanbul ignore next */ []));
203
+ this.arrowY = computed(() => this.position.value()?.middlewareData['arrow']?.y, ...(ngDevMode ? [{ debugName: "arrowY" }] : /* istanbul ignore next */ []));
204
+ this.anchorHidden = computed(() => this.position.value()?.middlewareData.hide?.referenceHidden === true, ...(ngDevMode ? [{ debugName: "anchorHidden" }] : /* istanbul ignore next */ []));
205
+ this.desiredPlacement = computed(() => (this.side() + (this.align() !== 'center' ? '-' + this.align() : '')), ...(ngDevMode ? [{ debugName: "desiredPlacement" }] : /* istanbul ignore next */ []));
189
206
  this.arrowSize = computed(() => {
190
207
  const arrowElementRef = this.arrow()?.elementRef;
191
208
  if (!arrowElementRef) {
@@ -198,7 +215,7 @@ class RdxPopperContentWrapper {
198
215
  elementRef: arrowElementRef,
199
216
  injector: this.injector
200
217
  });
201
- }, ...(ngDevMode ? [{ debugName: "arrowSize" }] : []));
218
+ }, ...(ngDevMode ? [{ debugName: "arrowSize" }] : /* istanbul ignore next */ []));
202
219
  this.boundary = computed(() => {
203
220
  const boundary = this.collisionBoundary();
204
221
  if (Array.isArray(boundary)) {
@@ -208,34 +225,63 @@ class RdxPopperContentWrapper {
208
225
  return [];
209
226
  }
210
227
  return [boundary.nativeElement];
211
- }, ...(ngDevMode ? [{ debugName: "boundary" }] : []));
212
- this.hasExplicitBoundaries = computed(() => this.boundary().length > 0, ...(ngDevMode ? [{ debugName: "hasExplicitBoundaries" }] : []));
228
+ }, ...(ngDevMode ? [{ debugName: "boundary" }] : /* istanbul ignore next */ []));
229
+ this.hasExplicitBoundaries = computed(() => this.boundary().length > 0, ...(ngDevMode ? [{ debugName: "hasExplicitBoundaries" }] : /* istanbul ignore next */ []));
213
230
  this.detectOverflowOptions = computed(() => ({
214
231
  padding: this.collisionPadding(),
215
232
  boundary: this.boundary().filter(isNotNull),
216
233
  // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries
217
234
  altBoundary: this.hasExplicitBoundaries()
218
- }), ...(ngDevMode ? [{ debugName: "detectOverflowOptions" }] : []));
219
- this.position = resource({
220
- loader: () => computePosition(this.context.anchor().elementRef.nativeElement, this.elementRef.nativeElement, {
221
- // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues
235
+ }), ...(ngDevMode ? [{ debugName: "detectOverflowOptions" }] : /* istanbul ignore next */ []));
236
+ this.resolvedAnchor = computed(() => {
237
+ const anchor = this.anchor();
238
+ const resolvedAnchor = typeof anchor === 'function' ? anchor() : anchor;
239
+ if (resolvedAnchor instanceof ElementRef) {
240
+ return resolvedAnchor.nativeElement;
241
+ }
242
+ if (resolvedAnchor) {
243
+ return resolvedAnchor;
244
+ }
245
+ const fallbackAnchor = this.context.anchorOverride() ?? this.context.anchor()?.elementRef.nativeElement;
246
+ if (!fallbackAnchor) {
247
+ throw new Error('RdxPopperContentWrapper requires an anchor.');
248
+ }
249
+ return fallbackAnchor;
250
+ }, ...(ngDevMode ? [{ debugName: "resolvedAnchor" }] : /* istanbul ignore next */ []));
251
+ this.position = resource({ ...(ngDevMode ? { debugName: "position" } : /* istanbul ignore next */ {}), params: () => ({
252
+ anchor: this.resolvedAnchor(),
222
253
  strategy: this.positionStrategy(),
223
254
  placement: this.desiredPlacement(),
255
+ sideOffset: this.sideOffset(),
256
+ alignOffset: this.alignOffset(),
257
+ arrowHeight: this.arrowSize()().height,
258
+ arrowWidth: this.arrowSize()().width,
259
+ avoidCollisions: this.avoidCollisions(),
260
+ sticky: this.sticky(),
261
+ detectOverflowOptions: this.detectOverflowOptions(),
262
+ arrow: this.arrow(),
263
+ arrowPadding: this.arrowPadding(),
264
+ hideWhenDetached: this.hideWhenDetached()
265
+ }),
266
+ loader: ({ params }) => computePosition(params.anchor, this.elementRef.nativeElement, {
267
+ // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues
268
+ strategy: params.strategy,
269
+ placement: params.placement,
224
270
  middleware: [
225
271
  offset({
226
- mainAxis: this.sideOffset() + this.arrowSize()().height || 0,
227
- alignmentAxis: this.alignOffset()
272
+ mainAxis: params.sideOffset + params.arrowHeight || 0,
273
+ alignmentAxis: params.alignOffset
228
274
  }),
229
- this.avoidCollisions() &&
275
+ params.avoidCollisions &&
230
276
  shift({
231
277
  mainAxis: true,
232
278
  crossAxis: false,
233
- limiter: this.sticky() === 'partial' ? limitShift() : undefined,
234
- ...this.detectOverflowOptions()
279
+ limiter: params.sticky === 'partial' ? limitShift() : undefined,
280
+ ...params.detectOverflowOptions
235
281
  }),
236
- this.avoidCollisions() && flip({ ...this.detectOverflowOptions() }),
282
+ params.avoidCollisions && flip({ ...params.detectOverflowOptions }),
237
283
  size({
238
- ...this.detectOverflowOptions(),
284
+ ...params.detectOverflowOptions,
239
285
  apply: ({ elements, rects, availableWidth, availableHeight }) => {
240
286
  const { width: anchorWidth, height: anchorHeight } = rects.reference;
241
287
  const contentStyle = elements.floating.style;
@@ -245,27 +291,26 @@ class RdxPopperContentWrapper {
245
291
  contentStyle.setProperty('--radix-popper-anchor-height', `${anchorHeight}px`);
246
292
  }
247
293
  }),
248
- this.arrow() &&
294
+ params.arrow &&
249
295
  arrow({
250
- element: this.arrow().elementRef.nativeElement,
251
- padding: this.arrowPadding()
296
+ element: params.arrow.elementRef.nativeElement,
297
+ padding: params.arrowPadding
252
298
  }),
253
299
  transformOrigin({
254
- arrowWidth: this.arrowSize()().width,
255
- arrowHeight: this.arrowSize()().height
300
+ arrowWidth: params.arrowWidth,
301
+ arrowHeight: params.arrowHeight
256
302
  }),
257
- this.hideWhenDetached() &&
303
+ params.hideWhenDetached &&
258
304
  hide({
259
305
  strategy: 'referenceHidden',
260
- ...this.detectOverflowOptions()
306
+ ...params.detectOverflowOptions
261
307
  })
262
308
  ]
263
- })
264
- });
309
+ }) });
265
310
  /**
266
311
  * Whether the panel is positioned.
267
312
  */
268
- this.isPositioned = computed(() => this.position.hasValue(), ...(ngDevMode ? [{ debugName: "isPositioned" }] : []));
313
+ this.isPositioned = computed(() => this.position.hasValue(), ...(ngDevMode ? [{ debugName: "isPositioned" }] : /* istanbul ignore next */ []));
269
314
  /**
270
315
  * The current placement of the panel.
271
316
  */
@@ -279,15 +324,15 @@ class RdxPopperContentWrapper {
279
324
  side: side,
280
325
  align: align
281
326
  };
282
- }, ...(ngDevMode ? [{ debugName: "placement" }] : []));
327
+ }, ...(ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []));
283
328
  /**
284
329
  * The side the panel is currently placed against.
285
330
  */
286
- this.placedSide = computed(() => this.placement()?.side, ...(ngDevMode ? [{ debugName: "placedSide" }] : []));
331
+ this.placedSide = computed(() => this.placement()?.side, ...(ngDevMode ? [{ debugName: "placedSide" }] : /* istanbul ignore next */ []));
287
332
  /**
288
333
  * The current alignment of the panel.
289
334
  */
290
- this.placedAlign = computed(() => this.placement()?.align, ...(ngDevMode ? [{ debugName: "placedAlign" }] : []));
335
+ this.placedAlign = computed(() => this.placement()?.align, ...(ngDevMode ? [{ debugName: "placedAlign" }] : /* istanbul ignore next */ []));
291
336
  this.contentElementRef = contentChild.required(RdxPopperContent, {
292
337
  read: ElementRef
293
338
  });
@@ -296,7 +341,7 @@ class RdxPopperContentWrapper {
296
341
  return 0;
297
342
  }
298
343
  return getComputedStyle(this.contentElementRef().nativeElement).zIndex;
299
- }, ...(ngDevMode ? [{ debugName: "contentZIndex" }] : []));
344
+ }, ...(ngDevMode ? [{ debugName: "contentZIndex" }] : /* istanbul ignore next */ []));
300
345
  this.style = computed(() => {
301
346
  const pos = this.position.value();
302
347
  const x = pos?.x;
@@ -313,6 +358,8 @@ class RdxPopperContentWrapper {
313
358
  pos?.middlewareData['transformOrigin']?.x,
314
359
  pos?.middlewareData['transformOrigin']?.y
315
360
  ].join(' '),
361
+ '--radix-popper-content-wrapper-width': `${this.elementRef.nativeElement.offsetWidth}px`,
362
+ '--radix-popper-content-wrapper-height': `${this.elementRef.nativeElement.offsetHeight}px`,
316
363
  visibility: ready ? 'visible' : 'hidden',
317
364
  pointerEvents: ready ? 'auto' : 'none',
318
365
  // hide the content if using the hide middleware and should be hidden
@@ -323,21 +370,27 @@ class RdxPopperContentWrapper {
323
370
  pointerEvents: 'none'
324
371
  })
325
372
  };
326
- }, ...(ngDevMode ? [{ debugName: "style" }] : []));
327
- this.afterNextRender = afterNextRender(() => {
373
+ }, ...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
374
+ this.afterRenderEffect = afterRenderEffect((onCleanup) => {
328
375
  this.position.reload();
329
- const cleanup = autoUpdate(this.context.anchor().elementRef.nativeElement, this.elementRef.nativeElement, () => this.position.reload(), {
376
+ const cleanup = autoUpdate(this.resolvedAnchor(), this.elementRef.nativeElement, () => this.position.reload(), {
330
377
  animationFrame: this.updatePositionStrategy() === 'always'
331
378
  });
332
- this.destroyRef.onDestroy(() => {
333
- cleanup();
334
- });
379
+ onCleanup(cleanup);
380
+ });
381
+ watch([this.isPositioned], ([isPositioned]) => {
382
+ if (!isPositioned) {
383
+ return;
384
+ }
385
+ afterNextRender(() => {
386
+ this.placed.emit();
387
+ }, { injector: this.injector });
335
388
  });
336
389
  }
337
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopperContentWrapper, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
338
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.3", type: RdxPopperContentWrapper, isStandalone: true, selector: "[rdxPopperContentWrapper]", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, alignOffset: { classPropertyName: "alignOffset", publicName: "alignOffset", isSignal: true, isRequired: false, transformFunction: null }, arrowPadding: { classPropertyName: "arrowPadding", publicName: "arrowPadding", isSignal: true, isRequired: false, transformFunction: null }, avoidCollisions: { classPropertyName: "avoidCollisions", publicName: "avoidCollisions", isSignal: true, isRequired: false, transformFunction: null }, collisionBoundary: { classPropertyName: "collisionBoundary", publicName: "collisionBoundary", isSignal: true, isRequired: false, transformFunction: null }, collisionPadding: { classPropertyName: "collisionPadding", publicName: "collisionPadding", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, hideWhenDetached: { classPropertyName: "hideWhenDetached", publicName: "hideWhenDetached", isSignal: true, isRequired: false, transformFunction: null }, positionStrategy: { classPropertyName: "positionStrategy", publicName: "positionStrategy", isSignal: true, isRequired: false, transformFunction: null }, updatePositionStrategy: { classPropertyName: "updatePositionStrategy", publicName: "updatePositionStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placed: "placed" }, host: { attributes: { "data-radix-popper-content-wrapper": "" }, properties: { "style": "style()" } }, providers: [providePopperContentWrapperContext(context)], queries: [{ propertyName: "arrow", first: true, predicate: i0.forwardRef(() => RdxPopperArrow), descendants: true, isSignal: true }, { propertyName: "contentElementRef", first: true, predicate: RdxPopperContent, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 }); }
390
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopperContentWrapper, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
391
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.9", type: RdxPopperContentWrapper, isStandalone: true, selector: "[rdxPopperContentWrapper]", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, alignOffset: { classPropertyName: "alignOffset", publicName: "alignOffset", isSignal: true, isRequired: false, transformFunction: null }, arrowPadding: { classPropertyName: "arrowPadding", publicName: "arrowPadding", isSignal: true, isRequired: false, transformFunction: null }, avoidCollisions: { classPropertyName: "avoidCollisions", publicName: "avoidCollisions", isSignal: true, isRequired: false, transformFunction: null }, collisionBoundary: { classPropertyName: "collisionBoundary", publicName: "collisionBoundary", isSignal: true, isRequired: false, transformFunction: null }, collisionPadding: { classPropertyName: "collisionPadding", publicName: "collisionPadding", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, hideWhenDetached: { classPropertyName: "hideWhenDetached", publicName: "hideWhenDetached", isSignal: true, isRequired: false, transformFunction: null }, positionStrategy: { classPropertyName: "positionStrategy", publicName: "positionStrategy", isSignal: true, isRequired: false, transformFunction: null }, updatePositionStrategy: { classPropertyName: "updatePositionStrategy", publicName: "updatePositionStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placed: "placed" }, host: { attributes: { "data-radix-popper-content-wrapper": "" }, properties: { "style": "style()" } }, providers: [providePopperContentWrapperContext(context)], queries: [{ propertyName: "arrow", first: true, predicate: i0.forwardRef(() => RdxPopperArrow), descendants: true, isSignal: true }, { propertyName: "contentElementRef", first: true, predicate: RdxPopperContent, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 }); }
339
392
  }
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopperContentWrapper, decorators: [{
393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopperContentWrapper, decorators: [{
341
394
  type: Directive,
342
395
  args: [{
343
396
  selector: '[rdxPopperContentWrapper]',
@@ -347,7 +400,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
347
400
  '[style]': 'style()'
348
401
  }
349
402
  }]
350
- }] });
403
+ }], ctorParameters: () => [], propDecorators: { anchor: [{ type: i0.Input, args: [{ isSignal: true, alias: "anchor", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], arrowPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowPadding", required: false }] }], avoidCollisions: [{ type: i0.Input, args: [{ isSignal: true, alias: "avoidCollisions", required: false }] }], collisionBoundary: [{ type: i0.Input, args: [{ isSignal: true, alias: "collisionBoundary", required: false }] }], collisionPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "collisionPadding", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], hideWhenDetached: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideWhenDetached", required: false }] }], positionStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionStrategy", required: false }] }], updatePositionStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "updatePositionStrategy", required: false }] }], placed: [{ type: i0.Output, args: ["placed"] }], arrow: [{ type: i0.ContentChild, args: [forwardRef(() => RdxPopperArrow), { isSignal: true }] }], contentElementRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => RdxPopperContent), { ...{
404
+ read: ElementRef
405
+ }, isSignal: true }] }] } });
351
406
 
352
407
  const OPPOSITE_SIDE = {
353
408
  top: 'bottom',
@@ -360,9 +415,9 @@ class RdxPopperArrow {
360
415
  this.popperContentContext = injectPopperContentWrapperContext();
361
416
  this.environmentInjector = inject(EnvironmentInjector);
362
417
  this.elementRef = inject(ElementRef);
363
- this.width = input(10, ...(ngDevMode ? [{ debugName: "width", transform: numberAttribute }] : [{ transform: numberAttribute }]));
364
- this.height = input(5, ...(ngDevMode ? [{ debugName: "height", transform: numberAttribute }] : [{ transform: numberAttribute }]));
365
- this.baseSide = computed(() => OPPOSITE_SIDE[this.popperContentContext.placedSide()], ...(ngDevMode ? [{ debugName: "baseSide" }] : []));
418
+ this.width = input(10, { ...(ngDevMode ? { debugName: "width" } : /* istanbul ignore next */ {}), transform: numberAttribute });
419
+ this.height = input(5, { ...(ngDevMode ? { debugName: "height" } : /* istanbul ignore next */ {}), transform: numberAttribute });
420
+ this.baseSide = computed(() => OPPOSITE_SIDE[this.popperContentContext.placedSide()], ...(ngDevMode ? [{ debugName: "baseSide" }] : /* istanbul ignore next */ []));
366
421
  this.style = computed(() => {
367
422
  return {
368
423
  position: 'absolute',
@@ -383,7 +438,7 @@ class RdxPopperArrow {
383
438
  }[this.popperContentContext.placedSide()],
384
439
  visibility: this.popperContentContext.shouldHideArrow() ? 'hidden' : undefined
385
440
  };
386
- }, ...(ngDevMode ? [{ debugName: "style" }] : []));
441
+ }, ...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
387
442
  this.onCleanup = effect((onCleanup) => {
388
443
  const component = createComponent(RdxArrow, {
389
444
  environmentInjector: this.environmentInjector,
@@ -393,12 +448,12 @@ class RdxPopperArrow {
393
448
  });
394
449
  component.changeDetectorRef.detectChanges();
395
450
  onCleanup(() => component.destroy());
396
- }, ...(ngDevMode ? [{ debugName: "onCleanup" }] : []));
451
+ }, ...(ngDevMode ? [{ debugName: "onCleanup" }] : /* istanbul ignore next */ []));
397
452
  }
398
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopperArrow, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
399
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: RdxPopperArrow, isStandalone: true, selector: "[rdxPopperArrow]", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "style()" } }, ngImport: i0 }); }
453
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopperArrow, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
454
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxPopperArrow, isStandalone: true, selector: "[rdxPopperArrow]", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "style()" } }, ngImport: i0 }); }
400
455
  }
401
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxPopperArrow, decorators: [{
456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPopperArrow, decorators: [{
402
457
  type: Directive,
403
458
  args: [{
404
459
  selector: '[rdxPopperArrow]',
@@ -406,7 +461,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
406
461
  '[style]': 'style()'
407
462
  }
408
463
  }]
409
- }] });
464
+ }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }] } });
410
465
 
411
466
  const popperImports = [RdxPopper, RdxPopperArrow, RdxPopperContentWrapper, RdxPopperContent, RdxPopperAnchor];
412
467
 
@@ -414,5 +469,5 @@ const popperImports = [RdxPopper, RdxPopperArrow, RdxPopperContentWrapper, RdxPo
414
469
  * Generated bundle index. Do not edit.
415
470
  */
416
471
 
417
- export { RdxPopper, RdxPopperAnchor, RdxPopperArrow, RdxPopperContent, RdxPopperContentWrapper, getSideAndAlignFromPlacement, injectPopperContentWrapperContext, isNotNull, popperImports, providePopperContentWrapperContext, transformOrigin };
472
+ export { RdxPopper, RdxPopperAnchor, RdxPopperArrow, RdxPopperContent, RdxPopperContentConfigToken, RdxPopperContentWrapper, getSideAndAlignFromPlacement, injectPopperContentWrapperContext, isNotNull, popperImports, providePopperContentWrapperContext, provideRdxPopperContentConfig, transformOrigin };
418
473
  //# sourceMappingURL=radix-ng-primitives-popper.mjs.map