@radix-ng/primitives 0.1.1 → 0.3.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 (94) hide show
  1. package/avatar/README.md +1 -0
  2. package/avatar/index.d.ts +4 -0
  3. package/avatar/src/avatar-fallback.directive.d.ts +34 -0
  4. package/avatar/src/avatar-image.directive.d.ts +17 -0
  5. package/avatar/src/avatar.config.d.ts +12 -0
  6. package/avatar/src/avatar.directive.d.ts +22 -0
  7. package/avatar/src/avatar.token.d.ts +4 -0
  8. package/checkbox/index.d.ts +1 -1
  9. package/esm2022/avatar/index.mjs +5 -0
  10. package/esm2022/avatar/radix-ng-primitives-avatar.mjs +5 -0
  11. package/esm2022/avatar/src/avatar-fallback.directive.mjs +61 -0
  12. package/esm2022/avatar/src/avatar-image.directive.mjs +50 -0
  13. package/esm2022/avatar/src/avatar.config.mjs +17 -0
  14. package/esm2022/avatar/src/avatar.directive.mjs +38 -0
  15. package/esm2022/avatar/src/avatar.token.mjs +6 -0
  16. package/esm2022/checkbox/index.mjs +2 -2
  17. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +1 -1
  18. package/esm2022/checkbox/src/checkbox.directive.mjs +2 -2
  19. package/esm2022/checkbox/src/checkbox.token.mjs +2 -2
  20. package/esm2022/overlay/index.mjs +5 -0
  21. package/esm2022/overlay/radix-ng-primitives-overlay.mjs +5 -0
  22. package/esm2022/overlay/src/overlay-arrow.directive.mjs +59 -0
  23. package/esm2022/overlay/src/overlay-arrow.token.mjs +3 -0
  24. package/esm2022/overlay/src/overlay-trigger.directive.mjs +279 -0
  25. package/esm2022/overlay/src/overlay-trigger.token.mjs +9 -0
  26. package/esm2022/overlay/src/overlay.directive.mjs +51 -0
  27. package/esm2022/overlay/src/overlay.token.mjs +3 -0
  28. package/esm2022/progress/src/progress-indicator.directive.mjs +1 -1
  29. package/esm2022/progress/src/progress.directive.mjs +1 -1
  30. package/esm2022/progress/src/progress.token.mjs +2 -2
  31. package/esm2022/radio/index.mjs +6 -0
  32. package/esm2022/radio/radix-ng-primitives-radio.mjs +5 -0
  33. package/esm2022/radio/src/radio-group.directive.mjs +108 -0
  34. package/esm2022/radio/src/radio-group.token.mjs +6 -0
  35. package/esm2022/radio/src/radio-indicator.directive.mjs +30 -0
  36. package/esm2022/radio/src/radio-item.directive.mjs +79 -0
  37. package/esm2022/radio/src/radio-item.token.mjs +6 -0
  38. package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +2 -2
  39. package/esm2022/roving-focus/src/roving-focus-group.token.mjs +2 -2
  40. package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +2 -2
  41. package/esm2022/roving-focus/src/roving-focus-item.token.mjs +2 -2
  42. package/esm2022/separator/src/separator.directive.mjs +2 -2
  43. package/esm2022/switch/index.mjs +2 -2
  44. package/esm2022/switch/src/switch-thumb.directive.mjs +1 -1
  45. package/esm2022/switch/src/switch.directive.mjs +2 -2
  46. package/esm2022/switch/src/switch.token.mjs +2 -2
  47. package/esm2022/tooltip/index.mjs +5 -0
  48. package/esm2022/tooltip/radix-ng-primitives-tooltip.mjs +5 -0
  49. package/esm2022/tooltip/src/tooltip-arrow.directive.mjs +17 -0
  50. package/esm2022/tooltip/src/tooltip-trigger.directive.mjs +148 -0
  51. package/esm2022/tooltip/src/tooltip-trigger.token.mjs +6 -0
  52. package/esm2022/tooltip/src/tooltip.config.mjs +31 -0
  53. package/esm2022/tooltip/src/tooltip.directive.mjs +46 -0
  54. package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +1 -1
  55. package/fesm2022/radix-ng-primitives-avatar.mjs +167 -0
  56. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -0
  57. package/fesm2022/radix-ng-primitives-checkbox.mjs +21 -21
  58. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  59. package/fesm2022/radix-ng-primitives-overlay.mjs +399 -0
  60. package/fesm2022/radix-ng-primitives-overlay.mjs.map +1 -0
  61. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-radio.mjs +221 -0
  63. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -0
  64. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  65. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-switch.mjs +23 -23
  67. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-tooltip.mjs +242 -0
  69. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -0
  70. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  71. package/overlay/README.md +1 -0
  72. package/overlay/index.d.ts +4 -0
  73. package/overlay/src/overlay-arrow.directive.d.ts +29 -0
  74. package/overlay/src/overlay-arrow.token.d.ts +3 -0
  75. package/overlay/src/overlay-trigger.directive.d.ts +163 -0
  76. package/overlay/src/overlay-trigger.token.d.ts +7 -0
  77. package/overlay/src/overlay.directive.d.ts +29 -0
  78. package/overlay/src/overlay.token.d.ts +3 -0
  79. package/package.json +29 -4
  80. package/radio/README.md +1 -0
  81. package/radio/index.d.ts +5 -0
  82. package/radio/src/radio-group.directive.d.ts +65 -0
  83. package/radio/src/radio-group.token.d.ts +4 -0
  84. package/radio/src/radio-indicator.directive.d.ts +13 -0
  85. package/radio/src/radio-item.directive.d.ts +36 -0
  86. package/radio/src/radio-item.token.d.ts +4 -0
  87. package/switch/index.d.ts +1 -1
  88. package/tooltip/README.md +1 -0
  89. package/tooltip/index.d.ts +4 -0
  90. package/tooltip/src/tooltip-arrow.directive.d.ts +6 -0
  91. package/tooltip/src/tooltip-trigger.directive.d.ts +79 -0
  92. package/tooltip/src/tooltip-trigger.token.d.ts +4 -0
  93. package/tooltip/src/tooltip.config.d.ts +46 -0
  94. package/tooltip/src/tooltip.directive.d.ts +17 -0
