@radix-ng/primitives 0.35.0 → 0.37.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 (50) hide show
  1. package/avatar/index.d.ts +1 -1
  2. package/avatar/src/avatar-context.token.d.ts +7 -0
  3. package/avatar/src/avatar-fallback.directive.d.ts +3 -9
  4. package/avatar/src/avatar-image.directive.d.ts +11 -11
  5. package/avatar/src/avatar-root.directive.d.ts +3 -6
  6. package/avatar/src/types.d.ts +2 -0
  7. package/checkbox/index.d.ts +1 -1
  8. package/checkbox/src/checkbox-button.directive.d.ts +1 -1
  9. package/checkbox/src/checkbox-indicator.directive.d.ts +1 -1
  10. package/checkbox/src/checkbox-input.directive.d.ts +1 -1
  11. package/checkbox/src/checkbox.directive.d.ts +3 -3
  12. package/checkbox/src/checkbox.token.d.ts +3 -3
  13. package/core/index.d.ts +2 -0
  14. package/core/src/clamp.d.ts +38 -0
  15. package/cropper/README.md +1 -0
  16. package/cropper/index.d.ts +15 -0
  17. package/cropper/src/cropper-context.token.d.ts +12 -0
  18. package/cropper/src/cropper-crop-area.directive.d.ts +6 -0
  19. package/cropper/src/cropper-description.directive.d.ts +6 -0
  20. package/cropper/src/cropper-image.component.d.ts +10 -0
  21. package/cropper/src/cropper-root.directive.d.ts +91 -0
  22. package/date-field/index.d.ts +9 -0
  23. package/fesm2022/radix-ng-primitives-avatar.mjs +82 -86
  24. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  25. package/fesm2022/radix-ng-primitives-checkbox.mjs +13 -16
  26. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  27. package/fesm2022/radix-ng-primitives-core.mjs +84 -1
  28. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  29. package/fesm2022/radix-ng-primitives-cropper.mjs +680 -0
  30. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -0
  31. package/fesm2022/radix-ng-primitives-date-field.mjs +16 -2
  32. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  33. package/fesm2022/radix-ng-primitives-number-field.mjs +502 -0
  34. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -0
  35. package/fesm2022/radix-ng-primitives-stepper.mjs +1 -14
  36. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  37. package/hover-card/src/hover-card-root.directive.d.ts +4 -4
  38. package/number-field/README.md +1 -0
  39. package/number-field/index.d.ts +17 -0
  40. package/number-field/src/number-field-context.token.d.ts +24 -0
  41. package/number-field/src/number-field-decrement.directive.d.ts +23 -0
  42. package/number-field/src/number-field-increment.directive.d.ts +23 -0
  43. package/number-field/src/number-field-input.directive.d.ts +22 -0
  44. package/number-field/src/number-field-root.directive.d.ts +86 -0
  45. package/number-field/src/types.d.ts +1 -0
  46. package/number-field/src/utils.d.ts +18 -0
  47. package/package.json +9 -1
  48. package/popover/src/popover-root.directive.d.ts +4 -4
  49. package/tooltip/src/tooltip-root.directive.d.ts +4 -4
  50. /package/{stepper/src/utils → core/src}/getActiveElement.d.ts +0 -0
@@ -1,29 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, Injectable, Directive, InjectionToken, inject, input, computed, effect, ElementRef, output, NgModule } from '@angular/core';
2
+ import { InjectionToken, inject, input, signal, Directive, PLATFORM_ID, output, NgModule } from '@angular/core';
3
+ import { watch, provideToken } from '@radix-ng/primitives/core';
4
+ import { isPlatformBrowser } from '@angular/common';
3
5
 
4
- class RdxAvatarRootContext {
5
- constructor() {
6
- this.imageLoadingStatus = signal('loading');
7
- }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarRootContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarRootContext }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarRootContext, decorators: [{
12
- type: Injectable
13
- }] });
14
- class RdxAvatarRootDirective {
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
16
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.4", type: RdxAvatarRootDirective, isStandalone: true, selector: "span[rdxAvatarRoot]", providers: [RdxAvatarRootContext], exportAs: ["rdxAvatarRoot"], ngImport: i0 }); }
6
+ const AVATAR_ROOT_CONTEXT = new InjectionToken('AVATAR_ROOT_CONTEXT');
7
+ function injectAvatarRootContext() {
8
+ return inject(AVATAR_ROOT_CONTEXT);
17
9
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarRootDirective, decorators: [{
19
- type: Directive,
20
- args: [{
21
- selector: 'span[rdxAvatarRoot]',
22
- exportAs: 'rdxAvatarRoot',
23
- standalone: true,
24
- providers: [RdxAvatarRootContext]
25
- }]
26
- }] });
27
10
 
28
11
  const defaultAvatarConfig = {
29
12
  delayMs: 0
@@ -46,8 +29,8 @@ function injectAvatarConfig() {
46
29
  */
47
30
  class RdxAvatarFallbackDirective {
48
31
  constructor() {
49
- this.avatarRoot = inject(RdxAvatarRootContext);
50
32
  this.config = injectAvatarConfig();
33
+ this.rootContext = injectAvatarRootContext();
51
34
  /**
52
35
  * Useful for delaying rendering so it only appears for those with slower connections.
53
36
  *
@@ -55,51 +38,32 @@ class RdxAvatarFallbackDirective {
55
38
  * @defaultValue 0
56
39
  */
57
40
  this.delayMs = input(this.config.delayMs);
58
- this.shouldRender = computed(() => this.canRender() && this.avatarRoot.imageLoadingStatus() !== 'loaded');
59
41
  this.canRender = signal(false);
60
- this.timeoutId = null;
61
- effect(() => {
62
- const status = this.avatarRoot.imageLoadingStatus();
63
- if (status === 'loading') {
64
- this.startDelayTimer();
65
- }
66
- else {
67
- this.clearDelayTimer();
68
- this.canRender.set(true);
42
+ watch([this.rootContext.imageLoadingStatus], ([value]) => {
43
+ if (value === 'loading') {
44
+ this.canRender.set(false);
45
+ if (this.delayMs()) {
46
+ this.timeout = setTimeout(() => {
47
+ this.canRender.set(true);
48
+ clearTimeout(this.timeout);
49
+ }, this.delayMs());
50
+ }
51
+ else {
52
+ this.canRender.set(true);
53
+ }
69
54
  }
70
55
  });
71
56
  }
72
- startDelayTimer() {
73
- this.clearDelayTimer();
74
- if (this.delayMs() > 0) {
75
- this.timeoutId = setTimeout(() => {
76
- this.canRender.set(true);
77
- }, this.delayMs());
78
- }
79
- else {
80
- this.canRender.set(true);
81
- }
82
- }
83
- clearDelayTimer() {
84
- if (this.timeoutId !== null) {
85
- clearTimeout(this.timeoutId);
86
- this.timeoutId = null;
87
- }
88
- }
89
- ngOnDestroy() {
90
- this.clearDelayTimer();
91
- }
92
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarFallbackDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
93
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxAvatarFallbackDirective, isStandalone: true, selector: "span[rdxAvatarFallback]", inputs: { delayMs: { classPropertyName: "delayMs", publicName: "delayMs", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.display": "shouldRender() ? null : \"none\" " } }, exportAs: ["rdxAvatarFallback"], ngImport: i0 }); }
58
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxAvatarFallbackDirective, isStandalone: true, selector: "span[rdxAvatarFallback]", inputs: { delayMs: { classPropertyName: "delayMs", publicName: "delayMs", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.display": "canRender() && rootContext.imageLoadingStatus() !== \"loaded\" ? null : \"none\" " } }, exportAs: ["rdxAvatarFallback"], ngImport: i0 }); }
94
59
  }
