@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.
- package/avatar/README.md +1 -0
- package/avatar/index.d.ts +4 -0
- package/avatar/src/avatar-fallback.directive.d.ts +34 -0
- package/avatar/src/avatar-image.directive.d.ts +17 -0
- package/avatar/src/avatar.config.d.ts +12 -0
- package/avatar/src/avatar.directive.d.ts +22 -0
- package/avatar/src/avatar.token.d.ts +4 -0
- package/checkbox/index.d.ts +1 -1
- package/esm2022/avatar/index.mjs +5 -0
- package/esm2022/avatar/radix-ng-primitives-avatar.mjs +5 -0
- package/esm2022/avatar/src/avatar-fallback.directive.mjs +61 -0
- package/esm2022/avatar/src/avatar-image.directive.mjs +50 -0
- package/esm2022/avatar/src/avatar.config.mjs +17 -0
- package/esm2022/avatar/src/avatar.directive.mjs +38 -0
- package/esm2022/avatar/src/avatar.token.mjs +6 -0
- package/esm2022/checkbox/index.mjs +2 -2
- package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +1 -1
- package/esm2022/checkbox/src/checkbox.directive.mjs +2 -2
- package/esm2022/checkbox/src/checkbox.token.mjs +2 -2
- package/esm2022/overlay/index.mjs +5 -0
- package/esm2022/overlay/radix-ng-primitives-overlay.mjs +5 -0
- package/esm2022/overlay/src/overlay-arrow.directive.mjs +59 -0
- package/esm2022/overlay/src/overlay-arrow.token.mjs +3 -0
- package/esm2022/overlay/src/overlay-trigger.directive.mjs +279 -0
- package/esm2022/overlay/src/overlay-trigger.token.mjs +9 -0
- package/esm2022/overlay/src/overlay.directive.mjs +51 -0
- package/esm2022/overlay/src/overlay.token.mjs +3 -0
- package/esm2022/progress/src/progress-indicator.directive.mjs +1 -1
- package/esm2022/progress/src/progress.directive.mjs +1 -1
- package/esm2022/progress/src/progress.token.mjs +2 -2
- package/esm2022/radio/index.mjs +6 -0
- package/esm2022/radio/radix-ng-primitives-radio.mjs +5 -0
- package/esm2022/radio/src/radio-group.directive.mjs +108 -0
- package/esm2022/radio/src/radio-group.token.mjs +6 -0
- package/esm2022/radio/src/radio-indicator.directive.mjs +30 -0
- package/esm2022/radio/src/radio-item.directive.mjs +79 -0
- package/esm2022/radio/src/radio-item.token.mjs +6 -0
- package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +2 -2
- package/esm2022/roving-focus/src/roving-focus-group.token.mjs +2 -2
- package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +2 -2
- package/esm2022/roving-focus/src/roving-focus-item.token.mjs +2 -2
- package/esm2022/separator/src/separator.directive.mjs +2 -2
- package/esm2022/switch/index.mjs +2 -2
- package/esm2022/switch/src/switch-thumb.directive.mjs +1 -1
- package/esm2022/switch/src/switch.directive.mjs +2 -2
- package/esm2022/switch/src/switch.token.mjs +2 -2
- package/esm2022/tooltip/index.mjs +5 -0
- package/esm2022/tooltip/radix-ng-primitives-tooltip.mjs +5 -0
- package/esm2022/tooltip/src/tooltip-arrow.directive.mjs +17 -0
- package/esm2022/tooltip/src/tooltip-trigger.directive.mjs +148 -0
- package/esm2022/tooltip/src/tooltip-trigger.token.mjs +6 -0
- package/esm2022/tooltip/src/tooltip.config.mjs +31 -0
- package/esm2022/tooltip/src/tooltip.directive.mjs +46 -0
- package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +1 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +167 -0
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-checkbox.mjs +21 -21
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-overlay.mjs +399 -0
- package/fesm2022/radix-ng-primitives-overlay.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +221 -0
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +23 -23
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +242 -0
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/overlay/README.md +1 -0
- package/overlay/index.d.ts +4 -0
- package/overlay/src/overlay-arrow.directive.d.ts +29 -0
- package/overlay/src/overlay-arrow.token.d.ts +3 -0
- package/overlay/src/overlay-trigger.directive.d.ts +163 -0
- package/overlay/src/overlay-trigger.token.d.ts +7 -0
- package/overlay/src/overlay.directive.d.ts +29 -0
- package/overlay/src/overlay.token.d.ts +3 -0
- package/package.json +29 -4
- package/radio/README.md +1 -0
- package/radio/index.d.ts +5 -0
- package/radio/src/radio-group.directive.d.ts +65 -0
- package/radio/src/radio-group.token.d.ts +4 -0
- package/radio/src/radio-indicator.directive.d.ts +13 -0
- package/radio/src/radio-item.directive.d.ts +36 -0
- package/radio/src/radio-item.token.d.ts +4 -0
- package/switch/index.d.ts +1 -1
- package/tooltip/README.md +1 -0
- package/tooltip/index.d.ts +4 -0
- package/tooltip/src/tooltip-arrow.directive.d.ts +6 -0
- package/tooltip/src/tooltip-trigger.directive.d.ts +79 -0
- package/tooltip/src/tooltip-trigger.token.d.ts +4 -0
- package/tooltip/src/tooltip.config.d.ts +46 -0
- 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 {
|
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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"}
|