@radix-ng/primitives 0.51.0 → 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/fesm2022/radix-ng-primitives-accordion.mjs +105 -38
  2. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  3. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +221 -129
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-arrow.mjs +20 -4
  6. package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-avatar.mjs +54 -61
  9. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-button.mjs +123 -0
  11. package/fesm2022/radix-ng-primitives-button.mjs.map +1 -0
  12. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-checkbox.mjs +378 -54
  14. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-collapsible.mjs +182 -81
  16. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  17. package/fesm2022/radix-ng-primitives-collection.mjs +40 -57
  18. package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-context-menu.mjs +140 -424
  21. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-core.mjs +735 -744
  23. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-cropper.mjs +1 -0
  25. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-date-field.mjs +51 -45
  27. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-dialog.mjs +655 -327
  29. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +70 -46
  31. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-drawer.mjs +1059 -0
  33. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -0
  34. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-field.mjs +363 -0
  36. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -0
  37. package/fesm2022/radix-ng-primitives-fieldset.mjs +79 -0
  38. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -0
  39. package/fesm2022/radix-ng-primitives-focus-scope.mjs +23 -8
  40. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  41. package/fesm2022/radix-ng-primitives-input.mjs +172 -0
  42. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -0
  43. package/fesm2022/radix-ng-primitives-label.mjs +6 -6
  44. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  45. package/fesm2022/radix-ng-primitives-menu.mjs +1480 -344
  46. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  47. package/fesm2022/radix-ng-primitives-menubar.mjs +290 -162
  48. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  49. package/fesm2022/radix-ng-primitives-meter.mjs +271 -0
  50. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -0
  51. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1052 -1553
  52. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  53. package/fesm2022/radix-ng-primitives-number-field.mjs +1102 -367
  54. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-popover.mjs +978 -989
  57. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-popper.mjs +91 -41
  59. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-portal.mjs +34 -10
  61. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-presence.mjs +134 -246
  63. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-preview-card.mjs +997 -0
  65. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -0
  66. package/fesm2022/radix-ng-primitives-progress.mjs +223 -84
  67. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-radio.mjs +191 -51
  69. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-roving-focus.mjs +96 -50
  71. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-select.mjs +791 -509
  73. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  74. package/fesm2022/radix-ng-primitives-separator.mjs +12 -35
  75. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  76. package/fesm2022/radix-ng-primitives-slider.mjs +969 -717
  77. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  78. package/fesm2022/radix-ng-primitives-stepper.mjs +15 -19
  79. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-switch.mjs +125 -113
  81. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-tabs.mjs +381 -108
  83. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-time-field.mjs +55 -46
  85. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-toggle-group.mjs +121 -247
  87. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-toggle.mjs +98 -61
  89. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-toolbar.mjs +303 -92
  91. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-tooltip.mjs +690 -1071
  93. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +25 -66
  95. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  96. package/meter/README.md +3 -0
  97. package/navigation-menu/README.md +2 -1
  98. package/package.json +31 -18
  99. package/portal/README.md +2 -0
  100. package/preview-card/README.md +3 -0
  101. package/schematics/collection.json +1 -0
  102. package/schematics/ng-add/index.d.ts +3 -2
  103. package/schematics/ng-add/index.js +62 -31
  104. package/schematics/ng-add/index.js.map +1 -1
  105. package/schematics/ng-add/package-config.d.ts +4 -2
  106. package/schematics/ng-add/package-config.js +10 -2
  107. package/schematics/ng-add/package-config.js.map +1 -1
  108. package/schematics/ng-add/schema.d.ts +3 -0
  109. package/schematics/ng-add/schema.js +3 -0
  110. package/schematics/ng-add/schema.js.map +1 -0
  111. package/schematics/ng-add/schema.json +14 -0
  112. package/select/README.md +2 -0
  113. package/types/radix-ng-primitives-accordion.d.ts +48 -14
  114. package/types/radix-ng-primitives-alert-dialog.d.ts +95 -38
  115. package/types/radix-ng-primitives-arrow.d.ts +1 -1
  116. package/types/radix-ng-primitives-aspect-ratio.d.ts +1 -1
  117. package/types/radix-ng-primitives-avatar.d.ts +7 -11
  118. package/types/radix-ng-primitives-button.d.ts +73 -0
  119. package/types/radix-ng-primitives-calendar.d.ts +1 -2
  120. package/types/radix-ng-primitives-checkbox.d.ts +201 -32
  121. package/types/radix-ng-primitives-collapsible.d.ts +112 -39
  122. package/types/radix-ng-primitives-collection.d.ts +38 -34
  123. package/types/radix-ng-primitives-config.d.ts +1 -1
  124. package/types/radix-ng-primitives-context-menu.d.ts +60 -116
  125. package/types/radix-ng-primitives-core.d.ts +307 -236
  126. package/types/radix-ng-primitives-cropper.d.ts +2 -2
  127. package/types/radix-ng-primitives-date-field.d.ts +38 -23
  128. package/types/radix-ng-primitives-dialog.d.ts +282 -165
  129. package/types/radix-ng-primitives-dismissable-layer.d.ts +15 -7
  130. package/types/radix-ng-primitives-drawer.d.ts +448 -0
  131. package/types/radix-ng-primitives-editable.d.ts +1 -1
  132. package/types/radix-ng-primitives-field.d.ts +373 -0
  133. package/types/radix-ng-primitives-fieldset.d.ts +48 -0
  134. package/types/radix-ng-primitives-focus-scope.d.ts +13 -5
  135. package/types/radix-ng-primitives-input.d.ts +87 -0
  136. package/types/radix-ng-primitives-label.d.ts +0 -1
  137. package/types/radix-ng-primitives-menu.d.ts +572 -99
  138. package/types/radix-ng-primitives-menubar.d.ts +60 -50
  139. package/types/radix-ng-primitives-meter.d.ts +193 -0
  140. package/types/radix-ng-primitives-navigation-menu.d.ts +422 -340
  141. package/types/radix-ng-primitives-number-field.d.ts +405 -145
  142. package/types/radix-ng-primitives-pagination.d.ts +2 -2
  143. package/types/radix-ng-primitives-popover.d.ts +365 -351
  144. package/types/radix-ng-primitives-popper.d.ts +49 -9
  145. package/types/radix-ng-primitives-portal.d.ts +14 -6
  146. package/types/radix-ng-primitives-presence.d.ts +28 -76
  147. package/types/radix-ng-primitives-preview-card.d.ts +359 -0
  148. package/types/radix-ng-primitives-progress.d.ts +174 -48
  149. package/types/radix-ng-primitives-radio.d.ts +55 -25
  150. package/types/radix-ng-primitives-roving-focus.d.ts +30 -21
  151. package/types/radix-ng-primitives-select.d.ts +475 -177
  152. package/types/radix-ng-primitives-separator.d.ts +7 -32
  153. package/types/radix-ng-primitives-slider.d.ts +315 -201
  154. package/types/radix-ng-primitives-stepper.d.ts +5 -7
  155. package/types/radix-ng-primitives-switch.d.ts +86 -71
  156. package/types/radix-ng-primitives-tabs.d.ts +213 -79
  157. package/types/radix-ng-primitives-time-field.d.ts +42 -27
  158. package/types/radix-ng-primitives-toggle-group.d.ts +85 -164
  159. package/types/radix-ng-primitives-toggle.d.ts +43 -53
  160. package/types/radix-ng-primitives-toolbar.d.ts +163 -38
  161. package/types/radix-ng-primitives-tooltip.d.ts +347 -384
  162. package/types/radix-ng-primitives-visually-hidden.d.ts +19 -19
  163. package/dropdown-menu/README.md +0 -1
  164. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -581
  165. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
  166. package/fesm2022/radix-ng-primitives-hover-card.mjs +0 -1238
  167. package/fesm2022/radix-ng-primitives-hover-card.mjs.map +0 -1
  168. package/fesm2022/radix-ng-primitives-select2.mjs +0 -897
  169. package/fesm2022/radix-ng-primitives-select2.mjs.map +0 -1
  170. package/fesm2022/radix-ng-primitives-tooltip2.mjs +0 -735
  171. package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +0 -1
  172. package/hover-card/README.md +0 -3
  173. package/select2/README.md +0 -3
  174. package/tooltip2/README.md +0 -3
  175. package/types/radix-ng-primitives-dropdown-menu.d.ts +0 -171
  176. package/types/radix-ng-primitives-hover-card.d.ts +0 -471
  177. package/types/radix-ng-primitives-select2.d.ts +0 -511
  178. package/types/radix-ng-primitives-tooltip2.d.ts +0 -325
