@radix-ng/primitives 0.4.0 → 0.6.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 (181) hide show
  1. package/alert-dialog/README.md +1 -0
  2. package/alert-dialog/index.d.ts +6 -0
  3. package/alert-dialog/src/alert-dialog-cancel.directive.d.ts +7 -0
  4. package/alert-dialog/src/alert-dialog-content.directive.d.ts +8 -0
  5. package/alert-dialog/src/alert-dialog-root.directive.d.ts +9 -0
  6. package/alert-dialog/src/alert-dialog-title.directive.d.ts +5 -0
  7. package/alert-dialog/src/alert-dialog-trigger.directive.d.ts +7 -0
  8. package/alert-dialog/src/alert-dialog.service.d.ts +14 -0
  9. package/avatar/index.d.ts +3 -1
  10. package/avatar/src/avatar-fallback.directive.d.ts +10 -17
  11. package/avatar/src/avatar-image.directive.d.ts +10 -11
  12. package/avatar/src/avatar-root.directive.d.ts +21 -0
  13. package/avatar/src/avatar.config.d.ts +3 -2
  14. package/checkbox/src/checkbox.directive.d.ts +2 -1
  15. package/collapsible/README.md +1 -0
  16. package/collapsible/index.d.ts +3 -0
  17. package/collapsible/src/collapsible-content.directive.d.ts +11 -0
  18. package/collapsible/src/collapsible-root.directive.d.ts +52 -0
  19. package/collapsible/src/collapsible-trigger.directive.d.ts +26 -0
  20. package/esm2022/alert-dialog/index.mjs +7 -0
  21. package/esm2022/alert-dialog/radix-ng-primitives-alert-dialog.mjs +5 -0
  22. package/esm2022/alert-dialog/src/alert-dialog-cancel.directive.mjs +24 -0
  23. package/esm2022/alert-dialog/src/alert-dialog-content.directive.mjs +26 -0
  24. package/esm2022/alert-dialog/src/alert-dialog-root.directive.mjs +24 -0
  25. package/esm2022/alert-dialog/src/alert-dialog-title.directive.mjs +14 -0
  26. package/esm2022/alert-dialog/src/alert-dialog-trigger.directive.mjs +24 -0
  27. package/esm2022/alert-dialog/src/alert-dialog.service.mjs +45 -0
  28. package/esm2022/avatar/index.mjs +2 -2
  29. package/esm2022/avatar/src/avatar-fallback.directive.mjs +23 -30
  30. package/esm2022/avatar/src/avatar-image.directive.mjs +29 -31
  31. package/esm2022/avatar/src/avatar-root.directive.mjs +38 -0
  32. package/esm2022/avatar/src/avatar.config.mjs +2 -2
  33. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +4 -4
  34. package/esm2022/checkbox/src/checkbox.directive.mjs +4 -4
  35. package/esm2022/collapsible/index.mjs +4 -0
  36. package/esm2022/collapsible/radix-ng-primitives-collapsible.mjs +5 -0
  37. package/esm2022/collapsible/src/collapsible-content.directive.mjs +26 -0
  38. package/esm2022/collapsible/src/collapsible-root.directive.mjs +114 -0
  39. package/esm2022/collapsible/src/collapsible-trigger.directive.mjs +49 -0
  40. package/esm2022/label/index.mjs +2 -2
  41. package/esm2022/label/src/label-root.directive.mjs +48 -0
  42. package/esm2022/progress/index.mjs +2 -2
  43. package/esm2022/progress/src/progress-indicator.directive.mjs +11 -10
  44. package/esm2022/progress/src/progress-root.directive.mjs +71 -0
  45. package/esm2022/radio/index.mjs +2 -4
  46. package/esm2022/radio/src/radio-indicator.directive.mjs +8 -13
  47. package/esm2022/radio/src/radio-item.directive.mjs +27 -42
  48. package/esm2022/radio/src/radio-root.directive.mjs +106 -0
  49. package/esm2022/roving-focus/index.mjs +1 -3
  50. package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +12 -18
  51. package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +21 -26
  52. package/esm2022/separator/src/separator.directive.mjs +12 -17
  53. package/esm2022/switch/index.mjs +2 -3
  54. package/esm2022/switch/src/switch-root.directive.mjs +74 -0
  55. package/esm2022/switch/src/switch-thumb.directive.mjs +10 -12
  56. package/esm2022/toggle/index.mjs +2 -2
  57. package/esm2022/toggle/src/toggle-root.directive.mjs +51 -0
  58. package/esm2022/toggle-group/index.mjs +6 -0
  59. package/esm2022/toggle-group/radix-ng-primitives-toggle-group.mjs +5 -0
  60. package/esm2022/toggle-group/src/toggle-group-button.directive.mjs +79 -0
  61. package/esm2022/toggle-group/src/toggle-group-button.token.mjs +6 -0
  62. package/esm2022/toggle-group/src/toggle-group-multi.directive.mjs +159 -0
  63. package/esm2022/toggle-group/src/toggle-group.directive.mjs +157 -0
  64. package/esm2022/toggle-group/src/toggle-group.token.mjs +6 -0
  65. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +150 -0
  66. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -0
  67. package/fesm2022/radix-ng-primitives-avatar.mjs +79 -90
  68. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  69. package/fesm2022/radix-ng-primitives-checkbox.mjs +6 -6
  70. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  71. package/fesm2022/radix-ng-primitives-collapsible.mjs +190 -0
  72. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -0
  73. package/fesm2022/radix-ng-primitives-label.mjs +20 -18
  74. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  75. package/fesm2022/radix-ng-primitives-progress.mjs +55 -49
  76. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  77. package/fesm2022/radix-ng-primitives-radio.mjs +70 -100
  78. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  79. package/fesm2022/radix-ng-primitives-roving-focus.mjs +22 -44
  80. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  81. package/fesm2022/radix-ng-primitives-separator.mjs +12 -17
  82. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  83. package/fesm2022/radix-ng-primitives-switch.mjs +49 -106
  84. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  85. package/fesm2022/radix-ng-primitives-toggle-group.mjs +397 -0
  86. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -0
  87. package/fesm2022/radix-ng-primitives-toggle.mjs +15 -29
  88. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  89. package/label/index.d.ts +1 -1
  90. package/label/src/label-root.directive.d.ts +13 -0
  91. package/package.json +18 -19
  92. package/progress/index.d.ts +2 -1
  93. package/progress/src/progress-indicator.directive.d.ts +2 -2
  94. package/progress/src/progress-root.directive.d.ts +29 -0
  95. package/radio/index.d.ts +1 -3
  96. package/radio/src/radio-indicator.directive.d.ts +3 -9
  97. package/radio/src/radio-item.directive.d.ts +9 -28
  98. package/radio/src/{radio-group.directive.d.ts → radio-root.directive.d.ts} +24 -16
  99. package/roving-focus/index.d.ts +0 -2
  100. package/roving-focus/src/roving-focus-group.directive.d.ts +5 -7
  101. package/roving-focus/src/roving-focus-item.directive.d.ts +6 -8
  102. package/separator/src/separator.directive.d.ts +14 -8
  103. package/switch/index.d.ts +2 -2
  104. package/switch/src/switch-root.directive.d.ts +35 -0
  105. package/switch/src/switch-thumb.directive.d.ts +2 -5
  106. package/toggle/index.d.ts +2 -1
  107. package/toggle/src/toggle-root.directive.d.ts +32 -0
  108. package/toggle-group/README.md +3 -0
  109. package/toggle-group/index.d.ts +5 -0
  110. package/toggle-group/src/toggle-group-button.directive.d.ts +39 -0
  111. package/toggle-group/src/toggle-group-button.token.d.ts +4 -0
  112. package/toggle-group/src/toggle-group-multi.directive.d.ts +90 -0
  113. package/toggle-group/src/toggle-group.directive.d.ts +90 -0
  114. package/toggle-group/src/toggle-group.token.d.ts +5 -0
  115. package/avatar/src/avatar.directive.d.ts +0 -22
  116. package/avatar/src/avatar.token.d.ts +0 -4
  117. package/esm2022/avatar/src/avatar.directive.mjs +0 -38
  118. package/esm2022/avatar/src/avatar.token.mjs +0 -6
  119. package/esm2022/label/src/label.directive.mjs +0 -46
  120. package/esm2022/overlay/index.mjs +0 -5
  121. package/esm2022/overlay/radix-ng-primitives-overlay.mjs +0 -5
  122. package/esm2022/overlay/src/overlay-arrow.directive.mjs +0 -59
  123. package/esm2022/overlay/src/overlay-arrow.token.mjs +0 -3
  124. package/esm2022/overlay/src/overlay-trigger.directive.mjs +0 -279
  125. package/esm2022/overlay/src/overlay-trigger.token.mjs +0 -9
  126. package/esm2022/overlay/src/overlay.directive.mjs +0 -51
  127. package/esm2022/overlay/src/overlay.token.mjs +0 -3
  128. package/esm2022/progress/src/progress.directive.mjs +0 -62
  129. package/esm2022/progress/src/progress.token.mjs +0 -6
  130. package/esm2022/radio/src/radio-group.directive.mjs +0 -108
  131. package/esm2022/radio/src/radio-group.token.mjs +0 -6
  132. package/esm2022/radio/src/radio-item.token.mjs +0 -6
  133. package/esm2022/roving-focus/src/roving-focus-group.token.mjs +0 -9
  134. package/esm2022/roving-focus/src/roving-focus-item.token.mjs +0 -6
  135. package/esm2022/switch/src/switch.directive.mjs +0 -125
  136. package/esm2022/switch/src/switch.token.mjs +0 -6
  137. package/esm2022/toggle/src/toggle.directive.mjs +0 -65
  138. package/esm2022/tooltip/index.mjs +0 -5
  139. package/esm2022/tooltip/radix-ng-primitives-tooltip.mjs +0 -5
  140. package/esm2022/tooltip/src/tooltip-arrow.directive.mjs +0 -17
  141. package/esm2022/tooltip/src/tooltip-trigger.directive.mjs +0 -148
  142. package/esm2022/tooltip/src/tooltip-trigger.token.mjs +0 -6
  143. package/esm2022/tooltip/src/tooltip.config.mjs +0 -31
  144. package/esm2022/tooltip/src/tooltip.directive.mjs +0 -46
  145. package/esm2022/visually-hidden/index.mjs +0 -2
  146. package/esm2022/visually-hidden/radix-ng-primitives-visually-hidden.mjs +0 -5
  147. package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +0 -42
  148. package/fesm2022/radix-ng-primitives-overlay.mjs +0 -399
  149. package/fesm2022/radix-ng-primitives-overlay.mjs.map +0 -1
  150. package/fesm2022/radix-ng-primitives-tooltip.mjs +0 -242
  151. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +0 -1
  152. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +0 -49
  153. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +0 -1
  154. package/label/src/label.directive.d.ts +0 -14
  155. package/overlay/README.md +0 -1
  156. package/overlay/index.d.ts +0 -4
  157. package/overlay/src/overlay-arrow.directive.d.ts +0 -29
  158. package/overlay/src/overlay-arrow.token.d.ts +0 -3
  159. package/overlay/src/overlay-trigger.directive.d.ts +0 -163
  160. package/overlay/src/overlay-trigger.token.d.ts +0 -7
  161. package/overlay/src/overlay.directive.d.ts +0 -29
  162. package/overlay/src/overlay.token.d.ts +0 -3
  163. package/progress/src/progress.directive.d.ts +0 -26
  164. package/progress/src/progress.token.d.ts +0 -4
  165. package/radio/src/radio-group.token.d.ts +0 -4
  166. package/radio/src/radio-item.token.d.ts +0 -4
  167. package/roving-focus/src/roving-focus-group.token.d.ts +0 -7
  168. package/roving-focus/src/roving-focus-item.token.d.ts +0 -4
  169. package/switch/src/switch.directive.d.ts +0 -73
  170. package/switch/src/switch.token.d.ts +0 -4
  171. package/toggle/src/toggle.directive.d.ts +0 -30
  172. package/tooltip/README.md +0 -1
  173. package/tooltip/index.d.ts +0 -4
  174. package/tooltip/src/tooltip-arrow.directive.d.ts +0 -6
  175. package/tooltip/src/tooltip-trigger.directive.d.ts +0 -79
  176. package/tooltip/src/tooltip-trigger.token.d.ts +0 -4
  177. package/tooltip/src/tooltip.config.d.ts +0 -46
  178. package/tooltip/src/tooltip.directive.d.ts +0 -17
  179. package/visually-hidden/README.md +0 -3
  180. package/visually-hidden/index.d.ts +0 -1
  181. package/visually-hidden/src/visually-hidden.directive.d.ts +0 -11
