@radix-ng/primitives 0.3.0 → 0.5.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 (137) hide show
  1. package/accordion/README.md +3 -0
  2. package/accordion/index.d.ts +7 -0
  3. package/accordion/src/accordion/accordion.directive.d.ts +64 -0
  4. package/accordion/src/accordion/accordion.token.d.ts +4 -0
  5. package/accordion/src/accordion-content/accordion-content.directive.d.ts +44 -0
  6. package/accordion/src/accordion-header/accordion-header.directive.d.ts +6 -0
  7. package/accordion/src/accordion-item/accordion-item.directive.d.ts +42 -0
  8. package/accordion/src/accordion-item/accordion-item.token.d.ts +4 -0
  9. package/accordion/src/accordion-state.directive.d.ts +28 -0
  10. package/accordion/src/accordion-trigger/accordion-trigger.directive.d.ts +23 -0
  11. package/accordion/src/accordion.config.d.ts +25 -0
  12. package/checkbox/src/checkbox-indicator.directive.d.ts +4 -4
  13. package/checkbox/src/checkbox.directive.d.ts +3 -3
  14. package/checkbox/src/checkbox.token.d.ts +3 -3
  15. package/esm2022/accordion/index.mjs +8 -0
  16. package/esm2022/accordion/radix-ng-primitives-accordion.mjs +5 -0
  17. package/esm2022/accordion/src/accordion/accordion.directive.mjs +108 -0
  18. package/esm2022/accordion/src/accordion/accordion.token.mjs +6 -0
  19. package/esm2022/accordion/src/accordion-content/accordion-content.directive.mjs +75 -0
  20. package/esm2022/accordion/src/accordion-header/accordion-header.directive.mjs +17 -0
  21. package/esm2022/accordion/src/accordion-item/accordion-item.directive.mjs +81 -0
  22. package/esm2022/accordion/src/accordion-item/accordion-item.token.mjs +6 -0
  23. package/esm2022/accordion/src/accordion-state.directive.mjs +49 -0
  24. package/esm2022/accordion/src/accordion-trigger/accordion-trigger.directive.mjs +49 -0
  25. package/esm2022/accordion/src/accordion.config.mjs +27 -0
  26. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +5 -5
  27. package/esm2022/checkbox/src/checkbox.directive.mjs +10 -10
  28. package/esm2022/checkbox/src/checkbox.token.mjs +3 -3
  29. package/esm2022/label/src/label.directive.mjs +20 -6
  30. package/esm2022/overlay/src/overlay-arrow.directive.mjs +7 -7
  31. package/esm2022/overlay/src/overlay-arrow.token.mjs +2 -2
  32. package/esm2022/overlay/src/overlay-trigger.directive.mjs +7 -7
  33. package/esm2022/overlay/src/overlay-trigger.token.mjs +3 -3
  34. package/esm2022/overlay/src/overlay.directive.mjs +7 -7
  35. package/esm2022/overlay/src/overlay.token.mjs +2 -2
  36. package/esm2022/progress/src/progress-indicator.directive.mjs +5 -5
  37. package/esm2022/progress/src/progress.directive.mjs +7 -7
  38. package/esm2022/progress/src/progress.token.mjs +3 -3
  39. package/esm2022/radio/src/radio-group.directive.mjs +13 -13
  40. package/esm2022/radio/src/radio-group.token.mjs +3 -3
  41. package/esm2022/radio/src/radio-indicator.directive.mjs +5 -5
  42. package/esm2022/radio/src/radio-item.directive.mjs +9 -9
  43. package/esm2022/radio/src/radio-item.token.mjs +3 -3
  44. package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +10 -9
  45. package/esm2022/roving-focus/src/roving-focus-group.token.mjs +3 -3
  46. package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +7 -7
  47. package/esm2022/roving-focus/src/roving-focus-item.token.mjs +3 -3
  48. package/esm2022/separator/src/separator.directive.mjs +5 -5
  49. package/esm2022/switch/src/switch-thumb.directive.mjs +5 -5
  50. package/esm2022/switch/src/switch.directive.mjs +10 -10
  51. package/esm2022/switch/src/switch.token.mjs +3 -3
  52. package/esm2022/toggle/index.mjs +2 -0
  53. package/esm2022/toggle/radix-ng-primitives-toggle.mjs +5 -0
  54. package/esm2022/toggle/src/toggle.directive.mjs +65 -0
  55. package/esm2022/toggle-group/index.mjs +6 -0
  56. package/esm2022/toggle-group/radix-ng-primitives-toggle-group.mjs +5 -0
  57. package/esm2022/toggle-group/src/toggle-group-button.directive.mjs +79 -0
  58. package/esm2022/toggle-group/src/toggle-group-button.token.mjs +6 -0
  59. package/esm2022/toggle-group/src/toggle-group-multi.directive.mjs +159 -0
  60. package/esm2022/toggle-group/src/toggle-group.directive.mjs +157 -0
  61. package/esm2022/toggle-group/src/toggle-group.token.mjs +6 -0
  62. package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +5 -5
  63. package/fesm2022/radix-ng-primitives-accordion.mjs +394 -0
  64. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -0
  65. package/fesm2022/radix-ng-primitives-checkbox.mjs +15 -15
  66. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  67. package/fesm2022/radix-ng-primitives-label.mjs +20 -6
  68. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  69. package/fesm2022/radix-ng-primitives-overlay.mjs +20 -20
  70. package/fesm2022/radix-ng-primitives-overlay.mjs.map +1 -1
  71. package/fesm2022/radix-ng-primitives-progress.mjs +12 -12
  72. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  73. package/fesm2022/radix-ng-primitives-radio.mjs +26 -26
  74. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  75. package/fesm2022/radix-ng-primitives-roving-focus.mjs +18 -17
  76. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  77. package/fesm2022/radix-ng-primitives-separator.mjs +5 -5
  78. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  79. package/fesm2022/radix-ng-primitives-switch.mjs +15 -15
  80. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  81. package/fesm2022/radix-ng-primitives-toggle-group.mjs +397 -0
  82. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -0
  83. package/fesm2022/radix-ng-primitives-toggle.mjs +72 -0
  84. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -0
  85. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +5 -5
  86. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  87. package/label/src/label.directive.d.ts +8 -3
  88. package/overlay/src/overlay-arrow.directive.d.ts +3 -3
  89. package/overlay/src/overlay-arrow.token.d.ts +2 -2
  90. package/overlay/src/overlay-trigger.directive.d.ts +7 -7
  91. package/overlay/src/overlay-trigger.token.d.ts +3 -3
  92. package/overlay/src/overlay.directive.d.ts +3 -3
  93. package/overlay/src/overlay.token.d.ts +2 -2
  94. package/package.json +18 -6
  95. package/progress/src/progress-indicator.directive.d.ts +4 -4
  96. package/progress/src/progress.directive.d.ts +3 -3
  97. package/progress/src/progress.token.d.ts +3 -3
  98. package/radio/src/radio-group.directive.d.ts +3 -3
  99. package/radio/src/radio-group.token.d.ts +3 -3
  100. package/radio/src/radio-indicator.directive.d.ts +5 -5
  101. package/radio/src/radio-item.directive.d.ts +4 -4
  102. package/radio/src/radio-item.token.d.ts +3 -3
  103. package/roving-focus/src/roving-focus-group.directive.d.ts +7 -7
  104. package/roving-focus/src/roving-focus-group.token.d.ts +3 -3
  105. package/roving-focus/src/roving-focus-item.directive.d.ts +3 -3
  106. package/roving-focus/src/roving-focus-item.token.d.ts +3 -3
  107. package/separator/src/separator.directive.d.ts +3 -3
  108. package/switch/src/switch-thumb.directive.d.ts +4 -4
  109. package/switch/src/switch.directive.d.ts +3 -3
  110. package/switch/src/switch.token.d.ts +3 -3
  111. package/toggle/README.md +3 -0
  112. package/toggle/index.d.ts +1 -0
  113. package/toggle/src/toggle.directive.d.ts +30 -0
  114. package/toggle-group/README.md +3 -0
  115. package/toggle-group/index.d.ts +5 -0
  116. package/toggle-group/src/toggle-group-button.directive.d.ts +39 -0
  117. package/toggle-group/src/toggle-group-button.token.d.ts +4 -0
  118. package/toggle-group/src/toggle-group-multi.directive.d.ts +90 -0
  119. package/toggle-group/src/toggle-group.directive.d.ts +90 -0
  120. package/toggle-group/src/toggle-group.token.d.ts +5 -0
  121. package/visually-hidden/src/visually-hidden.directive.d.ts +3 -3
  122. package/esm2022/tooltip/index.mjs +0 -5
  123. package/esm2022/tooltip/radix-ng-primitives-tooltip.mjs +0 -5
  124. package/esm2022/tooltip/src/tooltip-arrow.directive.mjs +0 -17
  125. package/esm2022/tooltip/src/tooltip-trigger.directive.mjs +0 -148
  126. package/esm2022/tooltip/src/tooltip-trigger.token.mjs +0 -6
  127. package/esm2022/tooltip/src/tooltip.config.mjs +0 -31
  128. package/esm2022/tooltip/src/tooltip.directive.mjs +0 -46
  129. package/fesm2022/radix-ng-primitives-tooltip.mjs +0 -242
  130. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +0 -1
  131. package/tooltip/README.md +0 -1
  132. package/tooltip/index.d.ts +0 -4
  133. package/tooltip/src/tooltip-arrow.directive.d.ts +0 -6
  134. package/tooltip/src/tooltip-trigger.directive.d.ts +0 -79
  135. package/tooltip/src/tooltip-trigger.token.d.ts +0 -4
  136. package/tooltip/src/tooltip.config.d.ts +0 -46
  137. package/tooltip/src/tooltip.directive.d.ts +0 -17