95
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarFallbackDirective, decorators: [{
96
61
  type: Directive,
97
62
  args: [{
98
63
  selector: 'span[rdxAvatarFallback]',
99
- standalone: true,
100
64
  exportAs: 'rdxAvatarFallback',
101
65
  host: {
102
- '[style.display]': 'shouldRender() ? null : "none" '
66
+ '[style.display]': 'canRender() && rootContext.imageLoadingStatus() !== "loaded" ? null : "none" '
103
67
  }
104
68
  }]
105
69
  }], ctorParameters: () => [] });
@@ -109,12 +73,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
109
73
  */
110
74
  class RdxAvatarImageDirective {
111
75
  constructor() {
112
- this.avatarRoot = inject(RdxAvatarRootContext);
113
- this.elementRef = inject((ElementRef));
76
+ this.platformId = inject(PLATFORM_ID);
77
+ this.rootContext = injectAvatarRootContext();
114
78
  /**
115
79
  * @group Props
116
80
  */
117
81
  this.src = input();
82
+ this.referrerPolicy = input();
118
83
  /**
119
84
  * A callback providing information about the loading status of the image.
120
85
  * This is useful in case you want to control more precisely what to render as the image is loading.
@@ -122,48 +87,79 @@ class RdxAvatarImageDirective {
122
87
  * @group Emits
123
88
  */
124
89
  this.onLoadingStatusChange = output();
125
- this.imageLoadingStatus = computed(() => this.avatarRoot.imageLoadingStatus());
126
- }
127
- ngOnInit() {
128
- this.nativeElement.src = this.src();
129
- if (!this.nativeElement.src) {
130
- this.setImageStatus('error');
131
- }
132
- else if (this.nativeElement.complete) {
133
- this.setImageStatus('loaded');
90
+ this.isMounted = signal(false);
91
+ this.loadingStatus = signal('idle');
92
+ const updateStatus = (status) => () => {
93
+ if (this.isMounted()) {
94
+ this.loadingStatus.set(status);
95
+ }
96
+ };
97
+ if (isPlatformBrowser(this.platformId)) {
98
+ watch([this.src, this.referrerPolicy], ([src, referrer]) => {
99
+ if (this.isMounted()) {
100
+ if (!src) {
101
+ this.loadingStatus.set('error');
102
+ }
103
+ else {
104
+ const image = new window.Image();
105
+ this.loadingStatus.set('loading');
106
+ image.onload = updateStatus('loaded');
107
+ image.onerror = updateStatus('error');
108
+ image.src = src;
109
+ if (referrer) {
110
+ image.referrerPolicy = referrer;
111
+ }
112
+ }
113
+ }
114
+ });
115
+ watch([this.loadingStatus], ([value]) => {
116
+ this.onLoadingStatusChange.emit(value);
117
+ if (value !== 'idle') {
118
+ this.rootContext.imageLoadingStatus.set(value);
119
+ }
120
+ });
134
121
  }
135
122
  else {
136
- this.setImageStatus('loading');
123
+ this.loadingStatus.set('idle');
137
124
  }
138
125
  }
139
- onLoad() {
140
- this.setImageStatus('loaded');
141
- }
142
- onError() {
143
- this.setImageStatus('error');
144
- }
145
- setImageStatus(status) {
146
- this.avatarRoot.imageLoadingStatus.set(status);
147
- this.onLoadingStatusChange.emit(status);
126
+ ngOnInit() {
127
+ this.isMounted.set(true);
148
128
  }
149
- get nativeElement() {
150
- return this.elementRef.nativeElement;
129
+ ngOnDestroy() {
130
+ this.isMounted.set(false);
151
131
  }
152
132
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
153
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxAvatarImageDirective, isStandalone: true, selector: "img[rdxAvatarImage]", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onLoadingStatusChange: "onLoadingStatusChange" }, host: { listeners: { "load": "onLoad()", "error": "onError()" }, properties: { "style.display": "(imageLoadingStatus() === \"loaded\")? null : \"none\"" } }, exportAs: ["rdxAvatarImage"], ngImport: i0 }); }
133
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxAvatarImageDirective, isStandalone: true, selector: "img[rdxAvatarImage]", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, referrerPolicy: { classPropertyName: "referrerPolicy", publicName: "referrerPolicy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onLoadingStatusChange: "onLoadingStatusChange" }, host: { attributes: { "role": "img" }, properties: { "attr.src": "src()", "attr.referrer-policy": "referrerPolicy()", "style.display": "(rootContext.imageLoadingStatus() === \"loaded\") ? null : \"none\"" } }, exportAs: ["rdxAvatarImage"], ngImport: i0 }); }
154
134
  }
155
135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarImageDirective, decorators: [{
156
136
  type: Directive,
157
137
  args: [{
158
138
  selector: 'img[rdxAvatarImage]',
159
- standalone: true,
160
139
  exportAs: 'rdxAvatarImage',
161
140
  host: {
162
- '(load)': 'onLoad()',
163
- '(error)': 'onError()',
164
- '[style.display]': '(imageLoadingStatus() === "loaded")? null : "none"'
141
+ role: 'img',
142
+ '[attr.src]': 'src()',
143
+ '[attr.referrer-policy]': 'referrerPolicy()',
144
+ '[style.display]': '(rootContext.imageLoadingStatus() === "loaded") ? null : "none"'
165
145
  }
166
146
  }]
147
+ }], ctorParameters: () => [] });
148
+
149
+ class RdxAvatarRootDirective {
150
+ constructor() {
151
+ this.imageLoadingStatus = signal('loading');
152
+ }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
154
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.4", type: RdxAvatarRootDirective, isStandalone: true, selector: "span[rdxAvatarRoot]", providers: [provideToken(AVATAR_ROOT_CONTEXT, RdxAvatarRootDirective)], exportAs: ["rdxAvatarRoot"], ngImport: i0 }); }
155
+ }
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxAvatarRootDirective, decorators: [{
157
+ type: Directive,
158
+ args: [{
159
+ selector: 'span[rdxAvatarRoot]',
160
+ exportAs: 'rdxAvatarRoot',
161
+ providers: [provideToken(AVATAR_ROOT_CONTEXT, RdxAvatarRootDirective)]
162
+ }]
167
163
  }] });
168
164
 
