@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,740 +0,0 @@
1
- import { _IdGenerator } from '@angular/cdk/a11y';
2
- import * as i0 from '@angular/core';
3
- import { inject, ElementRef, input, signal, Directive, InjectionToken, DestroyRef, model, numberAttribute, booleanAttribute, computed, contentChild, effect, afterNextRender } from '@angular/core';
4
- import { createContext, watch } from '@radix-ng/primitives/core';
5
- import * as i1 from '@radix-ng/primitives/popper';
6
- import { RdxPopperAnchor, RdxPopper, RdxPopperArrow, RdxPopperContent, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';
7
- import { RdxVisuallyHiddenDirective } from '@radix-ng/primitives/visually-hidden';
8
- import { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';
9
- import * as i1$1 from '@radix-ng/primitives/dismissable-layer';
10
- import { RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';
11
- import * as i1$2 from '@radix-ng/primitives/portal';
12
- import { RdxPortal } from '@radix-ng/primitives/portal';
13
- import * as i1$3 from '@radix-ng/primitives/presence';
14
- import { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';
15
-
16
- class RdxTooltipTrigger {
17
- constructor() {
18
- this.rootContext = injectRdxTooltipContext();
19
- this.elementRef = inject(ElementRef);
20
- this.userOnPointerDown = input(undefined, ...(ngDevMode ? [{ debugName: "userOnPointerDown", alias: 'rdxOnPointerDown' }] : [{
21
- alias: 'rdxOnPointerDown'
22
- }]));
23
- this.isPointerDown = signal(false, ...(ngDevMode ? [{ debugName: "isPointerDown" }] : []));
24
- this.hasPointerMoveOpened = signal(false, ...(ngDevMode ? [{ debugName: "hasPointerMoveOpened" }] : []));
25
- }
26
- handleFocus(event) {
27
- if (this.rootContext.isControlledState())
28
- return;
29
- if (this.isPointerDown())
30
- return;
31
- if (this.rootContext.ignoreNonKeyboardFocus() && !event.target.matches?.(':focus-visible')) {
32
- return;
33
- }
34
- this.rootContext.open();
35
- }
36
- handleBlur() {
37
- if (this.rootContext.isControlledState())
38
- return;
39
- this.rootContext.close();
40
- }
41
- handleClick() {
42
- if (this.rootContext.isControlledState())
43
- return;
44
- if (!this.rootContext.disableClosingTrigger()) {
45
- this.rootContext.close();
46
- }
47
- }
48
- handlePointerMove(event) {
49
- if (event.pointerType === 'touch')
50
- return;
51
- if (this.rootContext.isControlledState())
52
- return;
53
- if (!this.hasPointerMoveOpened() && !this.rootContext.isPointerInTransit()) {
54
- this.rootContext.onTriggerEnter();
55
- this.hasPointerMoveOpened.set(true);
56
- }
57
- }
58
- handlePointerLeave() {
59
- if (this.rootContext.isControlledState())
60
- return;
61
- this.rootContext.onTriggerLeave();
62
- this.hasPointerMoveOpened.set(false);
63
- }
64
- async handlePointerDown(event) {
65
- const user = this.userOnPointerDown();
66
- let result;
67
- if (user) {
68
- result = user(event);
69
- if (result instanceof Promise)
70
- result = await result;
71
- }
72
- if (event.defaultPrevented || result === false)
73
- return;
74
- if (this.rootContext.isOpen() && !this.rootContext.disableClosingTrigger()) {
75
- this.rootContext.close();
76
- }
77
- this.isPointerDown.set(true);
78
- const handlePointerUp = () => {
79
- setTimeout(() => this.isPointerDown.set(false), 1);
80
- };
81
- document.addEventListener('pointerup', handlePointerUp, { once: true });
82
- }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
84
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: RdxTooltipTrigger, isStandalone: true, selector: "[rdxTooltipTrigger]", inputs: { userOnPointerDown: { classPropertyName: "userOnPointerDown", publicName: "rdxOnPointerDown", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-grace-area-trigger": "''" }, listeners: { "pointermove": "rootContext.isDisabled() ? undefined : handlePointerMove($event)", "pointerleave": "rootContext.isDisabled() ? undefined : handlePointerLeave()", "pointerdown": "rootContext.isDisabled() ? undefined : handlePointerDown($event)", "focus": "rootContext.isDisabled() ? undefined : handleFocus($event)", "blur": "rootContext.isDisabled() ? undefined : handleBlur()", "click": "rootContext.isDisabled() ? undefined : handleClick()" }, properties: { "attr.aria-describedby": "rootContext.isOpen() ? rootContext.contentId : undefined", "attr.data-state": "rootContext.state()" } }, hostDirectives: [{ directive: i1.RdxPopperAnchor }], ngImport: i0 }); }
85
- }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipTrigger, decorators: [{
87
- type: Directive,
88
- args: [{
89
- selector: '[rdxTooltipTrigger]',
90
- hostDirectives: [RdxPopperAnchor],
91
- host: {
92
- 'data-grace-area-trigger': "''",
93
- '[attr.aria-describedby]': 'rootContext.isOpen() ? rootContext.contentId : undefined',
94
- '[attr.data-state]': 'rootContext.state()',
95
- '(pointermove)': 'rootContext.isDisabled() ? undefined : handlePointerMove($event)',
96
- '(pointerleave)': 'rootContext.isDisabled() ? undefined : handlePointerLeave()',
97
- '(pointerdown)': 'rootContext.isDisabled() ? undefined : handlePointerDown($event)',
98
- '(focus)': 'rootContext.isDisabled() ? undefined : handleFocus($event)',
99
- '(blur)': 'rootContext.isDisabled() ? undefined : handleBlur()',
100
- '(click)': 'rootContext.isDisabled() ? undefined : handleClick()'
101
- }
102
- }]
103
- }] });
104
-
105
- const defaultTooltipConfig = {
106
- delayDuration: 700,
107
- skipDelayDuration: 300,
108
- disableHoverableContent: false,
109
- disableClosingTrigger: false,
110
- closeDelay: 0
111
- };
112
- const RdxTooltipDefaultsToken = new InjectionToken('RdxTooltipDefaults Token');
113
- function provideRdxTooltipConfig(config) {
114
- return [
115
- {
116
- provide: RdxTooltipDefaultsToken,
117
- useValue: { ...defaultTooltipConfig, ...config }
118
- }
119
- ];
120
- }
121
- function injectRdxTooltipConfig() {
122
- return inject(RdxTooltipDefaultsToken, { optional: true }) ?? defaultTooltipConfig;
123
- }
124
-
125
- function useTimeoutFn(cb, delay, options = {}, destroyRef) {
126
- let id = null;
127
- const resolveDelay = () => (typeof delay === 'function' ? delay() : delay);
128
- const stop = () => {
129
- if (id != null) {
130
- clearTimeout(id);
131
- id = null;
132
- }
133
- };
134
- const start = () => {
135
- stop();
136
- const ms = resolveDelay();
137
- if (ms <= 0) {
138
- queueMicrotask(cb);
139
- return;
140
- }
141
- id = window.setTimeout(() => {
142
- id = null;
143
- cb();
144
- }, ms);
145
- };
146
- if (options.immediate) {
147
- start();
148
- }
149
- if (destroyRef) {
150
- destroyRef.onDestroy(stop);
151
- }
152
- return { start, stop, isPending: () => id != null };
153
- }
154
-
155
- const context = () => {
156
- const context = inject(RdxTooltip);
157
- return {
158
- isOpen: context.open,
159
- state: context.state,
160
- contentId: inject(_IdGenerator).getId('rdx-tooltip-content-'),
161
- trigger: context.trigger,
162
- isDisabled: context.disabled,
163
- ignoreNonKeyboardFocus: context.ignoreNonKeyboardFocus,
164
- disableClosingTrigger: context.disableClosingTrigger,
165
- disableHoverableContent: context.disableHoverableContent,
166
- isPointerInTransit: context.isPointerInTransit.asReadonly(),
167
- isControlledState: context.isControlledState,
168
- open() {
169
- context.handleOpen();
170
- },
171
- close() {
172
- context.handleClose();
173
- },
174
- onTriggerEnter() {
175
- if (context.isOpenDelayed()) {
176
- context.handleDelayedOpen();
177
- }
178
- else {
179
- context.handleOpen();
180
- }
181
- },
182
- onTriggerLeave() {
183
- if (context.disableHoverableContent()) {
184
- context.handleClose();
185
- }
186
- else {
187
- // Clear the timer in case the pointer leaves the trigger before the tooltip is opened.
188
- context.clearTimer();
189
- }
190
- }
191
- };
192
- };
193
- const [injectRdxTooltipContext, provideRdxTooltipContext] = createContext('RdxTooltipContext');
194
- class RdxTooltip {
195
- constructor() {
196
- this.defaultConfig = injectRdxTooltipConfig();
197
- this.destroyRef = inject(DestroyRef);
198
- /**
199
- * Whether the tooltip is currently open.
200
- */
201
- this.open = model(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
202
- /**
203
- * The duration from when the pointer enters the trigger until the tooltip gets opened.
204
- */
205
- this.delayDuration = input(this.defaultConfig.delayDuration, ...(ngDevMode ? [{ debugName: "delayDuration", transform: numberAttribute }] : [{
206
- transform: numberAttribute
207
- }]));
208
- /**
209
- * How much time a user has to enter another trigger without incurring a delay again.
210
- * @defaultValue 300
211
- */
212
- this.skipDelayDuration = input(this.defaultConfig.skipDelayDuration, ...(ngDevMode ? [{ debugName: "skipDelayDuration", transform: numberAttribute }] : [{ transform: numberAttribute }]));
213
- /**
214
- * When `true`, trying to hover the content will result in the tooltip closing as the pointer leaves the trigger.
215
- */
216
- this.disableHoverableContent = input(this.defaultConfig.disableHoverableContent, ...(ngDevMode ? [{ debugName: "disableHoverableContent", transform: booleanAttribute }] : [{
217
- transform: booleanAttribute
218
- }]));
219
- /**
220
- * When `true`, disable tooltip
221
- * @defaultValue false
222
- */
223
- this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
224
- /**
225
- * How long to wait before closing the tooltip. Specified in milliseconds.
226
- */
227
- this.closeDelay = input(this.defaultConfig.closeDelay, ...(ngDevMode ? [{ debugName: "closeDelay", transform: numberAttribute }] : [{ transform: numberAttribute }]));
228
- /**
229
- * When `true`, clicking on trigger will not close the content.
230
- * @defaultValue false
231
- */
232
- this.disableClosingTrigger = input(false, ...(ngDevMode ? [{ debugName: "disableClosingTrigger", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
233
- /**
234
- * Prevent the tooltip from opening if the focus did not come from
235
- * the keyboard by matching against the `:focus-visible` selector.
236
- * This is useful if you want to avoid opening it when switching
237
- * browser tabs or closing a dialog.
238
- * @defaultValue false
239
- */
240
- this.ignoreNonKeyboardFocus = input(false, ...(ngDevMode ? [{ debugName: "ignoreNonKeyboardFocus", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
241
- /**
242
- * To render a controlled tooltip
243
- */
244
- this.isControlledState = input(false, ...(ngDevMode ? [{ debugName: "isControlledState", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
245
- this.isPointerInTransit = signal(false, ...(ngDevMode ? [{ debugName: "isPointerInTransit" }] : []));
246
- this.isOpenDelayed = signal(true, ...(ngDevMode ? [{ debugName: "isOpenDelayed" }] : []));
247
- this.wasOpenDelayed = signal(false, ...(ngDevMode ? [{ debugName: "wasOpenDelayed" }] : []));
248
- this.state = computed(() => {
249
- if (!this.open()) {
250
- return 'closed';
251
- }
252
- return this.wasOpenDelayed() ? 'delayed-open' : 'instant-open';
253
- }, ...(ngDevMode ? [{ debugName: "state" }] : []));
254
- this.trigger = contentChild.required(RdxTooltipTrigger);
255
- this.timerProvider = useTimeoutFn(() => {
256
- this.isOpenDelayed.set(true);
257
- }, () => this.skipDelayDuration(), { immediate: false }, this.destroyRef);
258
- this.timer = useTimeoutFn(() => {
259
- this.wasOpenDelayed.set(true);
260
- this.open.set(true);
261
- }, () => this.delayDuration(), { immediate: false }, this.destroyRef);
262
- this.startTimer = () => this.timer.start();
263
- this.clearTimer = () => this.timer.stop();
264
- watch([this.open], ([isOpen]) => {
265
- if (isOpen) {
266
- this.timerProvider.stop();
267
- this.isOpenDelayed.set(false);
268
- }
269
- else {
270
- this.timerProvider.start();
271
- }
272
- });
273
- }
274
- handleOpen() {
275
- this.clearTimer();
276
- this.wasOpenDelayed.set(false);
277
- this.open.set(true);
278
- }
279
- handleClose() {
280
- this.clearTimer();
281
- window.setTimeout(() => {
282
- this.open.set(false);
283
- }, this.closeDelay());
284
- }
285
- handleDelayedOpen() {
286
- this.startTimer();
287
- }
288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltip, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
289
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.3", type: RdxTooltip, isStandalone: true, selector: "[rdxTooltip]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, delayDuration: { classPropertyName: "delayDuration", publicName: "delayDuration", isSignal: true, isRequired: false, transformFunction: null }, skipDelayDuration: { classPropertyName: "skipDelayDuration", publicName: "skipDelayDuration", isSignal: true, isRequired: false, transformFunction: null }, disableHoverableContent: { classPropertyName: "disableHoverableContent", publicName: "disableHoverableContent", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null }, disableClosingTrigger: { classPropertyName: "disableClosingTrigger", publicName: "disableClosingTrigger", isSignal: true, isRequired: false, transformFunction: null }, ignoreNonKeyboardFocus: { classPropertyName: "ignoreNonKeyboardFocus", publicName: "ignoreNonKeyboardFocus", isSignal: true, isRequired: false, transformFunction: null }, isControlledState: { classPropertyName: "isControlledState", publicName: "isControlledState", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, providers: [provideRdxTooltipContext(context)], queries: [{ propertyName: "trigger", first: true, predicate: RdxTooltipTrigger, descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.RdxPopper }], ngImport: i0 }); }
290
- }
291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltip, decorators: [{
292
- type: Directive,
293
- args: [{
294
- selector: '[rdxTooltip]',
295
- providers: [provideRdxTooltipContext(context)],
296
- hostDirectives: [RdxPopper]
297
- }]
298
- }], ctorParameters: () => [] });
299
-
300
- class RdxTooltipArrow {
301
- constructor() {
302
- this.isVisuallyHidden = !!inject(RdxVisuallyHiddenDirective, {
303
- optional: true
304
- });
305
- }
306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipArrow, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
307
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: RdxTooltipArrow, isStandalone: true, selector: "[rdxTooltipArrow]", host: { properties: { "hidden": "isVisuallyHidden" } }, hostDirectives: [{ directive: i1.RdxPopperArrow }], ngImport: i0 }); }
308
- }
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipArrow, decorators: [{
310
- type: Directive,
311
- args: [{
312
- selector: '[rdxTooltipArrow]',
313
- hostDirectives: [RdxPopperArrow],
314
- host: {
315
- '[hidden]': 'isVisuallyHidden'
316
- }
317
- }]
318
- }] });
319
-
320
- class RdxTooltipContent {
321
- constructor() {
322
- this.rootContext = injectRdxTooltipContext();
323
- }
324
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
325
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: RdxTooltipContent, isStandalone: true, selector: "[rdxTooltipContent]", host: { attributes: { "role": "tooltip" }, properties: { "id": "rootContext.contentId" } }, hostDirectives: [{ directive: i1.RdxPopperContent }], ngImport: i0 }); }
326
- }
327
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipContent, decorators: [{
328
- type: Directive,
329
- args: [{
330
- selector: '[rdxTooltipContent]',
331
- hostDirectives: [RdxPopperContent],
332
- host: {
333
- role: 'tooltip',
334
- '[id]': 'rootContext.contentId'
335
- }
336
- }]
337
- }] });
338
-
339
- function createSignalEvent() {
340
- const handlers = new Set();
341
- return {
342
- on(cb) {
343
- handlers.add(cb);
344
- return () => handlers.delete(cb);
345
- },
346
- emit(v) {
347
- handlers.forEach((h) => h(v));
348
- },
349
- emitVoid() {
350
- handlers.forEach((h) => h(undefined));
351
- },
352
- clear() {
353
- handlers.clear();
354
- }
355
- };
356
- }
357
- /**
358
- *
359
- * @param triggerEl Signal<HTMLElement | null | undefined>
360
- * @param containerEl Signal<HTMLElement | null | undefined>
361
- * @param resetMs
362
- */
363
- function useGraceArea(triggerEl, containerEl, resetMs = 300) {
364
- const isPointerInTransit = signal(false, ...(ngDevMode ? [{ debugName: "isPointerInTransit" }] : []));
365
- const pointerExit = createSignalEvent();
366
- let pointerGraceArea = null;
367
- let resetTimer = null;
368
- function armInTransitAutoReset() {
369
- if (resetTimer !== null)
370
- window.clearTimeout(resetTimer);
371
- resetTimer = window.setTimeout(() => {
372
- isPointerInTransit.set(false);
373
- resetTimer = null;
374
- }, resetMs);
375
- }
376
- function clearGraceArea() {
377
- pointerGraceArea = null;
378
- isPointerInTransit.set(false);
379
- if (resetTimer !== null) {
380
- window.clearTimeout(resetTimer);
381
- resetTimer = null;
382
- }
383
- }
384
- function createGraceArea(event, hoverTarget) {
385
- const currentTarget = event.currentTarget;
386
- const exitPoint = { x: event.clientX, y: event.clientY };
387
- const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
388
- const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);
389
- const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());
390
- pointerGraceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);
391
- isPointerInTransit.set(true);
392
- armInTransitAutoReset();
393
- }
394
- function trackPointerGrace(event) {
395
- if (!pointerGraceArea)
396
- return;
397
- if (!(event.target instanceof HTMLElement))
398
- return;
399
- const trigger = triggerEl();
400
- const container = containerEl();
401
- if (!trigger || !container)
402
- return;
403
- const target = event.target;
404
- const pointerPosition = { x: event.clientX, y: event.clientY };
405
- const hasEnteredTarget = trigger.contains(target) || container.contains(target);
406
- const isOutsideGrace = !isPointInPolygon(pointerPosition, pointerGraceArea);
407
- const isAnotherGraceAreaTrigger = !!target.closest('[data-grace-area-trigger]');
408
- if (hasEnteredTarget) {
409
- clearGraceArea();
410
- }
411
- else if (isOutsideGrace || isAnotherGraceAreaTrigger) {
412
- clearGraceArea();
413
- pointerExit.emitVoid();
414
- }
415
- }
416
- effect((onCleanupFn) => {
417
- const trigger = triggerEl();
418
- const container = containerEl();
419
- onCleanupFn(() => {
420
- const doc = trigger?.ownerDocument;
421
- trigger?.removeEventListener('pointerleave', onTriggerLeave);
422
- container?.removeEventListener('pointerleave', onContainerLeave);
423
- doc?.removeEventListener('pointermove', trackPointerGrace);
424
- trigger?.removeAttribute('data-grace-area-trigger');
425
- clearGraceArea();
426
- });
427
- if (!trigger || !container)
428
- return;
429
- trigger.setAttribute('data-grace-area-trigger', '');
430
- const onTriggerLeave = (e) => createGraceArea(e, container);
431
- const onContainerLeave = (e) => createGraceArea(e, trigger);
432
- trigger.addEventListener('pointerleave', onTriggerLeave, { passive: true });
433
- container.addEventListener('pointerleave', onContainerLeave, { passive: true });
434
- trigger.ownerDocument.addEventListener('pointermove', trackPointerGrace, { passive: true });
435
- });
436
- return {
437
- isPointerInTransit: isPointerInTransit.asReadonly(),
438
- onPointerExit: pointerExit.on
439
- };
440
- }
441
- function getExitSideFromRect(point, rect) {
442
- const top = Math.abs(rect.top - point.y);
443
- const bottom = Math.abs(rect.bottom - point.y);
444
- const right = Math.abs(rect.right - point.x);
445
- const left = Math.abs(rect.left - point.x);
446
- switch (Math.min(top, bottom, right, left)) {
447
- case left:
448
- return 'left';
449
- case right:
450
- return 'right';
451
- case top:
452
- return 'top';
453
- case bottom:
454
- return 'bottom';
455
- default:
456
- throw new Error('unreachable');
457
- }
458
- }
459
- function getPaddedExitPoints(exitPoint, exitSide, padding = 5) {
460
- const pts = [];
461
- switch (exitSide) {
462
- case 'top':
463
- pts.push({ x: exitPoint.x - padding, y: exitPoint.y + padding }, { x: exitPoint.x + padding, y: exitPoint.y + padding });
464
- break;
465
- case 'bottom':
466
- pts.push({ x: exitPoint.x - padding, y: exitPoint.y - padding }, { x: exitPoint.x + padding, y: exitPoint.y - padding });
467
- break;
468
- case 'left':
469
- pts.push({ x: exitPoint.x + padding, y: exitPoint.y - padding }, { x: exitPoint.x + padding, y: exitPoint.y + padding });
470
- break;
471
- case 'right':
472
- pts.push({ x: exitPoint.x - padding, y: exitPoint.y - padding }, { x: exitPoint.x - padding, y: exitPoint.y + padding });
473
- break;
474
- }
475
- return pts;
476
- }
477
- function getPointsFromRect(rect) {
478
- const { top, right, bottom, left } = rect;
479
- return [
480
- { x: left, y: top },
481
- { x: right, y: top },
482
- { x: right, y: bottom },
483
- { x: left, y: bottom }
484
- ];
485
- }
486
- function isPointInPolygon(point, polygon) {
487
- const { x, y } = point;
488
- let inside = false;
489
- for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
490
- const xi = polygon[i].x, yi = polygon[i].y;
491
- const xj = polygon[j].x, yj = polygon[j].y;
492
- const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;
493
- if (intersect)
494
- inside = !inside;
495
- }
496
- return inside;
497
- }
498
- function getHull(points) {
499
- const newPoints = points.slice();
500
- newPoints.sort((a, b) => a.x - b.x || a.y - b.y);
501
- return getHullPresorted(newPoints);
502
- }
503
- function getHullPresorted(points) {
504
- if (points.length <= 1)
505
- return points.slice();
506
- const upper = [];
507
- for (let i = 0; i < points.length; i++) {
508
- const p = points[i];
509
- while (upper.length >= 2) {
510
- const q = upper[upper.length - 1];
511
- const r = upper[upper.length - 2];
512
- if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))
513
- upper.pop();
514
- else
515
- break;
516
- }
517
- upper.push(p);
518
- }
519
- upper.pop();
520
- const lower = [];
521
- for (let i = points.length - 1; i >= 0; i--) {
522
- const p = points[i];
523
- while (lower.length >= 2) {
524
- const q = lower[lower.length - 1];
525
- const r = lower[lower.length - 2];
526
- if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))
527
- lower.pop();
528
- else
529
- break;
530
- }
531
- lower.push(p);
532
- }
533
- lower.pop();
534
- if (upper.length === 1 && lower.length === 1 && upper[0].x === lower[0].x && upper[0].y === lower[0].y) {
535
- return upper;
536
- }
537
- else {
538
- return upper.concat(lower);
539
- }
540
- }
541
-
542
- class RdxTooltipContentWrapper {
543
- constructor() {
544
- this.rootContext = injectRdxTooltipContext();
545
- this.destroyRef = inject(DestroyRef);
546
- this.dismissableLayer = inject(RdxDismissableLayer);
547
- this.elementRef = inject(ElementRef);
548
- /**
549
- * The preferred side of the anchor to render against when open.
550
- * Will be reversed when collisions occur and avoidCollisions is enabled.
551
- */
552
- this.side = input('bottom', ...(ngDevMode ? [{ debugName: "side" }] : []));
553
- /**
554
- * The distance in pixels from the anchor.
555
- */
556
- this.sideOffset = input(0, ...(ngDevMode ? [{ debugName: "sideOffset", transform: numberAttribute }] : [{ transform: numberAttribute }]));
557
- /**
558
- * The preferred alignment against the anchor. May change when collisions occur.
559
- */
560
- this.align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : []));
561
- /**
562
- * An offset in pixels from the `start` or `end` alignment options.
563
- */
564
- this.alignOffset = input(0, ...(ngDevMode ? [{ debugName: "alignOffset", transform: numberAttribute }] : [{ transform: numberAttribute }]));
565
- /**
566
- * The padding between the arrow and the edges of the content.
567
- * If your content has border-radius, this will prevent it from overflowing the corners.
568
- */
569
- this.arrowPadding = input(0, ...(ngDevMode ? [{ debugName: "arrowPadding", transform: numberAttribute }] : [{ transform: numberAttribute }]));
570
- /**
571
- * When `true`, overrides the `side` and `align` preferences to prevent collisions with boundary edges.
572
- */
573
- this.avoidCollisions = input(true, ...(ngDevMode ? [{ debugName: "avoidCollisions", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
574
- /**
575
- * The element used as the collision boundary.
576
- * By default this is the viewport, though you can provide additional element(s) to be included in this check.
577
- */
578
- this.collisionBoundary = input(...(ngDevMode ? [undefined, { debugName: "collisionBoundary" }] : []));
579
- /**
580
- * The distance in pixels from the boundary edges where collision detection should occur.
581
- * Accepts a number (same for all sides), or a partial padding object, for example: `{ top: 20, left: 20 }`.
582
- */
583
- this.collisionPadding = input(0, ...(ngDevMode ? [{ debugName: "collisionPadding" }] : []));
584
- /**
585
- * The sticky behavior on the `align` axis.
586
- * - `partial` will keep the content in the boundary as long as the trigger is at least partially in the boundary
587
- * - `always` will keep the content in the boundary regardless.
588
- */
589
- this.sticky = input('partial', ...(ngDevMode ? [{ debugName: "sticky" }] : []));
590
- /**
591
- * Whether to hide the content when the trigger becomes fully occluded.
592
- */
593
- this.hideWhenDetached = input(false, ...(ngDevMode ? [{ debugName: "hideWhenDetached", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
594
- /**
595
- * Whether to update the position of the floating element on every animation frame if required.
596
- */
597
- this.updatePositionStrategy = input('always', ...(ngDevMode ? [{ debugName: "updatePositionStrategy" }] : []));
598
- /**
599
- * Emits when the element is placed.
600
- */
601
- this.placed = outputFromObservable(outputToObservable(inject(RdxPopperContentWrapper).placed));
602
- /**
603
- * Event handler called when the escape key is down.
604
- * Can be prevented.
605
- */
606
- this.escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));
607
- /**
608
- * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`.
609
- * Can be prevented.
610
- */
611
- this.pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));
612
- this.triggerEl = signal(null, ...(ngDevMode ? [{ debugName: "triggerEl" }] : []));
613
- this.containerEl = signal(null, ...(ngDevMode ? [{ debugName: "containerEl" }] : []));
614
- this.graceArea = useGraceArea(this.triggerEl, this.containerEl, 300);
615
- this.afterNextRender = afterNextRender(() => {
616
- this.triggerEl.set(this.rootContext.trigger().elementRef.nativeElement);
617
- this.containerEl.set(this.elementRef.nativeElement);
618
- const handleScroll = (event) => {
619
- const target = event.target;
620
- if (target?.contains(this.rootContext.trigger().elementRef.nativeElement)) {
621
- this.rootContext.close();
622
- }
623
- };
624
- window.addEventListener('scroll', handleScroll, { capture: true });
625
- this.destroyRef.onDestroy(() => {
626
- window.removeEventListener('scroll', handleScroll, { capture: true });
627
- });
628
- this.graceArea.onPointerExit(() => {
629
- if (this.rootContext.disableHoverableContent())
630
- return;
631
- this.rootContext.close();
632
- });
633
- });
634
- this.dismissableLayer.focusOutside.subscribe((e) => e.preventDefault());
635
- this.dismissableLayer.dismiss.subscribe(() => this.rootContext.close());
636
- this.dismissableLayer.pointerDownOutside.subscribe((event) => {
637
- if (this.rootContext.disableClosingTrigger() &&
638
- this.rootContext.trigger().elementRef.nativeElement.contains(event.target))
639
- event.preventDefault();
640
- });
641
- }
642
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipContentWrapper, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
643
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: RdxTooltipContentWrapper, isStandalone: true, selector: "[rdxTooltipContentWrapper]", 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 }, updatePositionStrategy: { classPropertyName: "updatePositionStrategy", publicName: "updatePositionStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placed: "placed", escapeKeyDown: "escapeKeyDown", pointerDownOutside: "pointerDownOutside" }, host: { properties: { "attr.data-state": "rootContext.state()", "style": "{\n '--radix-tooltip-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-tooltip-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-tooltip-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-tooltip-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-tooltip-trigger-height': 'var(--radix-popper-anchor-height)',\n }" } }, hostDirectives: [{ directive: i1$1.RdxDismissableLayer }, { directive: i1.RdxPopperContentWrapper, inputs: ["side", "side", "sideOffset", "sideOffset", "align", "align", "alignOffset", "alignOffset", "arrowPadding", "arrowPadding", "avoidCollisions", "avoidCollisions", "collisionBoundary", "collisionBoundary", "collisionPadding", "collisionPadding", "sticky", "sticky", "hideWhenDetached", "hideWhenDetached", "updatePositionStrategy", "updatePositionStrategy"] }], ngImport: i0 }); }
644
- }
645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipContentWrapper, decorators: [{
646
- type: Directive,
647
- args: [{
648
- selector: '[rdxTooltipContentWrapper]',
649
- hostDirectives: [
650
- RdxDismissableLayer,
651
- {
652
- directive: RdxPopperContentWrapper,
653
- inputs: [
654
- 'side',
655
- 'sideOffset',
656
- 'align',
657
- 'alignOffset',
658
- 'arrowPadding',
659
- 'avoidCollisions',
660
- 'collisionBoundary',
661
- 'collisionPadding',
662
- 'sticky',
663
- 'hideWhenDetached',
664
- 'updatePositionStrategy'
665
- ]
666
- }
667
- ],
668
- host: {
669
- '[attr.data-state]': 'rootContext.state()',
670
- // re-namespace exposed content custom properties
671
- '[style]': `{
672
- '--radix-tooltip-content-transform-origin': 'var(--radix-popper-transform-origin)',
673
- '--radix-tooltip-content-available-width': 'var(--radix-popper-available-width)',
674
- '--radix-tooltip-content-available-height': 'var(--radix-popper-available-height)',
675
- '--radix-tooltip-trigger-width': 'var(--radix-popper-anchor-width)',
676
- '--radix-tooltip-trigger-height': 'var(--radix-popper-anchor-height)',
677
- }`
678
- }
679
- }]
680
- }], ctorParameters: () => [] });
681
-
682
- class RdxTooltipPortal {
683
- constructor() {
684
- this.container = input(...(ngDevMode ? [undefined, { debugName: "container" }] : []));
685
- }
686
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
687
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: RdxTooltipPortal, isStandalone: true, selector: "[rdxTooltipPortal]", inputs: { container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1$2.RdxPortal, inputs: ["container", "container"] }], ngImport: i0 }); }
688
- }
689
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipPortal, decorators: [{
690
- type: Directive,
691
- args: [{
692
- selector: '[rdxTooltipPortal]',
693
- hostDirectives: [
694
- {
695
- directive: RdxPortal,
696
- inputs: ['container']
697
- }
698
- ]
699
- }]
700
- }] });
701
-
702
- class RdxTooltipPortalPresence {
703
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipPortalPresence, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
704
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: RdxTooltipPortalPresence, isStandalone: true, selector: "ng-template[rdxTooltipPortalPresence]", providers: [
705
- provideRdxPresenceContext(() => {
706
- const context = injectRdxTooltipContext();
707
- return { present: context.isOpen };
708
- })
709
- ], hostDirectives: [{ directive: i1$3.RdxPresenceDirective }], ngImport: i0 }); }
710
- }
711
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxTooltipPortalPresence, decorators: [{
712
- type: Directive,
713
- args: [{
714
- selector: 'ng-template[rdxTooltipPortalPresence]',
715
- hostDirectives: [RdxPresenceDirective],
716
- providers: [
717
- provideRdxPresenceContext(() => {
718
- const context = injectRdxTooltipContext();
719
- return { present: context.isOpen };
720
- })
721
- ]
722
- }]
723
- }] });
724
-
725
- const tooltipImports = [
726
- RdxTooltip,
727
- RdxTooltipArrow,
728
- RdxTooltipContent,
729
- RdxTooltipContentWrapper,
730
- RdxTooltipPortal,
731
- RdxTooltipTrigger,
732
- RdxTooltipPortalPresence
733
- ];
734
-
735
- /**
736
- * Generated bundle index. Do not edit.
737
- */
738
-
739
- export { RdxTooltip, RdxTooltipArrow, RdxTooltipContent, RdxTooltipContentWrapper, RdxTooltipDefaultsToken, RdxTooltipPortal, RdxTooltipPortalPresence, RdxTooltipTrigger, defaultTooltipConfig, injectRdxTooltipConfig, injectRdxTooltipContext, provideRdxTooltipConfig, provideRdxTooltipContext, tooltipImports };
740
- //# sourceMappingURL=radix-ng-primitives-tooltip2.mjs.map