@@ -0,0 +1,394 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, computed, Directive, ElementRef, ChangeDetectorRef, HostBinding, EventEmitter, booleanAttribute, Input, Output, HostListener, signal } from '@angular/core';
3
+ import * as i2 from '@radix-ng/primitives/roving-focus';
4
+ import { RdxRovingFocusItemDirective, injectRovingFocusGroup, RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';
5
+
6
+ const RdxAccordionItemToken = new InjectionToken('RdxAccordionItemToken');
7
+ function injectAccordionItem() {
8
+ return inject(RdxAccordionItemToken);
9
+ }
10
+
11
+ const RdxAccordionToken = new InjectionToken('NgpAccordionToken');
12
+ function injectAccordion() {
13
+ return inject(RdxAccordionToken);
14
+ }
15
+
16
+ class RdxAccordionStateDirective {
17
+ constructor() {
18
+ /**
19
+ * Access the accordion the trigger belongs to.
20
+ */
21
+ this.accordion = injectAccordion();
22
+ /**
23
+ * Access the item the trigger belongs to.
24
+ */
25
+ this.item = injectAccordionItem();
26
+ /**
27
+ * Determine the expanded state of the item.
28
+ * @internal
29
+ */
30
+ this.state = computed(() => (this.item.isExpanded() ? 'open' : 'closed'));
31
+ }
32
+ /**
33
+ * Determine the disabled state of the item.
34
+ * @internal
35
+ */
36
+ get isDisabled() {
37
+ return this.item.disabled || this.accordion.disabled;
38
+ }
39
+ /**
40
+ * Determine the orientation of the accordion.
41
+ * @internal
42
+ */
43
+ get orientation() {
44
+ return this.accordion.orientation;
45
+ }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
47
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxAccordionStateDirective, isStandalone: true, host: { properties: { "attr.data-state": "state()", "attr.data-disabled": "isDisabled", "attr.data-orientation": "orientation" } }, ngImport: i0 }); }
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionStateDirective, decorators: [{
50
+ type: Directive,
51
+ args: [{
52
+ standalone: true,
53
+ host: {
54
+ '[attr.data-state]': 'state()',
55
+ '[attr.data-disabled]': 'isDisabled',
56
+ '[attr.data-orientation]': 'orientation'
57
+ }
58
+ }]
59
+ }] });
60
+
61
+ class RdxAccordionContentDirective {
62
+ constructor() {
63
+ /**
64
+ * Access the element ref.
65
+ */
66
+ this.elementRef = inject(ElementRef);
67
+ /**
68
+ * Access the change detector ref.
69
+ */
70
+ this.changeDetectorRef = inject(ChangeDetectorRef);
71
+ /**
72
+ * Access the item the content belongs to.
73
+ */
74
+ this.item = inject(RdxAccordionItemToken);
75
+ /**
76
+ * Derive the id of the content.
77
+ * @internal
78
+ */
79
+ this.id = `${this.item.id}-content`;
80
+ /**
81
+ * Derive the id of the trigger.
82
+ * @internal
83
+ */
84
+ this.labelledby = `${this.item.id}-trigger`;
85
+ /**
86
+ * Define the width of the content as a CSS variable, so it can be used in animations.
87
+ * @internal
88
+ */
89
+ this.width = this.elementRef.nativeElement.scrollWidth;
90
+ /**
91
+ * Define the height of the content as a CSS variable, so it can be used in animations.
92
+ * @internal
93
+ */
94
+ this.height = this.elementRef.nativeElement.scrollHeight;
95
+ }
96
+ ngAfterViewInit() {
97
+ this.updateContentSize();
98
+ }
99
+ /**
100
+ * Update the size of the content.
101
+ */
102
+ updateContentSize() {
103
+ this.width = this.elementRef.nativeElement.scrollWidth;
104
+ this.height = this.elementRef.nativeElement.scrollHeight;
105
+ this.changeDetectorRef.detectChanges();
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
108
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxAccordionContentDirective, isStandalone: true, selector: "[rdxAccordionContent]", host: { attributes: { "role": "region" }, properties: { "id": "id", "attr.aria-labelledby": "labelledby", "style.display": "!item.isExpanded() ? \"none\": \"\"", "style.--rdx-accordion-content-width.px": "this.width", "style.--rdx-accordion-content-height.px": "this.height" } }, hostDirectives: [{ directive: RdxAccordionStateDirective }], ngImport: i0 }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionContentDirective, decorators: [{
111
+ type: Directive,
112
+ args: [{
113
+ selector: '[rdxAccordionContent]',
114
+ standalone: true,
115
+ host: {
116
+ role: 'region',
117
+ '[id]': 'id',
118
+ '[attr.aria-labelledby]': 'labelledby',
119
+ '[style.display]': '!item.isExpanded() ? "none": ""'
120
+ },
121
+ hostDirectives: [RdxAccordionStateDirective]
122
+ }]
123
+ }], propDecorators: { width: [{
124
+ type: HostBinding,
125
+ args: ['style.--rdx-accordion-content-width.px']
126
+ }], height: [{
127
+ type: HostBinding,
128
+ args: ['style.--rdx-accordion-content-height.px']
129
+ }] } });
130
+
131
+ class RdxAccordionHeaderDirective {
132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
133
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxAccordionHeaderDirective, isStandalone: true, selector: "[rdxAccordionHeader]", hostDirectives: [{ directive: RdxAccordionStateDirective }], ngImport: i0 }); }
134
+ }
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionHeaderDirective, decorators: [{
136
+ type: Directive,
137
+ args: [{
138
+ selector: '[rdxAccordionHeader]',
139
+ standalone: true,
140
+ hostDirectives: [RdxAccordionStateDirective]
141
+ }]
142
+ }] });
143
+
144
+ /**
145
+ * A unique id for the item.
146
+ */
147
+ let uniqueId = 0;
148
+ class RdxAccordionItemDirective {
149
+ constructor() {
150
+ /**
151
+ * Access the accordion the item belongs to.
152
+ */
153
+ this.accordion = injectAccordion();
154
+ /**
155
+ * Determines whether the item should be expanded.
156
+ * @default false
157
+ */
158
+ this.expanded = false;
159
+ /**
160
+ * Determines whether the Item should be disabled.
161
+ * @default false
162
+ */
163
+ this.disabled = false;
164
+ /**
165
+ * Event emitted when the Item is expanded.
166
+ */
167
+ this.expandedChange = new EventEmitter();
168
+ /**
169
+ * The unique id of the Item.
170
+ * @internal
171
+ */
172
+ this.id = `rdx-accordion-item-${uniqueId++}`;
173
+ /**
174
+ * Determine if this item is expanded.
175
+ * @internal
176
+ */
177
+ this.isExpanded = computed(() => this.accordion.expanded().includes(this.id));
178
+ }
179
+ /**
180
+ * Toggle the expanded state of the Item.
181
+ */
182
+ toggle() {
183
+ // If the accordion or Item is disabled, do nothing.
184
+ if (this.accordion.disabled || this.disabled) {
185
+ return;
186
+ }
187
+ if (this.isExpanded()) {
188
+ this.accordion.collapse(this.id);
189
+ }
190
+ else {
191
+ this.accordion.expand(this.id);
192
+ }
193
+ this.expandedChange.emit(this.isExpanded());
194
+ }
195
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
196
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RdxAccordionItemDirective, isStandalone: true, selector: "[rdxAccordionItem]", inputs: { expanded: ["rdxAccordionItemExpanded", "expanded", booleanAttribute], disabled: ["rdxAccordionItemDisabled", "disabled", booleanAttribute] }, outputs: { expandedChange: "rdxAccordionItemExpandedChange" }, providers: [{ provide: RdxAccordionItemToken, useExisting: RdxAccordionItemDirective }], hostDirectives: [{ directive: RdxAccordionStateDirective }, { directive: i2.RdxRovingFocusItemDirective }], ngImport: i0 }); }
197
+ }
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionItemDirective, decorators: [{
199
+ type: Directive,
200
+ args: [{
201
+ selector: '[rdxAccordionItem]',
202
+ standalone: true,
203
+ providers: [{ provide: RdxAccordionItemToken, useExisting: RdxAccordionItemDirective }],
204
+ hostDirectives: [RdxAccordionStateDirective, RdxRovingFocusItemDirective]
205
+ }]
206
+ }], propDecorators: { expanded: [{
207
+ type: Input,
208
+ args: [{ alias: 'rdxAccordionItemExpanded', transform: booleanAttribute }]
209
+ }], disabled: [{
210
+ type: Input,
211
+ args: [{ alias: 'rdxAccordionItemDisabled', transform: booleanAttribute }]
212
+ }], expandedChange: [{
213
+ type: Output,
214
+ args: ['rdxAccordionItemExpandedChange']
215
+ }] } });
216
+
217
+ class RdxAccordionTriggerDirective {
218
+ constructor() {
219
+ /**
220
+ * Access the item the trigger belongs to.
221
+ */
222
+ this.item = inject(RdxAccordionItemToken);
223
+ /**
224
+ * Get the id of the item content.
225
+ * @internal
226
+ */
227
+ this.contentId = `${this.item.id}-content`;
228
+ }
229
+ /**
230
+ * Derive the id of the trigger.
231
+ */
232
+ get triggerId() {
233
+ return `${this.item.id}-trigger`;
234
+ }
235
+ /**
236
+ * Toggle the expanded state of the item.
237
+ */
238
+ toggle() {
239
+ this.item.toggle();
240
+ }
241
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
242
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxAccordionTriggerDirective, isStandalone: true, selector: "[rdxAccordionTrigger]", host: { listeners: { "click": "toggle()" }, properties: { "id": "triggerId", "attr.aria-expanded": "item.isExpanded()", "attr.aria-controls": "contentId" } }, hostDirectives: [{ directive: RdxAccordionStateDirective }], ngImport: i0 }); }
243
+ }
244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionTriggerDirective, decorators: [{
245
+ type: Directive,
246
+ args: [{
247
+ selector: '[rdxAccordionTrigger]',
248
+ standalone: true,
249
+ hostDirectives: [RdxAccordionStateDirective],
250
+ host: {
251
+ '[id]': 'triggerId',
252
+ '[attr.aria-expanded]': 'item.isExpanded()',
253
+ '[attr.aria-controls]': 'contentId'
254
+ }
255
+ }]
256
+ }], propDecorators: { toggle: [{
257
+ type: HostListener,
258
+ args: ['click']
259
+ }] } });
260
+
261
+ const RdxAccordionConfigToken = new InjectionToken('RdxAccordionConfiguration');
262
+ const defaultAccordionConfig = {
263
+ multiple: false,
264
+ orientation: 'vertical'
265
+ };
266
+ /**
267
+ * Provide the default accordion configuration
268
+ * @param config The accordion configuration
269
+ * @returns The provider
270
+ */
271
+ function provideAccordionConfig(config) {
272
+ return [
273
+ {
274
+ provide: RdxAccordionConfigToken,
275
+ useValue: { ...defaultAccordionConfig, ...config }
276
+ }
277
+ ];
278
+ }
279
+ /**
280
+ * Inject the accordion configuration
281
+ * @returns The global accordion configuration
282
+ */
283
+ function injectAccordionConfig() {
284
+ return inject(RdxAccordionConfigToken, { optional: true }) ?? defaultAccordionConfig;
285
+ }
286
+
287
+ /**
288
+ * The root accordion directive that all parts should be placed within.
289
+ */
290
+ class RdxAccordionDirective {
291
+ constructor() {
292
+ /**
293
+ * Access the global accordion configuration.
294
+ */
295
+ this.config = injectAccordionConfig();
296
+ /**
297
+ * Access the roving focus group
298
+ */
299
+ this.rovingFocusGroup = injectRovingFocusGroup();
300
+ /**
301
+ * Determines whether multiple items can be open simultaneously.
302
+ * @default false
303
+ */
304
+ this.multiple = this.config.multiple;
305
+ /**
306
+ * The orientation of the accordion.
307
+ * @default 'vertical'
308
+ */
309
+ this.orientation = this.config.orientation;
310
+ /**
311
+ * Determines whether the accordion should be disabled.
312
+ * @default false
313
+ */
314
+ this.disabled = false;
315
+ /**
316
+ * Store the currently expanded item(s).
317
+ * @internal
318
+ */
319
+ this.expanded = signal([]);
320
+ }
321
+ ngOnInit() {
322
+ this.rovingFocusGroup.setOrientation(this.orientation);
323
+ }
324
+ /**
325
+ * Expand an item.
326
+ * @param id The id of the item to expand.
327
+ */
328
+ expand(id) {
329
+ this.expanded.set(this.multiple ? [...this.expanded(), id] : [id]);
330
+ }
331
+ /**
332
+ * Collapse an Item.
333
+ * @param id The id of the Item to collapse.
334
+ */
335
+ collapse(id) {
336
+ this.expanded.set(this.expanded().filter((expandedId) => expandedId !== id));
337
+ }
338
+ /**
339
+ * Toggle an item.
340
+ * @param id The id of the item to toggle.
341
+ */
342
+ toggle(id) {
343
+ if (this.expanded().includes(id)) {
344
+ this.collapse(id);
345
+ }
346
+ else {
347
+ this.expand(id);
348
+ }
349
+ }
350
+ /**
351
+ * Collapse all items.
352
+ */
353
+ collapseAll() {
354
+ this.expanded.set([]);
355
+ }
356
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
357
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RdxAccordionDirective, isStandalone: true, selector: "[rdxAccordion]", inputs: { multiple: ["rdxAccordionMultiple", "multiple", booleanAttribute], orientation: ["rdxAccordionOrientation", "orientation"], disabled: ["rdxAccordionDisabled", "disabled", booleanAttribute] }, host: { listeners: { "focusout": "onTouched?.()" }, properties: { "attr.data-orientation": "this.orientation" } }, providers: [{ provide: RdxAccordionToken, useExisting: RdxAccordionDirective }], hostDirectives: [{ directive: i2.RdxRovingFocusGroupDirective, inputs: ["rdxRovingFocusGroupOrientation", "orientation"] }], ngImport: i0 }); }
358
+ }
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxAccordionDirective, decorators: [{
360
+ type: Directive,
361
+ args: [{
362
+ selector: '[rdxAccordion]',
363
+ standalone: true,
364
+ hostDirectives: [
365
+ {
366
+ directive: RdxRovingFocusGroupDirective,
367
+ inputs: ['rdxRovingFocusGroupOrientation:orientation']
368
+ }
369
+ ],
370
+ providers: [{ provide: RdxAccordionToken, useExisting: RdxAccordionDirective }],
371
+ host: {
372
+ '(focusout)': 'onTouched?.()'
373
+ }
374
+ }]
375
+ }], propDecorators: { multiple: [{
376
+ type: Input,
377
+ args: [{ alias: 'rdxAccordionMultiple', transform: booleanAttribute }]
378
+ }], orientation: [{
379
+ type: HostBinding,
380
+ args: ['attr.data-orientation']
381
+ }, {
382
+ type: Input,
383
+ args: [{ alias: 'rdxAccordionOrientation' }]
384
+ }], disabled: [{
385
+ type: Input,
386
+ args: [{ alias: 'rdxAccordionDisabled', transform: booleanAttribute }]
387
+ }] } });
388
+
389
+ /**
390
+ * Generated bundle index. Do not edit.
391
+ */
392
+
393
+ export { RdxAccordionConfigToken, RdxAccordionContentDirective, RdxAccordionDirective, RdxAccordionHeaderDirective, RdxAccordionItemDirective, RdxAccordionStateDirective, RdxAccordionTriggerDirective, injectAccordionConfig, provideAccordionConfig };
394
+ //# sourceMappingURL=radix-ng-primitives-accordion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-accordion.mjs","sources":["../../../packages/primitives/accordion/src/accordion-item/accordion-item.token.ts","../../../packages/primitives/accordion/src/accordion/accordion.token.ts","../../../packages/primitives/accordion/src/accordion-state.directive.ts","../../../packages/primitives/accordion/src/accordion-content/accordion-content.directive.ts","../../../packages/primitives/accordion/src/accordion-header/accordion-header.directive.ts","../../../packages/primitives/accordion/src/accordion-item/accordion-item.directive.ts","../../../packages/primitives/accordion/src/accordion-trigger/accordion-trigger.directive.ts","../../../packages/primitives/accordion/src/accordion.config.ts","../../../packages/primitives/accordion/src/accordion/accordion.directive.ts","../../../packages/primitives/accordion/radix-ng-primitives-accordion.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { RdxAccordionItemDirective } from './accordion-item.directive';\n\nexport const RdxAccordionItemToken = new InjectionToken<RdxAccordionItemDirective>(\n 'RdxAccordionItemToken'\n);\n\nexport function injectAccordionItem(): RdxAccordionItemDirective {\n return inject(RdxAccordionItemToken);\n}\n","import { inject, InjectionToken } from '@angular/core';\n\nimport type { RdxAccordionDirective } from './accordion.directive';\n\nexport const RdxAccordionToken = new InjectionToken<RdxAccordionDirective>('NgpAccordionToken');\n\nexport function injectAccordion(): RdxAccordionDirective {\n return inject(RdxAccordionToken);\n}\n","import { computed, Directive } from '@angular/core';\n\nimport { injectAccordionItem } from './accordion-item/accordion-item.token';\nimport { injectAccordion } from './accordion/accordion.token';\n\n@Directive({\n standalone: true,\n host: {\n '[attr.data-state]': 'state()',\n '[attr.data-disabled]': 'isDisabled',\n '[attr.data-orientation]': 'orientation'\n }\n})\nexport class RdxAccordionStateDirective {\n /**\n * Access the accordion the trigger belongs to.\n */\n private readonly accordion = injectAccordion();\n\n /**\n * Access the item the trigger belongs to.\n */\n private readonly item = injectAccordionItem();\n\n /**\n * Determine the expanded state of the item.\n * @internal\n */\n readonly state = computed(() => (this.item.isExpanded() ? 'open' : 'closed'));\n\n /**\n * Determine the disabled state of the item.\n * @internal\n */\n get isDisabled(): boolean {\n return this.item.disabled || this.accordion.disabled;\n }\n\n /**\n * Determine the orientation of the accordion.\n * @internal\n */\n get orientation(): 'horizontal' | 'vertical' {\n return this.accordion.orientation;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n inject\n} from '@angular/core';\n\nimport { RdxAccordionItemToken } from '../accordion-item/accordion-item.token';\nimport { RdxAccordionStateDirective } from '../accordion-state.directive';\n\n@Directive({\n selector: '[rdxAccordionContent]',\n standalone: true,\n host: {\n role: 'region',\n '[id]': 'id',\n '[attr.aria-labelledby]': 'labelledby',\n '[style.display]': '!item.isExpanded() ? \"none\": \"\"'\n },\n hostDirectives: [RdxAccordionStateDirective]\n})\nexport class RdxAccordionContentDirective implements AfterViewInit {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the change detector ref.\n */\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Access the item the content belongs to.\n */\n protected readonly item = inject(RdxAccordionItemToken);\n\n /**\n * Derive the id of the content.\n * @internal\n */\n readonly id = `${this.item.id}-content`;\n\n /**\n * Derive the id of the trigger.\n * @internal\n */\n readonly labelledby = `${this.item.id}-trigger`;\n\n /**\n * Define the width of the content as a CSS variable, so it can be used in animations.\n * @internal\n */\n @HostBinding('style.--rdx-accordion-content-width.px')\n protected width = this.elementRef.nativeElement.scrollWidth;\n\n /**\n * Define the height of the content as a CSS variable, so it can be used in animations.\n * @internal\n */\n @HostBinding('style.--rdx-accordion-content-height.px')\n protected height = this.elementRef.nativeElement.scrollHeight;\n\n ngAfterViewInit(): void {\n this.updateContentSize();\n }\n\n /**\n * Update the size of the content.\n */\n private updateContentSize(): void {\n this.width = this.elementRef.nativeElement.scrollWidth;\n this.height = this.elementRef.nativeElement.scrollHeight;\n this.changeDetectorRef.detectChanges();\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { RdxAccordionStateDirective } from '../accordion-state.directive';\n\n@Directive({\n selector: '[rdxAccordionHeader]',\n standalone: true,\n hostDirectives: [RdxAccordionStateDirective]\n})\nexport class RdxAccordionHeaderDirective {}\n","import { booleanAttribute, computed, Directive, EventEmitter, Input, Output } from '@angular/core';\n\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\n\nimport { RdxAccordionStateDirective } from '../accordion-state.directive';\nimport { injectAccordion } from '../accordion/accordion.token';\nimport { RdxAccordionItemToken } from './accordion-item.token';\n\n/**\n * A unique id for the item.\n */\nlet uniqueId = 0;\n\n@Directive({\n selector: '[rdxAccordionItem]',\n standalone: true,\n providers: [{ provide: RdxAccordionItemToken, useExisting: RdxAccordionItemDirective }],\n hostDirectives: [RdxAccordionStateDirective, RdxRovingFocusItemDirective]\n})\nexport class RdxAccordionItemDirective {\n /**\n * Access the accordion the item belongs to.\n */\n private readonly accordion = injectAccordion();\n\n /**\n * Determines whether the item should be expanded.\n * @default false\n */\n @Input({ alias: 'rdxAccordionItemExpanded', transform: booleanAttribute }) expanded = false;\n\n /**\n * Determines whether the Item should be disabled.\n * @default false\n */\n @Input({ alias: 'rdxAccordionItemDisabled', transform: booleanAttribute }) disabled = false;\n\n /**\n * Event emitted when the Item is expanded.\n */\n @Output('rdxAccordionItemExpandedChange') readonly expandedChange = new EventEmitter<boolean>();\n\n /**\n * The unique id of the Item.\n * @internal\n */\n readonly id = `rdx-accordion-item-${uniqueId++}`;\n\n /**\n * Determine if this item is expanded.\n * @internal\n */\n readonly isExpanded = computed(() => this.accordion.expanded().includes(this.id));\n\n /**\n * Toggle the expanded state of the Item.\n */\n toggle(): void {\n // If the accordion or Item is disabled, do nothing.\n if (this.accordion.disabled || this.disabled) {\n return;\n }\n\n if (this.isExpanded()) {\n this.accordion.collapse(this.id);\n } else {\n this.accordion.expand(this.id);\n }\n\n this.expandedChange.emit(this.isExpanded());\n }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\n\nimport { RdxAccordionItemToken } from '../accordion-item/accordion-item.token';\nimport { RdxAccordionStateDirective } from '../accordion-state.directive';\n\n@Directive({\n selector: '[rdxAccordionTrigger]',\n standalone: true,\n hostDirectives: [RdxAccordionStateDirective],\n host: {\n '[id]': 'triggerId',\n '[attr.aria-expanded]': 'item.isExpanded()',\n '[attr.aria-controls]': 'contentId'\n }\n})\nexport class RdxAccordionTriggerDirective {\n /**\n * Access the item the trigger belongs to.\n */\n protected readonly item = inject(RdxAccordionItemToken);\n\n /**\n * Derive the id of the trigger.\n */\n protected get triggerId(): string {\n return `${this.item.id}-trigger`;\n }\n\n /**\n * Get the id of the item content.\n * @internal\n */\n protected readonly contentId = `${this.item.id}-content`;\n\n /**\n * Toggle the expanded state of the item.\n */\n @HostListener('click')\n toggle(): void {\n this.item.toggle();\n }\n}\n","import { inject, InjectionToken, Provider } from '@angular/core';\n\nexport const RdxAccordionConfigToken = new InjectionToken<RdxAccordionConfig>(\n 'RdxAccordionConfiguration'\n);\n\nexport interface RdxAccordionConfig {\n /**\n * Determines whether multiple items can be open simultaneously.\n * @default false\n */\n multiple: boolean;\n\n /**\n * The orientation of the accordion.\n * @default 'vertical'\n */\n orientation: 'horizontal' | 'vertical';\n}\n\nconst defaultAccordionConfig: RdxAccordionConfig = {\n multiple: false,\n orientation: 'vertical'\n};\n\n/**\n * Provide the default accordion configuration\n * @param config The accordion configuration\n * @returns The provider\n */\nexport function provideAccordionConfig(config: Partial<RdxAccordionConfig>): Provider[] {\n return [\n {\n provide: RdxAccordionConfigToken,\n useValue: { ...defaultAccordionConfig, ...config }\n }\n ];\n}\n\n/**\n * Inject the accordion configuration\n * @returns The global accordion configuration\n */\nexport function injectAccordionConfig(): RdxAccordionConfig {\n return inject(RdxAccordionConfigToken, { optional: true }) ?? defaultAccordionConfig;\n}\n","import { booleanAttribute, Directive, HostBinding, Input, OnInit, signal } from '@angular/core';\n\nimport {\n injectRovingFocusGroup,\n RdxRovingFocusGroupDirective\n} from '@radix-ng/primitives/roving-focus';\n\nimport { injectAccordionConfig } from '../accordion.config';\nimport { RdxAccordionToken } from './accordion.token';\n\n/**\n * The root accordion directive that all parts should be placed within.\n */\n@Directive({\n selector: '[rdxAccordion]',\n standalone: true,\n hostDirectives: [\n {\n directive: RdxRovingFocusGroupDirective,\n inputs: ['rdxRovingFocusGroupOrientation:orientation']\n }\n ],\n providers: [{ provide: RdxAccordionToken, useExisting: RdxAccordionDirective }],\n host: {\n '(focusout)': 'onTouched?.()'\n }\n})\nexport class RdxAccordionDirective implements OnInit {\n /**\n * Access the global accordion configuration.\n */\n private readonly config = injectAccordionConfig();\n\n /**\n * Access the roving focus group\n */\n private readonly rovingFocusGroup = injectRovingFocusGroup();\n\n /**\n * Determines whether multiple items can be open simultaneously.\n * @default false\n */\n @Input({ alias: 'rdxAccordionMultiple', transform: booleanAttribute }) multiple: boolean =\n this.config.multiple;\n\n /**\n * The orientation of the accordion.\n * @default 'vertical'\n */\n @HostBinding('attr.data-orientation')\n @Input({ alias: 'rdxAccordionOrientation' })\n orientation: 'horizontal' | 'vertical' = this.config.orientation;\n\n /**\n * Determines whether the accordion should be disabled.\n * @default false\n */\n @Input({ alias: 'rdxAccordionDisabled', transform: booleanAttribute }) disabled = false;\n\n /**\n * Store the currently expanded item(s).\n * @internal\n */\n readonly expanded = signal<string[]>([]);\n\n /**\n * The touched callback.\n */\n protected onTouched?: () => void;\n\n ngOnInit(): void {\n this.rovingFocusGroup.setOrientation(this.orientation);\n }\n /**\n * Expand an item.\n * @param id The id of the item to expand.\n */\n expand(id: string): void {\n this.expanded.set(this.multiple ? [...this.expanded(), id] : [id]);\n }\n\n /**\n * Collapse an Item.\n * @param id The id of the Item to collapse.\n */\n collapse(id: string): void {\n this.expanded.set(this.expanded().filter((expandedId) => expandedId !== id));\n }\n\n /**\n * Toggle an item.\n * @param id The id of the item to toggle.\n */\n toggle(id: string): void {\n if (this.expanded().includes(id)) {\n this.collapse(id);\n } else {\n this.expand(id);\n }\n }\n\n /**\n * Collapse all items.\n */\n collapseAll(): void {\n this.expanded.set([]);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RdxAccordionStateDirective","i1"],"mappings":"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"}
@@ -2,19 +2,19 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, Directive, EventEmitter, booleanAttribute, Input, Output, HostListener } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
 