169
165
  const _imports = [
@@ -192,5 +188,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
192
188
  * Generated bundle index. Do not edit.
193
189
  */
194
190
 
195
- export { RdxAvatarConfigToken, RdxAvatarFallbackDirective, RdxAvatarImageDirective, RdxAvatarRootContext, RdxAvatarRootDirective, RdxCheckboxModule, defaultAvatarConfig, injectAvatarConfig, provideRdxAvatarConfig };
191
+ export { RdxAvatarConfigToken, RdxAvatarFallbackDirective, RdxAvatarImageDirective, RdxAvatarRootDirective, RdxCheckboxModule, defaultAvatarConfig, injectAvatarConfig, provideRdxAvatarConfig };
196
192
  //# sourceMappingURL=radix-ng-primitives-avatar.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-avatar.mjs","sources":["../../../packages/primitives/avatar/src/avatar-root.directive.ts","../../../packages/primitives/avatar/src/avatar.config.ts","../../../packages/primitives/avatar/src/avatar-fallback.directive.ts","../../../packages/primitives/avatar/src/avatar-image.directive.ts","../../../packages/primitives/avatar/index.ts","../../../packages/primitives/avatar/radix-ng-primitives-avatar.ts"],"sourcesContent":["import { Directive, Injectable, signal } from '@angular/core';\n\nexport type RdxImageLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\n@Injectable()\nexport class RdxAvatarRootContext {\n readonly imageLoadingStatus = signal<RdxImageLoadingStatus>('loading');\n}\n\n@Directive({\n selector: 'span[rdxAvatarRoot]',\n exportAs: 'rdxAvatarRoot',\n standalone: true,\n providers: [RdxAvatarRootContext]\n})\nexport class RdxAvatarRootDirective {}\n","import { inject, InjectionToken, Provider } from '@angular/core';\n\nexport interface RdxAvatarConfig {\n /**\n * Define a delay before the fallback is shown.\n * This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n delayMs: number;\n}\n\nexport const defaultAvatarConfig: RdxAvatarConfig = {\n delayMs: 0\n};\n\nexport const RdxAvatarConfigToken = new InjectionToken<RdxAvatarConfig>('RdxAvatarConfigToken');\n\nexport function provideRdxAvatarConfig(config: Partial<RdxAvatarConfig>): Provider[] {\n return [\n {\n provide: RdxAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config }\n }\n ];\n}\n\nexport function injectAvatarConfig(): RdxAvatarConfig {\n return inject(RdxAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\n}\n","import { computed, Directive, effect, inject, input, OnDestroy, signal } from '@angular/core';\nimport { RdxAvatarRootContext } from './avatar-root.directive';\nimport { injectAvatarConfig } from './avatar.config';\n\n/**\n * @group Components\n */\n@Directive({\n selector: 'span[rdxAvatarFallback]',\n standalone: true,\n exportAs: 'rdxAvatarFallback',\n host: {\n '[style.display]': 'shouldRender() ? null : \"none\" '\n }\n})\nexport class RdxAvatarFallbackDirective implements OnDestroy {\n protected readonly avatarRoot = inject(RdxAvatarRootContext);\n\n private readonly config = injectAvatarConfig();\n\n /**\n * Useful for delaying rendering so it only appears for those with slower connections.\n *\n * @group Props\n * @defaultValue 0\n */\n readonly delayMs = input<number>(this.config.delayMs);\n\n readonly shouldRender = computed(() => this.canRender() && this.avatarRoot.imageLoadingStatus() !== 'loaded');\n\n protected readonly canRender = signal(false);\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n effect(() => {\n const status = this.avatarRoot.imageLoadingStatus();\n if (status === 'loading') {\n this.startDelayTimer();\n } else {\n this.clearDelayTimer();\n this.canRender.set(true);\n }\n });\n }\n\n private startDelayTimer() {\n this.clearDelayTimer();\n if (this.delayMs() > 0) {\n this.timeoutId = setTimeout(() => {\n this.canRender.set(true);\n }, this.delayMs());\n } else {\n this.canRender.set(true);\n }\n }\n\n private clearDelayTimer() {\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n ngOnDestroy() {\n this.clearDelayTimer();\n }\n}\n","import { computed, Directive, ElementRef, inject, input, OnInit, output } from '@angular/core';\nimport { RdxAvatarRootContext, RdxImageLoadingStatus } from './avatar-root.directive';\n\n/**\n * @group Components\n */\n@Directive({\n selector: 'img[rdxAvatarImage]',\n standalone: true,\n exportAs: 'rdxAvatarImage',\n host: {\n '(load)': 'onLoad()',\n '(error)': 'onError()',\n '[style.display]': '(imageLoadingStatus() === \"loaded\")? null : \"none\"'\n }\n})\nexport class RdxAvatarImageDirective implements OnInit {\n private readonly avatarRoot = inject(RdxAvatarRootContext);\n private readonly elementRef = inject(ElementRef<HTMLImageElement>);\n\n /**\n * @group Props\n */\n readonly src = input<string>();\n\n /**\n * A callback providing information about the loading status of the image.\n * This is useful in case you want to control more precisely what to render as the image is loading.\n *\n * @group Emits\n */\n readonly onLoadingStatusChange = output<RdxImageLoadingStatus>();\n\n protected readonly imageLoadingStatus = computed(() => this.avatarRoot.imageLoadingStatus());\n\n ngOnInit(): void {\n this.nativeElement.src = this.src();\n\n if (!this.nativeElement.src) {\n this.setImageStatus('error');\n } else if (this.nativeElement.complete) {\n this.setImageStatus('loaded');\n } else {\n this.setImageStatus('loading');\n }\n }\n\n onLoad() {\n this.setImageStatus('loaded');\n }\n\n onError() {\n this.setImageStatus('error');\n }\n\n private setImageStatus(status: RdxImageLoadingStatus) {\n this.avatarRoot.imageLoadingStatus.set(status);\n this.onLoadingStatusChange.emit(status);\n }\n\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxAvatarFallbackDirective } from './src/avatar-fallback.directive';\nimport { RdxAvatarImageDirective } from './src/avatar-image.directive';\nimport { RdxAvatarRootDirective } from './src/avatar-root.directive';\n\nexport * from './src/avatar-fallback.directive';\nexport * from './src/avatar-image.directive';\nexport * from './src/avatar-root.directive';\nexport type { RdxImageLoadingStatus } from './src/avatar-root.directive';\nexport * from './src/avatar.config';\n\nconst _imports = [\n RdxAvatarRootDirective,\n RdxAvatarFallbackDirective,\n RdxAvatarImageDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxCheckboxModule {}\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-avatar.mjs","sources":["../../../packages/primitives/avatar/src/avatar-context.token.ts","../../../packages/primitives/avatar/src/avatar.config.ts","../../../packages/primitives/avatar/src/avatar-fallback.directive.ts","../../../packages/primitives/avatar/src/avatar-image.directive.ts","../../../packages/primitives/avatar/src/avatar-root.directive.ts","../../../packages/primitives/avatar/index.ts","../../../packages/primitives/avatar/radix-ng-primitives-avatar.ts"],"sourcesContent":["import { inject, InjectionToken, WritableSignal } from '@angular/core';\nimport { RdxImageLoadingStatus } from './types';\n\nexport interface AvatarContextToken {\n imageLoadingStatus: WritableSignal<RdxImageLoadingStatus>;\n}\n\nexport const AVATAR_ROOT_CONTEXT = new InjectionToken<AvatarContextToken>('AVATAR_ROOT_CONTEXT');\n\nexport function injectAvatarRootContext(): AvatarContextToken {\n return inject(AVATAR_ROOT_CONTEXT);\n}\n","import { inject, InjectionToken, Provider } from '@angular/core';\n\nexport interface RdxAvatarConfig {\n /**\n * Define a delay before the fallback is shown.\n * This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n delayMs: number;\n}\n\nexport const defaultAvatarConfig: RdxAvatarConfig = {\n delayMs: 0\n};\n\nexport const RdxAvatarConfigToken = new InjectionToken<RdxAvatarConfig>('RdxAvatarConfigToken');\n\nexport function provideRdxAvatarConfig(config: Partial<RdxAvatarConfig>): Provider[] {\n return [\n {\n provide: RdxAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config }\n }\n ];\n}\n\nexport function injectAvatarConfig(): RdxAvatarConfig {\n return inject(RdxAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\n}\n","import { Directive, input, signal } from '@angular/core';\nimport { watch } from '@radix-ng/primitives/core';\nimport { injectAvatarRootContext } from './avatar-context.token';\nimport { injectAvatarConfig } from './avatar.config';\n\n/**\n * @group Components\n */\n@Directive({\n selector: 'span[rdxAvatarFallback]',\n exportAs: 'rdxAvatarFallback',\n host: {\n '[style.display]': 'canRender() && rootContext.imageLoadingStatus() !== \"loaded\" ? null : \"none\" '\n }\n})\nexport class RdxAvatarFallbackDirective {\n private readonly config = injectAvatarConfig();\n\n protected readonly rootContext = injectAvatarRootContext();\n\n /**\n * Useful for delaying rendering so it only appears for those with slower connections.\n *\n * @group Props\n * @defaultValue 0\n */\n readonly delayMs = input<number>(this.config.delayMs);\n\n protected readonly canRender = signal(false);\n\n private timeout: ReturnType<typeof setTimeout> | undefined;\n\n constructor() {\n watch([this.rootContext.imageLoadingStatus], ([value]) => {\n if (value === 'loading') {\n this.canRender.set(false);\n if (this.delayMs()) {\n this.timeout = setTimeout(() => {\n this.canRender.set(true);\n clearTimeout(this.timeout);\n }, this.delayMs());\n } else {\n this.canRender.set(true);\n }\n }\n });\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, inject, input, OnDestroy, OnInit, output, PLATFORM_ID, signal } from '@angular/core';\nimport { watch } from '@radix-ng/primitives/core';\nimport { injectAvatarRootContext } from './avatar-context.token';\nimport { HTMLAttributeReferrerPolicy, RdxImageLoadingStatus } from './types';\n\n/**\n * @group Components\n */\n@Directive({\n selector: 'img[rdxAvatarImage]',\n exportAs: 'rdxAvatarImage',\n host: {\n role: 'img',\n '[attr.src]': 'src()',\n '[attr.referrer-policy]': 'referrerPolicy()',\n '[style.display]': '(rootContext.imageLoadingStatus() === \"loaded\") ? null : \"none\"'\n }\n})\nexport class RdxAvatarImageDirective implements OnInit, OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n\n protected readonly rootContext = injectAvatarRootContext();\n\n /**\n * @group Props\n */\n readonly src = input<string>();\n\n readonly referrerPolicy = input<HTMLAttributeReferrerPolicy>();\n\n /**\n * A callback providing information about the loading status of the image.\n * This is useful in case you want to control more precisely what to render as the image is loading.\n *\n * @group Emits\n */\n readonly onLoadingStatusChange = output<RdxImageLoadingStatus>();\n\n private readonly isMounted = signal<boolean>(false);\n\n private readonly loadingStatus = signal<RdxImageLoadingStatus>('idle');\n\n constructor() {\n const updateStatus = (status: RdxImageLoadingStatus) => () => {\n if (this.isMounted()) {\n this.loadingStatus.set(status);\n }\n };\n\n if (isPlatformBrowser(this.platformId)) {\n watch([this.src, this.referrerPolicy], ([src, referrer]) => {\n if (this.isMounted()) {\n if (!src) {\n this.loadingStatus.set('error');\n } else {\n const image = new window.Image();\n this.loadingStatus.set('loading');\n image.onload = updateStatus('loaded');\n image.onerror = updateStatus('error');\n image.src = src;\n if (referrer) {\n image.referrerPolicy = referrer;\n }\n }\n }\n });\n\n watch([this.loadingStatus], ([value]) => {\n this.onLoadingStatusChange.emit(value);\n if (value !== 'idle') {\n this.rootContext.imageLoadingStatus.set(value);\n }\n });\n } else {\n this.loadingStatus.set('idle');\n }\n }\n\n ngOnInit() {\n this.isMounted.set(true);\n }\n\n ngOnDestroy() {\n this.isMounted.set(false);\n }\n}\n","import { Directive, signal } from '@angular/core';\nimport { provideToken } from '@radix-ng/primitives/core';\nimport { AVATAR_ROOT_CONTEXT, AvatarContextToken } from './avatar-context.token';\nimport { RdxImageLoadingStatus } from './types';\n\n@Directive({\n selector: 'span[rdxAvatarRoot]',\n exportAs: 'rdxAvatarRoot',\n providers: [provideToken(AVATAR_ROOT_CONTEXT, RdxAvatarRootDirective)]\n})\nexport class RdxAvatarRootDirective implements AvatarContextToken {\n readonly imageLoadingStatus = signal<RdxImageLoadingStatus>('loading');\n}\n","import { NgModule } from '@angular/core';\nimport { RdxAvatarFallbackDirective } from './src/avatar-fallback.directive';\nimport { RdxAvatarImageDirective } from './src/avatar-image.directive';\nimport { RdxAvatarRootDirective } from './src/avatar-root.directive';\n\nexport * from './src/avatar-fallback.directive';\nexport * from './src/avatar-image.directive';\nexport * from './src/avatar-root.directive';\nexport * from './src/avatar.config';\nexport type { RdxImageLoadingStatus } from './src/types';\n\nconst _imports = [\n RdxAvatarRootDirective,\n RdxAvatarFallbackDirective,\n RdxAvatarImageDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, input, computed, Directive, EventEmitter, booleanAttribute, Output, Input, NgModule } from '@angular/core';
3
3
  import * as i1 from '@radix-ng/primitives/visually-hidden';
4
4
  import { RdxVisuallyHiddenInputDirective } from '@radix-ng/primitives/visually-hidden';
5
- import { provideValueAccessor } from '@radix-ng/primitives/core';
5
+ import { provideToken, provideValueAccessor } from '@radix-ng/primitives/core';
6
6
 
7
7
  const RdxCheckboxToken = new InjectionToken('RdxCheckboxToken');
8
8
  function injectCheckbox() {
@@ -21,7 +21,6 @@ class RdxCheckboxButtonDirective {
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxCheckboxButtonDirective, decorators: [{
22
22
  type: Directive,
23
23
  args: [{
24
- standalone: true,
25
24
  selector: 'button[rdxCheckboxButton]',
26
25
  host: {
27
26
  type: 'button',
@@ -50,7 +49,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
50
49
  type: Directive,
51
50
  args: [{
52
51
  selector: '[rdxCheckboxIndicator]',
53
- standalone: true,
54
52
  host: {
55
53
  '[style.pointer-events]': '"none"',
56
54
  '[attr.aria-checked]': 'checkbox.indeterminate ? "mixed" : checkbox.checked',
@@ -79,7 +77,6 @@ class RdxCheckboxInputDirective {
79
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxCheckboxInputDirective, decorators: [{
80
78
  type: Directive,
81
79
  args: [{
82
- standalone: true,
83
80
  selector: 'input[rdxCheckboxInput]',
84
81
  hostDirectives: [{ directive: RdxVisuallyHiddenInputDirective, inputs: ['feature: "fully-hidden"'] }],
85
82
  host: {
@@ -102,7 +99,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
102
99
  /**
103
100
  * @group Components
104
101
  */
105
- class RdxCheckboxDirective {
102
+ class RdxCheckboxRootDirective {
106
103
  constructor() {
107
104
  /**
108
105
  * The controlled checked state of the checkbox. Must be used in conjunction with onCheckedChange.
@@ -205,19 +202,19 @@ class RdxCheckboxDirective {
205
202
  setDisabledState(isDisabled) {
206
203
  this.disabled = isDisabled;
207
204
  }
208
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxCheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
209
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.4", type: RdxCheckboxDirective, isStandalone: true, selector: "[rdxCheckboxRoot]", inputs: { checked: ["checked", "checked", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], required: ["required", "required", booleanAttribute] }, outputs: { checkedChange: "checkedChange", indeterminateChange: "indeterminateChange" }, host: { listeners: { "keydown": "onKeyDown($event)", "click": "onClick($event)", "blur": "onBlur()" }, properties: { "disabled": "disabled", "attr.data-disabled": "disabled ? \"\" : null", "attr.data-state": "state" } }, providers: [
210
- { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },
211
- provideValueAccessor(RdxCheckboxDirective)
205
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxCheckboxRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
206
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.4", type: RdxCheckboxRootDirective, isStandalone: true, selector: "[rdxCheckboxRoot]", inputs: { checked: ["checked", "checked", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], required: ["required", "required", booleanAttribute] }, outputs: { checkedChange: "checkedChange", indeterminateChange: "indeterminateChange" }, host: { listeners: { "keydown": "onKeyDown($event)", "click": "onClick($event)", "blur": "onBlur()" }, properties: { "disabled": "disabled", "attr.data-disabled": "disabled ? \"\" : null", "attr.data-state": "state" } }, providers: [
207
+ provideToken(RdxCheckboxToken, RdxCheckboxRootDirective),
208
+ provideValueAccessor(RdxCheckboxRootDirective)
212
209
  ], usesOnChanges: true, ngImport: i0 }); }
213
210
  }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxCheckboxDirective, decorators: [{
211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxCheckboxRootDirective, decorators: [{
215
212
  type: Directive,
216
213
  args: [{
217
214
  selector: '[rdxCheckboxRoot]',
218
215
  providers: [
219
- { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },
220
- provideValueAccessor(RdxCheckboxDirective)
216
+ provideToken(RdxCheckboxToken, RdxCheckboxRootDirective),
217
+ provideValueAccessor(RdxCheckboxRootDirective)
221
218
  ],
222
219
  host: {
223
220
  '[disabled]': 'disabled',
@@ -248,17 +245,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
248
245
 
249
246
  const _imports = [
250
247
  RdxCheckboxInputDirective,
251
- RdxCheckboxDirective,
248
+ RdxCheckboxRootDirective,
252
249
  RdxCheckboxButtonDirective,
253
250
  RdxCheckboxIndicatorDirective
254
251
  ];
255
252
  class RdxCheckboxModule {
256
253
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
257
254
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: RdxCheckboxModule, imports: [RdxCheckboxInputDirective,
258
- RdxCheckboxDirective,
255
+ RdxCheckboxRootDirective,
259
256
  RdxCheckboxButtonDirective,
260
257
  RdxCheckboxIndicatorDirective], exports: [RdxCheckboxInputDirective,
261
- RdxCheckboxDirective,
258
+ RdxCheckboxRootDirective,
262
259
  RdxCheckboxButtonDirective,
263
260
  RdxCheckboxIndicatorDirective] }); }
264
261
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxCheckboxModule }); }
@@ -275,5 +272,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
275
272
  * Generated bundle index. Do not edit.
276
273
  */
277
274
 
278
- export { RdxCheckboxButtonDirective, RdxCheckboxDirective, RdxCheckboxIndicatorDirective, RdxCheckboxInputDirective, RdxCheckboxModule, RdxCheckboxToken, injectCheckbox };
275
+ export { RdxCheckboxButtonDirective, RdxCheckboxIndicatorDirective, RdxCheckboxInputDirective, RdxCheckboxModule, RdxCheckboxRootDirective, RdxCheckboxToken, injectCheckbox };
279
276
  //# sourceMappingURL=radix-ng-primitives-checkbox.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-checkbox.mjs","sources":["../../../packages/primitives/checkbox/src/checkbox.token.ts","../../../packages/primitives/checkbox/src/checkbox-button.directive.ts","../../../packages/primitives/checkbox/src/checkbox-indicator.directive.ts","../../../packages/primitives/checkbox/src/checkbox-input.directive.ts","../../../packages/primitives/checkbox/src/checkbox.directive.ts","../../../packages/primitives/checkbox/index.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { RdxCheckboxDirective } from './checkbox.directive';\n\nexport const RdxCheckboxToken = new InjectionToken<RdxCheckboxDirective>('RdxCheckboxToken');\n\nexport function injectCheckbox(): RdxCheckboxDirective {\n return inject(RdxCheckboxToken);\n}\n","import { computed, Directive, input } from '@angular/core';\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n standalone: true,\n selector: 'button[rdxCheckboxButton]',\n host: {\n type: 'button',\n role: 'checkbox',\n tabindex: '-1',\n '[checked]': 'checkbox.checked',\n '[disabled]': 'checkbox.disabled',\n '[required]': 'checkbox.required',\n '[attr.id]': 'elementId()',\n '[attr.aria-checked]': 'checkbox.indeterminate ? \"mixed\" : checkbox.checked',\n '[attr.aria-required]': 'checkbox.required ? \"\" : null',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null'\n }\n})\nexport class RdxCheckboxButtonDirective {\n protected readonly checkbox = injectCheckbox();\n\n readonly id = input<string | null>(null);\n\n protected readonly elementId = computed(() => (this.id() ? this.id() : `rdx-checkbox-${this.id()}`));\n}\n","import { Directive } from '@angular/core';\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n selector: '[rdxCheckboxIndicator]',\n standalone: true,\n host: {\n '[style.pointer-events]': '\"none\"',\n '[attr.aria-checked]': 'checkbox.indeterminate ? \"mixed\" : checkbox.checked',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null'\n }\n})\nexport class RdxCheckboxIndicatorDirective {\n protected readonly checkbox = injectCheckbox();\n}\n","import { computed, Directive, input } from '@angular/core';\nimport { RdxVisuallyHiddenInputDirective } from '@radix-ng/primitives/visually-hidden';\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n standalone: true,\n selector: 'input[rdxCheckboxInput]',\n hostDirectives: [{ directive: RdxVisuallyHiddenInputDirective, inputs: ['feature: \"fully-hidden\"'] }],\n host: {\n type: 'checkbox',\n tabindex: '-1',\n '[checked]': 'checkbox.checked',\n '[disabled]': 'checkbox.disabled',\n '[required]': 'checkbox.required',\n '[attr.id]': 'elementId()',\n '[attr.aria-hidden]': 'true',\n '[attr.aria-checked]': 'checkbox.indeterminate ? \"mixed\" : checkbox.checked',\n '[attr.aria-required]': 'checkbox.required ? \"\" : null',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null',\n '[attr.value]': 'value()'\n }\n})\nexport class RdxCheckboxInputDirective {\n protected readonly checkbox = injectCheckbox();\n\n readonly id = input<string>();\n\n protected readonly elementId = computed(() => (this.id() ? this.id() : `rdx-checkbox-${this.id()}`));\n\n protected readonly value = computed(() => {\n const state = this.checkbox.state;\n if (state === 'indeterminate') {\n return '';\n }\n\n return state ? 'on' : 'off';\n });\n}\n","import { booleanAttribute, Directive, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from '@radix-ng/primitives/core';\nimport { RdxCheckboxToken } from './checkbox.token';\n\nexport type CheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * @group Components\n */\n@Directive({\n selector: '[rdxCheckboxRoot]',\n providers: [\n { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },\n provideValueAccessor(RdxCheckboxDirective)],\n host: {\n '[disabled]': 'disabled',\n '[attr.data-disabled]': 'disabled ? \"\" : null',\n '[attr.data-state]': 'state',\n\n '(keydown)': 'onKeyDown($event)',\n '(click)': 'onClick($event)',\n '(blur)': 'onBlur()'\n }\n})\nexport class RdxCheckboxDirective implements ControlValueAccessor, OnChanges {\n /**\n * The controlled checked state of the checkbox. Must be used in conjunction with onCheckedChange.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) checked = false;\n\n /**\n * Defines whether the checkbox is indeterminate.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) indeterminate = false;\n\n /**\n * Defines whether the checkbox is disabled.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * @group Props\n */\n @Input({ transform: booleanAttribute }) required = false;\n\n /**\n * Event emitted when the checkbox checked state changes.\n * @group Emits\n */\n @Output() readonly checkedChange = new EventEmitter<boolean>();\n\n /**\n * Event emitted when the indeterminate state changes.\n * @group Emits\n */\n @Output() readonly indeterminateChange = new EventEmitter<boolean>();\n\n /**\n * Determine the state\n */\n get state(): CheckboxState {\n if (this.indeterminate) {\n return 'indeterminate';\n }\n return this.checked ? 'checked' : 'unchecked';\n }\n\n /**\n * Store the callback function that should be called when the checkbox checked state changes.\n * @internal\n */\n private onChange?: (checked: boolean) => void;\n\n /**\n * Store the callback function that should be called when the checkbox is blurred.\n * @internal\n */\n private onTouched?: () => void;\n\n protected onKeyDown(event: KeyboardEvent): void {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n protected onClick($event: MouseEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.checked = this.indeterminate ? true : !this.checked;\n this.checkedChange.emit(this.checked);\n this.onChange?.(this.checked);\n\n if (this.indeterminate) {\n this.indeterminate = false;\n this.indeterminateChange.emit(this.indeterminate);\n }\n\n $event.preventDefault();\n }\n\n protected onBlur(): void {\n this.onTouched?.();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['checked'] && !changes['checked'].isFirstChange()) {\n this.checkedChange.emit(this.checked);\n }\n if (changes['indeterminate'] && !changes['indeterminate'].isFirstChange()) {\n this.indeterminateChange.emit(this.indeterminate);\n }\n }\n\n /**\n * Sets the checked state of the checkbox.\n * @param checked The checked state of the checkbox.\n * @internal\n */\n writeValue(checked: boolean): void {\n this.checked = checked;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox checked state changes.\n * @param fn The callback function.\n * @internal\n */\n registerOnChange(fn: (checked: boolean) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox is blurred.\n * @param fn The callback function.\n * @internal\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the checkbox.\n * @param isDisabled The disabled state of the checkbox.\n * @internal\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxCheckboxButtonDirective } from './src/checkbox-button.directive';\nimport { RdxCheckboxIndicatorDirective } from './src/checkbox-indicator.directive';\nimport { RdxCheckboxInputDirective } from './src/checkbox-input.directive';\nimport { RdxCheckboxDirective } from './src/checkbox.directive';\n\nexport * from './src/checkbox-button.directive';\nexport * from './src/checkbox-indicator.directive';\nexport * from './src/checkbox-input.directive';\nexport * from './src/checkbox.directive';\nexport type { CheckboxState } from './src/checkbox.directive';\nexport * from './src/checkbox.token';\n\nconst _imports = [\n RdxCheckboxInputDirective,\n RdxCheckboxDirective,\n RdxCheckboxButtonDirective,\n RdxCheckboxIndicatorDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxCheckboxModule {}\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-checkbox.mjs","sources":["../../../packages/primitives/checkbox/src/checkbox.token.ts","../../../packages/primitives/checkbox/src/checkbox-button.directive.ts","../../../packages/primitives/checkbox/src/checkbox-indicator.directive.ts","../../../packages/primitives/checkbox/src/checkbox-input.directive.ts","../../../packages/primitives/checkbox/src/checkbox.directive.ts","../../../packages/primitives/checkbox/index.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { RdxCheckboxRootDirective } from './checkbox.directive';\n\nexport const RdxCheckboxToken = new InjectionToken<RdxCheckboxRootDirective>('RdxCheckboxToken');\n\nexport function injectCheckbox(): RdxCheckboxRootDirective {\n return inject(RdxCheckboxToken);\n}\n","import { computed, Directive, input } from '@angular/core';\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n selector: 'button[rdxCheckboxButton]',\n host: {\n type: 'button',\n role: 'checkbox',\n tabindex: '-1',\n '[checked]': 'checkbox.checked',\n '[disabled]': 'checkbox.disabled',\n '[required]': 'checkbox.required',\n '[attr.id]': 'elementId()',\n '[attr.aria-checked]': 'checkbox.indeterminate ? \"mixed\" : checkbox.checked',\n '[attr.aria-required]': 'checkbox.required ? \"\" : null',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null'\n }\n})\nexport class RdxCheckboxButtonDirective {\n protected readonly checkbox = injectCheckbox();\n\n readonly id = input<string | null>(null);\n\n protected readonly elementId = computed(() => (this.id() ? this.id() : `rdx-checkbox-${this.id()}`));\n}\n","import { Directive } from '@angular/core';\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n selector: '[rdxCheckboxIndicator]',\n host: {\n '[style.pointer-events]': '\"none\"',\n '[attr.aria-checked]': 'checkbox.indeterminate ? \"mixed\" : checkbox.checked',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null'\n }\n})\nexport class RdxCheckboxIndicatorDirective {\n protected readonly checkbox = injectCheckbox();\n}\n","import { computed, Directive, input } from '@angular/core';\nimport { RdxVisuallyHiddenInputDirective } from '@radix-ng/primitives/visually-hidden';\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n selector: 'input[rdxCheckboxInput]',\n hostDirectives: [{ directive: RdxVisuallyHiddenInputDirective, inputs: ['feature: \"fully-hidden\"'] }],\n host: {\n type: 'checkbox',\n tabindex: '-1',\n '[checked]': 'checkbox.checked',\n '[disabled]': 'checkbox.disabled',\n '[required]': 'checkbox.required',\n '[attr.id]': 'elementId()',\n '[attr.aria-hidden]': 'true',\n '[attr.aria-checked]': 'checkbox.indeterminate ? \"mixed\" : checkbox.checked',\n '[attr.aria-required]': 'checkbox.required ? \"\" : null',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null',\n '[attr.value]': 'value()'\n }\n})\nexport class RdxCheckboxInputDirective {\n protected readonly checkbox = injectCheckbox();\n\n readonly id = input<string>();\n\n protected readonly elementId = computed(() => (this.id() ? this.id() : `rdx-checkbox-${this.id()}`));\n\n protected readonly value = computed(() => {\n const state = this.checkbox.state;\n if (state === 'indeterminate') {\n return '';\n }\n\n return state ? 'on' : 'off';\n });\n}\n","import { booleanAttribute, Directive, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideToken, provideValueAccessor } from '@radix-ng/primitives/core';\nimport { RdxCheckboxToken } from './checkbox.token';\n\nexport type CheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * @group Components\n */\n@Directive({\n selector: '[rdxCheckboxRoot]',\n providers: [\n provideToken(RdxCheckboxToken, RdxCheckboxRootDirective),\n provideValueAccessor(RdxCheckboxRootDirective)],\n host: {\n '[disabled]': 'disabled',\n '[attr.data-disabled]': 'disabled ? \"\" : null',\n '[attr.data-state]': 'state',\n\n '(keydown)': 'onKeyDown($event)',\n '(click)': 'onClick($event)',\n '(blur)': 'onBlur()'\n }\n})\nexport class RdxCheckboxRootDirective implements ControlValueAccessor, OnChanges {\n /**\n * The controlled checked state of the checkbox. Must be used in conjunction with onCheckedChange.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) checked = false;\n\n /**\n * Defines whether the checkbox is indeterminate.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) indeterminate = false;\n\n /**\n * Defines whether the checkbox is disabled.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * @group Props\n */\n @Input({ transform: booleanAttribute }) required = false;\n\n /**\n * Event emitted when the checkbox checked state changes.\n * @group Emits\n */\n @Output() readonly checkedChange = new EventEmitter<boolean>();\n\n /**\n * Event emitted when the indeterminate state changes.\n * @group Emits\n */\n @Output() readonly indeterminateChange = new EventEmitter<boolean>();\n\n /**\n * Determine the state\n */\n get state(): CheckboxState {\n if (this.indeterminate) {\n return 'indeterminate';\n }\n return this.checked ? 'checked' : 'unchecked';\n }\n\n /**\n * Store the callback function that should be called when the checkbox checked state changes.\n * @internal\n */\n private onChange?: (checked: boolean) => void;\n\n /**\n * Store the callback function that should be called when the checkbox is blurred.\n * @internal\n */\n private onTouched?: () => void;\n\n protected onKeyDown(event: KeyboardEvent): void {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n protected onClick($event: MouseEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.checked = this.indeterminate ? true : !this.checked;\n this.checkedChange.emit(this.checked);\n this.onChange?.(this.checked);\n\n if (this.indeterminate) {\n this.indeterminate = false;\n this.indeterminateChange.emit(this.indeterminate);\n }\n\n $event.preventDefault();\n }\n\n protected onBlur(): void {\n this.onTouched?.();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['checked'] && !changes['checked'].isFirstChange()) {\n this.checkedChange.emit(this.checked);\n }\n if (changes['indeterminate'] && !changes['indeterminate'].isFirstChange()) {\n this.indeterminateChange.emit(this.indeterminate);\n }\n }\n\n /**\n * Sets the checked state of the checkbox.\n * @param checked The checked state of the checkbox.\n * @internal\n */\n writeValue(checked: boolean): void {\n this.checked = checked;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox checked state changes.\n * @param fn The callback function.\n * @internal\n */\n registerOnChange(fn: (checked: boolean) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox is blurred.\n * @param fn The callback function.\n * @internal\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the checkbox.\n * @param isDisabled The disabled state of the checkbox.\n * @internal\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxCheckboxButtonDirective } from './src/checkbox-button.directive';\nimport { RdxCheckboxIndicatorDirective } from './src/checkbox-indicator.directive';\nimport { RdxCheckboxInputDirective } from './src/checkbox-input.directive';\nimport { RdxCheckboxRootDirective } from './src/checkbox.directive';\n\nexport * from './src/checkbox-button.directive';\nexport * from './src/checkbox-indicator.directive';\nexport * from './src/checkbox-input.directive';\nexport * from './src/checkbox.directive';\nexport type { CheckboxState } from './src/checkbox.directive';\nexport * from './src/checkbox.token';\n\nconst _imports = [\n RdxCheckboxInputDirective,\n RdxCheckboxRootDirective,\n RdxCheckboxButtonDirective,\n RdxCheckboxIndicatorDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -101,6 +101,76 @@ function getRequestAnimationFrame() {
101
101
  // Get the requestAnimationFrame function or its polyfill.
102
102
  const reqAnimationFrame = getRequestAnimationFrame();
103
103
 
104
+ /**
105
+ * The `clamp` function restricts a number within a specified range by returning the value itself if it
106
+ * falls within the range, or the closest boundary value if it exceeds the range.
107
+ * @param {number} value - The `value` parameter represents the number that you want to clamp within
108
+ * the specified range defined by `min` and `max` values.
109
+ * @param {number} min - If the `value` parameter is less than the `min` value, the
110
+ * function will return the `min` value.
111
+ * @param {number} max - If the `value` parameter is greater than the `max` value,
112
+ * the function will return `max`.
113
+ * @returns The `clamp` function returns the value of `value` constrained within the range defined by
114
+ * `min` and `max`.
115
+ */
116
+ function clamp(value, min = Number.NEGATIVE_INFINITY, max = Number.POSITIVE_INFINITY) {
117
+ return Math.min(max, Math.max(min, value));
118
+ }
119
+ /**
120
+ * The function `roundToStepPrecision` rounds a number to a specified precision step.
121
+ * @param {number} value - The `value` parameter is the number that you want to round to a specific
122
+ * precision based on the `step` parameter.
123
+ * @param {number} step - The `step` parameter in the `roundToStepPrecision` function represents the
124
+ * interval at which you want to round the `value`. For example, if `step` is 0.5, the `value` will be
125
+ * rounded to the nearest half.
126
+ * @returns the `roundedValue` after rounding it to the precision specified by the `step`.
127
+ */
128
+ function roundToStepPrecision(value, step) {
129
+ let roundedValue = value;
130
+ const stepString = step.toString();
131
+ const pointIndex = stepString.indexOf('.');
132
+ const precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;
133
+ if (precision > 0) {
134
+ const pow = 10 ** precision;
135
+ roundedValue = Math.round(roundedValue * pow) / pow;
136
+ }
137
+ return roundedValue;
138
+ }
139
+ /**
140
+ * The function `snapValueToStep` snaps a given value to the nearest step within a specified range.
141
+ * @param {number} value - The `value` parameter represents the number that you want to snap to the
142
+ * nearest step value.
143
+ * @param {number | undefined} min - The `min` parameter represents the minimum value that the `value`
144
+ * should be snapped to. If `value` is less than `min`, it will be snapped to `min`. If `min` is not
145
+ * provided (undefined), then the snapping will not consider a minimum value.
146
+ * @param {number | undefined} max - The `max` parameter represents the maximum value that the `value`
147
+ * should be snapped to. It ensures that the snapped value does not exceed this maximum value.
148
+ * @param {number} step - The `step` parameter in the `snapValueToStep` function represents the
149
+ * interval at which the `value` should be snapped to. It determines the granularity of the snapping
150
+ * operation. For example, if `step` is 5, the `value` will be snapped to the nearest multiple of
151
+ * @returns a number that has been snapped to the nearest step value within the specified range of minimum and maximum values.
152
+ */
153
+ function snapValueToStep(value, min, max, step) {
154
+ min = Number(min);
155
+ max = Number(max);
156
+ const remainder = (value - (Number.isNaN(min) ? 0 : min)) % step;
157
+ let snappedValue = roundToStepPrecision(Math.abs(remainder) * 2 >= step
158
+ ? value + Math.sign(remainder) * (step - Math.abs(remainder))
159
+ : value - remainder, step);
160
+ if (!Number.isNaN(min)) {
161
+ if (snappedValue < min)
162
+ snappedValue = min;
163
+ else if (!Number.isNaN(max) && snappedValue > max)
164
+ snappedValue = min + Math.floor(roundToStepPrecision((max - min) / step, step)) * step;
165
+ }
166
+ else if (!Number.isNaN(max) && snappedValue > max) {
167
+ snappedValue = Math.floor(roundToStepPrecision(max / step, step)) * step;
168
+ }
169
+ // correct floating point behavior by rounding to step precision
170
+ snappedValue = roundToStepPrecision(snappedValue, step);
171
+ return snappedValue;
172
+ }
173
+
104
174
  function injectDocument() {
105
175
  return inject(DOCUMENT);
106
176
  }
@@ -124,6 +194,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
124
194
  }]
125
195
  }] });
126
196
 
197
+ function getActiveElement() {
198
+ let activeElement = document.activeElement;
199
+ if (activeElement == null) {
200
+ return null;
201
+ }
202
+ while (activeElement != null &&
203
+ activeElement.shadowRoot != null &&
204
+ activeElement.shadowRoot.activeElement != null) {
205
+ activeElement = activeElement.shadowRoot.activeElement;
206
+ }
207
+ return activeElement;
208
+ }
209
+
127
210
  /**
128
211
  * @license
129
212
  * Copyright Google LLC All Rights Reserved.
@@ -2017,5 +2100,5 @@ function watch(deps, fn, options) {
2017
2100
  * Generated bundle index. Do not edit.
2018
2101
  */
2019
2102
 
2020
- export { A, ALT, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ASTERISK, BACKSPACE, CAPS_LOCK, CONTROL, CTRL, DELETE, END, ENTER, ESCAPE, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, HOME, META, P, PAGE_DOWN, PAGE_UP, RDX_POSITIONING_DEFAULTS, RDX_POSITIONS, RdxAutoFocusDirective, RdxFocusInitialDirective, RdxPositionAlign, RdxPositionSide, SHIFT, SPACE, SPACE_CODE, TAB, WINDOW, _IdGenerator, a, areAllDaysBetweenValid, createContent, createFormatter, createMonth, createMonths, getAllPossibleConnectedPositions, getArrowPositionParams, getContentPosition, getDaysBetween, getDaysInMonth, getDefaultDate, getLastFirstDayOfWeek, getNextLastDayOfWeek, getOptsByGranularity, getPlaceholder, getSegmentElements, getSideAndAlignFromAllPossibleConnectedPositions, handleCalendarInitialFocus, hasTime, initializeSegmentValues, injectDocument, injectIsClient, injectNgControl, injectWindow, isAcceptableSegmentKey, isAfter, isAfterOrSame, isBefore, isBeforeOrSame, isBetween, isBetweenInclusive, isCalendarDateTime, isInsideForm, isNullish, isNumber, isNumberString, isSegmentNavigationKey, isZonedDateTime, j, k, n, p, provideToken, provideValueAccessor, segmentBuilders, syncSegmentValues, syncTimeSegmentValues, toDate, useDateField, watch };
2103
+ export { A, ALT, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ASTERISK, BACKSPACE, CAPS_LOCK, CONTROL, CTRL, DELETE, END, ENTER, ESCAPE, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, HOME, META, P, PAGE_DOWN, PAGE_UP, RDX_POSITIONING_DEFAULTS, RDX_POSITIONS, RdxAutoFocusDirective, RdxFocusInitialDirective, RdxPositionAlign, RdxPositionSide, SHIFT, SPACE, SPACE_CODE, TAB, WINDOW, _IdGenerator, a, areAllDaysBetweenValid, clamp, createContent, createFormatter, createMonth, createMonths, getActiveElement, getAllPossibleConnectedPositions, getArrowPositionParams, getContentPosition, getDaysBetween, getDaysInMonth, getDefaultDate, getLastFirstDayOfWeek, getNextLastDayOfWeek, getOptsByGranularity, getPlaceholder, getSegmentElements, getSideAndAlignFromAllPossibleConnectedPositions, handleCalendarInitialFocus, hasTime, initializeSegmentValues, injectDocument, injectIsClient, injectNgControl, injectWindow, isAcceptableSegmentKey, isAfter, isAfterOrSame, isBefore, isBeforeOrSame, isBetween, isBetweenInclusive, isCalendarDateTime, isInsideForm, isNullish, isNumber, isNumberString, isSegmentNavigationKey, isZonedDateTime, j, k, n, p, provideToken, provideValueAccessor, roundToStepPrecision, segmentBuilders, snapValueToStep, syncSegmentValues, syncTimeSegmentValues, toDate, useDateField, watch };
2021
2104
  //# sourceMappingURL=radix-ng-primitives-core.mjs.map