@@ -0,0 +1,271 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, numberAttribute, computed, Directive, inject, NgModule } from '@angular/core';
3
+ import { createContext } from '@radix-ng/primitives/core';
4
+
5
+ let meterId = 0;
6
+ const DEFAULT_MIN = 0;
7
+ const DEFAULT_MAX = 100;
8
+ const isValidNumber = (value) => typeof value === 'number' && !Number.isNaN(value);
9
+ const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
10
+ const meterRootContext = () => {
11
+ const root = injectMeterRoot();
12
+ return {
13
+ labelId: root.labelId,
14
+ valueId: root.valueId,
15
+ minState: root.minState,
16
+ maxState: root.maxState,
17
+ valueState: root.valueState,
18
+ percentageState: root.percentageState,
19
+ formattedValueState: root.formattedValueState,
20
+ ariaValueTextState: root.ariaValueTextState
21
+ };
22
+ };
23
+ const [injectMeterRootContext, provideMeterRootContext] = createContext('RdxMeterRoot');
24
+ /**
25
+ * Provides meter state and accessibility attributes.
26
+ *
27
+ * @group Components
28
+ */
29
+ class RdxMeterRootDirective {
30
+ constructor() {
31
+ /**
32
+ * Current meter value.
33
+ *
34
+ * @group Props
35
+ */
36
+ this.value = input.required({ ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: numberAttribute });
37
+ /**
38
+ * Minimum meter value.
39
+ *
40
+ * @group Props
41
+ * @defaultValue 0
42
+ */
43
+ this.min = input(DEFAULT_MIN, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: numberAttribute });
44
+ /**
45
+ * Maximum meter value.
46
+ *
47
+ * @group Props
48
+ * @defaultValue 100
49
+ */
50
+ this.max = input(DEFAULT_MAX, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: numberAttribute });
51
+ /**
52
+ * Locale used by `Intl.NumberFormat` when formatting the displayed value.
53
+ *
54
+ * @group Props
55
+ */
56
+ this.locale = input(...(ngDevMode ? [undefined, { debugName: "locale" }] : /* istanbul ignore next */ []));
57
+ /**
58
+ * Number formatting options for the displayed value.
59
+ *
60
+ * @group Props
61
+ */
62
+ this.format = input(...(ngDevMode ? [undefined, { debugName: "format" }] : /* istanbul ignore next */ []));
63
+ /**
64
+ * Human-readable text alternative for the current value.
65
+ *
66
+ * @group Props
67
+ */
68
+ this.ariaValueText = input(undefined, { ...(ngDevMode ? { debugName: "ariaValueText" } : /* istanbul ignore next */ {}), alias: 'aria-valuetext' });
69
+ /**
70
+ * Formats a human-readable text alternative for the current value.
71
+ *
72
+ * @group Props
73
+ */
74
+ this.getAriaValueText = input(...(ngDevMode ? [undefined, { debugName: "getAriaValueText" }] : /* istanbul ignore next */ []));
75
+ this.labelId = input(`rdx-meter-label-${meterId++}`, ...(ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []));
76
+ this.valueId = input(`rdx-meter-value-${meterId++}`, ...(ngDevMode ? [{ debugName: "valueId" }] : /* istanbul ignore next */ []));
77
+ this.minState = computed(() => (isValidNumber(this.min()) ? this.min() : DEFAULT_MIN), ...(ngDevMode ? [{ debugName: "minState" }] : /* istanbul ignore next */ []));
78
+ this.maxState = computed(() => {
79
+ const min = this.minState();
80
+ const max = this.max();
81
+ return isValidNumber(max) && max > min ? max : min + DEFAULT_MAX;
82
+ }, ...(ngDevMode ? [{ debugName: "maxState" }] : /* istanbul ignore next */ []));
83
+ this.valueState = computed(() => {
84
+ const value = this.value();
85
+ return clamp(isValidNumber(value) ? value : this.minState(), this.minState(), this.maxState());
86
+ }, ...(ngDevMode ? [{ debugName: "valueState" }] : /* istanbul ignore next */ []));
87
+ this.percentageState = computed(() => {
88
+ const min = this.minState();
89
+ const max = this.maxState();
90
+ return ((this.valueState() - min) / (max - min)) * 100;
91
+ }, ...(ngDevMode ? [{ debugName: "percentageState" }] : /* istanbul ignore next */ []));
92
+ this.formattedValueState = computed(() => {
93
+ const format = this.format();
94
+ if (format) {
95
+ return new Intl.NumberFormat(this.locale(), format).format(this.valueState());
96
+ }
97
+ return new Intl.NumberFormat(this.locale(), { style: 'percent' }).format(this.percentageState() / 100);
98
+ }, ...(ngDevMode ? [{ debugName: "formattedValueState" }] : /* istanbul ignore next */ []));
99
+ this.ariaValueTextState = computed(() => {
100
+ const explicitText = this.ariaValueText();
101
+ if (explicitText !== undefined) {
102
+ return explicitText;
103
+ }
104
+ return this.getAriaValueText()?.(this.formattedValueState(), this.valueState());
105
+ }, ...(ngDevMode ? [{ debugName: "ariaValueTextState" }] : /* istanbul ignore next */ []));
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
108
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxMeterRootDirective, isStandalone: true, selector: "[rdxMeterRoot]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, ariaValueText: { classPropertyName: "ariaValueText", publicName: "aria-valuetext", isSignal: true, isRequired: false, transformFunction: null }, getAriaValueText: { classPropertyName: "getAriaValueText", publicName: "getAriaValueText", isSignal: true, isRequired: false, transformFunction: null }, labelId: { classPropertyName: "labelId", publicName: "labelId", isSignal: true, isRequired: false, transformFunction: null }, valueId: { classPropertyName: "valueId", publicName: "valueId", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "meter" }, properties: { "attr.aria-labelledby": "labelId()", "attr.aria-describedby": "valueId()", "attr.aria-valuemin": "minState()", "attr.aria-valuemax": "maxState()", "attr.aria-valuenow": "valueState()", "attr.aria-valuetext": "ariaValueTextState()", "attr.data-value": "valueState()", "attr.data-min": "minState()", "attr.data-max": "maxState()", "attr.data-percent": "percentageState()" } }, providers: [provideMeterRootContext(meterRootContext)], exportAs: ["rdxMeterRoot"], ngImport: i0 }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterRootDirective, decorators: [{
111
+ type: Directive,
112
+ args: [{
113
+ selector: '[rdxMeterRoot]',
114
+ exportAs: 'rdxMeterRoot',
115
+ providers: [provideMeterRootContext(meterRootContext)],
116
+ host: {
117
+ role: 'meter',
118
+ '[attr.aria-labelledby]': 'labelId()',
119
+ '[attr.aria-describedby]': 'valueId()',
120
+ '[attr.aria-valuemin]': 'minState()',
121
+ '[attr.aria-valuemax]': 'maxState()',
122
+ '[attr.aria-valuenow]': 'valueState()',
123
+ '[attr.aria-valuetext]': 'ariaValueTextState()',
124
+ '[attr.data-value]': 'valueState()',
125
+ '[attr.data-min]': 'minState()',
126
+ '[attr.data-max]': 'maxState()',
127
+ '[attr.data-percent]': 'percentageState()'
128
+ }
129
+ }]
130
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], ariaValueText: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-valuetext", required: false }] }], getAriaValueText: [{ type: i0.Input, args: [{ isSignal: true, alias: "getAriaValueText", required: false }] }], labelId: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelId", required: false }] }], valueId: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueId", required: false }] }] } });
131
+ function injectMeterRoot() {
132
+ return inject(RdxMeterRootDirective);
133
+ }
134
+
135
+ /**
136
+ * Displays the visual meter fill.
137
+ *
138
+ * @group Components
139
+ */
140
+ class RdxMeterIndicatorDirective {
141
+ constructor() {
142
+ this.meter = injectMeterRootContext();
143
+ }
144
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
145
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxMeterIndicatorDirective, isStandalone: true, selector: "[rdxMeterIndicator]", host: { properties: { "attr.data-value": "meter.valueState()", "attr.data-min": "meter.minState()", "attr.data-max": "meter.maxState()", "attr.data-percent": "meter.percentageState()" } }, exportAs: ["rdxMeterIndicator"], ngImport: i0 }); }
146
+ }
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterIndicatorDirective, decorators: [{
148
+ type: Directive,
149
+ args: [{
150
+ selector: '[rdxMeterIndicator]',
151
+ exportAs: 'rdxMeterIndicator',
152
+ host: {
153
+ '[attr.data-value]': 'meter.valueState()',
154
+ '[attr.data-min]': 'meter.minState()',
155
+ '[attr.data-max]': 'meter.maxState()',
156
+ '[attr.data-percent]': 'meter.percentageState()'
157
+ }
158
+ }]
159
+ }] });
160
+
161
+ /**
162
+ * Labels the meter.
163
+ *
164
+ * @group Components
165
+ */
166
+ class RdxMeterLabelDirective {
167
+ constructor() {
168
+ this.meter = injectMeterRootContext();
169
+ }
170
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
171
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxMeterLabelDirective, isStandalone: true, selector: "[rdxMeterLabel]", host: { properties: { "attr.id": "meter.labelId()" } }, exportAs: ["rdxMeterLabel"], ngImport: i0 }); }
172
+ }
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterLabelDirective, decorators: [{
174
+ type: Directive,
175
+ args: [{
176
+ selector: '[rdxMeterLabel]',
177
+ exportAs: 'rdxMeterLabel',
178
+ host: {
179
+ '[attr.id]': 'meter.labelId()'
180
+ }
181
+ }]
182
+ }] });
183
+
184
+ /**
185
+ * Contains the visual meter indicator.
186
+ *
187
+ * @group Components
188
+ */
189
+ class RdxMeterTrackDirective {
190
+ constructor() {
191
+ this.meter = injectMeterRootContext();
192
+ }
193
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterTrackDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
194
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxMeterTrackDirective, isStandalone: true, selector: "[rdxMeterTrack]", host: { properties: { "attr.data-value": "meter.valueState()", "attr.data-min": "meter.minState()", "attr.data-max": "meter.maxState()", "attr.data-percent": "meter.percentageState()" } }, exportAs: ["rdxMeterTrack"], ngImport: i0 }); }
195
+ }
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterTrackDirective, decorators: [{
197
+ type: Directive,
198
+ args: [{
199
+ selector: '[rdxMeterTrack]',
200
+ exportAs: 'rdxMeterTrack',
201
+ host: {
202
+ '[attr.data-value]': 'meter.valueState()',
203
+ '[attr.data-min]': 'meter.minState()',
204
+ '[attr.data-max]': 'meter.maxState()',
205
+ '[attr.data-percent]': 'meter.percentageState()'
206
+ }
207
+ }]
208
+ }] });
209
+
210
+ /**
211
+ * Displays the formatted meter value.
212
+ *
213
+ * @group Components
214
+ */
215
+ class RdxMeterValueDirective {
216
+ constructor() {
217
+ this.meter = injectMeterRootContext();
218
+ }
219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterValueDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
220
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxMeterValueDirective, isStandalone: true, selector: "[rdxMeterValue]", host: { properties: { "attr.id": "meter.valueId()", "textContent": "meter.formattedValueState()", "attr.data-value": "meter.valueState()", "attr.data-min": "meter.minState()", "attr.data-max": "meter.maxState()", "attr.data-percent": "meter.percentageState()" } }, exportAs: ["rdxMeterValue"], ngImport: i0 }); }
221
+ }
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterValueDirective, decorators: [{
223
+ type: Directive,
224
+ args: [{
225
+ selector: '[rdxMeterValue]',
226
+ exportAs: 'rdxMeterValue',
227
+ host: {
228
+ '[attr.id]': 'meter.valueId()',
229
+ '[textContent]': 'meter.formattedValueState()',
230
+ '[attr.data-value]': 'meter.valueState()',
231
+ '[attr.data-min]': 'meter.minState()',
232
+ '[attr.data-max]': 'meter.maxState()',
233
+ '[attr.data-percent]': 'meter.percentageState()'
234
+ }
235
+ }]
236
+ }] });
237
+
238
+ const _imports = [
239
+ RdxMeterRootDirective,
240
+ RdxMeterLabelDirective,
241
+ RdxMeterValueDirective,
242
+ RdxMeterTrackDirective,
243
+ RdxMeterIndicatorDirective
244
+ ];
245
+ class RdxMeterModule {
246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
247
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterModule, imports: [RdxMeterRootDirective,
248
+ RdxMeterLabelDirective,
249
+ RdxMeterValueDirective,
250
+ RdxMeterTrackDirective,
251
+ RdxMeterIndicatorDirective], exports: [RdxMeterRootDirective,
252
+ RdxMeterLabelDirective,
253
+ RdxMeterValueDirective,
254
+ RdxMeterTrackDirective,
255
+ RdxMeterIndicatorDirective] }); }
256
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterModule }); }
257
+ }
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMeterModule, decorators: [{
259
+ type: NgModule,
260
+ args: [{
261
+ imports: [..._imports],
262
+ exports: [..._imports]
263
+ }]
264
+ }] });
265
+
266
+ /**
267
+ * Generated bundle index. Do not edit.
268
+ */
269
+
270
+ export { RdxMeterIndicatorDirective, RdxMeterLabelDirective, RdxMeterModule, RdxMeterRootDirective, RdxMeterTrackDirective, RdxMeterValueDirective, injectMeterRootContext, provideMeterRootContext };
271
+ //# sourceMappingURL=radix-ng-primitives-meter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-meter.mjs","sources":["../../../packages/primitives/meter/src/meter-root.directive.ts","../../../packages/primitives/meter/src/meter-indicator.directive.ts","../../../packages/primitives/meter/src/meter-label.directive.ts","../../../packages/primitives/meter/src/meter-track.directive.ts","../../../packages/primitives/meter/src/meter-value.directive.ts","../../../packages/primitives/meter/index.ts","../../../packages/primitives/meter/radix-ng-primitives-meter.ts"],"sourcesContent":["import { computed, Directive, inject, input, numberAttribute } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\n\nlet meterId = 0;\n\nexport type MeterValueFormatter = (formattedValue: string, value: number) => string;\n\nexport interface MeterProps {\n value: number;\n min?: number;\n max?: number;\n locale?: Intl.LocalesArgument;\n format?: Intl.NumberFormatOptions;\n ariaValueText?: string;\n getAriaValueText?: MeterValueFormatter;\n}\n\nconst DEFAULT_MIN = 0;\nconst DEFAULT_MAX = 100;\n\nconst isValidNumber = (value: unknown): value is number => typeof value === 'number' && !Number.isNaN(value);\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst meterRootContext = () => {\n const root = injectMeterRoot();\n\n return {\n labelId: root.labelId,\n valueId: root.valueId,\n minState: root.minState,\n maxState: root.maxState,\n valueState: root.valueState,\n percentageState: root.percentageState,\n formattedValueState: root.formattedValueState,\n ariaValueTextState: root.ariaValueTextState\n };\n};\n\nexport type RdxMeterRootContext = ReturnType<typeof meterRootContext>;\n\nexport const [injectMeterRootContext, provideMeterRootContext] = createContext<RdxMeterRootContext>('RdxMeterRoot');\n\n/**\n * Provides meter state and accessibility attributes.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterRoot]',\n exportAs: 'rdxMeterRoot',\n providers: [provideMeterRootContext(meterRootContext)],\n host: {\n role: 'meter',\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.aria-describedby]': 'valueId()',\n '[attr.aria-valuemin]': 'minState()',\n '[attr.aria-valuemax]': 'maxState()',\n '[attr.aria-valuenow]': 'valueState()',\n '[attr.aria-valuetext]': 'ariaValueTextState()',\n '[attr.data-value]': 'valueState()',\n '[attr.data-min]': 'minState()',\n '[attr.data-max]': 'maxState()',\n '[attr.data-percent]': 'percentageState()'\n }\n})\nexport class RdxMeterRootDirective {\n /**\n * Current meter value.\n *\n * @group Props\n */\n readonly value = input.required<number, unknown>({ transform: numberAttribute });\n\n /**\n * Minimum meter value.\n *\n * @group Props\n * @defaultValue 0\n */\n readonly min = input(DEFAULT_MIN, { transform: numberAttribute });\n\n /**\n * Maximum meter value.\n *\n * @group Props\n * @defaultValue 100\n */\n readonly max = input(DEFAULT_MAX, { transform: numberAttribute });\n\n /**\n * Locale used by `Intl.NumberFormat` when formatting the displayed value.\n *\n * @group Props\n */\n readonly locale = input<Intl.LocalesArgument>();\n\n /**\n * Number formatting options for the displayed value.\n *\n * @group Props\n */\n readonly format = input<Intl.NumberFormatOptions>();\n\n /**\n * Human-readable text alternative for the current value.\n *\n * @group Props\n */\n readonly ariaValueText = input<string | undefined>(undefined, {\n alias: 'aria-valuetext'\n });\n\n /**\n * Formats a human-readable text alternative for the current value.\n *\n * @group Props\n */\n readonly getAriaValueText = input<MeterValueFormatter>();\n\n readonly labelId = input(`rdx-meter-label-${meterId++}`);\n readonly valueId = input(`rdx-meter-value-${meterId++}`);\n\n readonly minState = computed(() => (isValidNumber(this.min()) ? this.min() : DEFAULT_MIN));\n readonly maxState = computed(() => {\n const min = this.minState();\n const max = this.max();\n\n return isValidNumber(max) && max > min ? max : min + DEFAULT_MAX;\n });\n\n readonly valueState = computed(() => {\n const value = this.value();\n\n return clamp(isValidNumber(value) ? value : this.minState(), this.minState(), this.maxState());\n });\n\n readonly percentageState = computed(() => {\n const min = this.minState();\n const max = this.maxState();\n\n return ((this.valueState() - min) / (max - min)) * 100;\n });\n\n readonly formattedValueState = computed(() => {\n const format = this.format();\n\n if (format) {\n return new Intl.NumberFormat(this.locale(), format).format(this.valueState());\n }\n\n return new Intl.NumberFormat(this.locale(), { style: 'percent' }).format(this.percentageState() / 100);\n });\n\n readonly ariaValueTextState = computed(() => {\n const explicitText = this.ariaValueText();\n\n if (explicitText !== undefined) {\n return explicitText;\n }\n\n return this.getAriaValueText()?.(this.formattedValueState(), this.valueState());\n });\n}\n\nfunction injectMeterRoot(): RdxMeterRootDirective {\n return inject(RdxMeterRootDirective);\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Displays the visual meter fill.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterIndicator]',\n exportAs: 'rdxMeterIndicator',\n host: {\n '[attr.data-value]': 'meter.valueState()',\n '[attr.data-min]': 'meter.minState()',\n '[attr.data-max]': 'meter.maxState()',\n '[attr.data-percent]': 'meter.percentageState()'\n }\n})\nexport class RdxMeterIndicatorDirective {\n protected readonly meter = injectMeterRootContext()!;\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Labels the meter.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterLabel]',\n exportAs: 'rdxMeterLabel',\n host: {\n '[attr.id]': 'meter.labelId()'\n }\n})\nexport class RdxMeterLabelDirective {\n protected readonly meter = injectMeterRootContext()!;\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Contains the visual meter indicator.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterTrack]',\n exportAs: 'rdxMeterTrack',\n host: {\n '[attr.data-value]': 'meter.valueState()',\n '[attr.data-min]': 'meter.minState()',\n '[attr.data-max]': 'meter.maxState()',\n '[attr.data-percent]': 'meter.percentageState()'\n }\n})\nexport class RdxMeterTrackDirective {\n protected readonly meter = injectMeterRootContext()!;\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Displays the formatted meter value.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterValue]',\n exportAs: 'rdxMeterValue',\n host: {\n '[attr.id]': 'meter.valueId()',\n '[textContent]': 'meter.formattedValueState()',\n '[attr.data-value]': 'meter.valueState()',\n '[attr.data-min]': 'meter.minState()',\n '[attr.data-max]': 'meter.maxState()',\n '[attr.data-percent]': 'meter.percentageState()'\n }\n})\nexport class RdxMeterValueDirective {\n protected readonly meter = injectMeterRootContext()!;\n}\n","import { NgModule } from '@angular/core';\nimport { RdxMeterIndicatorDirective } from './src/meter-indicator.directive';\nimport { RdxMeterLabelDirective } from './src/meter-label.directive';\nimport { RdxMeterRootDirective } from './src/meter-root.directive';\nimport { RdxMeterTrackDirective } from './src/meter-track.directive';\nimport { RdxMeterValueDirective } from './src/meter-value.directive';\n\nexport * from './src/meter-indicator.directive';\nexport * from './src/meter-label.directive';\nexport * from './src/meter-root.directive';\nexport * from './src/meter-track.directive';\nexport * from './src/meter-value.directive';\n\nexport type { MeterProps, MeterValueFormatter } from './src/meter-root.directive';\n\nconst _imports = [\n RdxMeterRootDirective,\n RdxMeterLabelDirective,\n RdxMeterValueDirective,\n RdxMeterTrackDirective,\n RdxMeterIndicatorDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxMeterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}