@@ -0,0 +1,399 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, Directive, ApplicationRef, ComponentFactoryResolver, Injector, ViewContainerRef, booleanAttribute, numberAttribute, Input } from '@angular/core';
3
+ import { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';
4
+ import { offset, shift, flip, arrow, autoUpdate, computePosition } from '@floating-ui/dom';
5
+
6
+ const OverlayArrowToken = new InjectionToken('OverlayArrowToken');
7
+
8
+ const OverlayTriggerToken = new InjectionToken('OverlayTriggerToken');
9
+ /**
10
+ * Inject the overlay trigger directive
11
+ */
12
+ function injectOverlayTrigger() {
13
+ return inject(OverlayTriggerToken);
14
+ }
15
+
16
+ class OverlayArrowDirective {
17
+ constructor() {
18
+ /**
19
+ * Access the arrow element
20
+ */
21
+ this.elementRef = inject((ElementRef));
22
+ /**
23
+ * Access the overlay trigger
24
+ */
25
+ this.overlayTrigger = injectOverlayTrigger();
26
+ }
27
+ /**
28
+ * Register the arrow on init
29
+ * @internal
30
+ */
31
+ ngOnInit() {
32
+ this.overlayTrigger.registerArrow(this);
33
+ }
34
+ /**
35
+ * Unregister the arrow on destroy
36
+ * @internal
37
+ */
38
+ ngOnDestroy() {
39
+ this.overlayTrigger.unregisterArrow();
40
+ }
41
+ /**
42
+ * Define the position of the arrow.
43
+ */
44
+ setPosition(placement, arrowX, arrowY) {
45
+ const staticSide = {
46
+ top: 'bottom',
47
+ right: 'left',
48
+ bottom: 'top',
49
+ left: 'right'
50
+ }[placement.split('-')[0]];
51
+ Object.assign(this.elementRef.nativeElement.style, {
52
+ left: arrowX != null ? `${arrowX}px` : '',
53
+ top: arrowY != null ? `${arrowY}px` : '',
54
+ right: '',
55
+ bottom: '',
56
+ [staticSide]: `-${this.elementRef.nativeElement.offsetWidth / 2}px`
57
+ });
58
+ }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: OverlayArrowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
60
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: OverlayArrowDirective, isStandalone: true, selector: "[rdxOverlayArrow]", providers: [{ provide: OverlayArrowToken, useExisting: OverlayArrowDirective }], ngImport: i0 }); }
61
+ }
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: OverlayArrowDirective, decorators: [{
63
+ type: Directive,
64
+ args: [{
65
+ selector: '[rdxOverlayArrow]',
66
+ standalone: true,
67
+ providers: [{ provide: OverlayArrowToken, useExisting: OverlayArrowDirective }]
68
+ }]
69
+ }] });
70
+
71
+ /* eslint-disable @angular-eslint/no-input-rename */
72
+ class OverlayTriggerDirective {
73
+ constructor() {
74
+ /**
75
+ * Access the application ref
76
+ */
77
+ this.appRef = inject(ApplicationRef);
78
+ /**
79
+ * Access the component factory resolver
80
+ */
81
+ this.componentFactoryResolver = inject(ComponentFactoryResolver);
82
+ /**
83
+ * Access the injector
84
+ */
85
+ this.injector = inject(Injector);
86
+ /**
87
+ * Access the trigger element
88
+ */
89
+ this.trigger = inject((ElementRef));
90
+ /**
91
+ * Access the view container
92
+ */
93
+ this.viewContainer = inject(ViewContainerRef);
94
+ /**
95
+ * Define if the trigger should be disabled.
96
+ * @default false
97
+ */
98
+ this.disabled = false;
99
+ /**
100
+ * Define the placement of the overlay relative to the trigger.
101
+ * @default 'bottom'
102
+ */
103
+ this.placement = 'top';
104
+ /**
105
+ * Define the offset of the overlay relative to the trigger.
106
+ * @default 4
107
+ */
108
+ this.offset = 4;
109
+ /**
110
+ * Define the delay before the overlay is displayed.
111
+ * @default 0
112
+ */
113
+ this.showDelay = 0;
114
+ /**
115
+ * Define the delay before the overlay is hidden.
116
+ * @default 0
117
+ */
118
+ this.hideDelay = 0;
119
+ /**
120
+ * Define whether the overlay should shift when the overlay is near the edge of the viewport.
121
+ * @default true
122
+ */
123
+ this.shift = true;
124
+ /**
125
+ * Define whether the overlay should flip when there is not enough space for the overlay.
126
+ * @default true
127
+ */
128
+ this.flip = true;
129
+ /**
130
+ * Define the container in to which the overlay should be attached.
131
+ * @default document.body
132
+ */
133
+ this.container = document.body;
134
+ /**
135
+ * Store the overlay content instance.
136
+ */
137
+ this.overlay = null;
138
+ /**
139
+ * Store the overlay arrow instance.
140
+ */
141
+ this.arrow = null;
142
+ /**
143
+ * Store the view ref
144
+ */
145
+ this.viewRef = null;
146
+ /**
147
+ * Store the show delay timeout
148
+ */
149
+ this.showDelayTimeout = null;
150
+ /**
151
+ * Store the hide delay timeout
152
+ */
153
+ this.hideDelayTimeout = null;
154
+ /**
155
+ * Store additional providers to register on the overlay.
156
+ */
157
+ this.providers = [];
158
+ }
159
+ /**
160
+ * Determine the state of the overlay.
161
+ */
162
+ get isOpen() {
163
+ return !!this.viewRef;
164
+ }
165
+ /**
166
+ * Determine the state of the overlay.
167
+ */
168
+ get state() {
169
+ if (this.showDelayTimeout) {
170
+ return 'opening';
171
+ }
172
+ if (this.hideDelayTimeout) {
173
+ return 'closing';
174
+ }
175
+ return this.isOpen ? 'open' : 'closed';
176
+ }
177
+ /**
178
+ * Create the overlay.
179
+ */
180
+ createOverlay() {
181
+ const domPortal = new DomPortalOutlet(this.container, this.componentFactoryResolver, this.appRef, this.injector);
182
+ const templatePortal = new TemplatePortal(this.templateRef, this.viewContainer, undefined, Injector.create({
183
+ parent: this.injector,
184
+ providers: [
185
+ {
186
+ provide: OverlayTriggerToken,
187
+ useValue: this
188
+ },
189
+ ...this.providers
190
+ ]
191
+ }));
192
+ this.viewRef = domPortal.attach(templatePortal);
193
+ this.viewRef.detectChanges();
194
+ this.updateOverlayPosition();
195
+ this.showDelayTimeout = null;
196
+ }
197
+ /**
198
+ * Update the overlay position.
199
+ */
200
+ updateOverlayPosition() {
201
+ if (!this.viewRef) {
202
+ return;
203
+ }
204
+ const overlayElement = this.viewRef.rootNodes[0];
205
+ const middleware = [];
206
+ if (this.offset) {
207
+ middleware.push(offset(this.offset));
208
+ }
209
+ if (this.shift) {
210
+ middleware.push(shift());
211
+ }
212
+ if (this.flip) {
213
+ middleware.push(flip());
214
+ }
215
+ // if there is an arrow defined, we need to add the arrow middleware
216
+ if (this.arrow) {
217
+ middleware.push(arrow({ element: this.arrow.elementRef.nativeElement }));
218
+ }
219
+ this.dispose = autoUpdate(this.trigger.nativeElement, overlayElement, async () => {
220
+ const position = await computePosition(this.trigger.nativeElement, overlayElement, {
221
+ placement: this.placement,
222
+ middleware
223
+ });
224
+ this.overlay?.setPosition(position.x, position.y);
225
+ if (position.middlewareData.arrow) {
226
+ this.arrow?.setPosition(this.placement, position.middlewareData.arrow.x, position.middlewareData.arrow.y);
227
+ }
228
+ });
229
+ }
230
+ /**
231
+ * Destroy the overlay.
232
+ */
233
+ destroyOverlay() {
234
+ this.viewRef?.destroy();
235
+ this.viewRef = null;
236
+ this.dispose?.();
237
+ this.hideDelayTimeout = null;
238
+ }
239
+ /**
240
+ * Show the overlay.
241
+ */
242
+ show() {
243
+ if (this.disabled || this.isOpen) {
244
+ return;
245
+ }
246
+ if (this.hideDelayTimeout) {
247
+ clearTimeout(this.hideDelayTimeout);
248
+ this.hideDelayTimeout = null;
249
+ }
250
+ this.showDelayTimeout = window.setTimeout(() => this.createOverlay(), this.showDelay);
251
+ }
252
+ /**
253
+ * Hide the overlay.
254
+ */
255
+ hide() {
256
+ if (!this.isOpen) {
257
+ return;
258
+ }
259
+ if (this.showDelayTimeout) {
260
+ clearTimeout(this.showDelayTimeout);
261
+ this.showDelayTimeout = null;
262
+ }
263
+ this.hideDelayTimeout = window.setTimeout(() => this.destroyOverlay(), this.hideDelay);
264
+ }
265
+ /**
266
+ * Register the overlay.
267
+ * @param overlay The overlay to register.
268
+ * @internal
269
+ */
270
+ registerOverlay(overlay) {
271
+ this.overlay = overlay;
272
+ }
273
+ /**
274
+ * Unregister the overlay.
275
+ * @internal
276
+ */
277
+ unregisterOverlay() {
278
+ this.overlay = null;
279
+ }
280
+ /**
281
+ * Register the arrow.
282
+ * @param arrow The arrow to register.
283
+ * @internal
284
+ */
285
+ registerArrow(arrow) {
286
+ this.arrow = arrow;
287
+ }
288
+ /**
289
+ * Unregister the arrow.
290
+ * @internal
291
+ */
292
+ unregisterArrow() {
293
+ this.arrow = null;
294
+ }
295
+ /**
296
+ * Register a provider on the overlay.
297
+ * @param provider The provider to register.
298
+ * @internal
299
+ */
300
+ registerProvider(provider) {
301
+ this.providers.push(provider);
302
+ }
303
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: OverlayTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
304
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: OverlayTriggerDirective, isStandalone: true, selector: "[rdxOverlayTrigger]", inputs: { templateRef: ["rdxOverlayTrigger", "templateRef"], disabled: ["rdxOverlayDisabled", "disabled", booleanAttribute], placement: ["rdxOverlayPlacement", "placement"], offset: ["rdxOverlayOffset", "offset", numberAttribute], showDelay: ["rdxOverlayShowDelay", "showDelay", numberAttribute], hideDelay: ["rdxOverlayHideDelay", "hideDelay", numberAttribute], shift: ["rdxOverlayShift", "shift", booleanAttribute], flip: ["rdxOverlayFlip", "flip", booleanAttribute], container: ["rdxOverlayContainer", "container"] }, host: { properties: { "attr.data-state": "state" } }, exportAs: ["rdxOverlayTrigger"], ngImport: i0 }); }
305
+ }
306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: OverlayTriggerDirective, decorators: [{
307
+ type: Directive,
308
+ args: [{
309
+ selector: '[rdxOverlayTrigger]',
310
+ standalone: true,
311
+ exportAs: 'rdxOverlayTrigger',
312
+ host: {
313
+ '[attr.data-state]': 'state'
314
+ }
315
+ }]
316
+ }], propDecorators: { templateRef: [{
317
+ type: Input,
318
+ args: [{ alias: 'rdxOverlayTrigger', required: true }]
319
+ }], disabled: [{
320
+ type: Input,
321
+ args: [{ alias: 'rdxOverlayDisabled', transform: booleanAttribute }]
322
+ }], placement: [{
323
+ type: Input,
324
+ args: ['rdxOverlayPlacement']
325
+ }], offset: [{
326
+ type: Input,
327
+ args: [{ alias: 'rdxOverlayOffset', transform: numberAttribute }]
328
+ }], showDelay: [{
329
+ type: Input,
330
+ args: [{ alias: 'rdxOverlayShowDelay', transform: numberAttribute }]
331
+ }], hideDelay: [{
332
+ type: Input,
333
+ args: [{ alias: 'rdxOverlayHideDelay', transform: numberAttribute }]
334
+ }], shift: [{
335
+ type: Input,
336
+ args: [{ alias: 'rdxOverlayShift', transform: booleanAttribute }]
337
+ }], flip: [{
338
+ type: Input,
339
+ args: [{ alias: 'rdxOverlayFlip', transform: booleanAttribute }]
340
+ }], container: [{
341
+ type: Input,
342
+ args: ['rdxOverlayContainer']
343
+ }] } });
344
+
345
+ const OverlayToken = new InjectionToken('OverlayToken');
346
+
347
+ class OverlayDirective {
348
+ constructor() {
349
+ /**
350
+ * Access the overlay element
351
+ */
352
+ this.elementRef = inject((ElementRef));
353
+ /**
354
+ * Access the overlay trigger
355
+ */
356
+ this.overlayTrigger = injectOverlayTrigger();
357
+ }
358
+ /**
359
+ * Register the overlay on init
360
+ */
361
+ ngOnInit() {
362
+ this.overlayTrigger.registerOverlay(this);
363
+ }
364
+ /**
365
+ * Unregister the overlay on destroy
366
+ */
367
+ ngOnDestroy() {
368
+ this.overlayTrigger.unregisterOverlay();
369
+ }
370
+ /**
371
+ * Set the position of the overlay
372
+ * @param x The x position
373
+ * @param y The y position
374
+ * @internal
375
+ */
376
+ setPosition(x, y) {
377
+ Object.assign(this.elementRef.nativeElement.style, {
378
+ left: `${x}px`,
379
+ top: `${y}px`
380
+ });
381
+ }
382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: OverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
383
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: OverlayDirective, isStandalone: true, selector: "[rdxOverlay]", providers: [{ provide: OverlayToken, useExisting: OverlayDirective }], ngImport: i0 }); }
384
+ }
385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: OverlayDirective, decorators: [{
386
+ type: Directive,
387
+ args: [{
388
+ selector: '[rdxOverlay]',
389
+ standalone: true,
390
+ providers: [{ provide: OverlayToken, useExisting: OverlayDirective }]
391
+ }]
392
+ }] });
393
+
394
+ /**
395
+ * Generated bundle index. Do not edit.
396
+ */
397
+
398
+ export { OverlayArrowDirective, OverlayDirective, OverlayTriggerDirective, OverlayTriggerToken, injectOverlayTrigger };
399
+ //# sourceMappingURL=radix-ng-primitives-overlay.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-overlay.mjs","sources":["../../../packages/primitives/overlay/src/overlay-arrow.token.ts","../../../packages/primitives/overlay/src/overlay-trigger.token.ts","../../../packages/primitives/overlay/src/overlay-arrow.directive.ts","../../../packages/primitives/overlay/src/overlay-trigger.directive.ts","../../../packages/primitives/overlay/src/overlay.token.ts","../../../packages/primitives/overlay/src/overlay.directive.ts","../../../packages/primitives/overlay/radix-ng-primitives-overlay.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport type { OverlayArrowDirective } from './overlay-arrow.directive';\n\nexport const OverlayArrowToken = new InjectionToken<OverlayArrowDirective>('OverlayArrowToken');\n","import { inject, InjectionToken } from '@angular/core';\n\nimport type { OverlayTriggerDirective } from './overlay-trigger.directive';\n\nexport const OverlayTriggerToken = new InjectionToken<OverlayTriggerDirective>(\n 'OverlayTriggerToken'\n);\n\n/**\n * Inject the overlay trigger directive\n */\nexport function injectOverlayTrigger(): OverlayTriggerDirective {\n return inject(OverlayTriggerToken);\n}\n","import { Directive, ElementRef, inject, OnDestroy, OnInit } from '@angular/core';\n\nimport { Placement } from '@floating-ui/dom';\n\nimport { OverlayArrowToken } from './overlay-arrow.token';\nimport { injectOverlayTrigger } from './overlay-trigger.token';\n\n@Directive({\n selector: '[rdxOverlayArrow]',\n standalone: true,\n providers: [{ provide: OverlayArrowToken, useExisting: OverlayArrowDirective }]\n})\nexport class OverlayArrowDirective implements OnInit, OnDestroy {\n /**\n * Access the arrow element\n */\n readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /**\n * Access the overlay trigger\n */\n private readonly overlayTrigger = injectOverlayTrigger();\n\n /**\n * Register the arrow on init\n * @internal\n */\n ngOnInit(): void {\n this.overlayTrigger.registerArrow(this);\n }\n\n /**\n * Unregister the arrow on destroy\n * @internal\n */\n ngOnDestroy(): void {\n this.overlayTrigger.unregisterArrow();\n }\n\n /**\n * Define the position of the arrow.\n */\n setPosition(placement: Placement, arrowX?: number, arrowY?: number): void {\n const staticSide = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n }[placement.split('-')[0]] as string;\n\n Object.assign(this.elementRef.nativeElement.style, {\n left: arrowX != null ? `${arrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n [staticSide]: `-${this.elementRef.nativeElement.offsetWidth / 2}px`\n });\n }\n}\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ApplicationRef,\n booleanAttribute,\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n inject,\n Injector,\n Input,\n numberAttribute,\n StaticProvider,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n Middleware,\n offset,\n Placement,\n shift\n} from '@floating-ui/dom';\n\nimport type { OverlayArrowDirective } from './overlay-arrow.directive';\nimport { OverlayTriggerToken } from './overlay-trigger.token';\nimport type { OverlayDirective } from './overlay.directive';\n\n@Directive({\n selector: '[rdxOverlayTrigger]',\n standalone: true,\n exportAs: 'rdxOverlayTrigger',\n host: {\n '[attr.data-state]': 'state'\n }\n})\nexport class OverlayTriggerDirective {\n /**\n * Access the application ref\n */\n private readonly appRef = inject(ApplicationRef);\n\n /**\n * Access the component factory resolver\n */\n private readonly componentFactoryResolver = inject(ComponentFactoryResolver);\n\n /**\n * Access the injector\n */\n private readonly injector = inject(Injector);\n\n /**\n * Access the trigger element\n */\n private readonly trigger = inject(ElementRef<HTMLElement>);\n\n /**\n * Access the view container\n */\n private readonly viewContainer = inject(ViewContainerRef);\n\n /**\n * Define the overlay to display when the trigger is activated.\n */\n @Input({ alias: 'rdxOverlayTrigger', required: true }) templateRef!: TemplateRef<void>;\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n @Input({ alias: 'rdxOverlayDisabled', transform: booleanAttribute }) disabled = false;\n\n /**\n * Define the placement of the overlay relative to the trigger.\n * @default 'bottom'\n */\n @Input('rdxOverlayPlacement') placement: Placement = 'top';\n\n /**\n * Define the offset of the overlay relative to the trigger.\n * @default 4\n */\n @Input({ alias: 'rdxOverlayOffset', transform: numberAttribute }) offset = 4;\n\n /**\n * Define the delay before the overlay is displayed.\n * @default 0\n */\n @Input({ alias: 'rdxOverlayShowDelay', transform: numberAttribute }) showDelay = 0;\n\n /**\n * Define the delay before the overlay is hidden.\n * @default 0\n */\n @Input({ alias: 'rdxOverlayHideDelay', transform: numberAttribute }) hideDelay = 0;\n\n /**\n * Define whether the overlay should shift when the overlay is near the edge of the viewport.\n * @default true\n */\n @Input({ alias: 'rdxOverlayShift', transform: booleanAttribute }) shift = true;\n\n /**\n * Define whether the overlay should flip when there is not enough space for the overlay.\n * @default true\n */\n @Input({ alias: 'rdxOverlayFlip', transform: booleanAttribute }) flip = true;\n\n /**\n * Define the container in to which the overlay should be attached.\n * @default document.body\n */\n @Input('rdxOverlayContainer') container: HTMLElement = document.body;\n\n /**\n * Store the overlay content instance.\n */\n private overlay: OverlayDirective | null = null;\n\n /**\n * Store the overlay arrow instance.\n */\n private arrow: OverlayArrowDirective | null = null;\n\n /**\n * Store the view ref\n */\n private viewRef: EmbeddedViewRef<void> | null = null;\n\n /**\n * Store the show delay timeout\n */\n private showDelayTimeout: number | null = null;\n\n /**\n * Store the hide delay timeout\n */\n private hideDelayTimeout: number | null = null;\n\n /**\n * Store the dispose function\n */\n private dispose?: () => void;\n\n /**\n * Store additional providers to register on the overlay.\n */\n private readonly providers: StaticProvider[] = [];\n\n /**\n * Determine the state of the overlay.\n */\n private get isOpen(): boolean {\n return !!this.viewRef;\n }\n\n /**\n * Determine the state of the overlay.\n */\n protected get state(): 'closed' | 'opening' | 'open' | 'closing' {\n if (this.showDelayTimeout) {\n return 'opening';\n }\n\n if (this.hideDelayTimeout) {\n return 'closing';\n }\n\n return this.isOpen ? 'open' : 'closed';\n }\n\n /**\n * Create the overlay.\n */\n private createOverlay(): void {\n const domPortal = new DomPortalOutlet(\n this.container,\n this.componentFactoryResolver,\n this.appRef,\n this.injector\n );\n\n const templatePortal = new TemplatePortal(\n this.templateRef,\n this.viewContainer,\n undefined,\n Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: OverlayTriggerToken,\n useValue: this\n },\n ...this.providers\n ]\n })\n );\n\n this.viewRef = domPortal.attach(templatePortal);\n this.viewRef.detectChanges();\n\n this.updateOverlayPosition();\n this.showDelayTimeout = null;\n }\n\n /**\n * Update the overlay position.\n */\n private updateOverlayPosition(): void {\n if (!this.viewRef) {\n return;\n }\n\n const overlayElement = this.viewRef.rootNodes[0] as HTMLElement;\n\n const middleware: Middleware[] = [];\n\n if (this.offset) {\n middleware.push(offset(this.offset));\n }\n\n if (this.shift) {\n middleware.push(shift());\n }\n\n if (this.flip) {\n middleware.push(flip());\n }\n\n // if there is an arrow defined, we need to add the arrow middleware\n if (this.arrow) {\n middleware.push(arrow({ element: this.arrow.elementRef.nativeElement }));\n }\n\n this.dispose = autoUpdate(this.trigger.nativeElement, overlayElement, async () => {\n const position = await computePosition(this.trigger.nativeElement, overlayElement, {\n placement: this.placement,\n middleware\n });\n\n this.overlay?.setPosition(position.x, position.y);\n\n if (position.middlewareData.arrow) {\n this.arrow?.setPosition(\n this.placement,\n position.middlewareData.arrow.x,\n position.middlewareData.arrow.y\n );\n }\n });\n }\n\n /**\n * Destroy the overlay.\n */\n private destroyOverlay(): void {\n this.viewRef?.destroy();\n this.viewRef = null;\n\n this.dispose?.();\n this.hideDelayTimeout = null;\n }\n\n /**\n * Show the overlay.\n */\n show(): void {\n if (this.disabled || this.isOpen) {\n return;\n }\n\n if (this.hideDelayTimeout) {\n clearTimeout(this.hideDelayTimeout);\n this.hideDelayTimeout = null;\n }\n\n this.showDelayTimeout = window.setTimeout(() => this.createOverlay(), this.showDelay);\n }\n\n /**\n * Hide the overlay.\n */\n hide(): void {\n if (!this.isOpen) {\n return;\n }\n\n if (this.showDelayTimeout) {\n clearTimeout(this.showDelayTimeout);\n this.showDelayTimeout = null;\n }\n\n this.hideDelayTimeout = window.setTimeout(() => this.destroyOverlay(), this.hideDelay);\n }\n\n /**\n * Register the overlay.\n * @param overlay The overlay to register.\n * @internal\n */\n registerOverlay(overlay: OverlayDirective): void {\n this.overlay = overlay;\n }\n\n /**\n * Unregister the overlay.\n * @internal\n */\n unregisterOverlay(): void {\n this.overlay = null;\n }\n\n /**\n * Register the arrow.\n * @param arrow The arrow to register.\n * @internal\n */\n registerArrow(arrow: OverlayArrowDirective): void {\n this.arrow = arrow;\n }\n\n /**\n * Unregister the arrow.\n * @internal\n */\n unregisterArrow(): void {\n this.arrow = null;\n }\n\n /**\n * Register a provider on the overlay.\n * @param provider The provider to register.\n * @internal\n */\n registerProvider(provider: StaticProvider): void {\n this.providers.push(provider);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport type { OverlayDirective } from './overlay.directive';\n\nexport const OverlayToken = new InjectionToken<OverlayDirective>('OverlayToken');\n","import { Directive, ElementRef, inject, OnDestroy, OnInit } from '@angular/core';\n\nimport { injectOverlayTrigger } from './overlay-trigger.token';\nimport { OverlayToken } from './overlay.token';\n\n@Directive({\n selector: '[rdxOverlay]',\n standalone: true,\n providers: [{ provide: OverlayToken, useExisting: OverlayDirective }]\n})\nexport class OverlayDirective implements OnInit, OnDestroy {\n /**\n * Access the overlay element\n */\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /**\n * Access the overlay trigger\n */\n private readonly overlayTrigger = injectOverlayTrigger();\n\n /**\n * Register the overlay on init\n */\n ngOnInit(): void {\n this.overlayTrigger.registerOverlay(this);\n }\n\n /**\n * Unregister the overlay on destroy\n */\n ngOnDestroy(): void {\n this.overlayTrigger.unregisterOverlay();\n }\n\n /**\n * Set the position of the overlay\n * @param x The x position\n * @param y The y position\n * @internal\n */\n setPosition(x?: number, y?: number): void {\n Object.assign(this.elementRef.nativeElement.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-progress.mjs","sources":["../../../packages/primitives/progress/src/progress.token.ts","../../../packages/primitives/progress/src/progress-indicator.directive.ts","../../../packages/primitives/progress/src/progress.directive.ts","../../../packages/primitives/progress/radix-ng-primitives-progress.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { ProgressDirective } from './progress.directive';\n\nexport const ProgressToken = new InjectionToken<ProgressDirective>('ProgressDirective');\n\nexport function injectProgress(): ProgressDirective {\n return inject(ProgressToken);\n}\n","import { Directive } from '@angular/core';\nimport { injectProgress } from './progress.token';\n\n@Directive({\n selector: '[rdxProgressIndicator]',\n standalone: true,\n host: {\n '[attr.data-state]': 'progress.state',\n '[attr.data-value]': 'progress.value',\n '[attr.data-max]': 'progress.max'\n }\n})\nexport class ProgressIndicatorDirective {\n protected readonly progress = injectProgress();\n}\n","import { Directive, Input, numberAttribute } from '@angular/core';\nimport { ProgressToken } from './progress.token';\n\n@Directive({\n selector: '[rdxProgress]',\n standalone: true,\n providers: [{ provide: ProgressToken, useExisting: ProgressDirective }],\n host: {\n role: 'progressbar',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuenow]': 'value',\n '[attr.aria-valuetext]': 'valueLabel(value, max)',\n '[attr.data-state]': 'state',\n '[attr.data-value]': 'value',\n '[attr.data-max]': 'max'\n }\n})\nexport class ProgressDirective {\n /**\n * Define the progress value.\n */\n @Input({ alias: 'rdxProgressValue', transform: numberAttribute }) value = 0;\n\n /**\n * Define the progress max value.\n * @default 100\n */\n @Input({ alias: 'rdxProgressMax', transform: numberAttribute }) max = 100;\n\n /**\n * Define a function that returns the progress value label.\n */\n @Input('rdxProgressValueLabel') valueLabel: (value: number, max: number) => string = (\n value,\n max\n ) => `${Math.round((value / max) * 100)}%`;\n\n /**\n * Get the state of the progress bar.\n * @returns 'indeterminate' | 'loading' | 'complete'\n * @internal\n */\n get state(): 'indeterminate' | 'loading' | 'complete' {\n return this.value == null\n ? 'indeterminate'\n : this.value === this.max\n ? 'complete'\n : 'loading';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-progress.mjs","sources":["../../../packages/primitives/progress/src/progress.token.ts","../../../packages/primitives/progress/src/progress-indicator.directive.ts","../../../packages/primitives/progress/src/progress.directive.ts","../../../packages/primitives/progress/radix-ng-primitives-progress.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { ProgressDirective } from './progress.directive';\n\nexport const ProgressToken = new InjectionToken<ProgressDirective>('ProgressDirective');\n\nexport function injectProgress(): ProgressDirective {\n return inject(ProgressToken);\n}\n","import { Directive } from '@angular/core';\n\nimport { injectProgress } from './progress.token';\n\n@Directive({\n selector: '[rdxProgressIndicator]',\n standalone: true,\n host: {\n '[attr.data-state]': 'progress.state',\n '[attr.data-value]': 'progress.value',\n '[attr.data-max]': 'progress.max'\n }\n})\nexport class ProgressIndicatorDirective {\n protected readonly progress = injectProgress();\n}\n","import { Directive, Input, numberAttribute } from '@angular/core';\n\nimport { ProgressToken } from './progress.token';\n\n@Directive({\n selector: '[rdxProgress]',\n standalone: true,\n providers: [{ provide: ProgressToken, useExisting: ProgressDirective }],\n host: {\n role: 'progressbar',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuenow]': 'value',\n '[attr.aria-valuetext]': 'valueLabel(value, max)',\n '[attr.data-state]': 'state',\n '[attr.data-value]': 'value',\n '[attr.data-max]': 'max'\n }\n})\nexport class ProgressDirective {\n /**\n * Define the progress value.\n */\n @Input({ alias: 'rdxProgressValue', transform: numberAttribute }) value = 0;\n\n /**\n * Define the progress max value.\n * @default 100\n */\n @Input({ alias: 'rdxProgressMax', transform: numberAttribute }) max = 100;\n\n /**\n * Define a function that returns the progress value label.\n */\n @Input('rdxProgressValueLabel') valueLabel: (value: number, max: number) => string = (\n value,\n max\n ) => `${Math.round((value / max) * 100)}%`;\n\n /**\n * Get the state of the progress bar.\n * @returns 'indeterminate' | 'loading' | 'complete'\n * @internal\n */\n get state(): 'indeterminate' | 'loading' | 'complete' {\n return this.value == null\n ? 'indeterminate'\n : this.value === this.max\n ? 'complete'\n : 'loading';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}