@@ -0,0 +1,79 @@
1
+ import { booleanAttribute, Directive, HostListener, Input } from '@angular/core';
2
+ import { injectRovingFocusItem, RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';
3
+ import { RdxToggleGroupButtonToken } from './toggle-group-button.token';
4
+ import { injectToggleGroup } from './toggle-group.token';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@radix-ng/primitives/roving-focus";
7
+ export class RdxToggleGroupButtonDirective {
8
+ constructor() {
9
+ /**
10
+ * Access the toggle group.
11
+ */
12
+ this.toggleGroup = injectToggleGroup();
13
+ /**
14
+ * Access the roving focus item.
15
+ */
16
+ this.rovingFocusItem = injectRovingFocusItem();
17
+ /**
18
+ * Whether this toggle button is disabled.
19
+ * @default false
20
+ */
21
+ this.disabled = false;
22
+ }
23
+ /**
24
+ * Whether this toggle button is checked.
25
+ */
26
+ get checked() {
27
+ return this.toggleGroup.isSelected(this.value);
28
+ }
29
+ ngOnChanges(changes) {
30
+ if ('disabled' in changes) {
31
+ this.updateDisabled();
32
+ }
33
+ }
34
+ /**
35
+ * Toggle this toggle button.
36
+ */
37
+ toggle() {
38
+ if (this.disabled) {
39
+ return;
40
+ }
41
+ this.toggleGroup.toggle(this.value);
42
+ }
43
+ /**
44
+ * Ensure the disabled state is propagated to the roving focus item.
45
+ * @internal
46
+ */
47
+ updateDisabled() {
48
+ this.rovingFocusItem.disabled = this.disabled || this.toggleGroup.disabled;
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxToggleGroupButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.11", type: RdxToggleGroupButtonDirective, isStandalone: true, selector: "button[rdxToggleGroupButton]", inputs: { value: ["rdxToggleGroupButtonValue", "value"], disabled: ["rdxToggleGroupButtonDisabled", "disabled", booleanAttribute] }, host: { attributes: { "role": "radio" }, listeners: { "click": "toggle()" }, properties: { "attr.aria-checked": "checked", "attr.aria-disabled": "disabled || toggleGroup.disabled", "attr.data-disabled": "disabled || toggleGroup.disabled", "attr.data-state": "checked ? \"on\" : \"off\"", "attr.data-orientation": "toggleGroup.orientation" } }, providers: [{ provide: RdxToggleGroupButtonToken, useExisting: RdxToggleGroupButtonDirective }], usesOnChanges: true, hostDirectives: [{ directive: i1.RdxRovingFocusItemDirective }], ngImport: i0 }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxToggleGroupButtonDirective, decorators: [{
54
+ type: Directive,
55
+ args: [{
56
+ selector: 'button[rdxToggleGroupButton]',
57
+ standalone: true,
58
+ hostDirectives: [RdxRovingFocusItemDirective],
59
+ providers: [{ provide: RdxToggleGroupButtonToken, useExisting: RdxToggleGroupButtonDirective }],
60
+ host: {
61
+ role: 'radio',
62
+ '[attr.aria-checked]': 'checked',
63
+ '[attr.aria-disabled]': 'disabled || toggleGroup.disabled',
64
+ '[attr.data-disabled]': 'disabled || toggleGroup.disabled',
65
+ '[attr.data-state]': 'checked ? "on" : "off"',
66
+ '[attr.data-orientation]': 'toggleGroup.orientation'
67
+ }
68
+ }]
69
+ }], propDecorators: { value: [{
70
+ type: Input,
71
+ args: [{ alias: 'rdxToggleGroupButtonValue', required: true }]
72
+ }], disabled: [{
73
+ type: Input,
74
+ args: [{ alias: 'rdxToggleGroupButtonDisabled', transform: booleanAttribute }]
75
+ }], toggle: [{
76
+ type: HostListener,
77
+ args: ['click']
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWdyb3VwLWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3RvZ2dsZS1ncm91cC9zcmMvdG9nZ2xlLWdyb3VwLWJ1dHRvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHUixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUM5QixNQUFNLG1DQUFtQyxDQUFDO0FBRTNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFnQnpELE1BQU0sT0FBTyw2QkFBNkI7SUFkMUM7UUFlSTs7V0FFRztRQUNnQixnQkFBVyxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFFckQ7O1dBRUc7UUFDYyxvQkFBZSxHQUFHLHFCQUFxQixFQUFFLENBQUM7UUFPM0Q7OztXQUdHO1FBQzRFLGFBQVEsR0FBRyxLQUFLLENBQUM7S0FrQ25HO0lBaENHOztPQUVHO0lBQ0gsSUFBYyxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFFSCxNQUFNO1FBQ0YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWM7UUFDVixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQy9FLENBQUM7K0dBckRRLDZCQUE2QjttR0FBN0IsNkJBQTZCLGdMQW9CcUIsZ0JBQWdCLHdXQTlCaEUsQ0FBQyxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxXQUFXLEVBQUUsNkJBQTZCLEVBQUUsQ0FBQzs7NEZBVXRGLDZCQUE2QjtrQkFkekMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsY0FBYyxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFdBQVcsK0JBQStCLEVBQUUsQ0FBQztvQkFDL0YsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxPQUFPO3dCQUNiLHFCQUFxQixFQUFFLFNBQVM7d0JBQ2hDLHNCQUFzQixFQUFFLGtDQUFrQzt3QkFDMUQsc0JBQXNCLEVBQUUsa0NBQWtDO3dCQUMxRCxtQkFBbUIsRUFBRSx3QkFBd0I7d0JBQzdDLHlCQUF5QixFQUFFLHlCQUF5QjtxQkFDdkQ7aUJBQ0o7OEJBZWtFLEtBQUs7c0JBQW5FLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFNa0IsUUFBUTtzQkFBdEYsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBbUI3RSxNQUFNO3NCQURMLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBEaXJlY3RpdmUsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIGluamVjdFJvdmluZ0ZvY3VzSXRlbSxcbiAgICBSZHhSb3ZpbmdGb2N1c0l0ZW1EaXJlY3RpdmVcbn0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcblxuaW1wb3J0IHsgUmR4VG9nZ2xlR3JvdXBCdXR0b25Ub2tlbiB9IGZyb20gJy4vdG9nZ2xlLWdyb3VwLWJ1dHRvbi50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RUb2dnbGVHcm91cCB9IGZyb20gJy4vdG9nZ2xlLWdyb3VwLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdidXR0b25bcmR4VG9nZ2xlR3JvdXBCdXR0b25dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlXSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFJkeFRvZ2dsZUdyb3VwQnV0dG9uVG9rZW4sIHVzZUV4aXN0aW5nOiBSZHhUb2dnbGVHcm91cEJ1dHRvbkRpcmVjdGl2ZSB9XSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdyYWRpbycsXG4gICAgICAgICdbYXR0ci5hcmlhLWNoZWNrZWRdJzogJ2NoZWNrZWQnLFxuICAgICAgICAnW2F0dHIuYXJpYS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgdG9nZ2xlR3JvdXAuZGlzYWJsZWQnLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgdG9nZ2xlR3JvdXAuZGlzYWJsZWQnLFxuICAgICAgICAnW2F0dHIuZGF0YS1zdGF0ZV0nOiAnY2hlY2tlZCA/IFwib25cIiA6IFwib2ZmXCInLFxuICAgICAgICAnW2F0dHIuZGF0YS1vcmllbnRhdGlvbl0nOiAndG9nZ2xlR3JvdXAub3JpZW50YXRpb24nXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhUb2dnbGVHcm91cEJ1dHRvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICogQWNjZXNzIHRoZSB0b2dnbGUgZ3JvdXAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvZ2dsZUdyb3VwID0gaW5qZWN0VG9nZ2xlR3JvdXAoKTtcblxuICAgIC8qKlxuICAgICAqIEFjY2VzcyB0aGUgcm92aW5nIGZvY3VzIGl0ZW0uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3ZpbmdGb2N1c0l0ZW0gPSBpbmplY3RSb3ZpbmdGb2N1c0l0ZW0oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZSBvZiB0aGlzIHRvZ2dsZSBidXR0b24uXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICdyZHhUb2dnbGVHcm91cEJ1dHRvblZhbHVlJywgcmVxdWlyZWQ6IHRydWUgfSkgdmFsdWUhOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgdG9nZ2xlIGJ1dHRvbiBpcyBkaXNhYmxlZC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAncmR4VG9nZ2xlR3JvdXBCdXR0b25EaXNhYmxlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIHRvZ2dsZSBidXR0b24gaXMgY2hlY2tlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUdyb3VwLmlzU2VsZWN0ZWQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2Rpc2FibGVkJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURpc2FibGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGUgdGhpcyB0b2dnbGUgYnV0dG9uLlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvZ2dsZUdyb3VwLnRvZ2dsZSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbnN1cmUgdGhlIGRpc2FibGVkIHN0YXRlIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIHJvdmluZyBmb2N1cyBpdGVtLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZURpc2FibGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdmluZ0ZvY3VzSXRlbS5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgdGhpcy50b2dnbGVHcm91cC5kaXNhYmxlZDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import { inject, InjectionToken } from '@angular/core';
2
+ export const RdxToggleGroupButtonToken = new InjectionToken('RdxToggleGroupButtonToken');
3
+ export function injectToggleGroupButton() {
4
+ return inject(RdxToggleGroupButtonToken);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWdyb3VwLWJ1dHRvbi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvdG9nZ2xlLWdyb3VwL3NyYy90b2dnbGUtZ3JvdXAtYnV0dG9uLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXZELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUN2RCwyQkFBMkIsQ0FDOUIsQ0FBQztBQUVGLE1BQU0sVUFBVSx1QkFBdUI7SUFDbkMsT0FBTyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IFJkeFRvZ2dsZUdyb3VwQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi90b2dnbGUtZ3JvdXAtYnV0dG9uLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBSZHhUb2dnbGVHcm91cEJ1dHRvblRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeFRvZ2dsZUdyb3VwQnV0dG9uRGlyZWN0aXZlPihcbiAgICAnUmR4VG9nZ2xlR3JvdXBCdXR0b25Ub2tlbidcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RUb2dnbGVHcm91cEJ1dHRvbigpOiBSZHhUb2dnbGVHcm91cEJ1dHRvbkRpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIGluamVjdChSZHhUb2dnbGVHcm91cEJ1dHRvblRva2VuKTtcbn1cbiJdfQ==
@@ -0,0 +1,159 @@
1
+ import { booleanAttribute, ContentChildren, Directive, EventEmitter, Input, QueryList } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { injectRovingFocusGroup, RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';
4
+ import { RdxToggleGroupButtonToken } from './toggle-group-button.token';
5
+ import { RdxToggleGroupToken } from './toggle-group.token';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@radix-ng/primitives/roving-focus";
8
+ export class RdxToggleGroupMultiDirective {
9
+ constructor() {
10
+ /**
11
+ * Access the roving focus group
12
+ */
13
+ this.rovingFocusGroup = injectRovingFocusGroup();
14
+ /**
15
+ * The selected toggle button.
16
+ */
17
+ this.value = [];
18
+ /**
19
+ * The orientation of the toggle group.
20
+ * @default 'horizontal'
21
+ */
22
+ this.orientation = 'horizontal';
23
+ /**
24
+ * Whether the toggle group is disabled.
25
+ * @default false
26
+ */
27
+ this.disabled = false;
28
+ /**
29
+ * Whether the toggle group roving focus should wrap.
30
+ * @default true
31
+ */
32
+ this.wrap = true;
33
+ /**
34
+ * Event emitted when the selected toggle button changes.
35
+ */
36
+ this.valueChange = new EventEmitter();
37
+ }
38
+ ngOnInit() {
39
+ // the toggle button group has a default orientation of horizontal
40
+ // whereas the roving focus group has a default orientation of vertical
41
+ // if the toggle button group input is not defined, the orientation will not be set
42
+ // in the roving focus group and the default vertical orientation will be used.
43
+ // we must initially set the orientation of the roving focus group to match the toggle button group orientation
44
+ this.rovingFocusGroup.setOrientation(this.orientation);
45
+ }
46
+ ngOnChanges(changes) {
47
+ if ('disabled' in changes) {
48
+ this.buttons?.forEach((button) => button.updateDisabled());
49
+ }
50
+ }
51
+ ngAfterContentInit() {
52
+ if (this.disabled) {
53
+ this.buttons?.forEach((button) => button.updateDisabled());
54
+ }
55
+ }
56
+ /**
57
+ * Determine if a value is selected.
58
+ * @param value The value to check.
59
+ * @returns Whether the value is selected.
60
+ * @internal
61
+ */
62
+ isSelected(value) {
63
+ return this.value.includes(value);
64
+ }
65
+ /**
66
+ * Toggle a value.
67
+ * @param value The value to toggle.
68
+ * @internal
69
+ */
70
+ toggle(value) {
71
+ if (this.disabled) {
72
+ return;
73
+ }
74
+ this.value = this.value.includes(value)
75
+ ? this.value.filter((v) => v !== value)
76
+ : [...this.value, value];
77
+ this.valueChange.emit(this.value);
78
+ this.onChange?.(this.value);
79
+ }
80
+ /**
81
+ * Select a value from Angular forms.
82
+ * @param value The value to select.
83
+ * @internal
84
+ */
85
+ writeValue(value) {
86
+ this.value = value;
87
+ }
88
+ /**
89
+ * Register a callback to be called when the value changes.
90
+ * @param fn The callback to register.
91
+ * @internal
92
+ */
93
+ registerOnChange(fn) {
94
+ this.onChange = fn;
95
+ }
96
+ /**
97
+ * Register a callback to be called when the toggle group is touched.
98
+ * @param fn The callback to register.
99
+ * @internal
100
+ */
101
+ registerOnTouched(fn) {
102
+ this.onTouched = fn;
103
+ }
104
+ /**
105
+ * Set the disabled state of the toggle group.
106
+ * @param isDisabled Whether the toggle group is disabled.
107
+ * @internal
108
+ */
109
+ setDisabledState(isDisabled) {
110
+ this.disabled = isDisabled;
111
+ this.buttons?.forEach((button) => button.updateDisabled());
112
+ }
113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxToggleGroupMultiDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
114
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.11", type: RdxToggleGroupMultiDirective, isStandalone: true, selector: "[rdxToggleGroupMulti]", inputs: { value: ["rdxToggleGroupMultiValue", "value"], orientation: ["rdxToggleGroupMultiOrientation", "orientation"], disabled: ["rdxToggleGroupMultiDisabled", "disabled", booleanAttribute], wrap: ["rdxToggleGroupMultiWrap", "wrap", booleanAttribute], valueChange: ["rdxToggleGroupMultiValueChange", "valueChange"] }, host: { attributes: { "role": "group" }, listeners: { "focusout": "onTouched?.()" }, properties: { "attr.data-orientation": "orientation" } }, providers: [
115
+ { provide: RdxToggleGroupToken, useExisting: RdxToggleGroupMultiDirective },
116
+ { provide: NG_VALUE_ACCESSOR, useExisting: RdxToggleGroupMultiDirective, multi: true }
117
+ ], queries: [{ propertyName: "buttons", predicate: RdxToggleGroupButtonToken }], usesOnChanges: true, hostDirectives: [{ directive: i1.RdxRovingFocusGroupDirective, inputs: ["rdxRovingFocusGroupWrap", "wrap", "rdxRovingFocusGroupOrientation", "orientation"] }], ngImport: i0 }); }
118
+ }
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxToggleGroupMultiDirective, decorators: [{
120
+ type: Directive,
121
+ args: [{
122
+ selector: '[rdxToggleGroupMulti]',
123
+ standalone: true,
124
+ hostDirectives: [
125
+ {
126
+ directive: RdxRovingFocusGroupDirective,
127
+ inputs: ['rdxRovingFocusGroupWrap:wrap', 'rdxRovingFocusGroupOrientation:orientation']
128
+ }
129
+ ],
130
+ providers: [
131
+ { provide: RdxToggleGroupToken, useExisting: RdxToggleGroupMultiDirective },
132
+ { provide: NG_VALUE_ACCESSOR, useExisting: RdxToggleGroupMultiDirective, multi: true }
133
+ ],
134
+ host: {
135
+ role: 'group',
136
+ '[attr.data-orientation]': 'orientation',
137
+ '(focusout)': 'onTouched?.()'
138
+ }
139
+ }]
140
+ }], propDecorators: { value: [{
141
+ type: Input,
142
+ args: ['rdxToggleGroupMultiValue']
143
+ }], orientation: [{
144
+ type: Input,
145
+ args: ['rdxToggleGroupMultiOrientation']
146
+ }], disabled: [{
147
+ type: Input,
148
+ args: [{ alias: 'rdxToggleGroupMultiDisabled', transform: booleanAttribute }]
149
+ }], wrap: [{
150
+ type: Input,
151
+ args: [{ alias: 'rdxToggleGroupMultiWrap', transform: booleanAttribute }]
152
+ }], valueChange: [{
153
+ type: Input,
154
+ args: ['rdxToggleGroupMultiValueChange']
155
+ }], buttons: [{
156
+ type: ContentChildren,
157
+ args: [RdxToggleGroupButtonToken]
158
+ }] } });
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWdyb3VwLW11bHRpLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvdG9nZ2xlLWdyb3VwL3NyYy90b2dnbGUtZ3JvdXAtbXVsdGkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUNILHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDL0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUczQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBcUIzRCxNQUFNLE9BQU8sNEJBQTRCO0lBbkJ6QztRQXNCSTs7V0FFRztRQUNjLHFCQUFnQixHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFFN0Q7O1dBRUc7UUFDZ0MsVUFBSyxHQUEwQixFQUFFLENBQUM7UUFFckU7OztXQUdHO1FBQ3NDLGdCQUFXLEdBQThCLFlBQVksQ0FBQztRQUUvRjs7O1dBR0c7UUFDMkUsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUvRjs7O1dBR0c7UUFDdUUsU0FBSSxHQUFHLElBQUksQ0FBQztRQUV0Rjs7V0FFRztRQUMrQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUU3RSxDQUFDO0tBdUdQO0lBckZHLFFBQVE7UUFDSixrRUFBa0U7UUFDbEUsdUVBQXVFO1FBQ3ZFLG1GQUFtRjtRQUNuRiwrRUFBK0U7UUFDL0UsK0dBQStHO1FBQy9HLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcs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RUFBRSxXQUFXLDhCQUE4QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7cUJBQ3pGO29CQUNELElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsT0FBTzt3QkFDYix5QkFBeUIsRUFBRSxhQUFhO3dCQUN4QyxZQUFZLEVBQUUsZUFBZTtxQkFDaEM7aUJBQ0o7OEJBWXNDLEtBQUs7c0JBQXZDLEtBQUs7dUJBQUMsMEJBQTBCO2dCQU1RLFdBQVc7c0JBQW5ELEtBQUs7dUJBQUMsZ0NBQWdDO2dCQU11QyxRQUFRO3NCQUFyRixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLDZCQUE2QixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFNRixJQUFJO3NCQUE3RSxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLdEIsV0FBVztzQkFBNUQsS0FBSzt1QkFBQyxnQ0FBZ0M7Z0JBUTdCLE9BQU87c0JBRGhCLGVBQWU7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgICBpbmplY3RSb3ZpbmdGb2N1c0dyb3VwLFxuICAgIFJkeFJvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmVcbn0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcblxuaW1wb3J0IHR5cGUgeyBSZHhUb2dnbGVHcm91cEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4vdG9nZ2xlLWdyb3VwLWJ1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4VG9nZ2xlR3JvdXBCdXR0b25Ub2tlbiB9IGZyb20gJy4vdG9nZ2xlLWdyb3VwLWJ1dHRvbi50b2tlbic7XG5pbXBvcnQgeyBSZHhUb2dnbGVHcm91cFRva2VuIH0gZnJvbSAnLi90b2dnbGUtZ3JvdXAudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhUb2dnbGVHcm91cE11bHRpXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IFJkeFJvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmUsXG4gICAgICAgICAgICBpbnB1dHM6IFsncmR4Um92aW5nRm9jdXNHcm91cFdyYXA6d3JhcCcsICdyZHhSb3ZpbmdGb2N1c0dyb3VwT3JpZW50YXRpb246b3JpZW50YXRpb24nXVxuICAgICAgICB9XG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBSZHhUb2dnbGVHcm91cFRva2VuLCB1c2VFeGlzdGluZzogUmR4VG9nZ2xlR3JvdXBNdWx0aURpcmVjdGl2ZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogUmR4VG9nZ2xlR3JvdXBNdWx0aURpcmVjdGl2ZSwgbXVsdGk6IHRydWUgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAnZ3JvdXAnLFxuICAgICAgICAnW2F0dHIuZGF0YS1vcmllbnRhdGlvbl0nOiAnb3JpZW50YXRpb24nLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdvblRvdWNoZWQ/LigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4VG9nZ2xlR3JvdXBNdWx0aURpcmVjdGl2ZVxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gICAgLyoqXG4gICAgICogQWNjZXNzIHRoZSByb3ZpbmcgZm9jdXMgZ3JvdXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdmluZ0ZvY3VzR3JvdXAgPSBpbmplY3RSb3ZpbmdGb2N1c0dyb3VwKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2VsZWN0ZWQgdG9nZ2xlIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoJ3JkeFRvZ2dsZUdyb3VwTXVsdGlWYWx1ZScpIHZhbHVlOiBSZWFkb25seUFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgdG9nZ2xlIGdyb3VwLlxuICAgICAqIEBkZWZhdWx0ICdob3Jpem9udGFsJ1xuICAgICAqL1xuICAgIEBJbnB1dCgncmR4VG9nZ2xlR3JvdXBNdWx0aU9yaWVudGF0aW9uJykgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0b2dnbGUgZ3JvdXAgaXMgZGlzYWJsZWQuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3JkeFRvZ2dsZUdyb3VwTXVsdGlEaXNhYmxlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdG9nZ2xlIGdyb3VwIHJvdmluZyBmb2N1cyBzaG91bGQgd3JhcC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICdyZHhUb2dnbGVHcm91cE11bHRpV3JhcCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB3cmFwID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgdG9nZ2xlIGJ1dHRvbiBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgncmR4VG9nZ2xlR3JvdXBNdWx0aVZhbHVlQ2hhbmdlJykgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgICAgICBSZWFkb25seUFycmF5PHN0cmluZz5cbiAgICA+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBY2Nlc3MgdGhlIGJ1dHRvbnMgaW4gdGhlIHRvZ2dsZSBncm91cC5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFJkeFRvZ2dsZUdyb3VwQnV0dG9uVG9rZW4pXG4gICAgcHJvdGVjdGVkIGJ1dHRvbnM/OiBRdWVyeUxpc3Q8UmR4VG9nZ2xlR3JvdXBCdXR0b25EaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIGNoYW5nZSBjYWxsYmFjay5cbiAgICAgKi9cbiAgICBwcml2YXRlIG9uQ2hhbmdlPzogKHZhbHVlOiBSZWFkb25seUFycmF5PHN0cmluZz4pID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBvblRvdWNoIGZ1bmN0aW9uIHJlZ2lzdGVyZWQgdmlhIHJlZ2lzdGVyT25Ub3VjaCAoQ29udHJvbFZhbHVlQWNjZXNzb3IpLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHRoZSB0b2dnbGUgYnV0dG9uIGdyb3VwIGhhcyBhIGRlZmF1bHQgb3JpZW50YXRpb24gb2YgaG9yaXpvbnRhbFxuICAgICAgICAvLyB3aGVyZWFzIHRoZSByb3ZpbmcgZm9jdXMgZ3JvdXAgaGFzIGEgZGVmYXVsdCBvcmllbnRhdGlvbiBvZiB2ZXJ0aWNhbFxuICAgICAgICAvLyBpZiB0aGUgdG9nZ2xlIGJ1dHRvbiBncm91cCBpbnB1dCBpcyBub3QgZGVmaW5lZCwgdGhlIG9yaWVudGF0aW9uIHdpbGwgbm90IGJlIHNldFxuICAgICAgICAvLyBpbiB0aGUgcm92aW5nIGZvY3VzIGdyb3VwIGFuZCB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBvcmllbnRhdGlvbiB3aWxsIGJlIHVzZWQuXG4gICAgICAgIC8vIHdlIG11c3QgaW5pdGlhbGx5IHNldCB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHJvdmluZyBmb2N1cyBncm91cCB0byBtYXRjaCB0aGUgdG9nZ2xlIGJ1dHRvbiBncm91cCBvcmllbnRhdGlvblxuICAgICAgICB0aGlzLnJvdmluZ0ZvY3VzR3JvdXAuc2V0T3JpZW50YXRpb24odGhpcy5vcmllbnRhdGlvbik7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2Rpc2FibGVkJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbnM/LmZvckVhY2goKGJ1dHRvbikgPT4gYnV0dG9uLnVwZGF0ZURpc2FibGVkKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5idXR0b25zPy5mb3JFYWNoKChidXR0b24pID0+IGJ1dHRvbi51cGRhdGVEaXNhYmxlZCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIHNlbGVjdGVkLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgc2VsZWN0ZWQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgaXNTZWxlY3RlZCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmluY2x1ZGVzKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGUgYSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHRvZ2dsZS5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB0b2dnbGUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuaW5jbHVkZXModmFsdWUpXG4gICAgICAgICAgICA/IHRoaXMudmFsdWUuZmlsdGVyKCh2KSA9PiB2ICE9PSB2YWx1ZSlcbiAgICAgICAgICAgIDogWy4uLnRoaXMudmFsdWUsIHZhbHVlXTtcblxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2U/Lih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYSB2YWx1ZSBmcm9tIEFuZ3VsYXIgZm9ybXMuXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzZWxlY3QuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogUmVhZG9ubHlBcnJheTxzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAqIEBwYXJhbSBmbiBUaGUgY2FsbGJhY2sgdG8gcmVnaXN0ZXIuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBSZWFkb25seUFycmF5PHN0cmluZz4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRvZ2dsZSBncm91cCBpcyB0b3VjaGVkLlxuICAgICAqIEBwYXJhbSBmbiBUaGUgY2FsbGJhY2sgdG8gcmVnaXN0ZXIuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSB0b2dnbGUgZ3JvdXAuXG4gICAgICogQHBhcmFtIGlzRGlzYWJsZWQgV2hldGhlciB0aGUgdG9nZ2xlIGdyb3VwIGlzIGRpc2FibGVkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5idXR0b25zPy5mb3JFYWNoKChidXR0b24pID0+IGJ1dHRvbi51cGRhdGVEaXNhYmxlZCgpKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,157 @@
1
+ import { booleanAttribute, ContentChildren, Directive, EventEmitter, Input, QueryList } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { injectRovingFocusGroup, RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';
4
+ import { RdxToggleGroupButtonToken } from './toggle-group-button.token';
5
+ import { RdxToggleGroupToken } from './toggle-group.token';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@radix-ng/primitives/roving-focus";
8
+ export class RdxToggleGroupDirective {
9
+ constructor() {
10
+ /**
11
+ * Access the roving focus group
12
+ */
13
+ this.rovingFocusGroup = injectRovingFocusGroup();
14
+ /**
15
+ * The selected toggle button.
16
+ */
17
+ this.value = null;
18
+ /**
19
+ * The orientation of the toggle group.
20
+ * @default 'horizontal'
21
+ */
22
+ this.orientation = 'horizontal';
23
+ /**
24
+ * Whether the toggle group is disabled.
25
+ * @default false
26
+ */
27
+ this.disabled = false;
28
+ /**
29
+ * Whether the toggle group roving focus should wrap.
30
+ * @default true
31
+ */
32
+ this.wrap = true;
33
+ /**
34
+ * Event emitted when the selected toggle button changes.
35
+ */
36
+ this.valueChange = new EventEmitter();
37
+ }
38
+ ngOnInit() {
39
+ // the toggle button group has a default orientation of horizontal
40
+ // whereas the roving focus group has a default orientation of vertical
41
+ // if the toggle button group input is not defined, the orientation will not be set
42
+ // in the roving focus group and the default vertical orientation will be used.
43
+ // we must initially set the orientation of the roving focus group to match the toggle button group orientation
44
+ this.rovingFocusGroup.setOrientation(this.orientation);
45
+ }
46
+ ngOnChanges(changes) {
47
+ if ('disabled' in changes) {
48
+ this.buttons?.forEach((button) => button.updateDisabled());
49
+ }
50
+ }
51
+ ngAfterContentInit() {
52
+ if (this.disabled) {
53
+ this.buttons?.forEach((button) => button.updateDisabled());
54
+ }
55
+ }
56
+ /**
57
+ * Determine if a value is selected.
58
+ * @param value The value to check.
59
+ * @returns Whether the value is selected.
60
+ * @internal
61
+ */
62
+ isSelected(value) {
63
+ return this.value === value;
64
+ }
65
+ /**
66
+ * Toggle a value.
67
+ * @param value The value to toggle.
68
+ * @internal
69
+ */
70
+ toggle(value) {
71
+ if (this.disabled) {
72
+ return;
73
+ }
74
+ this.value = this.value === value ? null : value;
75
+ this.valueChange.emit(this.value);
76
+ this.onChange?.(this.value);
77
+ }
78
+ /**
79
+ * Select a value from Angular forms.
80
+ * @param value The value to select.
81
+ * @internal
82
+ */
83
+ writeValue(value) {
84
+ this.value = value;
85
+ }
86
+ /**
87
+ * Register a callback to be called when the value changes.
88
+ * @param fn The callback to register.
89
+ * @internal
90
+ */
91
+ registerOnChange(fn) {
92
+ this.onChange = fn;
93
+ }
94
+ /**
95
+ * Register a callback to be called when the toggle group is touched.
96
+ * @param fn The callback to register.
97
+ * @internal
98
+ */
99
+ registerOnTouched(fn) {
100
+ this.onTouched = fn;
101
+ }
102
+ /**
103
+ * Set the disabled state of the toggle group.
104
+ * @param isDisabled Whether the toggle group is disabled.
105
+ * @internal
106
+ */
107
+ setDisabledState(isDisabled) {
108
+ this.disabled = isDisabled;
109
+ this.buttons?.forEach((button) => button.updateDisabled());
110
+ }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxToggleGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
112
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.11", type: RdxToggleGroupDirective, isStandalone: true, selector: "[rdxToggleGroup]", inputs: { value: ["rdxToggleGroupValue", "value"], orientation: ["rdxToggleGroupOrientation", "orientation"], disabled: ["rdxToggleGroupDisabled", "disabled", booleanAttribute], wrap: ["rdxToggleGroupWrap", "wrap", booleanAttribute], valueChange: ["rdxToggleGroupValueChange", "valueChange"] }, host: { attributes: { "role": "group" }, listeners: { "focusout": "onTouched?.()" }, properties: { "attr.data-orientation": "orientation" } }, providers: [
113
+ { provide: RdxToggleGroupToken, useExisting: RdxToggleGroupDirective },
114
+ { provide: NG_VALUE_ACCESSOR, useExisting: RdxToggleGroupDirective, multi: true }
115
+ ], queries: [{ propertyName: "buttons", predicate: RdxToggleGroupButtonToken }], usesOnChanges: true, hostDirectives: [{ directive: i1.RdxRovingFocusGroupDirective, inputs: ["rdxRovingFocusGroupWrap", "wrap", "rdxRovingFocusGroupOrientation", "orientation"] }], ngImport: i0 }); }
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxToggleGroupDirective, decorators: [{
118
+ type: Directive,
119
+ args: [{
120
+ selector: '[rdxToggleGroup]',
121
+ standalone: true,
122
+ hostDirectives: [
123
+ {
124
+ directive: RdxRovingFocusGroupDirective,
125
+ inputs: ['rdxRovingFocusGroupWrap:wrap', 'rdxRovingFocusGroupOrientation:orientation']
126
+ }
127
+ ],
128
+ providers: [
129
+ { provide: RdxToggleGroupToken, useExisting: RdxToggleGroupDirective },
130
+ { provide: NG_VALUE_ACCESSOR, useExisting: RdxToggleGroupDirective, multi: true }
131
+ ],
132
+ host: {
133
+ role: 'group',
134
+ '[attr.data-orientation]': 'orientation',
135
+ '(focusout)': 'onTouched?.()'
136
+ }
137
+ }]
138
+ }], propDecorators: { value: [{
139
+ type: Input,
140
+ args: ['rdxToggleGroupValue']
141
+ }], orientation: [{
142
+ type: Input,
143
+ args: ['rdxToggleGroupOrientation']
144
+ }], disabled: [{
145
+ type: Input,
146
+ args: [{ alias: 'rdxToggleGroupDisabled', transform: booleanAttribute }]
147
+ }], wrap: [{
148
+ type: Input,
149
+ args: [{ alias: 'rdxToggleGroupWrap', transform: booleanAttribute }]
150
+ }], valueChange: [{
151
+ type: Input,
152
+ args: ['rdxToggleGroupValueChange']
153
+ }], buttons: [{
154
+ type: ContentChildren,
155
+ args: [RdxToggleGroupButtonToken]
156
+ }] } });
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvdG9nZ2xlLWdyb3VwL3NyYy90b2dnbGUtZ3JvdXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUNILHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDL0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUczQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBcUIzRCxNQUFNLE9BQU8sdUJBQXVCO0lBbkJwQztRQXNCSTs7V0FFRztRQUNjLHFCQUFnQixHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFFN0Q7O1dBRUc7UUFDMkIsVUFBSyxHQUFrQixJQUFJLENBQUM7UUFFMUQ7OztXQUdHO1FBQ2lDLGdCQUFXLEdBQThCLFlBQVksQ0FBQztRQUUxRjs7O1dBR0c7UUFDc0UsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxRjs7O1dBR0c7UUFDa0UsU0FBSSxHQUFHLElBQUksQ0FBQztRQUVqRjs7V0FFRztRQUMwQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO0tBb0doRztJQWxGRyxRQUFRO1FBQ0osa0VBQWtFO1FBQ2xFLHVFQUF1RTtRQUN2RSxtRkFBbUY7UUFDbkYsK0VBQStFO1FBQy9FLCtHQUErRztRQUMvRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJ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QyxLQUFLO3NCQUFsQyxLQUFLO3VCQUFDLHFCQUFxQjtnQkFNUSxXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLDJCQUEyQjtnQkFNdUMsUUFBUTtzQkFBaEYsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTUYsSUFBSTtzQkFBeEUsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS3RCLFdBQVc7c0JBQXZELEtBQUs7dUJBQUMsMkJBQTJCO2dCQU14QixPQUFPO3NCQURoQixlQUFlO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gICAgaW5qZWN0Um92aW5nRm9jdXNHcm91cCxcbiAgICBSZHhSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlXG59IGZyb20gJ0ByYWRpeC1uZy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cyc7XG5cbmltcG9ydCB0eXBlIHsgUmR4VG9nZ2xlR3JvdXBCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL3RvZ2dsZS1ncm91cC1idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IFJkeFRvZ2dsZUdyb3VwQnV0dG9uVG9rZW4gfSBmcm9tICcuL3RvZ2dsZS1ncm91cC1idXR0b24udG9rZW4nO1xuaW1wb3J0IHsgUmR4VG9nZ2xlR3JvdXBUb2tlbiB9IGZyb20gJy4vdG9nZ2xlLWdyb3VwLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4VG9nZ2xlR3JvdXBdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZSxcbiAgICAgICAgICAgIGlucHV0czogWydyZHhSb3ZpbmdGb2N1c0dyb3VwV3JhcDp3cmFwJywgJ3JkeFJvdmluZ0ZvY3VzR3JvdXBPcmllbnRhdGlvbjpvcmllbnRhdGlvbiddXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IFJkeFRvZ2dsZUdyb3VwVG9rZW4sIHVzZUV4aXN0aW5nOiBSZHhUb2dnbGVHcm91cERpcmVjdGl2ZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogUmR4VG9nZ2xlR3JvdXBEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ2dyb3VwJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtb3JpZW50YXRpb25dJzogJ29yaWVudGF0aW9uJyxcbiAgICAgICAgJyhmb2N1c291dCknOiAnb25Ub3VjaGVkPy4oKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeFRvZ2dsZUdyb3VwRGlyZWN0aXZlXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgICAvKipcbiAgICAgKiBBY2Nlc3MgdGhlIHJvdmluZyBmb2N1cyBncm91cFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm92aW5nRm9jdXNHcm91cCA9IGluamVjdFJvdmluZ0ZvY3VzR3JvdXAoKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzZWxlY3RlZCB0b2dnbGUgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgncmR4VG9nZ2xlR3JvdXBWYWx1ZScpIHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgdG9nZ2xlIGdyb3VwLlxuICAgICAqIEBkZWZhdWx0ICdob3Jpem9udGFsJ1xuICAgICAqL1xuICAgIEBJbnB1dCgncmR4VG9nZ2xlR3JvdXBPcmllbnRhdGlvbicpIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdG9nZ2xlIGdyb3VwIGlzIGRpc2FibGVkLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICdyZHhUb2dnbGVHcm91cERpc2FibGVkJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0b2dnbGUgZ3JvdXAgcm92aW5nIGZvY3VzIHNob3VsZCB3cmFwLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3JkeFRvZ2dsZUdyb3VwV3JhcCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB3cmFwID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgdG9nZ2xlIGJ1dHRvbiBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgncmR4VG9nZ2xlR3JvdXBWYWx1ZUNoYW5nZScpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gICAgLyoqXG4gICAgICogQWNjZXNzIHRoZSBidXR0b25zIGluIHRoZSB0b2dnbGUgZ3JvdXAuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihSZHhUb2dnbGVHcm91cEJ1dHRvblRva2VuKVxuICAgIHByb3RlY3RlZCBidXR0b25zPzogUXVlcnlMaXN0PFJkeFRvZ2dsZUdyb3VwQnV0dG9uRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB2YWx1ZSBjaGFuZ2UgY2FsbGJhY2suXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIG9uVG91Y2ggZnVuY3Rpb24gcmVnaXN0ZXJlZCB2aWEgcmVnaXN0ZXJPblRvdWNoIChDb250cm9sVmFsdWVBY2Nlc3NvcikuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uVG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhlIHRvZ2dsZSBidXR0b24gZ3JvdXAgaGFzIGEgZGVmYXVsdCBvcmllbnRhdGlvbiBvZiBob3Jpem9udGFsXG4gICAgICAgIC8vIHdoZXJlYXMgdGhlIHJvdmluZyBmb2N1cyBncm91cCBoYXMgYSBkZWZhdWx0IG9yaWVudGF0aW9uIG9mIHZlcnRpY2FsXG4gICAgICAgIC8vIGlmIHRoZSB0b2dnbGUgYnV0dG9uIGdyb3VwIGlucHV0IGlzIG5vdCBkZWZpbmVkLCB0aGUgb3JpZW50YXRpb24gd2lsbCBub3QgYmUgc2V0XG4gICAgICAgIC8vIGluIHRoZSByb3ZpbmcgZm9jdXMgZ3JvdXAgYW5kIHRoZSBkZWZhdWx0IHZlcnRpY2FsIG9yaWVudGF0aW9uIHdpbGwgYmUgdXNlZC5cbiAgICAgICAgLy8gd2UgbXVzdCBpbml0aWFsbHkgc2V0IHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgcm92aW5nIGZvY3VzIGdyb3VwIHRvIG1hdGNoIHRoZSB0b2dnbGUgYnV0dG9uIGdyb3VwIG9yaWVudGF0aW9uXG4gICAgICAgIHRoaXMucm92aW5nRm9jdXNHcm91cC5zZXRPcmllbnRhdGlvbih0aGlzLm9yaWVudGF0aW9uKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnZGlzYWJsZWQnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9ucz8uZm9yRWFjaCgoYnV0dG9uKSA9PiBidXR0b24udXBkYXRlRGlzYWJsZWQoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbnM/LmZvckVhY2goKGJ1dHRvbikgPT4gYnV0dG9uLnVwZGF0ZURpc2FibGVkKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgc2VsZWN0ZWQuXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBzZWxlY3RlZC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBpc1NlbGVjdGVkKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSBhIHZhbHVlLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gdG9nZ2xlLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHRvZ2dsZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSA9PT0gdmFsdWUgPyBudWxsIDogdmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZT8uKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBhIHZhbHVlIGZyb20gQW5ndWxhciBmb3Jtcy5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlbGVjdC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayB0byByZWdpc3Rlci5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRvZ2dsZSBncm91cCBpcyB0b3VjaGVkLlxuICAgICAqIEBwYXJhbSBmbiBUaGUgY2FsbGJhY2sgdG8gcmVnaXN0ZXIuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSB0b2dnbGUgZ3JvdXAuXG4gICAgICogQHBhcmFtIGlzRGlzYWJsZWQgV2hldGhlciB0aGUgdG9nZ2xlIGdyb3VwIGlzIGRpc2FibGVkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5idXR0b25zPy5mb3JFYWNoKChidXR0b24pID0+IGJ1dHRvbi51cGRhdGVEaXNhYmxlZCgpKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import { inject, InjectionToken } from '@angular/core';
2
+ export const RdxToggleGroupToken = new InjectionToken('RdxToggleGroupToken');
3
+ export function injectToggleGroup() {
4
+ return inject(RdxToggleGroupToken);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWdyb3VwLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy90b2dnbGUtZ3JvdXAvc3JjL3RvZ2dsZS1ncm91cC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt2RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FFbkQscUJBQXFCLENBQUMsQ0FBQztBQUV6QixNQUFNLFVBQVUsaUJBQWlCO0lBQzdCLE9BQU8sTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBSZHhUb2dnbGVHcm91cE11bHRpRGlyZWN0aXZlIH0gZnJvbSAnLi90b2dnbGUtZ3JvdXAtbXVsdGkuZGlyZWN0aXZlJztcbmltcG9ydCB0eXBlIHsgUmR4VG9nZ2xlR3JvdXBEaXJlY3RpdmUgfSBmcm9tICcuL3RvZ2dsZS1ncm91cC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgUmR4VG9nZ2xlR3JvdXBUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgICBSZHhUb2dnbGVHcm91cERpcmVjdGl2ZSB8IFJkeFRvZ2dsZUdyb3VwTXVsdGlEaXJlY3RpdmVcbj4oJ1JkeFRvZ2dsZUdyb3VwVG9rZW4nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFRvZ2dsZUdyb3VwKCk6IFJkeFRvZ2dsZUdyb3VwRGlyZWN0aXZlIHwgUmR4VG9nZ2xlR3JvdXBNdWx0aURpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIGluamVjdChSZHhUb2dnbGVHcm91cFRva2VuKTtcbn1cbiJdfQ==
@@ -0,0 +1,150 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, inject, ViewContainerRef, Directive, Input, Renderer2, ElementRef } from '@angular/core';
3
+ import * as i1 from '@angular/cdk/overlay';
4
+ import { TemplatePortal } from '@angular/cdk/portal';
5
+
6
+ class AlertDialogService {
7
+ constructor(overlay) {
8
+ this.overlay = overlay;
9
+ }
10
+ setDialogContent(viewContainerRef, template) {
11
+ this.dialogContent = { viewContainerRef, template };
12
+ }
13
+ open() {
14
+ if (!this.dialogContent) {
15
+ throw new Error('Dialog content is not set');
16
+ }
17
+ this.overlayRef = this.overlay.create({
18
+ hasBackdrop: true,
19
+ backdropClass: 'cdk-overlay-dark-backdrop',
20
+ positionStrategy: this.overlay
21
+ .position()
22
+ .global()
23
+ .centerHorizontally()
24
+ .centerVertically()
25
+ });
26
+ const templatePortal = new TemplatePortal(this.dialogContent.template, this.dialogContent.viewContainerRef);
27
+ this.overlayRef.attach(templatePortal);
28
+ this.overlayRef.backdropClick().subscribe(() => this.close());
29
+ }
30
+ close() {
31
+ if (this.overlayRef) {
32
+ this.overlayRef.dispose();
33
+ this.overlayRef = null;
34
+ }
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogService, deps: [{ token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Injectable }); }
37
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogService, providedIn: 'root' }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogService, decorators: [{
40
+ type: Injectable,
41
+ args: [{
42
+ providedIn: 'root'
43
+ }]
44
+ }], ctorParameters: () => [{ type: i1.Overlay }] });
45
+
46
+ class AlertDialogRootDirective {
47
+ constructor() {
48
+ this.viewContainerRef = inject(ViewContainerRef);
49
+ this.alertDialogService = inject(AlertDialogService);
50
+ }
51
+ set content(template) {
52
+ this.alertDialogService.setDialogContent(this.viewContainerRef, template);
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: AlertDialogRootDirective, isStandalone: true, selector: "[rdxAlertDialogRoot]", inputs: { content: "content" }, ngImport: i0 }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogRootDirective, decorators: [{
58
+ type: Directive,
59
+ args: [{
60
+ selector: '[rdxAlertDialogRoot]',
61
+ standalone: true
62
+ }]
63
+ }], propDecorators: { content: [{
64
+ type: Input
65
+ }] } });
66
+
67
+ class AlertDialogCancelDirective {
68
+ constructor() {
69
+ this.alertDialogService = inject(AlertDialogService);
70
+ }
71
+ onClick() {
72
+ this.alertDialogService.close();
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogCancelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
75
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: AlertDialogCancelDirective, isStandalone: true, selector: "[rdxAlertDialogCancel]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogCancelDirective, decorators: [{
78
+ type: Directive,
79
+ args: [{
80
+ selector: '[rdxAlertDialogCancel]',
81
+ standalone: true,
82
+ host: {
83
+ '(click)': 'onClick()'
84
+ }
85
+ }]
86
+ }] });
87
+
88
+ class AlertDialogContentDirective {
89
+ constructor() {
90
+ this.renderer = inject(Renderer2);
91
+ this.elementRef = inject(ElementRef);
92
+ }
93
+ set maxWidth(value) {
94
+ this.renderer.setStyle(this.elementRef.nativeElement, 'maxWidth', value);
95
+ }
96
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
97
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: AlertDialogContentDirective, isStandalone: true, selector: "[rdxAlertDialogContent]", inputs: { maxWidth: "maxWidth" }, host: { properties: { "attr.data-state": "open" } }, ngImport: i0 }); }
98
+ }
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogContentDirective, decorators: [{
100
+ type: Directive,
101
+ args: [{
102
+ selector: '[rdxAlertDialogContent]',
103
+ standalone: true,
104
+ host: {
105
+ '[attr.data-state]': 'open'
106
+ }
107
+ }]
108
+ }], propDecorators: { maxWidth: [{
109
+ type: Input
110
+ }] } });
111
+
112
+ class AlertDialogTriggerDirective {
113
+ constructor() {
114
+ this.alertDialogService = inject(AlertDialogService);
115
+ }
116
+ handleClick() {
117
+ this.alertDialogService.open();
118
+ }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
120
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: AlertDialogTriggerDirective, isStandalone: true, selector: "[rdxAlertDialogTrigger]", host: { listeners: { "click": "handleClick()" } }, ngImport: i0 }); }
121
+ }
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogTriggerDirective, decorators: [{
123
+ type: Directive,
124
+ args: [{
125
+ selector: '[rdxAlertDialogTrigger]',
126
+ standalone: true,
127
+ host: {
128
+ '(click)': 'handleClick()'
129
+ }
130
+ }]
131
+ }] });
132
+
133
+ class AlertDialogTitleDirective {
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
135
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: AlertDialogTitleDirective, isStandalone: true, selector: "[rdxAlertDialogTitle]", ngImport: i0 }); }
136
+ }
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AlertDialogTitleDirective, decorators: [{
138
+ type: Directive,
139
+ args: [{
140
+ selector: '[rdxAlertDialogTitle]',
141
+ standalone: true
142
+ }]
143
+ }] });
144
+
145
+ /**
146
+ * Generated bundle index. Do not edit.
147
+ */
148
+
149
+ export { AlertDialogCancelDirective, AlertDialogContentDirective, AlertDialogRootDirective, AlertDialogService, AlertDialogTitleDirective, AlertDialogTriggerDirective };
150
+ //# sourceMappingURL=radix-ng-primitives-alert-dialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-alert-dialog.mjs","sources":["../../../packages/primitives/alert-dialog/src/alert-dialog.service.ts","../../../packages/primitives/alert-dialog/src/alert-dialog-root.directive.ts","../../../packages/primitives/alert-dialog/src/alert-dialog-cancel.directive.ts","../../../packages/primitives/alert-dialog/src/alert-dialog-content.directive.ts","../../../packages/primitives/alert-dialog/src/alert-dialog-trigger.directive.ts","../../../packages/primitives/alert-dialog/src/alert-dialog-title.directive.ts","../../../packages/primitives/alert-dialog/radix-ng-primitives-alert-dialog.ts"],"sourcesContent":["import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AlertDialogService {\n private overlayRef: OverlayRef | null | undefined;\n private dialogContent:\n | {\n viewContainerRef: ViewContainerRef;\n template: TemplateRef<any>;\n }\n | undefined;\n\n constructor(private overlay: Overlay) {}\n\n setDialogContent(viewContainerRef: ViewContainerRef, template: TemplateRef<any>) {\n this.dialogContent = { viewContainerRef, template };\n }\n\n open() {\n if (!this.dialogContent) {\n throw new Error('Dialog content is not set');\n }\n\n this.overlayRef = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically()\n });\n\n const templatePortal = new TemplatePortal(\n this.dialogContent.template,\n this.dialogContent.viewContainerRef\n );\n this.overlayRef.attach(templatePortal);\n\n this.overlayRef.backdropClick().subscribe(() => this.close());\n }\n\n close() {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n}\n","import { Directive, inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { AlertDialogService } from './alert-dialog.service';\n\n@Directive({\n selector: '[rdxAlertDialogRoot]',\n standalone: true\n})\nexport class AlertDialogRootDirective {\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly alertDialogService = inject(AlertDialogService);\n\n @Input() set content(template: TemplateRef<any>) {\n this.alertDialogService.setDialogContent(this.viewContainerRef, template);\n }\n}\n","import { Directive, inject } from '@angular/core';\n\nimport { AlertDialogService } from './alert-dialog.service';\n\n@Directive({\n selector: '[rdxAlertDialogCancel]',\n standalone: true,\n host: {\n '(click)': 'onClick()'\n }\n})\nexport class AlertDialogCancelDirective {\n private readonly alertDialogService = inject(AlertDialogService);\n\n onClick() {\n this.alertDialogService.close();\n }\n}\n","import { Directive, ElementRef, inject, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[rdxAlertDialogContent]',\n standalone: true,\n host: {\n '[attr.data-state]': 'open'\n }\n})\nexport class AlertDialogContentDirective {\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n\n @Input() set maxWidth(value: string) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'maxWidth', value);\n }\n}\n","import { Directive, inject } from '@angular/core';\n\nimport { AlertDialogService } from './alert-dialog.service';\n\n@Directive({\n selector: '[rdxAlertDialogTrigger]',\n standalone: true,\n host: {\n '(click)': 'handleClick()'\n }\n})\nexport class AlertDialogTriggerDirective {\n private readonly alertDialogService = inject(AlertDialogService);\n\n handleClick() {\n this.alertDialogService.open();\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxAlertDialogTitle]',\n standalone: true\n})\nexport class AlertDialogTitleDirective {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}