5
- const CheckboxToken = new InjectionToken('CheckboxToken');
5
+ const RdxCheckboxToken = new InjectionToken('RdxCheckboxToken');
6
6
  function injectCheckbox() {
7
- return inject(CheckboxToken);
7
+ return inject(RdxCheckboxToken);
8
8
  }
9
9
 
10
- class CheckboxIndicatorDirective {
10
+ class RdxCheckboxIndicatorDirective {
11
11
  constructor() {
12
12
  this.checkbox = injectCheckbox();
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: CheckboxIndicatorDirective, isStandalone: true, selector: "[rdxCheckboxIndicator]", host: { properties: { "style.pointer-events": "\"none\"", "attr.data-state": "checkbox.state", "attr.data-disabled": "checkbox.disabled ? \"\" : null" } }, ngImport: i0 }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxCheckboxIndicatorDirective, isStandalone: true, selector: "[rdxCheckboxIndicator]", host: { properties: { "style.pointer-events": "\"none\"", "attr.data-state": "checkbox.state", "attr.data-disabled": "checkbox.disabled ? \"\" : null" } }, ngImport: i0 }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxIndicatorDirective, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxIndicatorDirective, decorators: [{
18
18
  type: Directive,
19
19
  args: [{
20
20
  selector: '[rdxCheckboxIndicator]',
@@ -27,7 +27,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
27
27
  }]
28
28
  }] });
