ng-primitives 0.0.5

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 (243) hide show
  1. package/README.md +7 -0
  2. package/a11y/README.md +3 -0
  3. package/a11y/index.d.ts +8 -0
  4. package/a11y/visually-hidden/visually-hidden.directive.d.ts +5 -0
  5. package/accordion/README.md +3 -0
  6. package/accordion/accordion/accordion.directive.d.ts +45 -0
  7. package/accordion/accordion/accordion.token.d.ts +15 -0
  8. package/accordion/accordion-content/accordion-content.directive.d.ts +25 -0
  9. package/accordion/accordion-content/accordion-content.token.d.ts +15 -0
  10. package/accordion/accordion-item/accordion-item.directive.d.ts +45 -0
  11. package/accordion/accordion-item/accordion-item.token.d.ts +15 -0
  12. package/accordion/accordion-trigger/accordion-trigger.directive.d.ts +21 -0
  13. package/accordion/accordion-trigger/accordion-trigger.token.d.ts +15 -0
  14. package/accordion/config/accordion.config.d.ts +39 -0
  15. package/accordion/index.d.ts +16 -0
  16. package/avatar/README.md +3 -0
  17. package/avatar/avatar/avatar.directive.d.ts +22 -0
  18. package/avatar/avatar/avatar.token.d.ts +15 -0
  19. package/avatar/avatar-fallback/avatar-fallback.directive.d.ts +45 -0
  20. package/avatar/avatar-image/avatar-image.directive.d.ts +28 -0
  21. package/avatar/config/avatar.config.d.ts +28 -0
  22. package/avatar/index.d.ts +12 -0
  23. package/checkbox/README.md +3 -0
  24. package/checkbox/checkbox/checkbox.directive.d.ts +89 -0
  25. package/checkbox/checkbox/checkbox.token.d.ts +15 -0
  26. package/checkbox/checkbox-indicator/checkbox-indicator.directive.d.ts +19 -0
  27. package/checkbox/checkbox-indicator/checkbox-indicator.token.d.ts +15 -0
  28. package/checkbox/checkbox-input/checkbox-input.directive.d.ts +10 -0
  29. package/checkbox/checkbox-label/checkbox-label.directive.d.ts +9 -0
  30. package/checkbox/index.d.ts +13 -0
  31. package/esm2022/a11y/index.mjs +9 -0
  32. package/esm2022/a11y/ng-primitives-a11y.mjs +5 -0
  33. package/esm2022/a11y/visually-hidden/visually-hidden.directive.mjs +25 -0
  34. package/esm2022/accordion/accordion/accordion.directive.mjs +90 -0
  35. package/esm2022/accordion/accordion/accordion.token.mjs +17 -0
  36. package/esm2022/accordion/accordion-content/accordion-content.directive.mjs +55 -0
  37. package/esm2022/accordion/accordion-content/accordion-content.token.mjs +17 -0
  38. package/esm2022/accordion/accordion-item/accordion-item.directive.mjs +64 -0
  39. package/esm2022/accordion/accordion-item/accordion-item.token.mjs +17 -0
  40. package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +58 -0
  41. package/esm2022/accordion/accordion-trigger/accordion-trigger.token.mjs +17 -0
  42. package/esm2022/accordion/config/accordion.config.mjs +35 -0
  43. package/esm2022/accordion/index.mjs +17 -0
  44. package/esm2022/accordion/ng-primitives-accordion.mjs +5 -0
  45. package/esm2022/avatar/avatar/avatar.directive.mjs +45 -0
  46. package/esm2022/avatar/avatar/avatar.token.mjs +17 -0
  47. package/esm2022/avatar/avatar-fallback/avatar-fallback.directive.mjs +61 -0
  48. package/esm2022/avatar/avatar-image/avatar-image.directive.mjs +64 -0
  49. package/esm2022/avatar/config/avatar.config.mjs +33 -0
  50. package/esm2022/avatar/index.mjs +13 -0
  51. package/esm2022/avatar/ng-primitives-avatar.mjs +5 -0
  52. package/esm2022/checkbox/checkbox/checkbox.directive.mjs +141 -0
  53. package/esm2022/checkbox/checkbox/checkbox.token.mjs +17 -0
  54. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.directive.mjs +51 -0
  55. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.token.mjs +17 -0
  56. package/esm2022/checkbox/checkbox-input/checkbox-input.directive.mjs +40 -0
  57. package/esm2022/checkbox/checkbox-label/checkbox-label.directive.mjs +32 -0
  58. package/esm2022/checkbox/index.mjs +14 -0
  59. package/esm2022/checkbox/ng-primitives-checkbox.mjs +5 -0
  60. package/esm2022/index.mjs +10 -0
  61. package/esm2022/ng-primitives.mjs +5 -0
  62. package/esm2022/progress/index.mjs +10 -0
  63. package/esm2022/progress/ng-primitives-progress.mjs +5 -0
  64. package/esm2022/progress/progress/progress.directive.mjs +60 -0
  65. package/esm2022/progress/progress/progress.token.mjs +16 -0
  66. package/esm2022/progress/progress-indicator/progress-indicator.directive.mjs +33 -0
  67. package/esm2022/radio/index.mjs +13 -0
  68. package/esm2022/radio/ng-primitives-radio.mjs +5 -0
  69. package/esm2022/radio/radio-group/radio-group.directive.mjs +100 -0
  70. package/esm2022/radio/radio-group/radio-group.token.mjs +17 -0
  71. package/esm2022/radio/radio-indicator/radio-indicator.directive.mjs +41 -0
  72. package/esm2022/radio/radio-item/radio-item.directive.mjs +68 -0
  73. package/esm2022/radio/radio-item/radio-item.token.mjs +17 -0
  74. package/esm2022/resize/index.mjs +10 -0
  75. package/esm2022/resize/ng-primitives-resize.mjs +5 -0
  76. package/esm2022/resize/resize/resize.directive.mjs +49 -0
  77. package/esm2022/resize/utils/resize.mjs +41 -0
  78. package/esm2022/roving-focus/index.mjs +12 -0
  79. package/esm2022/roving-focus/ng-primitives-roving-focus.mjs +5 -0
  80. package/esm2022/roving-focus/roving-focus-group/roving-focus-group.directive.mjs +244 -0
  81. package/esm2022/roving-focus/roving-focus-group/roving-focus-group.token.mjs +17 -0
  82. package/esm2022/roving-focus/roving-focus-item/roving-focus-item.directive.mjs +98 -0
  83. package/esm2022/roving-focus/roving-focus-item/roving-focus-item.token.mjs +17 -0
  84. package/esm2022/select/index.mjs +16 -0
  85. package/esm2022/select/ng-primitives-select.mjs +5 -0
  86. package/esm2022/select/select/select.directive.mjs +54 -0
  87. package/esm2022/select/select/select.token.mjs +16 -0
  88. package/esm2022/select/select-button/select-button.directive.mjs +84 -0
  89. package/esm2022/select/select-button/select-button.token.mjs +16 -0
  90. package/esm2022/select/select-option/select-option.directive.mjs +90 -0
  91. package/esm2022/select/select-option/select-option.token.mjs +16 -0
  92. package/esm2022/select/select-options/select-options.directive.mjs +157 -0
  93. package/esm2022/select/select-options/select-options.token.mjs +16 -0
  94. package/esm2022/slider/index.mjs +16 -0
  95. package/esm2022/slider/ng-primitives-slider.mjs +5 -0
  96. package/esm2022/slider/slider/slider.directive.mjs +68 -0
  97. package/esm2022/slider/slider/slider.token.mjs +16 -0
  98. package/esm2022/slider/slider-range/slider-range.directive.mjs +36 -0
  99. package/esm2022/slider/slider-range/slider-range.token.mjs +16 -0
  100. package/esm2022/slider/slider-thumb/slider-thumb.directive.mjs +109 -0
  101. package/esm2022/slider/slider-thumb/slider-thumb.token.mjs +16 -0
  102. package/esm2022/slider/slider-track/slider-track.directive.mjs +54 -0
  103. package/esm2022/slider/slider-track/slider-track.token.mjs +16 -0
  104. package/esm2022/switch/index.mjs +11 -0
  105. package/esm2022/switch/ng-primitives-switch.mjs +5 -0
  106. package/esm2022/switch/switch/switch.directive.mjs +126 -0
  107. package/esm2022/switch/switch/switch.token.mjs +17 -0
  108. package/esm2022/switch/switch-thumb/switch-thumb.directive.mjs +32 -0
  109. package/esm2022/tabs/config/tabs.config.mjs +35 -0
  110. package/esm2022/tabs/index.mjs +15 -0
  111. package/esm2022/tabs/ng-primitives-tabs.mjs +5 -0
  112. package/esm2022/tabs/tab-button/tab-button.directive.mjs +84 -0
  113. package/esm2022/tabs/tab-list/tab-list.directive.mjs +34 -0
  114. package/esm2022/tabs/tab-panel/tab-panel.directive.mjs +62 -0
  115. package/esm2022/tabs/tab-panel/tab-panel.token.mjs +17 -0
  116. package/esm2022/tabs/tabset/tabset.directive.mjs +91 -0
  117. package/esm2022/tabs/tabset/tabset.token.mjs +17 -0
  118. package/esm2022/toggle/index.mjs +9 -0
  119. package/esm2022/toggle/ng-primitives-toggle.mjs +5 -0
  120. package/esm2022/toggle/toggle/toggle.directive.mjs +48 -0
  121. package/esm2022/tooltip/config/tooltip.config.mjs +38 -0
  122. package/esm2022/tooltip/index.mjs +13 -0
  123. package/esm2022/tooltip/ng-primitives-tooltip.mjs +5 -0
  124. package/esm2022/tooltip/tooltip/tooltip.directive.mjs +57 -0
  125. package/esm2022/tooltip/tooltip/tooltip.token.mjs +16 -0
  126. package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.directive.mjs +190 -0
  127. package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.token.mjs +23 -0
  128. package/esm2022/utils/helpers/disposables.mjs +72 -0
  129. package/esm2022/utils/helpers/focus-manager.mjs +28 -0
  130. package/esm2022/utils/helpers/unique-id.mjs +22 -0
  131. package/esm2022/utils/hover/hover.directive.mjs +183 -0
  132. package/esm2022/utils/hover/hover.token.mjs +16 -0
  133. package/esm2022/utils/index.mjs +14 -0
  134. package/esm2022/utils/ng-primitives-utils.mjs +5 -0
  135. package/esm2022/utils/ui/dimensions.mjs +40 -0
  136. package/fesm2022/ng-primitives-a11y.mjs +40 -0
  137. package/fesm2022/ng-primitives-a11y.mjs.map +1 -0
  138. package/fesm2022/ng-primitives-accordion.mjs +361 -0
  139. package/fesm2022/ng-primitives-accordion.mjs.map +1 -0
  140. package/fesm2022/ng-primitives-avatar.mjs +223 -0
  141. package/fesm2022/ng-primitives-avatar.mjs.map +1 -0
  142. package/fesm2022/ng-primitives-checkbox.mjs +299 -0
  143. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -0
  144. package/fesm2022/ng-primitives-progress.mjs +119 -0
  145. package/fesm2022/ng-primitives-progress.mjs.map +1 -0
  146. package/fesm2022/ng-primitives-radio.mjs +245 -0
  147. package/fesm2022/ng-primitives-radio.mjs.map +1 -0
  148. package/fesm2022/ng-primitives-resize.mjs +104 -0
  149. package/fesm2022/ng-primitives-resize.mjs.map +1 -0
  150. package/fesm2022/ng-primitives-roving-focus.mjs +384 -0
  151. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -0
  152. package/fesm2022/ng-primitives-select.mjs +442 -0
  153. package/fesm2022/ng-primitives-select.mjs.map +1 -0
  154. package/fesm2022/ng-primitives-slider.mjs +328 -0
  155. package/fesm2022/ng-primitives-slider.mjs.map +1 -0
  156. package/fesm2022/ng-primitives-switch.mjs +185 -0
  157. package/fesm2022/ng-primitives-switch.mjs.map +1 -0
  158. package/fesm2022/ng-primitives-tabs.mjs +337 -0
  159. package/fesm2022/ng-primitives-tabs.mjs.map +1 -0
  160. package/fesm2022/ng-primitives-toggle.mjs +63 -0
  161. package/fesm2022/ng-primitives-toggle.mjs.map +1 -0
  162. package/fesm2022/ng-primitives-tooltip.mjs +330 -0
  163. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -0
  164. package/fesm2022/ng-primitives-utils.mjs +370 -0
  165. package/fesm2022/ng-primitives-utils.mjs.map +1 -0
  166. package/fesm2022/ng-primitives.mjs +14 -0
  167. package/fesm2022/ng-primitives.mjs.map +1 -0
  168. package/index.d.ts +9 -0
  169. package/package.json +120 -0
  170. package/progress/README.md +3 -0
  171. package/progress/index.d.ts +9 -0
  172. package/progress/progress/progress.directive.d.ts +40 -0
  173. package/progress/progress/progress.token.d.ts +14 -0
  174. package/progress/progress-indicator/progress-indicator.directive.d.ts +9 -0
  175. package/radio/README.md +3 -0
  176. package/radio/index.d.ts +12 -0
  177. package/radio/radio-group/radio-group.directive.d.ts +71 -0
  178. package/radio/radio-group/radio-group.token.d.ts +15 -0
  179. package/radio/radio-indicator/radio-indicator.directive.d.ts +17 -0
  180. package/radio/radio-item/radio-item.directive.d.ts +41 -0
  181. package/radio/radio-item/radio-item.token.d.ts +15 -0
  182. package/resize/README.md +3 -0
  183. package/resize/index.d.ts +9 -0
  184. package/resize/resize/resize.directive.d.ts +31 -0
  185. package/resize/utils/resize.d.ts +18 -0
  186. package/roving-focus/README.md +3 -0
  187. package/roving-focus/index.d.ts +11 -0
  188. package/roving-focus/roving-focus-group/roving-focus-group.directive.d.ts +94 -0
  189. package/roving-focus/roving-focus-group/roving-focus-group.token.d.ts +15 -0
  190. package/roving-focus/roving-focus-item/roving-focus-item.directive.d.ts +57 -0
  191. package/roving-focus/roving-focus-item/roving-focus-item.token.d.ts +15 -0
  192. package/select/README.md +3 -0
  193. package/select/index.d.ts +15 -0
  194. package/select/select/select.directive.d.ts +35 -0
  195. package/select/select/select.token.d.ts +14 -0
  196. package/select/select-button/select-button.directive.d.ts +51 -0
  197. package/select/select-button/select-button.token.d.ts +14 -0
  198. package/select/select-option/select-option.directive.d.ts +57 -0
  199. package/select/select-option/select-option.token.d.ts +14 -0
  200. package/select/select-options/select-options.directive.d.ts +65 -0
  201. package/select/select-options/select-options.token.d.ts +14 -0
  202. package/slider/README.md +3 -0
  203. package/slider/index.d.ts +15 -0
  204. package/slider/slider/slider.directive.d.ts +45 -0
  205. package/slider/slider/slider.token.d.ts +14 -0
  206. package/slider/slider-range/slider-range.directive.d.ts +9 -0
  207. package/slider/slider-range/slider-range.token.d.ts +14 -0
  208. package/slider/slider-thumb/slider-thumb.directive.d.ts +21 -0
  209. package/slider/slider-thumb/slider-thumb.token.d.ts +14 -0
  210. package/slider/slider-track/slider-track.directive.d.ts +26 -0
  211. package/slider/slider-track/slider-track.token.d.ts +14 -0
  212. package/switch/README.md +3 -0
  213. package/switch/index.d.ts +10 -0
  214. package/switch/switch/switch.directive.d.ts +82 -0
  215. package/switch/switch/switch.token.d.ts +15 -0
  216. package/switch/switch-thumb/switch-thumb.directive.d.ts +9 -0
  217. package/tabs/README.md +3 -0
  218. package/tabs/config/tabs.config.d.ts +38 -0
  219. package/tabs/index.d.ts +14 -0
  220. package/tabs/tab-button/tab-button.directive.d.ts +54 -0
  221. package/tabs/tab-list/tab-list.directive.d.ts +9 -0
  222. package/tabs/tab-panel/tab-panel.directive.d.ts +32 -0
  223. package/tabs/tab-panel/tab-panel.token.d.ts +15 -0
  224. package/tabs/tabset/tabset.directive.d.ts +53 -0
  225. package/tabs/tabset/tabset.token.d.ts +15 -0
  226. package/toggle/README.md +3 -0
  227. package/toggle/index.d.ts +8 -0
  228. package/toggle/toggle/toggle.directive.d.ts +27 -0
  229. package/tooltip/README.md +3 -0
  230. package/tooltip/config/tooltip.config.d.ts +54 -0
  231. package/tooltip/index.d.ts +12 -0
  232. package/tooltip/tooltip/tooltip.directive.d.ts +30 -0
  233. package/tooltip/tooltip/tooltip.token.d.ts +14 -0
  234. package/tooltip/tooltip-trigger/tooltip-trigger.directive.d.ts +111 -0
  235. package/tooltip/tooltip-trigger/tooltip-trigger.token.d.ts +22 -0
  236. package/utils/README.md +3 -0
  237. package/utils/helpers/disposables.d.ts +40 -0
  238. package/utils/helpers/focus-manager.d.ts +19 -0
  239. package/utils/helpers/unique-id.d.ts +13 -0
  240. package/utils/hover/hover.directive.d.ts +62 -0
  241. package/utils/hover/hover.token.d.ts +14 -0
  242. package/utils/index.d.ts +13 -0
  243. package/utils/ui/dimensions.d.ts +9 -0