29
29
 
30
- class CheckboxDirective {
30
+ class RdxCheckboxDirective {
31
31
  constructor() {
32
32
  /**
33
33
  * Defines whether the checkbox is checked.
@@ -110,20 +110,20 @@ class CheckboxDirective {
110
110
  setDisabledState(isDisabled) {
111
111
  this.disabled = isDisabled;
112
112
  }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
114
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: CheckboxDirective, isStandalone: true, selector: "button[rdxCheckbox]", inputs: { checked: ["checked", "checked", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { checkedChange: "checkedChange", indeterminateChange: "indeterminateChange" }, host: { attributes: { "type": "button", "role": "checkbox" }, listeners: { "keydown": "onKeydown($event)", "click": "onClick()", "blur": "onBlur()" }, properties: { "disabled": "disabled", "attr.aria-checked": "indeterminate ? \"mixed\" : checked", "attr.data-disabled": "disabled ? \"\" : null", "attr.data-state": "state" } }, providers: [
115
- { provide: CheckboxToken, useExisting: CheckboxDirective },
116
- { provide: NG_VALUE_ACCESSOR, useExisting: CheckboxDirective, multi: true }
113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
114
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RdxCheckboxDirective, isStandalone: true, selector: "button[rdxCheckbox]", inputs: { checked: ["checked", "checked", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { checkedChange: "checkedChange", indeterminateChange: "indeterminateChange" }, host: { attributes: { "type": "button", "role": "checkbox" }, listeners: { "keydown": "onKeydown($event)", "click": "onClick()", "blur": "onBlur()" }, properties: { "disabled": "disabled", "attr.aria-checked": "indeterminate ? \"mixed\" : checked", "attr.data-disabled": "disabled ? \"\" : null", "attr.data-state": "state" } }, providers: [
115
+ { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },
116
+ { provide: NG_VALUE_ACCESSOR, useExisting: RdxCheckboxDirective, multi: true }
117
117
  ], ngImport: i0 }); }
118
118
  }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxDirective, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxDirective, decorators: [{
120
120
  type: Directive,
121
121
  args: [{
122
122
  selector: 'button[rdxCheckbox]',
123
123
  standalone: true,
124
124
  providers: [
125
- { provide: CheckboxToken, useExisting: CheckboxDirective },
126
- { provide: NG_VALUE_ACCESSOR, useExisting: CheckboxDirective, multi: true }
125
+ { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },
126
+ { provide: NG_VALUE_ACCESSOR, useExisting: RdxCheckboxDirective, multi: true }
127
127
  ],
128
128
  host: {
129
129
  type: 'button',
@@ -162,5 +162,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
162
162
  * Generated bundle index. Do not edit.
163
163
  */
164
164
 
165
- export { CheckboxDirective, CheckboxIndicatorDirective, CheckboxToken, injectCheckbox };
165
+ export { RdxCheckboxDirective, RdxCheckboxIndicatorDirective, RdxCheckboxToken, injectCheckbox };
166
166
  //# 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-indicator.directive.ts","../../../packages/primitives/checkbox/src/checkbox.directive.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { CheckboxDirective } from './checkbox.directive';\n\nexport const CheckboxToken = new InjectionToken<CheckboxDirective>('CheckboxToken');\n\nexport function injectCheckbox(): CheckboxDirective {\n return inject(CheckboxToken);\n}\n","import { Directive } from '@angular/core';\n\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n selector: '[rdxCheckboxIndicator]',\n standalone: true,\n host: {\n '[style.pointer-events]': '\"none\"',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null'\n }\n})\nexport class CheckboxIndicatorDirective {\n protected readonly checkbox = injectCheckbox();\n}\n","import {\n booleanAttribute,\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CheckboxToken } from './checkbox.token';\n\n@Directive({\n selector: 'button[rdxCheckbox]',\n standalone: true,\n providers: [\n { provide: CheckboxToken, useExisting: CheckboxDirective },\n { provide: NG_VALUE_ACCESSOR, useExisting: CheckboxDirective, multi: true }\n ],\n host: {\n type: 'button',\n role: 'checkbox',\n '[disabled]': 'disabled',\n '[attr.aria-checked]': 'indeterminate ? \"mixed\" : checked',\n '[attr.data-disabled]': 'disabled ? \"\" : null',\n '[attr.data-state]': 'state'\n }\n})\nexport class CheckboxDirective implements ControlValueAccessor {\n /**\n * Defines whether the checkbox is checked.\n */\n @Input({ transform: booleanAttribute }) checked = false;\n\n /**\n * Defines whether the checkbox is indeterminate.\n */\n @Input({ transform: booleanAttribute })\n indeterminate = false;\n\n /**\n * Defines whether the checkbox is disabled.\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * Event emitted when the checkbox checked state changes.\n */\n @Output() readonly checkedChange = new EventEmitter<boolean>();\n\n /**\n * Event emitted when the indeterminate state changes.\n */\n @Output() readonly indeterminateChange = new EventEmitter<boolean>();\n\n /**\n * Determine the state\n */\n get state(): 'checked' | 'unchecked' | 'indeterminate' {\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 @HostListener('keydown', ['$event'])\n 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 @HostListener('click')\n onClick(): void {\n this.checked = this.indeterminate ? true : !this.checked;\n this.checkedChange.emit(this.checked);\n this.onChange?.(this.checked);\n\n // if the checkbox was indeterminate, it isn't anymore\n if (this.indeterminate) {\n this.indeterminate = false;\n this.indeterminateChange.emit(this.indeterminate);\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched?.();\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","/**\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-indicator.directive.ts","../../../packages/primitives/checkbox/src/checkbox.directive.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\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 { Directive } from '@angular/core';\n\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n selector: '[rdxCheckboxIndicator]',\n standalone: true,\n host: {\n '[style.pointer-events]': '\"none\"',\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 {\n booleanAttribute,\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { RdxCheckboxToken } from './checkbox.token';\n\n@Directive({\n selector: 'button[rdxCheckbox]',\n standalone: true,\n providers: [\n { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },\n { provide: NG_VALUE_ACCESSOR, useExisting: RdxCheckboxDirective, multi: true }\n ],\n host: {\n type: 'button',\n role: 'checkbox',\n '[disabled]': 'disabled',\n '[attr.aria-checked]': 'indeterminate ? \"mixed\" : checked',\n '[attr.data-disabled]': 'disabled ? \"\" : null',\n '[attr.data-state]': 'state'\n }\n})\nexport class RdxCheckboxDirective implements ControlValueAccessor {\n /**\n * Defines whether the checkbox is checked.\n */\n @Input({ transform: booleanAttribute }) checked = false;\n\n /**\n * Defines whether the checkbox is indeterminate.\n */\n @Input({ transform: booleanAttribute })\n indeterminate = false;\n\n /**\n * Defines whether the checkbox is disabled.\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * Event emitted when the checkbox checked state changes.\n */\n @Output() readonly checkedChange = new EventEmitter<boolean>();\n\n /**\n * Event emitted when the indeterminate state changes.\n */\n @Output() readonly indeterminateChange = new EventEmitter<boolean>();\n\n /**\n * Determine the state\n */\n get state(): 'checked' | 'unchecked' | 'indeterminate' {\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 @HostListener('keydown', ['$event'])\n 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 @HostListener('click')\n onClick(): void {\n this.checked = this.indeterminate ? true : !this.checked;\n this.checkedChange.emit(this.checked);\n this.onChange?.(this.checked);\n\n // if the checkbox was indeterminate, it isn't anymore\n if (this.indeterminate) {\n this.indeterminate = false;\n this.indeterminateChange.emit(this.indeterminate);\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched?.();\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,20 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, Optional, Input, HostListener } from '@angular/core';
2
+ import { signal, Directive, Optional, Input, HostListener } from '@angular/core';
3
3
 
4
- class LabelDirective {
4
+ // Increasing integer for generating unique ids.
5
+ let nextUniqueId = 0;
6
+ class RdxLabelDirective {
7
+ /** The HTML id of the Label. */
8
+ set id(id) {
9
+ this._id.set(id || this._id());
10
+ }
11
+ get id() {
12
+ return this._id();
13
+ }
5
14
  constructor(el) {
6
15
  this.el = el;
16
+ /** The HTML id attribute applied to this element. */
17
+ this._id = signal(`rdx-label-${nextUniqueId++}`);
7
18
  /**
8
19
  * The id of the element the label is associated with.
9
20
  * @default '-'
@@ -24,15 +35,16 @@ class LabelDirective {
24
35
  event.preventDefault();
25
36
  }
26
37
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LabelDirective, deps: [{ token: i0.ElementRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
28
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: LabelDirective, isStandalone: true, selector: "label[rdxLabel]", inputs: { htmlFor: "htmlFor" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "attr.for": "htmlFor ? htmlFor : null" } }, ngImport: i0 }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxLabelDirective, deps: [{ token: i0.ElementRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
39
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxLabelDirective, isStandalone: true, selector: "label[rdxLabel]", inputs: { htmlFor: "htmlFor", id: "id" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "id": "_id()", "attr.for": "htmlFor ? htmlFor : null" } }, ngImport: i0 }); }
29
40
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LabelDirective, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxLabelDirective, decorators: [{
31
42
  type: Directive,
32
43
  args: [{
33
44
  selector: 'label[rdxLabel]',
34
45
  standalone: true,
35
46
  host: {
47
+ '[id]': '_id()',
36
48
  '[attr.for]': 'htmlFor ? htmlFor : null'
37
49
  }
38
50
  }]
@@ -40,6 +52,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
40
52
  type: Optional
41
53
  }] }], propDecorators: { htmlFor: [{
42
54
  type: Input
55
+ }], id: [{
56
+ type: Input
43
57
  }], onMouseDown: [{
44
58
  type: HostListener,
45
59
  args: ['mousedown', ['$event']]
@@ -49,5 +63,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
49
63
  * Generated bundle index. Do not edit.
50
64
  */
51
65
 
52
- export { LabelDirective };
66
+ export { RdxLabelDirective };
53
67
  //# sourceMappingURL=radix-ng-primitives-label.mjs.map