@@ -0,0 +1,328 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, Directive, HostListener, ElementRef, model, input, numberAttribute, booleanAttribute, contentChild, computed } from '@angular/core';
3
+
4
+ /**
5
+ * Copyright © 2024 Angular Primitives.
6
+ * https://github.com/ng-primitives/ng-primitives
7
+ *
8
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
9
+ * LICENSE file in the root directory of this source tree.
10
+ */
11
+ const NgpSliderToken = new InjectionToken('NgpSliderToken');
12
+ /**
13
+ * Inject the Slider directive instance
14
+ */
15
+ function injectSlider() {
16
+ return inject(NgpSliderToken);
17
+ }
18
+
19
+ /**
20
+ * Copyright © 2024 Angular Primitives.
21
+ * https://github.com/ng-primitives/ng-primitives
22
+ *
23
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
24
+ * LICENSE file in the root directory of this source tree.
25
+ */
26
+ const NgpSliderRangeToken = new InjectionToken('NgpSliderRangeToken');
27
+ /**
28
+ * Inject the SliderRange directive instance
29
+ */
30
+ function injectSliderRange() {
31
+ return inject(NgpSliderRangeToken);
32
+ }
33
+
34
+ /**
35
+ * Copyright © 2024 Angular Primitives.
36
+ * https://github.com/ng-primitives/ng-primitives
37
+ *
38
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
39
+ * LICENSE file in the root directory of this source tree.
40
+ */
41
+ class NgpSliderRange {
42
+ constructor() {
43
+ /**
44
+ * Access the slider.
45
+ */
46
+ this.slider = injectSlider();
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderRange, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
49
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpSliderRange, isStandalone: true, selector: "[ngpSliderRange]", host: { properties: { "style.width.%": "slider.orientation() === \"horizontal\" ? slider.percentage() : undefined", "style.height.%": "slider.orientation() === \"vertical\" ? slider.percentage() : undefined" }, classAttribute: "absolute h-full rounded-full bg-white" }, providers: [{ provide: NgpSliderRangeToken, useExisting: NgpSliderRange }], exportAs: ["ngpSliderRange"], ngImport: i0 }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderRange, decorators: [{
52
+ type: Directive,
53
+ args: [{
54
+ standalone: true,
55
+ selector: '[ngpSliderRange]',
56
+ exportAs: 'ngpSliderRange',
57
+ providers: [{ provide: NgpSliderRangeToken, useExisting: NgpSliderRange }],
58
+ host: {
59
+ class: 'absolute h-full rounded-full bg-white',
60
+ '[style.width.%]': 'slider.orientation() === "horizontal" ? slider.percentage() : undefined',
61
+ '[style.height.%]': 'slider.orientation() === "vertical" ? slider.percentage() : undefined',
62
+ },
63
+ }]
64
+ }] });
65
+
66
+ /**
67
+ * Copyright © 2024 Angular Primitives.
68
+ * https://github.com/ng-primitives/ng-primitives
69
+ *
70
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
71
+ * LICENSE file in the root directory of this source tree.
72
+ */
73
+ const NgpSliderThumbToken = new InjectionToken('NgpSliderThumbToken');
74
+ /**
75
+ * Inject the SliderThumb directive instance
76
+ */
77
+ function injectSliderThumb() {
78
+ return inject(NgpSliderThumbToken);
79
+ }
80
+
81
+ /**
82
+ * Copyright © 2024 Angular Primitives.
83
+ * https://github.com/ng-primitives/ng-primitives
84
+ *
85
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
86
+ * LICENSE file in the root directory of this source tree.
87
+ */
88
+ class NgpSliderThumb {
89
+ constructor() {
90
+ /**
91
+ * Access the slider.
92
+ */
93
+ this.slider = injectSlider();
94
+ /**
95
+ * Store the dragging state.
96
+ */
97
+ this.dragging = false;
98
+ }
99
+ handlePointerDown(event) {
100
+ event.preventDefault();
101
+ if (this.slider.disabled()) {
102
+ return;
103
+ }
104
+ this.dragging = true;
105
+ }
106
+ handlePointerUp() {
107
+ if (this.slider.disabled()) {
108
+ return;
109
+ }
110
+ this.dragging = false;
111
+ }
112
+ handlePointerMove(event) {
113
+ if (this.slider.disabled() || !this.dragging) {
114
+ return;
115
+ }
116
+ const rect = this.slider.track()?.element.nativeElement.getBoundingClientRect();
117
+ if (!rect) {
118
+ return;
119
+ }
120
+ const percentage = this.slider.orientation() === 'horizontal'
121
+ ? (event.clientX - rect.left) / rect.width
122
+ : 1 - (event.clientY - rect.top) / rect.height;
123
+ this.slider.value.set(this.slider.min() +
124
+ (this.slider.max() - this.slider.min()) * Math.max(0, Math.min(1, percentage)));
125
+ }
126
+ /**
127
+ * Handle keyboard events.
128
+ * @param event
129
+ */
130
+ handleKeydown(event) {
131
+ const multiplier = event.shiftKey ? 10 : 1;
132
+ switch (event.key) {
133
+ case 'ArrowLeft':
134
+ case 'ArrowDown':
135
+ this.slider.value.update(value => Math.max(value - this.slider.step() * multiplier, this.slider.min()));
136
+ break;
137
+ case 'ArrowRight':
138
+ case 'ArrowUp':
139
+ this.slider.value.update(value => Math.min(value + this.slider.step() * multiplier, this.slider.max()));
140
+ break;
141
+ case 'Home':
142
+ this.slider.value.set(this.slider.min());
143
+ break;
144
+ case 'End':
145
+ this.slider.value.set(this.slider.max());
146
+ break;
147
+ }
148
+ }
149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderThumb, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
150
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpSliderThumb, isStandalone: true, selector: "[ngpSliderThumb]", host: { attributes: { "role": "slider" }, listeners: { "pointerdown": "handlePointerDown($event)", "document:pointerup": "handlePointerUp()", "document:pointermove": "handlePointerMove($event)", "keydown": "handleKeydown($event)" }, properties: { "attr.aria-valuemin": "slider.min()", "attr.aria-valuemax": "slider.max()", "attr.aria-valuenow": "slider.value()", "attr.aria-orientation": "slider.orientation()", "tabindex": "slider.disabled() ? -1 : 0", "attr.data-orientation": "slider.orientation()", "attr.data-disabled": "slider.disabled()", "style.inset-inline-start.%": "slider.orientation() === \"horizontal\" ? slider.percentage() : undefined", "style.inset-block-start.%": "slider.orientation() === \"vertical\" ? slider.percentage() : undefined" } }, providers: [{ provide: NgpSliderThumbToken, useExisting: NgpSliderThumb }], exportAs: ["ngpSliderThumb"], ngImport: i0 }); }
151
+ }
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderThumb, decorators: [{
153
+ type: Directive,
154
+ args: [{
155
+ standalone: true,
156
+ selector: '[ngpSliderThumb]',
157
+ exportAs: 'ngpSliderThumb',
158
+ providers: [{ provide: NgpSliderThumbToken, useExisting: NgpSliderThumb }],
159
+ host: {
160
+ role: 'slider',
161
+ '[attr.aria-valuemin]': 'slider.min()',
162
+ '[attr.aria-valuemax]': 'slider.max()',
163
+ '[attr.aria-valuenow]': 'slider.value()',
164
+ '[attr.aria-orientation]': 'slider.orientation()',
165
+ '[tabindex]': 'slider.disabled() ? -1 : 0',
166
+ '[attr.data-orientation]': 'slider.orientation()',
167
+ '[attr.data-disabled]': 'slider.disabled()',
168
+ '[style.inset-inline-start.%]': 'slider.orientation() === "horizontal" ? slider.percentage() : undefined',
169
+ '[style.inset-block-start.%]': 'slider.orientation() === "vertical" ? slider.percentage() : undefined',
170
+ },
171
+ }]
172
+ }], propDecorators: { handlePointerDown: [{
173
+ type: HostListener,
174
+ args: ['pointerdown', ['$event']]
175
+ }], handlePointerUp: [{
176
+ type: HostListener,
177
+ args: ['document:pointerup']
178
+ }], handlePointerMove: [{
179
+ type: HostListener,
180
+ args: ['document:pointermove', ['$event']]
181
+ }], handleKeydown: [{
182
+ type: HostListener,
183
+ args: ['keydown', ['$event']]
184
+ }] } });
185
+
186
+ /**
187
+ * Copyright © 2024 Angular Primitives.
188
+ * https://github.com/ng-primitives/ng-primitives
189
+ *
190
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
191
+ * LICENSE file in the root directory of this source tree.
192
+ */
193
+ const NgpSliderTrackToken = new InjectionToken('NgpSliderTrackToken');
194
+ /**
195
+ * Inject the SliderTrack directive instance
196
+ */
197
+ function injectSliderTrack() {
198
+ return inject(NgpSliderTrackToken);
199
+ }
200
+
201
+ /**
202
+ * Copyright © 2024 Angular Primitives.
203
+ * https://github.com/ng-primitives/ng-primitives
204
+ *
205
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
206
+ * LICENSE file in the root directory of this source tree.
207
+ */
208
+ class NgpSliderTrack {
209
+ constructor() {
210
+ /**
211
+ * Access the slider.
212
+ */
213
+ this.slider = injectSlider();
214
+ /**
215
+ * The element that represents the slider track.
216
+ */
217
+ this.element = inject(ElementRef);
218
+ }
219
+ /**
220
+ * When the slider track is clicked, update the value.
221
+ * @param event The click event.
222
+ */
223
+ handlePointerDown(event) {
224
+ if (this.slider.disabled()) {
225
+ return;
226
+ }
227
+ // get the position the click occurred within the slider track
228
+ const position = this.slider.orientation() === 'horizontal' ? event.clientX : event.clientY;
229
+ const rect = this.element.nativeElement.getBoundingClientRect();
230
+ const percentage = (position - (this.slider.orientation() === 'horizontal' ? rect.left : rect.top)) /
231
+ (this.slider.orientation() === 'horizontal' ? rect.width : rect.height);
232
+ // update the value based on the position
233
+ this.slider.value.set(this.slider.min() + (this.slider.max() - this.slider.min()) * percentage);
234
+ }
235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderTrack, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
236
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpSliderTrack, isStandalone: true, selector: "[ngpSliderTrack]", host: { listeners: { "pointerdown": "handlePointerDown($event)" } }, providers: [{ provide: NgpSliderTrackToken, useExisting: NgpSliderTrack }], exportAs: ["ngpSliderTrack"], ngImport: i0 }); }
237
+ }
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSliderTrack, decorators: [{
239
+ type: Directive,
240
+ args: [{
241
+ standalone: true,
242
+ selector: '[ngpSliderTrack]',
243
+ exportAs: 'ngpSliderTrack',
244
+ providers: [{ provide: NgpSliderTrackToken, useExisting: NgpSliderTrack }],
245
+ }]
246
+ }], propDecorators: { handlePointerDown: [{
247
+ type: HostListener,
248
+ args: ['pointerdown', ['$event']]
249
+ }] } });
250
+
251
+ class NgpSlider {
252
+ constructor() {
253
+ /**
254
+ * The value of the slider.
255
+ */
256
+ this.value = model(0, {
257
+ alias: 'ngpSliderValue',
258
+ });
259
+ /**
260
+ * The minimum value of the slider.
261
+ */
262
+ this.min = input(0, {
263
+ alias: 'ngpSliderMin',
264
+ transform: numberAttribute,
265
+ });
266
+ /**
267
+ * The maximum value of the slider.
268
+ */
269
+ this.max = input(100, {
270
+ alias: 'ngpSliderMax',
271
+ transform: numberAttribute,
272
+ });
273
+ /**
274
+ * The step value of the slider.
275
+ */
276
+ this.step = input(1, {
277
+ alias: 'ngpSliderStep',
278
+ transform: numberAttribute,
279
+ });
280
+ /**
281
+ * The orientation of the slider.
282
+ */
283
+ this.orientation = input('horizontal', {
284
+ alias: 'ngpSliderOrientation',
285
+ });
286
+ /**
287
+ * The disabled state of the slider.
288
+ */
289
+ this.disabled = input(false, {
290
+ alias: 'ngpSliderDisabled',
291
+ transform: booleanAttribute,
292
+ });
293
+ /**
294
+ * Access the slider track.
295
+ */
296
+ this.track = contentChild(NgpSliderTrackToken);
297
+ /**
298
+ * The value as a percentage based on the min and max values.
299
+ */
300
+ this.percentage = computed(() => ((this.value() - this.min()) / (this.max() - this.min())) * 100);
301
+ }
302
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSlider, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
303
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.0.2", type: NgpSlider, isStandalone: true, selector: "[ngpSlider]", inputs: { value: { classPropertyName: "value", publicName: "ngpSliderValue", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "ngpSliderMin", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "ngpSliderMax", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "ngpSliderStep", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "ngpSliderOrientation", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpSliderDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "ngpSliderValueChange" }, providers: [{ provide: NgpSliderToken, useExisting: NgpSlider }], queries: [{ propertyName: "track", first: true, predicate: NgpSliderTrackToken, descendants: true, isSignal: true }], exportAs: ["ngpSlider"], ngImport: i0 }); }
304
+ }
305
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSlider, decorators: [{
306
+ type: Directive,
307
+ args: [{
308
+ standalone: true,
309
+ selector: '[ngpSlider]',
310
+ exportAs: 'ngpSlider',
311
+ providers: [{ provide: NgpSliderToken, useExisting: NgpSlider }],
312
+ }]
313
+ }] });
314
+
315
+ /**
316
+ * Copyright © 2024 Angular Primitives.
317
+ * https://github.com/ng-primitives/ng-primitives
318
+ *
319
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
320
+ * LICENSE file in the root directory of this source tree.
321
+ */
322
+
323
+ /**
324
+ * Generated bundle index. Do not edit.
325
+ */
326
+
327
+ export { NgpSlider, NgpSliderRange, NgpSliderRangeToken, NgpSliderThumb, NgpSliderThumbToken, NgpSliderToken, NgpSliderTrack, NgpSliderTrackToken };
328
+ //# sourceMappingURL=ng-primitives-slider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-primitives-slider.mjs","sources":["../../../../packages/ng-primitives/slider/src/slider/slider.token.ts","../../../../packages/ng-primitives/slider/src/slider-range/slider-range.token.ts","../../../../packages/ng-primitives/slider/src/slider-range/slider-range.directive.ts","../../../../packages/ng-primitives/slider/src/slider-thumb/slider-thumb.token.ts","../../../../packages/ng-primitives/slider/src/slider-thumb/slider-thumb.directive.ts","../../../../packages/ng-primitives/slider/src/slider-track/slider-track.token.ts","../../../../packages/ng-primitives/slider/src/slider-track/slider-track.directive.ts","../../../../packages/ng-primitives/slider/src/slider/slider.directive.ts","../../../../packages/ng-primitives/slider/src/index.ts","../../../../packages/ng-primitives/slider/src/ng-primitives-slider.ts"],"sourcesContent":["/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSlider } from './slider.directive';\n\nexport const NgpSliderToken = new InjectionToken<NgpSlider>('NgpSliderToken');\n\n/**\n * Inject the Slider directive instance\n */\nexport function injectSlider(): NgpSlider {\n return inject(NgpSliderToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSliderRange } from './slider-range.directive';\n\nexport const NgpSliderRangeToken = new InjectionToken<NgpSliderRange>('NgpSliderRangeToken');\n\n/**\n * Inject the SliderRange directive instance\n */\nexport function injectSliderRange(): NgpSliderRange {\n return inject(NgpSliderRangeToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Directive } from '@angular/core';\nimport { injectSlider } from '../slider/slider.token';\nimport { NgpSliderRangeToken } from './slider-range.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSliderRange]',\n exportAs: 'ngpSliderRange',\n providers: [{ provide: NgpSliderRangeToken, useExisting: NgpSliderRange }],\n host: {\n class: 'absolute h-full rounded-full bg-white',\n '[style.width.%]': 'slider.orientation() === \"horizontal\" ? slider.percentage() : undefined',\n '[style.height.%]': 'slider.orientation() === \"vertical\" ? slider.percentage() : undefined',\n },\n})\nexport class NgpSliderRange {\n /**\n * Access the slider.\n */\n protected readonly slider = injectSlider();\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSliderThumb } from './slider-thumb.directive';\n\nexport const NgpSliderThumbToken = new InjectionToken<NgpSliderThumb>('NgpSliderThumbToken');\n\n/**\n * Inject the SliderThumb directive instance\n */\nexport function injectSliderThumb(): NgpSliderThumb {\n return inject(NgpSliderThumbToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Directive, HostListener } from '@angular/core';\nimport { injectSlider } from '../slider/slider.token';\nimport { NgpSliderThumbToken } from './slider-thumb.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSliderThumb]',\n exportAs: 'ngpSliderThumb',\n providers: [{ provide: NgpSliderThumbToken, useExisting: NgpSliderThumb }],\n host: {\n role: 'slider',\n '[attr.aria-valuemin]': 'slider.min()',\n '[attr.aria-valuemax]': 'slider.max()',\n '[attr.aria-valuenow]': 'slider.value()',\n '[attr.aria-orientation]': 'slider.orientation()',\n '[tabindex]': 'slider.disabled() ? -1 : 0',\n '[attr.data-orientation]': 'slider.orientation()',\n '[attr.data-disabled]': 'slider.disabled()',\n '[style.inset-inline-start.%]':\n 'slider.orientation() === \"horizontal\" ? slider.percentage() : undefined',\n '[style.inset-block-start.%]':\n 'slider.orientation() === \"vertical\" ? slider.percentage() : undefined',\n },\n})\nexport class NgpSliderThumb {\n /**\n * Access the slider.\n */\n protected readonly slider = injectSlider();\n\n /**\n * Store the dragging state.\n */\n protected dragging = false;\n\n @HostListener('pointerdown', ['$event'])\n protected handlePointerDown(event: PointerEvent): void {\n event.preventDefault();\n\n if (this.slider.disabled()) {\n return;\n }\n\n this.dragging = true;\n }\n\n @HostListener('document:pointerup')\n protected handlePointerUp(): void {\n if (this.slider.disabled()) {\n return;\n }\n\n this.dragging = false;\n }\n\n @HostListener('document:pointermove', ['$event'])\n protected handlePointerMove(event: PointerEvent): void {\n if (this.slider.disabled() || !this.dragging) {\n return;\n }\n\n const rect = this.slider.track()?.element.nativeElement.getBoundingClientRect();\n\n if (!rect) {\n return;\n }\n\n const percentage =\n this.slider.orientation() === 'horizontal'\n ? (event.clientX - rect.left) / rect.width\n : 1 - (event.clientY - rect.top) / rect.height;\n\n this.slider.value.set(\n this.slider.min() +\n (this.slider.max() - this.slider.min()) * Math.max(0, Math.min(1, percentage)),\n );\n }\n\n /**\n * Handle keyboard events.\n * @param event\n */\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n const multiplier = event.shiftKey ? 10 : 1;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n this.slider.value.update(value =>\n Math.max(value - this.slider.step() * multiplier, this.slider.min()),\n );\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n this.slider.value.update(value =>\n Math.min(value + this.slider.step() * multiplier, this.slider.max()),\n );\n break;\n case 'Home':\n this.slider.value.set(this.slider.min());\n break;\n case 'End':\n this.slider.value.set(this.slider.max());\n break;\n }\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSliderTrack } from './slider-track.directive';\n\nexport const NgpSliderTrackToken = new InjectionToken<NgpSliderTrack>('NgpSliderTrackToken');\n\n/**\n * Inject the SliderTrack directive instance\n */\nexport function injectSliderTrack(): NgpSliderTrack {\n return inject(NgpSliderTrackToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { injectSlider } from '../slider/slider.token';\nimport { NgpSliderTrackToken } from './slider-track.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSliderTrack]',\n exportAs: 'ngpSliderTrack',\n providers: [{ provide: NgpSliderTrackToken, useExisting: NgpSliderTrack }],\n})\nexport class NgpSliderTrack {\n /**\n * Access the slider.\n */\n private readonly slider = injectSlider();\n\n /**\n * The element that represents the slider track.\n */\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * When the slider track is clicked, update the value.\n * @param event The click event.\n */\n @HostListener('pointerdown', ['$event'])\n protected handlePointerDown(event: PointerEvent): void {\n if (this.slider.disabled()) {\n return;\n }\n\n // get the position the click occurred within the slider track\n const position = this.slider.orientation() === 'horizontal' ? event.clientX : event.clientY;\n const rect = this.element.nativeElement.getBoundingClientRect();\n const percentage =\n (position - (this.slider.orientation() === 'horizontal' ? rect.left : rect.top)) /\n (this.slider.orientation() === 'horizontal' ? rect.width : rect.height);\n\n // update the value based on the position\n this.slider.value.set(this.slider.min() + (this.slider.max() - this.slider.min()) * percentage);\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n Directive,\n booleanAttribute,\n computed,\n contentChild,\n input,\n model,\n numberAttribute,\n} from '@angular/core';\nimport { NgpSliderTrackToken } from '../slider-track/slider-track.token';\nimport { NgpSliderToken } from './slider.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSlider]',\n exportAs: 'ngpSlider',\n providers: [{ provide: NgpSliderToken, useExisting: NgpSlider }],\n})\nexport class NgpSlider {\n /**\n * The value of the slider.\n */\n readonly value = model<number>(0, {\n alias: 'ngpSliderValue',\n });\n\n /**\n * The minimum value of the slider.\n */\n readonly min = input<number, NumberInput>(0, {\n alias: 'ngpSliderMin',\n transform: numberAttribute,\n });\n\n /**\n * The maximum value of the slider.\n */\n readonly max = input<number, NumberInput>(100, {\n alias: 'ngpSliderMax',\n transform: numberAttribute,\n });\n\n /**\n * The step value of the slider.\n */\n readonly step = input<number, NumberInput>(1, {\n alias: 'ngpSliderStep',\n transform: numberAttribute,\n });\n\n /**\n * The orientation of the slider.\n */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal', {\n alias: 'ngpSliderOrientation',\n });\n\n /**\n * The disabled state of the slider.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSliderDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Access the slider track.\n */\n readonly track = contentChild(NgpSliderTrackToken);\n\n /**\n * The value as a percentage based on the min and max values.\n */\n protected readonly percentage = computed(\n () => ((this.value() - this.min()) / (this.max() - this.min())) * 100,\n );\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport { NgpSliderRange } from './slider-range/slider-range.directive';\nexport { NgpSliderRangeToken } from './slider-range/slider-range.token';\nexport { NgpSliderThumb } from './slider-thumb/slider-thumb.directive';\nexport { NgpSliderThumbToken } from './slider-thumb/slider-thumb.token';\nexport { NgpSliderTrack } from './slider-track/slider-track.directive';\nexport { NgpSliderTrackToken } from './slider-track/slider-track.token';\nexport { NgpSlider } from './slider/slider.directive';\nexport { NgpSliderToken } from './slider/slider.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, Directive, ElementRef, model, input, booleanAttribute, signal, computed, HostListener } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+
5
+ /**
6
+ * Copyright © 2024 Angular Primitives.
7
+ * https://github.com/ng-primitives/ng-primitives
8
+ *
9
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */
12
+ const NgpSwitchToken = new InjectionToken('NgpSwitchToken');
13
+ /**
14
+ * Inject the Switch directive instance
15
+ * @returns The switch directive instance
16
+ */
17
+ function injectSwitch() {
18
+ return inject(NgpSwitchToken);
19
+ }
20
+
21
+ /**
22
+ * Copyright © 2024 Angular Primitives.
23
+ * https://github.com/ng-primitives/ng-primitives
24
+ *
25
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
26
+ * LICENSE file in the root directory of this source tree.
27
+ */
28
+ class NgpSwitchThumb {
29
+ constructor() {
30
+ /**
31
+ * Access the switch directive.
32
+ */
33
+ this.switch = injectSwitch();
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSwitchThumb, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpSwitchThumb, isStandalone: true, selector: "[ngpSwitchThumb]", host: { properties: { "attr.data-state": "switch.checked() ? \"checked\" : \"unchecked\"", "attr.data-disabled": "switch.disabledState() ? \"true\" : null" } }, ngImport: i0 }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSwitchThumb, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: '[ngpSwitchThumb]',
42
+ standalone: true,
43
+ host: {
44
+ '[attr.data-state]': 'switch.checked() ? "checked" : "unchecked"',
45
+ '[attr.data-disabled]': 'switch.disabledState() ? "true" : null',
46
+ },
47
+ }]
48
+ }] });
49
+
50
+ class NgpSwitch {
51
+ constructor() {
52
+ /**
53
+ * Access the element ref.
54
+ */
55
+ this.elementRef = inject(ElementRef);
56
+ /**
57
+ * Determine if the switch is a button
58
+ */
59
+ this.isButton = this.elementRef.nativeElement.tagName === 'BUTTON';
60
+ /**
61
+ * Determine if the switch is checked.
62
+ * @default false
63
+ */
64
+ this.checked = model(false, {
65
+ alias: 'ngpSwitchChecked',
66
+ });
67
+ /**
68
+ * Determine if the switch is disabled.
69
+ * @default false
70
+ */
71
+ this.disabled = input(false, {
72
+ alias: 'ngpSwitchDisabled',
73
+ transform: booleanAttribute,
74
+ });
75
+ /**
76
+ * Store the form disabled state.
77
+ * @internal
78
+ */
79
+ this.formDisabled = signal(false);
80
+ /**
81
+ * Derive the disabled state based on the input and form disabled state.
82
+ * @internal
83
+ */
84
+ this.disabledState = computed(() => this.disabled() || this.formDisabled());
85
+ }
86
+ /**
87
+ * Register the onChange callback.
88
+ * @param fn The onChange callback.
89
+ * @internal
90
+ */
91
+ registerOnChange(fn) {
92
+ this.onChange = fn;
93
+ }
94
+ /**
95
+ * Register the onTouched callback.
96
+ * @param fn The onTouched callback.
97
+ * @internal
98
+ */
99
+ registerOnTouched(fn) {
100
+ this.onTouched = fn;
101
+ }
102
+ /**
103
+ * Write the value to the checked state.
104
+ * @param checked The checked state.
105
+ * @internal
106
+ */
107
+ writeValue(checked) {
108
+ this.checked.set(checked);
109
+ }
110
+ /**
111
+ * Set the disabled state.
112
+ * @param isDisabled The disabled state.
113
+ * @internal
114
+ */
115
+ setDisabledState(isDisabled) {
116
+ this.formDisabled.set(isDisabled);
117
+ }
118
+ /**
119
+ * Toggle the checked state.
120
+ */
121
+ toggle() {
122
+ if (this.disabledState()) {
123
+ return;
124
+ }
125
+ this.checked.set(!this.checked());
126
+ this.onChange?.(this.checked());
127
+ }
128
+ /**
129
+ * Handle the keydown event.
130
+ */
131
+ onKeyDown() {
132
+ // If the switch is not a button then the space key will not toggle the checked state automatically,
133
+ // so we need to do it manually.
134
+ if (!this.isButton) {
135
+ this.toggle();
136
+ }
137
+ }
138
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
139
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpSwitch, isStandalone: true, selector: "[ngpSwitch]", inputs: { checked: { classPropertyName: "checked", publicName: "ngpSwitchChecked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpSwitchDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "ngpSwitchCheckedChange" }, host: { attributes: { "role": "switch" }, listeners: { "focus": "onTouched?.()", "click": "toggle()", "keydown.space": "onKeyDown()" }, properties: { "attr.type": "isButton ? \"button\" : null", "attr.aria-checked": "checked()", "attr.data-state": "checked() ? \"checked\" : \"unchecked\"", "attr.data-disabled": "disabledState()", "attr.disabled": "isButton && disabledState() ? disabledState() : null" } }, providers: [
140
+ { provide: NgpSwitchToken, useExisting: NgpSwitch },
141
+ { provide: NG_VALUE_ACCESSOR, useExisting: NgpSwitch, multi: true },
142
+ ], exportAs: ["ngpSwitch"], ngImport: i0 }); }
143
+ }
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSwitch, decorators: [{
145
+ type: Directive,
146
+ args: [{
147
+ standalone: true,
148
+ selector: '[ngpSwitch]',
149
+ exportAs: 'ngpSwitch',
150
+ providers: [
151
+ { provide: NgpSwitchToken, useExisting: NgpSwitch },
152
+ { provide: NG_VALUE_ACCESSOR, useExisting: NgpSwitch, multi: true },
153
+ ],
154
+ host: {
155
+ role: 'switch',
156
+ '[attr.type]': 'isButton ? "button" : null',
157
+ '[attr.aria-checked]': 'checked()',
158
+ '[attr.data-state]': 'checked() ? "checked" : "unchecked"',
159
+ '[attr.data-disabled]': 'disabledState()',
160
+ '[attr.disabled]': 'isButton && disabledState() ? disabledState() : null',
161
+ '(focus)': 'onTouched?.()',
162
+ },
163
+ }]
164
+ }], propDecorators: { toggle: [{
165
+ type: HostListener,
166
+ args: ['click']
167
+ }], onKeyDown: [{
168
+ type: HostListener,
169
+ args: ['keydown.space']
170
+ }] } });
171
+
172
+ /**
173
+ * Copyright © 2024 Angular Primitives.
174
+ * https://github.com/ng-primitives/ng-primitives
175
+ *
176
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
177
+ * LICENSE file in the root directory of this source tree.
178
+ */
179
+
180
+ /**
181
+ * Generated bundle index. Do not edit.
182
+ */
183
+
184
+ export { NgpSwitch, NgpSwitchThumb, NgpSwitchToken };
185
+ //# sourceMappingURL=ng-primitives-switch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-primitives-switch.mjs","sources":["../../../../packages/ng-primitives/switch/src/switch/switch.token.ts","../../../../packages/ng-primitives/switch/src/switch-thumb/switch-thumb.directive.ts","../../../../packages/ng-primitives/switch/src/switch/switch.directive.ts","../../../../packages/ng-primitives/switch/src/index.ts","../../../../packages/ng-primitives/switch/src/ng-primitives-switch.ts"],"sourcesContent":["/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { InjectionToken, inject } from '@angular/core';\nimport type { NgpSwitch } from './switch.directive';\n\nexport const NgpSwitchToken = new InjectionToken<NgpSwitch>('NgpSwitchToken');\n\n/**\n * Inject the Switch directive instance\n * @returns The switch directive instance\n */\nexport function injectSwitch(): NgpSwitch {\n return inject(NgpSwitchToken);\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Directive } from '@angular/core';\nimport { injectSwitch } from '../switch/switch.token';\n\n@Directive({\n selector: '[ngpSwitchThumb]',\n standalone: true,\n host: {\n '[attr.data-state]': 'switch.checked() ? \"checked\" : \"unchecked\"',\n '[attr.data-disabled]': 'switch.disabledState() ? \"true\" : null',\n },\n})\nexport class NgpSwitchThumb {\n /**\n * Access the switch directive.\n */\n protected readonly switch = injectSwitch();\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n HostListener,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgpSwitchToken } from './switch.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpSwitch]',\n exportAs: 'ngpSwitch',\n providers: [\n { provide: NgpSwitchToken, useExisting: NgpSwitch },\n { provide: NG_VALUE_ACCESSOR, useExisting: NgpSwitch, multi: true },\n ],\n host: {\n role: 'switch',\n '[attr.type]': 'isButton ? \"button\" : null',\n '[attr.aria-checked]': 'checked()',\n '[attr.data-state]': 'checked() ? \"checked\" : \"unchecked\"',\n '[attr.data-disabled]': 'disabledState()',\n '[attr.disabled]': 'isButton && disabledState() ? disabledState() : null',\n '(focus)': 'onTouched?.()',\n },\n})\nexport class NgpSwitch implements ControlValueAccessor {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Determine if the switch is a button\n */\n protected isButton = this.elementRef.nativeElement.tagName === 'BUTTON';\n\n /**\n * Determine if the switch is checked.\n * @default false\n */\n readonly checked = model<boolean>(false, {\n alias: 'ngpSwitchChecked',\n });\n\n /**\n * Determine if the switch is disabled.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpSwitchDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Store the form disabled state.\n * @internal\n */\n readonly formDisabled = signal<boolean>(false);\n\n /**\n * Derive the disabled state based on the input and form disabled state.\n * @internal\n */\n readonly disabledState = computed(() => this.disabled() || this.formDisabled());\n\n /**\n * Store the onChange callback.\n */\n private onChange?: (checked: boolean) => void;\n\n /**\n * Store the onTouched callback.\n */\n protected onTouched?: () => void;\n\n /**\n * Register the onChange callback.\n * @param fn The onChange callback.\n * @internal\n */\n registerOnChange(fn: (checked: boolean) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Register the onTouched callback.\n * @param fn The onTouched callback.\n * @internal\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Write the value to the checked state.\n * @param checked The checked state.\n * @internal\n */\n writeValue(checked: boolean): void {\n this.checked.set(checked);\n }\n\n /**\n * Set the disabled state.\n * @param isDisabled The disabled state.\n * @internal\n */\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n /**\n * Toggle the checked state.\n */\n @HostListener('click')\n toggle(): void {\n if (this.disabledState()) {\n return;\n }\n\n this.checked.set(!this.checked());\n this.onChange?.(this.checked());\n }\n\n /**\n * Handle the keydown event.\n */\n @HostListener('keydown.space')\n protected onKeyDown(): void {\n // If the switch is not a button then the space key will not toggle the checked state automatically,\n // so we need to do it manually.\n if (!this.isButton) {\n this.toggle();\n }\n }\n}\n","/**\n * Copyright © 2024 Angular Primitives.\n * https://github.com/ng-primitives/ng-primitives\n *\n * This source code is licensed under the CC BY-ND 4.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport { NgpSwitchThumb } from './switch-thumb/switch-thumb.directive';\nexport { NgpSwitch } from './switch/switch.directive';\nexport { NgpSwitchToken } from './switch/switch.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}