ng-primitives 0.0.7 → 0.2.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 (211) hide show
  1. package/README.md +14 -4
  2. package/accordion/accordion-trigger/accordion-trigger.directive.d.ts +2 -1
  3. package/autofill/README.md +3 -0
  4. package/autofill/autofill/autofill.directive.d.ts +19 -0
  5. package/{select/select-button/select-button.token.d.ts → autofill/autofill/autofill.token.d.ts} +4 -4
  6. package/autofill/index.d.ts +9 -0
  7. package/avatar/avatar/avatar.directive.d.ts +2 -1
  8. package/button/README.md +3 -0
  9. package/button/button/button.directive.d.ts +27 -0
  10. package/{select/select-option/select-option.token.d.ts → button/button/button.token.d.ts} +4 -4
  11. package/button/index.d.ts +9 -0
  12. package/checkbox/checkbox/checkbox.directive.d.ts +11 -61
  13. package/checkbox/index.d.ts +0 -4
  14. package/esm2022/a11y/visually-hidden/visually-hidden.directive.mjs +3 -3
  15. package/esm2022/accordion/accordion/accordion.directive.mjs +5 -4
  16. package/esm2022/accordion/accordion-content/accordion-content.directive.mjs +5 -6
  17. package/esm2022/accordion/accordion-item/accordion-item.directive.mjs +5 -5
  18. package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +8 -5
  19. package/esm2022/autofill/autofill/autofill.directive.mjs +71 -0
  20. package/esm2022/autofill/autofill/autofill.token.mjs +16 -0
  21. package/esm2022/autofill/index.mjs +10 -0
  22. package/esm2022/autofill/ng-primitives-autofill.mjs +5 -0
  23. package/esm2022/avatar/avatar/avatar.directive.mjs +7 -4
  24. package/esm2022/avatar/avatar-fallback/avatar-fallback.directive.mjs +3 -3
  25. package/esm2022/avatar/avatar-image/avatar-image.directive.mjs +3 -3
  26. package/esm2022/button/button/button.directive.mjs +47 -0
  27. package/esm2022/button/button/button.token.mjs +16 -0
  28. package/esm2022/button/index.mjs +10 -0
  29. package/esm2022/button/ng-primitives-button.mjs +5 -0
  30. package/esm2022/checkbox/checkbox/checkbox.directive.mjs +29 -79
  31. package/esm2022/checkbox/index.mjs +1 -5
  32. package/esm2022/file-upload/file-upload/file-upload.directive.mjs +7 -4
  33. package/esm2022/focus-trap/focus-trap/focus-trap.directive.mjs +262 -0
  34. package/esm2022/focus-trap/focus-trap/focus-trap.token.mjs +16 -0
  35. package/esm2022/focus-trap/index.mjs +10 -0
  36. package/esm2022/focus-trap/ng-primitives-focus-trap.mjs +5 -0
  37. package/esm2022/form-field/description/description.directive.mjs +14 -14
  38. package/esm2022/form-field/error/error.directive.mjs +27 -29
  39. package/esm2022/form-field/form-control/form-control.directive.mjs +22 -16
  40. package/esm2022/form-field/form-field/form-field.directive.mjs +3 -3
  41. package/esm2022/form-field/form-field/form-field.token.mjs +3 -7
  42. package/esm2022/form-field/label/label.directive.mjs +56 -17
  43. package/esm2022/input/index.mjs +10 -0
  44. package/esm2022/input/input/input.directive.mjs +55 -0
  45. package/esm2022/input/input/input.token.mjs +16 -0
  46. package/esm2022/input/ng-primitives-input.mjs +5 -0
  47. package/esm2022/interactions/focus/focus.directive.mjs +15 -10
  48. package/esm2022/interactions/focus-visible/focus-visible.directive.mjs +12 -7
  49. package/esm2022/interactions/hover/hover.directive.mjs +16 -11
  50. package/esm2022/interactions/index.mjs +5 -1
  51. package/esm2022/interactions/move/move.directive.mjs +216 -0
  52. package/esm2022/interactions/move/move.token.mjs +16 -0
  53. package/esm2022/interactions/press/press.directive.mjs +118 -0
  54. package/esm2022/interactions/press/press.token.mjs +16 -0
  55. package/esm2022/internal/disabled/disabled.mjs +19 -0
  56. package/esm2022/internal/index.mjs +11 -0
  57. package/esm2022/internal/ng-primitives-internal.mjs +5 -0
  58. package/esm2022/internal/orientation/orientation.mjs +19 -0
  59. package/esm2022/internal/style-injector/style-injector.mjs +81 -0
  60. package/esm2022/progress/progress/progress.directive.mjs +3 -3
  61. package/esm2022/progress/progress-indicator/progress-indicator.directive.mjs +3 -3
  62. package/esm2022/radio/radio-group/radio-group.directive.mjs +14 -54
  63. package/esm2022/radio/radio-indicator/radio-indicator.directive.mjs +8 -5
  64. package/esm2022/radio/radio-item/radio-item.directive.mjs +8 -6
  65. package/esm2022/resize/resize/resize.directive.mjs +3 -3
  66. package/esm2022/roving-focus/roving-focus-group/roving-focus-group.directive.mjs +14 -9
  67. package/esm2022/roving-focus/roving-focus-item/roving-focus-item.directive.mjs +3 -3
  68. package/esm2022/search/index.mjs +10 -0
  69. package/esm2022/search/ng-primitives-search.mjs +5 -0
  70. package/esm2022/search/search-field/search-field.directive.mjs +47 -0
  71. package/esm2022/search/search-field/search-field.token.mjs +16 -0
  72. package/esm2022/select/index.mjs +1 -7
  73. package/esm2022/select/select/select.directive.mjs +23 -36
  74. package/esm2022/select/select/select.token.mjs +1 -1
  75. package/esm2022/slider/slider/slider.directive.mjs +18 -5
  76. package/esm2022/slider/slider-range/slider-range.directive.mjs +6 -5
  77. package/esm2022/slider/slider-thumb/slider-thumb.directive.mjs +7 -4
  78. package/esm2022/slider/slider-track/slider-track.directive.mjs +8 -4
  79. package/esm2022/switch/switch/switch.directive.mjs +18 -58
  80. package/esm2022/switch/switch-thumb/switch-thumb.directive.mjs +9 -6
  81. package/esm2022/tabs/tab-button/tab-button.directive.mjs +8 -6
  82. package/esm2022/tabs/tab-list/tab-list.directive.mjs +3 -3
  83. package/esm2022/tabs/tab-panel/tab-panel.directive.mjs +5 -6
  84. package/esm2022/tabs/tabset/tabset.directive.mjs +14 -18
  85. package/esm2022/textarea/index.mjs +10 -0
  86. package/esm2022/textarea/ng-primitives-textarea.mjs +5 -0
  87. package/esm2022/textarea/textarea/textarea.directive.mjs +37 -0
  88. package/esm2022/textarea/textarea/textarea.token.mjs +16 -0
  89. package/esm2022/toggle/toggle/toggle.directive.mjs +33 -13
  90. package/esm2022/tooltip/tooltip/tooltip.directive.mjs +3 -3
  91. package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.directive.mjs +7 -7
  92. package/esm2022/utils/helpers/focus-manager.mjs +3 -3
  93. package/esm2022/utils/index.mjs +2 -2
  94. package/esm2022/utils/signals/async.mjs +11 -17
  95. package/fesm2022/ng-primitives-a11y.mjs +3 -3
  96. package/fesm2022/ng-primitives-accordion.mjs +19 -16
  97. package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
  98. package/fesm2022/ng-primitives-autofill.mjs +100 -0
  99. package/fesm2022/ng-primitives-autofill.mjs.map +1 -0
  100. package/fesm2022/ng-primitives-avatar.mjs +13 -10
  101. package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
  102. package/fesm2022/ng-primitives-button.mjs +76 -0
  103. package/fesm2022/ng-primitives-button.mjs.map +1 -0
  104. package/fesm2022/ng-primitives-checkbox.mjs +25 -203
  105. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
  106. package/fesm2022/ng-primitives-file-upload.mjs +6 -3
  107. package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
  108. package/fesm2022/ng-primitives-focus-trap.mjs +291 -0
  109. package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -0
  110. package/fesm2022/ng-primitives-form-field.mjs +119 -80
  111. package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
  112. package/fesm2022/ng-primitives-input.mjs +84 -0
  113. package/fesm2022/ng-primitives-input.mjs.map +1 -0
  114. package/fesm2022/ng-primitives-interactions.mjs +394 -26
  115. package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
  116. package/fesm2022/ng-primitives-internal.mjs +132 -0
  117. package/fesm2022/ng-primitives-internal.mjs.map +1 -0
  118. package/fesm2022/ng-primitives-progress.mjs +6 -6
  119. package/fesm2022/ng-primitives-radio.mjs +25 -62
  120. package/fesm2022/ng-primitives-radio.mjs.map +1 -1
  121. package/fesm2022/ng-primitives-resize.mjs +3 -3
  122. package/fesm2022/ng-primitives-roving-focus.mjs +15 -10
  123. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
  124. package/fesm2022/ng-primitives-search.mjs +76 -0
  125. package/fesm2022/ng-primitives-search.mjs.map +1 -0
  126. package/fesm2022/ng-primitives-select.mjs +23 -395
  127. package/fesm2022/ng-primitives-select.mjs.map +1 -1
  128. package/fesm2022/ng-primitives-slider.mjs +35 -14
  129. package/fesm2022/ng-primitives-slider.mjs.map +1 -1
  130. package/fesm2022/ng-primitives-switch.mjs +23 -62
  131. package/fesm2022/ng-primitives-switch.mjs.map +1 -1
  132. package/fesm2022/ng-primitives-tabs.mjs +27 -30
  133. package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
  134. package/fesm2022/ng-primitives-textarea.mjs +66 -0
  135. package/fesm2022/ng-primitives-textarea.mjs.map +1 -0
  136. package/fesm2022/ng-primitives-toggle.mjs +32 -12
  137. package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
  138. package/fesm2022/ng-primitives-tooltip.mjs +9 -9
  139. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
  140. package/fesm2022/ng-primitives-utils.mjs +14 -20
  141. package/fesm2022/ng-primitives-utils.mjs.map +1 -1
  142. package/file-upload/file-upload/file-upload.directive.d.ts +2 -1
  143. package/focus-trap/README.md +3 -0
  144. package/focus-trap/focus-trap/focus-trap.directive.d.ts +64 -0
  145. package/{select/select-options/select-options.token.d.ts → focus-trap/focus-trap/focus-trap.token.d.ts} +4 -4
  146. package/focus-trap/index.d.ts +9 -0
  147. package/form-field/description/description.directive.d.ts +1 -1
  148. package/form-field/error/error.directive.d.ts +9 -5
  149. package/form-field/form-control/form-control.directive.d.ts +7 -3
  150. package/form-field/form-field/form-field.token.d.ts +1 -1
  151. package/form-field/label/label.directive.d.ts +3 -2
  152. package/input/README.md +3 -0
  153. package/input/index.d.ts +9 -0
  154. package/input/input/input.directive.d.ts +33 -0
  155. package/input/input/input.token.d.ts +14 -0
  156. package/interactions/focus/focus.directive.d.ts +6 -2
  157. package/interactions/focus-visible/focus-visible.directive.d.ts +5 -1
  158. package/interactions/hover/hover.directive.d.ts +5 -1
  159. package/interactions/index.d.ts +4 -0
  160. package/interactions/move/move.directive.d.ts +126 -0
  161. package/interactions/move/move.token.d.ts +14 -0
  162. package/interactions/press/press.directive.d.ts +59 -0
  163. package/interactions/press/press.token.d.ts +14 -0
  164. package/internal/README.md +3 -0
  165. package/internal/disabled/disabled.d.ts +21 -0
  166. package/internal/index.d.ts +10 -0
  167. package/internal/orientation/orientation.d.ts +22 -0
  168. package/internal/style-injector/style-injector.d.ts +36 -0
  169. package/package.json +49 -7
  170. package/radio/radio-group/radio-group.directive.d.ts +4 -41
  171. package/radio/radio-indicator/radio-indicator.directive.d.ts +2 -1
  172. package/radio/radio-item/radio-item.directive.d.ts +2 -1
  173. package/roving-focus/roving-focus-group/roving-focus-group.directive.d.ts +7 -2
  174. package/search/README.md +3 -0
  175. package/search/index.d.ts +9 -0
  176. package/search/search-field/search-field.directive.d.ts +15 -0
  177. package/search/search-field/search-field.token.d.ts +14 -0
  178. package/select/index.d.ts +0 -6
  179. package/select/select/select.directive.d.ts +7 -22
  180. package/select/select/select.token.d.ts +2 -2
  181. package/slider/slider/slider.directive.d.ts +4 -2
  182. package/slider/slider-thumb/slider-thumb.directive.d.ts +2 -1
  183. package/slider/slider-track/slider-track.directive.d.ts +1 -1
  184. package/switch/switch/switch.directive.d.ts +5 -45
  185. package/switch/switch-thumb/switch-thumb.directive.d.ts +2 -1
  186. package/tabs/tab-button/tab-button.directive.d.ts +2 -1
  187. package/tabs/tabset/tabset.directive.d.ts +3 -9
  188. package/textarea/README.md +3 -0
  189. package/textarea/index.d.ts +9 -0
  190. package/textarea/textarea/textarea.directive.d.ts +20 -0
  191. package/textarea/textarea/textarea.token.d.ts +14 -0
  192. package/toggle/toggle/toggle.directive.d.ts +16 -4
  193. package/utils/index.d.ts +1 -1
  194. package/utils/signals/async.d.ts +10 -12
  195. package/checkbox/checkbox-indicator/checkbox-indicator.directive.d.ts +0 -19
  196. package/checkbox/checkbox-indicator/checkbox-indicator.token.d.ts +0 -15
  197. package/checkbox/checkbox-input/checkbox-input.directive.d.ts +0 -10
  198. package/checkbox/checkbox-label/checkbox-label.directive.d.ts +0 -9
  199. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.directive.mjs +0 -51
  200. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.token.mjs +0 -17
  201. package/esm2022/checkbox/checkbox-input/checkbox-input.directive.mjs +0 -40
  202. package/esm2022/checkbox/checkbox-label/checkbox-label.directive.mjs +0 -32
  203. package/esm2022/select/select-button/select-button.directive.mjs +0 -84
  204. package/esm2022/select/select-button/select-button.token.mjs +0 -16
  205. package/esm2022/select/select-option/select-option.directive.mjs +0 -90
  206. package/esm2022/select/select-option/select-option.token.mjs +0 -16
  207. package/esm2022/select/select-options/select-options.directive.mjs +0 -157
  208. package/esm2022/select/select-options/select-options.token.mjs +0 -16
  209. package/select/select-button/select-button.directive.d.ts +0 -51
  210. package/select/select-option/select-option.directive.d.ts +0 -57
  211. package/select/select-options/select-options.directive.d.ts +0 -65
@@ -16,10 +16,10 @@ export class FocusManager {
16
16
  break;
17
17
  }
18
18
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FocusManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
20
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FocusManager, providedIn: 'root' }); }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: FocusManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
20
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: FocusManager, providedIn: 'root' }); }
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FocusManager, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: FocusManager, decorators: [{
23
23
  type: Injectable,
24
24
  args: [{
25
25
  providedIn: 'root',
@@ -8,6 +8,6 @@
8
8
  export { injectDisposables } from './helpers/disposables';
9
9
  export { FocusManager } from './helpers/focus-manager';
10
10
  export { uniqueId } from './helpers/unique-id';
11
- export { computedAsync, onChange } from './signals/async';
11
+ export { onBooleanChange, onChange } from './signals/async';
12
12
  export { injectDimensions } from './ui/dimensions';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3V0aWxzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5leHBvcnQgeyBpbmplY3REaXNwb3NhYmxlcyB9IGZyb20gJy4vaGVscGVycy9kaXNwb3NhYmxlcyc7XG5leHBvcnQgeyBGb2N1c01hbmFnZXIgfSBmcm9tICcuL2hlbHBlcnMvZm9jdXMtbWFuYWdlcic7XG5leHBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJy4vaGVscGVycy91bmlxdWUtaWQnO1xuZXhwb3J0IHsgY29tcHV0ZWRBc3luYywgb25DaGFuZ2UgfSBmcm9tICcuL3NpZ25hbHMvYXN5bmMnO1xuZXhwb3J0IHsgaW5qZWN0RGltZW5zaW9ucyB9IGZyb20gJy4vdWkvZGltZW5zaW9ucyc7XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3V0aWxzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5leHBvcnQgeyBpbmplY3REaXNwb3NhYmxlcyB9IGZyb20gJy4vaGVscGVycy9kaXNwb3NhYmxlcyc7XG5leHBvcnQgeyBGb2N1c01hbmFnZXIgfSBmcm9tICcuL2hlbHBlcnMvZm9jdXMtbWFuYWdlcic7XG5leHBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJy4vaGVscGVycy91bmlxdWUtaWQnO1xuZXhwb3J0IHsgb25Cb29sZWFuQ2hhbmdlLCBvbkNoYW5nZSB9IGZyb20gJy4vc2lnbmFscy9hc3luYyc7XG5leHBvcnQgeyBpbmplY3REaW1lbnNpb25zIH0gZnJvbSAnLi91aS9kaW1lbnNpb25zJztcbiJdfQ==
@@ -6,22 +6,6 @@
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  import { effect, signal } from '@angular/core';
9
- /**
10
- * Create a signal from an observable that is updated asynchronously.
11
- * @param fn The function that returns an observable.
12
- * @param options Options for the effect.
13
- * @param options.injector
14
- * @returns A signal that emits the value of the observable.
15
- * @internal
16
- */
17
- export function computedAsync(fn, options) {
18
- const value = signal(null);
19
- effect(onCleanup => {
20
- const subscription = fn()?.subscribe(value.set);
21
- onCleanup(() => subscription?.unsubscribe());
22
- }, { allowSignalWrites: true, injector: options?.injector });
23
- return value;
24
- }
25
9
  /**
26
10
  * Listen for changes to a signal and call a function when the signal changes.
27
11
  * @param source
@@ -40,4 +24,14 @@ export function onChange(source, fn, options) {
40
24
  }
41
25
  }, { allowSignalWrites: true, injector: options?.injector });
42
26
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3V0aWxzL3NyYy9zaWduYWxzL2FzeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBb0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsRUFBMEMsRUFDMUMsT0FBZ0M7SUFFaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFXLElBQUksQ0FBQyxDQUFDO0lBRXJDLE1BQU0sQ0FDSixTQUFTLENBQUMsRUFBRTtRQUNWLE1BQU0sWUFBWSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUN6RCxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLE1BQW9DLEVBQ3BDLEVBQThFLEVBQzlFLE9BQWdDO0lBRWhDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRXZDLE1BQU0sQ0FDSixHQUFHLEVBQUU7UUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUN2QixJQUFJLEtBQUssS0FBSyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQzlCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUMzQixhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FDekQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0b3IsIFNpZ25hbCwgZWZmZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBDcmVhdGUgYSBzaWduYWwgZnJvbSBhbiBvYnNlcnZhYmxlIHRoYXQgaXMgdXBkYXRlZCBhc3luY2hyb25vdXNseS5cbiAqIEBwYXJhbSBmbiBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9ic2VydmFibGUuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgZWZmZWN0LlxuICogQHBhcmFtIG9wdGlvbnMuaW5qZWN0b3JcbiAqIEByZXR1cm5zIEEgc2lnbmFsIHRoYXQgZW1pdHMgdGhlIHZhbHVlIG9mIHRoZSBvYnNlcnZhYmxlLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZEFzeW5jPFQ+KFxuICBmbjogKCkgPT4gT2JzZXJ2YWJsZTxUPiB8IG51bGwgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7IGluamVjdG9yOiBJbmplY3RvciB9LFxuKTogU2lnbmFsPFQgfCBudWxsPiB7XG4gIGNvbnN0IHZhbHVlID0gc2lnbmFsPFQgfCBudWxsPihudWxsKTtcblxuICBlZmZlY3QoXG4gICAgb25DbGVhbnVwID0+IHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGZuKCk/LnN1YnNjcmliZSh2YWx1ZS5zZXQpO1xuICAgICAgb25DbGVhbnVwKCgpID0+IHN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKSk7XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlLCBpbmplY3Rvcjogb3B0aW9ucz8uaW5qZWN0b3IgfSxcbiAgKTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogTGlzdGVuIGZvciBjaGFuZ2VzIHRvIGEgc2lnbmFsIGFuZCBjYWxsIGEgZnVuY3Rpb24gd2hlbiB0aGUgc2lnbmFsIGNoYW5nZXMuXG4gKiBAcGFyYW0gc291cmNlXG4gKiBAcGFyYW0gZm5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcGFyYW0gb3B0aW9ucy5pbmplY3RvclxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkNoYW5nZTxUPihcbiAgc291cmNlOiBTaWduYWw8VCB8IG51bGwgfCB1bmRlZmluZWQ+LFxuICBmbjogKHZhbHVlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCwgcHJldmlvdXNWYWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpID0+IHZvaWQsXG4gIG9wdGlvbnM/OiB7IGluamVjdG9yOiBJbmplY3RvciB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBzaWduYWwoc291cmNlKCkpO1xuXG4gIGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZSgpO1xuICAgICAgaWYgKHZhbHVlICE9PSBwcmV2aW91c1ZhbHVlKCkpIHtcbiAgICAgICAgZm4odmFsdWUsIHByZXZpb3VzVmFsdWUoKSk7XG4gICAgICAgIHByZXZpb3VzVmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUsIGluamVjdG9yOiBvcHRpb25zPy5pbmplY3RvciB9LFxuICApO1xufVxuIl19
27
+ /**
28
+ * Listen for changes to a boolean signal and call one of two functions when the signal changes.
29
+ * @param source
30
+ * @param onTrue
31
+ * @param onFalse
32
+ * @param options
33
+ */
34
+ export function onBooleanChange(source, onTrue, onFalse, options) {
35
+ onChange(source, value => (value ? onTrue() : onFalse()), options);
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3V0aWxzL3NyYy9zaWduYWxzL2FzeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBb0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsTUFBb0MsRUFDcEMsRUFBOEUsRUFDOUUsT0FBZ0M7SUFFaEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFdkMsTUFBTSxDQUNKLEdBQUcsRUFBRTtRQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLElBQUksS0FBSyxLQUFLLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDOUIsRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUN6RCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQXVCLEVBQ3ZCLE1BQWtCLEVBQ2xCLE9BQW1CLEVBQ25CLE9BQWdDO0lBRWhDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBJbmplY3RvciwgU2lnbmFsLCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIExpc3RlbiBmb3IgY2hhbmdlcyB0byBhIHNpZ25hbCBhbmQgY2FsbCBhIGZ1bmN0aW9uIHdoZW4gdGhlIHNpZ25hbCBjaGFuZ2VzLlxuICogQHBhcmFtIHNvdXJjZVxuICogQHBhcmFtIGZuXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHBhcmFtIG9wdGlvbnMuaW5qZWN0b3JcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gb25DaGFuZ2U8VD4oXG4gIHNvdXJjZTogU2lnbmFsPFQgfCBudWxsIHwgdW5kZWZpbmVkPixcbiAgZm46ICh2YWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsIHByZXZpb3VzVmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB2b2lkLFxuICBvcHRpb25zPzogeyBpbmplY3RvcjogSW5qZWN0b3IgfSxcbik6IHZvaWQge1xuICBjb25zdCBwcmV2aW91c1ZhbHVlID0gc2lnbmFsKHNvdXJjZSgpKTtcblxuICBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBzb3VyY2UoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gcHJldmlvdXNWYWx1ZSgpKSB7XG4gICAgICAgIGZuKHZhbHVlLCBwcmV2aW91c1ZhbHVlKCkpO1xuICAgICAgICBwcmV2aW91c1ZhbHVlLnNldCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlLCBpbmplY3Rvcjogb3B0aW9ucz8uaW5qZWN0b3IgfSxcbiAgKTtcbn1cblxuLyoqXG4gKiBMaXN0ZW4gZm9yIGNoYW5nZXMgdG8gYSBib29sZWFuIHNpZ25hbCBhbmQgY2FsbCBvbmUgb2YgdHdvIGZ1bmN0aW9ucyB3aGVuIHRoZSBzaWduYWwgY2hhbmdlcy5cbiAqIEBwYXJhbSBzb3VyY2VcbiAqIEBwYXJhbSBvblRydWVcbiAqIEBwYXJhbSBvbkZhbHNlXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25Cb29sZWFuQ2hhbmdlKFxuICBzb3VyY2U6IFNpZ25hbDxib29sZWFuPixcbiAgb25UcnVlOiAoKSA9PiB2b2lkLFxuICBvbkZhbHNlOiAoKSA9PiB2b2lkLFxuICBvcHRpb25zPzogeyBpbmplY3RvcjogSW5qZWN0b3IgfSxcbik6IHZvaWQge1xuICBvbkNoYW5nZShzb3VyY2UsIHZhbHVlID0+ICh2YWx1ZSA/IG9uVHJ1ZSgpIDogb25GYWxzZSgpKSwgb3B0aW9ucyk7XG59XG4iXX0=
@@ -58,10 +58,10 @@ class NgpVisuallyHidden {
58
58
  setVisibility(visible) {
59
59
  this.hidden.set(!visible);
60
60
  }
61
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpVisuallyHidden, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
62
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpVisuallyHidden, isStandalone: true, selector: "[ngpVisuallyHidden]", host: { properties: { "style": "style()" } }, providers: [{ provide: NgpVisuallyHiddenToken, useExisting: NgpVisuallyHidden }], exportAs: ["ngpVisuallyHidden"], ngImport: i0 }); }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpVisuallyHidden, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
62
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: NgpVisuallyHidden, isStandalone: true, selector: "[ngpVisuallyHidden]", host: { properties: { "style": "style()" } }, providers: [{ provide: NgpVisuallyHiddenToken, useExisting: NgpVisuallyHidden }], exportAs: ["ngpVisuallyHidden"], ngImport: i0 }); }
63
63
  }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpVisuallyHidden, decorators: [{
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpVisuallyHidden, decorators: [{
65
65
  type: Directive,
66
66
  args: [{
67
67
  standalone: true,
@@ -1,6 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, input, Directive, booleanAttribute, contentChild, computed, HostListener, model } from '@angular/core';
3
3
  import { uniqueId, injectDimensions } from 'ng-primitives/utils';
4
+ import * as i1 from 'ng-primitives/interactions';
5
+ import { NgpHover, NgpPress, NgpFocusVisible } from 'ng-primitives/interactions';
4
6
 
5
7
  /**
6
8
  * Copyright © 2024 Angular Primitives.
@@ -76,10 +78,10 @@ class NgpAccordionContent {
76
78
  */
77
79
  this.dimensions = injectDimensions();
78
80
  }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAccordionContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
80
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpAccordionContent, isStandalone: true, selector: "[ngpAccordionContent]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "region" }, properties: { "id": "id()", "attr.data-orientation": "accordion.orientation()", "attr.data-state": "accordionItem.open() ? \"open\" : \"closed\"", "attr.aria-labelledby": "accordionItem.triggerId()", "style.--ngp-accordion-content-width.px": "dimensions().width", "style.--ngp-accordion-content-height.px": "dimensions().height", "hidden": "!accordionItem.open() && dimensions().mounted ? true : null" } }, providers: [{ provide: NgpAccordionContentToken, useExisting: NgpAccordionContent }], exportAs: ["ngpAccordionContent"], ngImport: i0 }); }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordionContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
82
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpAccordionContent, isStandalone: true, selector: "[ngpAccordionContent]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "region" }, properties: { "id": "id()", "attr.data-orientation": "accordion.orientation()", "attr.data-open": "dimensions().mounted ? accordionItem.open() : null", "attr.aria-labelledby": "accordionItem.triggerId()", "style.--ngp-accordion-content-width.px": "dimensions().width", "style.--ngp-accordion-content-height.px": "dimensions().height" } }, providers: [{ provide: NgpAccordionContentToken, useExisting: NgpAccordionContent }], exportAs: ["ngpAccordionContent"], ngImport: i0 }); }
81
83
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAccordionContent, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordionContent, decorators: [{
83
85
  type: Directive,
84
86
  args: [{
85
87
  standalone: true,
@@ -90,11 +92,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
90
92
  role: 'region',
91
93
  '[id]': 'id()',
92
94
  '[attr.data-orientation]': 'accordion.orientation()',
93
- '[attr.data-state]': 'accordionItem.open() ? "open" : "closed"',
95
+ '[attr.data-open]': 'dimensions().mounted ? accordionItem.open() : null',
94
96
  '[attr.aria-labelledby]': 'accordionItem.triggerId()',
95
97
  '[style.--ngp-accordion-content-width.px]': 'dimensions().width',
96
98
  '[style.--ngp-accordion-content-height.px]': 'dimensions().height',
97
- '[hidden]': '!accordionItem.open() && dimensions().mounted ? true : null',
98
99
  },
99
100
  }]
100
101
  }] });
@@ -155,10 +156,10 @@ class NgpAccordionItem {
155
156
  */
156
157
  this.contentId = computed(() => this.content()?.id());
157
158
  }
158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
159
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.0.2", type: NgpAccordionItem, isStandalone: true, selector: "[ngpAccordionItem]", inputs: { value: { classPropertyName: "value", publicName: "ngpAccordionItemValue", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpAccordionItemDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-orientation": "accordion.orientation()", "attr.data-state": "open() ? \"open\" : \"closed\"", "attr.data-disabled": "disabled() || accordion.disabled()" } }, providers: [{ provide: NgpAccordionItemToken, useExisting: NgpAccordionItem }], queries: [{ propertyName: "trigger", first: true, predicate: NgpAccordionTriggerToken, descendants: true, isSignal: true }, { propertyName: "content", first: true, predicate: NgpAccordionContentToken, descendants: true, isSignal: true }], exportAs: ["ngpAccordionItem"], ngImport: i0 }); }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
160
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.1.1", type: NgpAccordionItem, isStandalone: true, selector: "[ngpAccordionItem]", inputs: { value: { classPropertyName: "value", publicName: "ngpAccordionItemValue", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpAccordionItemDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-orientation": "accordion.orientation()", "attr.data-open": "open()", "attr.data-disabled": "disabled() || accordion.disabled()" } }, providers: [{ provide: NgpAccordionItemToken, useExisting: NgpAccordionItem }], queries: [{ propertyName: "trigger", first: true, predicate: NgpAccordionTriggerToken, descendants: true, isSignal: true }, { propertyName: "content", first: true, predicate: NgpAccordionContentToken, descendants: true, isSignal: true }], exportAs: ["ngpAccordionItem"], ngImport: i0 }); }
160
161
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAccordionItem, decorators: [{
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordionItem, decorators: [{
162
163
  type: Directive,
163
164
  args: [{
164
165
  standalone: true,
@@ -167,7 +168,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
167
168
  providers: [{ provide: NgpAccordionItemToken, useExisting: NgpAccordionItem }],
168
169
  host: {
169
170
  '[attr.data-orientation]': 'accordion.orientation()',
170
- '[attr.data-state]': 'open() ? "open" : "closed"',
171
+ '[attr.data-open]': 'open()',
171
172
  '[attr.data-disabled]': 'disabled() || accordion.disabled()',
172
173
  },
173
174
  }]
@@ -204,20 +205,21 @@ class NgpAccordionTrigger {
204
205
  }
205
206
  this.accordion.toggle(this.item.value());
206
207
  }
207
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
208
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpAccordionTrigger, isStandalone: true, selector: "[ngpAccordionTrigger]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "toggle()" }, properties: { "id": "id()", "attr.data-orientation": "accordion.orientation()", "attr.data-state": "item.open() ? \"open\" : \"closed\"", "attr.data-disabled": "item.disabled() || accordion.disabled()", "attr.aria-controls": "item.contentId()", "attr.aria-expanded": "item.open()" } }, providers: [{ provide: NgpAccordionTriggerToken, useExisting: NgpAccordionTrigger }], exportAs: ["ngpAccordionTrigger"], ngImport: i0 }); }
208
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
209
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpAccordionTrigger, isStandalone: true, selector: "[ngpAccordionTrigger]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "toggle()" }, properties: { "id": "id()", "attr.data-orientation": "accordion.orientation()", "attr.data-open": "item.open()", "attr.data-disabled": "item.disabled() || accordion.disabled()", "attr.aria-controls": "item.contentId()", "attr.aria-expanded": "item.open()" } }, providers: [{ provide: NgpAccordionTriggerToken, useExisting: NgpAccordionTrigger }], exportAs: ["ngpAccordionTrigger"], hostDirectives: [{ directive: i1.NgpHover }, { directive: i1.NgpPress }, { directive: i1.NgpFocusVisible }], ngImport: i0 }); }
209
210
  }
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAccordionTrigger, decorators: [{
211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordionTrigger, decorators: [{
211
212
  type: Directive,
212
213
  args: [{
213
214
  standalone: true,
214
215
  selector: '[ngpAccordionTrigger]',
215
216
  exportAs: 'ngpAccordionTrigger',
216
217
  providers: [{ provide: NgpAccordionTriggerToken, useExisting: NgpAccordionTrigger }],
218
+ hostDirectives: [NgpHover, NgpPress, NgpFocusVisible],
217
219
  host: {
218
220
  '[id]': 'id()',
219
221
  '[attr.data-orientation]': 'accordion.orientation()',
220
- '[attr.data-state]': 'item.open() ? "open" : "closed"',
222
+ '[attr.data-open]': 'item.open()',
221
223
  '[attr.data-disabled]': 'item.disabled() || accordion.disabled()',
222
224
  '[attr.aria-controls]': 'item.contentId()',
223
225
  '[attr.aria-expanded]': 'item.open()',
@@ -332,10 +334,10 @@ class NgpAccordion {
332
334
  this.value.set([...values, value]);
333
335
  }
334
336
  }
335
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
336
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpAccordion, isStandalone: true, selector: "[ngpAccordion]", inputs: { type: { classPropertyName: "type", publicName: "ngpAccordionType", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "ngpAccordionCollapsible", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "ngpAccordionValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpAccordionDisabled", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "ngpAccordionOrientation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "ngpAccordionValueChange" }, host: { properties: { "attr.data-orientation": "orientation()" } }, providers: [{ provide: NgpAccordionToken, useExisting: NgpAccordion }], exportAs: ["ngpAccordion"], ngImport: i0 }); }
337
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
338
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpAccordion, isStandalone: true, selector: "[ngpAccordion]", inputs: { type: { classPropertyName: "type", publicName: "ngpAccordionType", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "ngpAccordionCollapsible", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "ngpAccordionValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpAccordionDisabled", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "ngpAccordionOrientation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "ngpAccordionValueChange" }, host: { properties: { "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled()" } }, providers: [{ provide: NgpAccordionToken, useExisting: NgpAccordion }], exportAs: ["ngpAccordion"], ngImport: i0 }); }
337
339
  }
338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAccordion, decorators: [{
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAccordion, decorators: [{
339
341
  type: Directive,
340
342
  args: [{
341
343
  standalone: true,
@@ -344,6 +346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
344
346
  providers: [{ provide: NgpAccordionToken, useExisting: NgpAccordion }],
345
347
  host: {
346
348
  '[attr.data-orientation]': 'orientation()',
349
+ '[attr.data-disabled]': 'disabled()',
347
350
  },
348
351
  }]
349
352
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-accordion.mjs","sources":["../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item.token.ts","../../../../packages/ng-primitives/accordion/src/accordion/accordion.token.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content.token.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content.directive.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger.token.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item.directive.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger.directive.ts","../../../../packages/ng-primitives/accordion/src/config/accordion.config.ts","../../../../packages/ng-primitives/accordion/src/accordion/accordion.directive.ts","../../../../packages/ng-primitives/accordion/src/index.ts","../../../../packages/ng-primitives/accordion/src/ng-primitives-accordion.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 { NgpAccordionItem } from './accordion-item.directive';\n\nexport const NgpAccordionItemToken = new InjectionToken<NgpAccordionItem<unknown>>(\n 'NgpAccordionItemToken',\n);\n\n/**\n * Inject the AccordionItem directive instance\n * @returns The AccordionItem directive instance\n */\nexport function injectAccordionItem<T>(): NgpAccordionItem<T> {\n return inject(NgpAccordionItemToken) as NgpAccordionItem<T>;\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 { NgpAccordion } from './accordion.directive';\n\nexport const NgpAccordionToken = new InjectionToken<NgpAccordion<unknown>>('NgpAccordionToken');\n\n/**\n * Inject the Accordion directive instance\n * @returns The Accordion directive instance\n */\nexport function injectAccordion<T>(): NgpAccordion<T> {\n return inject(NgpAccordionToken) as NgpAccordion<T>;\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 { NgpAccordionContent } from './accordion-content.directive';\n\nexport const NgpAccordionContentToken = new InjectionToken<NgpAccordionContent>(\n 'NgpAccordionContentToken',\n);\n\n/**\n * Inject the AccordionContent directive instance\n * @returns The AccordionContent directive instance\n */\nexport function injectAccordionContent(): NgpAccordionContent {\n return inject(NgpAccordionContentToken);\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, input } from '@angular/core';\nimport { injectDimensions, uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionItem } from '../accordion-item/accordion-item.token';\nimport { injectAccordion } from '../accordion/accordion.token';\nimport { NgpAccordionContentToken } from './accordion-content.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpAccordionContent]',\n exportAs: 'ngpAccordionContent',\n providers: [{ provide: NgpAccordionContentToken, useExisting: NgpAccordionContent }],\n host: {\n role: 'region',\n '[id]': 'id()',\n '[attr.data-orientation]': 'accordion.orientation()',\n '[attr.data-state]': 'accordionItem.open() ? \"open\" : \"closed\"',\n '[attr.aria-labelledby]': 'accordionItem.triggerId()',\n '[style.--ngp-accordion-content-width.px]': 'dimensions().width',\n '[style.--ngp-accordion-content-height.px]': 'dimensions().height',\n '[hidden]': '!accordionItem.open() && dimensions().mounted ? true : null',\n },\n})\nexport class NgpAccordionContent {\n /**\n * Access the accordion\n */\n protected readonly accordion = injectAccordion();\n\n /**\n * Access the accordion item\n */\n protected readonly accordionItem = injectAccordionItem();\n\n /**\n * The id of the content region\n */\n readonly id = input<string>(uniqueId('ngp-accordion-content'));\n\n /**\n * The size of the content region\n */\n protected readonly dimensions = injectDimensions();\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 { NgpAccordionTrigger } from './accordion-trigger.directive';\n\nexport const NgpAccordionTriggerToken = new InjectionToken<NgpAccordionTrigger>(\n 'NgpAccordionTriggerToken',\n);\n\n/**\n * Inject the AccordionTrigger directive instance\n * @returns The AccordionTrigger directive instance\n */\nexport function injectAccordionTrigger(): NgpAccordionTrigger {\n return inject(NgpAccordionTriggerToken);\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 { Directive, booleanAttribute, computed, contentChild, input } from '@angular/core';\nimport { NgpAccordionContentToken } from '../accordion-content/accordion-content.token';\nimport { NgpAccordionTriggerToken } from '../accordion-trigger/accordion-trigger.token';\nimport { injectAccordion } from '../accordion/accordion.token';\nimport { NgpAccordionItemToken } from './accordion-item.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpAccordionItem]',\n exportAs: 'ngpAccordionItem',\n providers: [{ provide: NgpAccordionItemToken, useExisting: NgpAccordionItem }],\n host: {\n '[attr.data-orientation]': 'accordion.orientation()',\n '[attr.data-state]': 'open() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'disabled() || accordion.disabled()',\n },\n})\nexport class NgpAccordionItem<T> {\n /**\n * Access the accordion.\n */\n protected readonly accordion = injectAccordion();\n\n /**\n * The value of the accordion item.\n */\n readonly value = input.required<T>({\n alias: 'ngpAccordionItemValue',\n });\n\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionItemDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Access the accordion trigger\n */\n private readonly trigger = contentChild(NgpAccordionTriggerToken);\n\n /**\n * Access the accordion content\n */\n private readonly content = contentChild(NgpAccordionContentToken);\n\n /**\n * Whether the accordion item is expanded.\n */\n readonly open = computed<boolean>(() => this.accordion.isOpen(this.value()));\n\n /**\n * The trigger id.\n */\n readonly triggerId = computed(() => this.trigger()?.id());\n\n /**\n * The content id.\n */\n readonly contentId = computed(() => this.content()?.id());\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, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionItem } from '../accordion-item/accordion-item.token';\nimport { injectAccordion } from '../accordion/accordion.token';\nimport { NgpAccordionTriggerToken } from './accordion-trigger.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpAccordionTrigger]',\n exportAs: 'ngpAccordionTrigger',\n providers: [{ provide: NgpAccordionTriggerToken, useExisting: NgpAccordionTrigger }],\n host: {\n '[id]': 'id()',\n '[attr.data-orientation]': 'accordion.orientation()',\n '[attr.data-state]': 'item.open() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'item.disabled() || accordion.disabled()',\n '[attr.aria-controls]': 'item.contentId()',\n '[attr.aria-expanded]': 'item.open()',\n },\n})\nexport class NgpAccordionTrigger {\n /**\n * Access the parent accordion.\n */\n protected readonly accordion = injectAccordion();\n\n /**\n * The item instance.\n */\n protected readonly item = injectAccordionItem();\n\n /**\n * The id of the trigger.\n */\n readonly id = input<string>(uniqueId('ngp-accordion-trigger'));\n\n /**\n * Toggle the accordion item.\n */\n @HostListener('click')\n toggle(): void {\n if (this.item.disabled() || this.accordion.disabled()) {\n return;\n }\n\n this.accordion.toggle(this.item.value());\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, Provider, inject } from '@angular/core';\nimport { NgpAccordionType } from '../accordion/accordion.directive';\n\nexport interface NgpAccordionConfig {\n /**\n * The default type of the accordion\n * @default 'single'\n */\n type: NgpAccordionType;\n /**\n * Whether the accordion is collapsible\n * @default false\n */\n collapsible: boolean;\n /**\n * The default orientation of the accordion\n * @default 'vertical'\n */\n orientation: 'vertical' | 'horizontal';\n}\n\nexport const defaultAccordionConfig: NgpAccordionConfig = {\n type: 'single',\n collapsible: false,\n orientation: 'vertical',\n};\n\nexport const NgpAccordionConfigToken = new InjectionToken<NgpAccordionConfig>(\n 'NgpAccordionConfigToken',\n);\n\n/**\n * Provide the default Accordion configuration\n * @param config The Accordion configuration\n * @returns The provider\n */\nexport function provideAccordionConfig(config: Partial<NgpAccordionConfig>): Provider[] {\n return [\n {\n provide: NgpAccordionConfigToken,\n useValue: { ...defaultAccordionConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Accordion configuration\n * @returns The global Accordion configuration\n */\nexport function injectAccordionConfig(): NgpAccordionConfig {\n return inject(NgpAccordionConfigToken, { optional: true }) ?? defaultAccordionConfig;\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 { Directive, booleanAttribute, input, model } from '@angular/core';\nimport { injectAccordionConfig } from '../config/accordion.config';\nimport { NgpAccordionToken } from './accordion.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpAccordion]',\n exportAs: 'ngpAccordion',\n providers: [{ provide: NgpAccordionToken, useExisting: NgpAccordion }],\n host: {\n '[attr.data-orientation]': 'orientation()',\n },\n})\nexport class NgpAccordion<T> {\n /**\n * Access the global accordion configuration.\n */\n private readonly config = injectAccordionConfig();\n\n /**\n * The type of the accordion.\n */\n readonly type = input<NgpAccordionType>(this.config.type, {\n alias: 'ngpAccordionType',\n });\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible = input<boolean, BooleanInput>(this.config.collapsible, {\n alias: 'ngpAccordionCollapsible',\n transform: booleanAttribute,\n });\n\n /**\n * The value of the accordion.\n */\n readonly value = model<T | T[] | null>(null, {\n alias: 'ngpAccordionValue',\n });\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion orientation.\n */\n readonly orientation = input<'horizontal' | 'vertical'>(this.config.orientation, {\n alias: 'ngpAccordionOrientation',\n });\n\n /**\n * @param value The value to check.\n * @returns Whether the value is open.\n * @internal\n */\n isOpen(value: T): boolean {\n if (this.type() === 'multiple') {\n return (this.value() as T[] | null)?.includes(value) ?? false;\n }\n\n return this.value() === value;\n }\n\n toggle(value: T): void {\n const isOpen = this.isOpen(value);\n\n // if we are in single mode and the value is already open and the accordion is not collapsible, do nothing\n if (this.type() === 'single' && isOpen && !this.collapsible()) {\n return;\n }\n\n // if we are in single mode then toggle the value\n if (this.type() === 'single') {\n this.value.set(isOpen ? null : value);\n return;\n }\n\n // if we are in multiple mode then toggle the value\n const values = (this.value() as T[]) ?? [];\n\n if (isOpen) {\n this.value.set(values.filter(v => v !== value));\n } else {\n this.value.set([...values, value]);\n }\n }\n}\n\nexport type NgpAccordionType = 'single' | 'multiple';\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 { NgpAccordionContent } from './accordion-content/accordion-content.directive';\nexport { NgpAccordionContentToken } from './accordion-content/accordion-content.token';\nexport { NgpAccordionItem } from './accordion-item/accordion-item.directive';\nexport { NgpAccordionItemToken } from './accordion-item/accordion-item.token';\nexport { NgpAccordionTrigger } from './accordion-trigger/accordion-trigger.directive';\nexport { NgpAccordionTriggerToken } from './accordion-trigger/accordion-trigger.token';\nexport { NgpAccordion } from './accordion/accordion.directive';\nexport { NgpAccordionToken } from './accordion/accordion.token';\nexport { NgpAccordionConfig, provideAccordionConfig } from './config/accordion.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-primitives-accordion.mjs","sources":["../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item.token.ts","../../../../packages/ng-primitives/accordion/src/accordion/accordion.token.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content.token.ts","../../../../packages/ng-primitives/accordion/src/accordion-content/accordion-content.directive.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger.token.ts","../../../../packages/ng-primitives/accordion/src/accordion-item/accordion-item.directive.ts","../../../../packages/ng-primitives/accordion/src/accordion-trigger/accordion-trigger.directive.ts","../../../../packages/ng-primitives/accordion/src/config/accordion.config.ts","../../../../packages/ng-primitives/accordion/src/accordion/accordion.directive.ts","../../../../packages/ng-primitives/accordion/src/index.ts","../../../../packages/ng-primitives/accordion/src/ng-primitives-accordion.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 { NgpAccordionItem } from './accordion-item.directive';\n\nexport const NgpAccordionItemToken = new InjectionToken<NgpAccordionItem<unknown>>(\n 'NgpAccordionItemToken',\n);\n\n/**\n * Inject the AccordionItem directive instance\n * @returns The AccordionItem directive instance\n */\nexport function injectAccordionItem<T>(): NgpAccordionItem<T> {\n return inject(NgpAccordionItemToken) as NgpAccordionItem<T>;\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 { NgpAccordion } from './accordion.directive';\n\nexport const NgpAccordionToken = new InjectionToken<NgpAccordion<unknown>>('NgpAccordionToken');\n\n/**\n * Inject the Accordion directive instance\n * @returns The Accordion directive instance\n */\nexport function injectAccordion<T>(): NgpAccordion<T> {\n return inject(NgpAccordionToken) as NgpAccordion<T>;\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 { NgpAccordionContent } from './accordion-content.directive';\n\nexport const NgpAccordionContentToken = new InjectionToken<NgpAccordionContent>(\n 'NgpAccordionContentToken',\n);\n\n/**\n * Inject the AccordionContent directive instance\n * @returns The AccordionContent directive instance\n */\nexport function injectAccordionContent(): NgpAccordionContent {\n return inject(NgpAccordionContentToken);\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, input } from '@angular/core';\nimport { injectDimensions, uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionItem } from '../accordion-item/accordion-item.token';\nimport { injectAccordion } from '../accordion/accordion.token';\nimport { NgpAccordionContentToken } from './accordion-content.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpAccordionContent]',\n exportAs: 'ngpAccordionContent',\n providers: [{ provide: NgpAccordionContentToken, useExisting: NgpAccordionContent }],\n host: {\n role: 'region',\n '[id]': 'id()',\n '[attr.data-orientation]': 'accordion.orientation()',\n '[attr.data-open]': 'dimensions().mounted ? accordionItem.open() : null',\n '[attr.aria-labelledby]': 'accordionItem.triggerId()',\n '[style.--ngp-accordion-content-width.px]': 'dimensions().width',\n '[style.--ngp-accordion-content-height.px]': 'dimensions().height',\n },\n})\nexport class NgpAccordionContent {\n /**\n * Access the accordion\n */\n protected readonly accordion = injectAccordion();\n\n /**\n * Access the accordion item\n */\n protected readonly accordionItem = injectAccordionItem();\n\n /**\n * The id of the content region\n */\n readonly id = input<string>(uniqueId('ngp-accordion-content'));\n\n /**\n * The size of the content region\n */\n protected readonly dimensions = injectDimensions();\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 { NgpAccordionTrigger } from './accordion-trigger.directive';\n\nexport const NgpAccordionTriggerToken = new InjectionToken<NgpAccordionTrigger>(\n 'NgpAccordionTriggerToken',\n);\n\n/**\n * Inject the AccordionTrigger directive instance\n * @returns The AccordionTrigger directive instance\n */\nexport function injectAccordionTrigger(): NgpAccordionTrigger {\n return inject(NgpAccordionTriggerToken);\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 { Directive, booleanAttribute, computed, contentChild, input } from '@angular/core';\nimport { NgpAccordionContentToken } from '../accordion-content/accordion-content.token';\nimport { NgpAccordionTriggerToken } from '../accordion-trigger/accordion-trigger.token';\nimport { injectAccordion } from '../accordion/accordion.token';\nimport { NgpAccordionItemToken } from './accordion-item.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpAccordionItem]',\n exportAs: 'ngpAccordionItem',\n providers: [{ provide: NgpAccordionItemToken, useExisting: NgpAccordionItem }],\n host: {\n '[attr.data-orientation]': 'accordion.orientation()',\n '[attr.data-open]': 'open()',\n '[attr.data-disabled]': 'disabled() || accordion.disabled()',\n },\n})\nexport class NgpAccordionItem<T> {\n /**\n * Access the accordion.\n */\n protected readonly accordion = injectAccordion();\n\n /**\n * The value of the accordion item.\n */\n readonly value = input.required<T>({\n alias: 'ngpAccordionItemValue',\n });\n\n /**\n * Whether the accordion item is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionItemDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * Access the accordion trigger\n */\n private readonly trigger = contentChild(NgpAccordionTriggerToken);\n\n /**\n * Access the accordion content\n */\n private readonly content = contentChild(NgpAccordionContentToken);\n\n /**\n * Whether the accordion item is expanded.\n */\n readonly open = computed<boolean>(() => this.accordion.isOpen(this.value()));\n\n /**\n * The trigger id.\n */\n readonly triggerId = computed(() => this.trigger()?.id());\n\n /**\n * The content id.\n */\n readonly contentId = computed(() => this.content()?.id());\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, input } from '@angular/core';\nimport { NgpFocusVisible, NgpHover, NgpPress } from 'ng-primitives/interactions';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectAccordionItem } from '../accordion-item/accordion-item.token';\nimport { injectAccordion } from '../accordion/accordion.token';\nimport { NgpAccordionTriggerToken } from './accordion-trigger.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpAccordionTrigger]',\n exportAs: 'ngpAccordionTrigger',\n providers: [{ provide: NgpAccordionTriggerToken, useExisting: NgpAccordionTrigger }],\n hostDirectives: [NgpHover, NgpPress, NgpFocusVisible],\n host: {\n '[id]': 'id()',\n '[attr.data-orientation]': 'accordion.orientation()',\n '[attr.data-open]': 'item.open()',\n '[attr.data-disabled]': 'item.disabled() || accordion.disabled()',\n '[attr.aria-controls]': 'item.contentId()',\n '[attr.aria-expanded]': 'item.open()',\n },\n})\nexport class NgpAccordionTrigger {\n /**\n * Access the parent accordion.\n */\n protected readonly accordion = injectAccordion();\n\n /**\n * The item instance.\n */\n protected readonly item = injectAccordionItem();\n\n /**\n * The id of the trigger.\n */\n readonly id = input<string>(uniqueId('ngp-accordion-trigger'));\n\n /**\n * Toggle the accordion item.\n */\n @HostListener('click')\n toggle(): void {\n if (this.item.disabled() || this.accordion.disabled()) {\n return;\n }\n\n this.accordion.toggle(this.item.value());\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, Provider, inject } from '@angular/core';\nimport { NgpAccordionType } from '../accordion/accordion.directive';\n\nexport interface NgpAccordionConfig {\n /**\n * The default type of the accordion\n * @default 'single'\n */\n type: NgpAccordionType;\n /**\n * Whether the accordion is collapsible\n * @default false\n */\n collapsible: boolean;\n /**\n * The default orientation of the accordion\n * @default 'vertical'\n */\n orientation: 'vertical' | 'horizontal';\n}\n\nexport const defaultAccordionConfig: NgpAccordionConfig = {\n type: 'single',\n collapsible: false,\n orientation: 'vertical',\n};\n\nexport const NgpAccordionConfigToken = new InjectionToken<NgpAccordionConfig>(\n 'NgpAccordionConfigToken',\n);\n\n/**\n * Provide the default Accordion configuration\n * @param config The Accordion configuration\n * @returns The provider\n */\nexport function provideAccordionConfig(config: Partial<NgpAccordionConfig>): Provider[] {\n return [\n {\n provide: NgpAccordionConfigToken,\n useValue: { ...defaultAccordionConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the Accordion configuration\n * @returns The global Accordion configuration\n */\nexport function injectAccordionConfig(): NgpAccordionConfig {\n return inject(NgpAccordionConfigToken, { optional: true }) ?? defaultAccordionConfig;\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 { Directive, booleanAttribute, input, model } from '@angular/core';\nimport { injectAccordionConfig } from '../config/accordion.config';\nimport { NgpAccordionToken } from './accordion.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpAccordion]',\n exportAs: 'ngpAccordion',\n providers: [{ provide: NgpAccordionToken, useExisting: NgpAccordion }],\n host: {\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled()',\n },\n})\nexport class NgpAccordion<T> {\n /**\n * Access the global accordion configuration.\n */\n private readonly config = injectAccordionConfig();\n\n /**\n * The type of the accordion.\n */\n readonly type = input<NgpAccordionType>(this.config.type, {\n alias: 'ngpAccordionType',\n });\n\n /**\n * Whether the accordion is collapsible.\n */\n readonly collapsible = input<boolean, BooleanInput>(this.config.collapsible, {\n alias: 'ngpAccordionCollapsible',\n transform: booleanAttribute,\n });\n\n /**\n * The value of the accordion.\n */\n readonly value = model<T | T[] | null>(null, {\n alias: 'ngpAccordionValue',\n });\n\n /**\n * Whether the accordion is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpAccordionDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * The accordion orientation.\n */\n readonly orientation = input<'horizontal' | 'vertical'>(this.config.orientation, {\n alias: 'ngpAccordionOrientation',\n });\n\n /**\n * @param value The value to check.\n * @returns Whether the value is open.\n * @internal\n */\n isOpen(value: T): boolean {\n if (this.type() === 'multiple') {\n return (this.value() as T[] | null)?.includes(value) ?? false;\n }\n\n return this.value() === value;\n }\n\n toggle(value: T): void {\n const isOpen = this.isOpen(value);\n\n // if we are in single mode and the value is already open and the accordion is not collapsible, do nothing\n if (this.type() === 'single' && isOpen && !this.collapsible()) {\n return;\n }\n\n // if we are in single mode then toggle the value\n if (this.type() === 'single') {\n this.value.set(isOpen ? null : value);\n return;\n }\n\n // if we are in multiple mode then toggle the value\n const values = (this.value() as T[]) ?? [];\n\n if (isOpen) {\n this.value.set(values.filter(v => v !== value));\n } else {\n this.value.set([...values, value]);\n }\n }\n}\n\nexport type NgpAccordionType = 'single' | 'multiple';\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 { NgpAccordionContent } from './accordion-content/accordion-content.directive';\nexport { NgpAccordionContentToken } from './accordion-content/accordion-content.token';\nexport { NgpAccordionItem } from './accordion-item/accordion-item.directive';\nexport { NgpAccordionItemToken } from './accordion-item/accordion-item.token';\nexport { NgpAccordionTrigger } from './accordion-trigger/accordion-trigger.directive';\nexport { NgpAccordionTriggerToken } from './accordion-trigger/accordion-trigger.token';\nexport { NgpAccordion } from './accordion/accordion.directive';\nexport { NgpAccordionToken } from './accordion/accordion.token';\nexport { NgpAccordionConfig, provideAccordionConfig } from './config/accordion.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, signal, output, Directive, HostListener } from '@angular/core';
3
+ import { injectStyleInjector } from 'ng-primitives/internal';
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 NgpAutofillToken = new InjectionToken('NgpAutofillToken');
13
+ /**
14
+ * Inject the Autofill directive instance
15
+ */
16
+ function injectAutofill() {
17
+ return inject(NgpAutofillToken);
18
+ }
19
+
20
+ /**
21
+ * Copyright © 2024 Angular Primitives.
22
+ * https://github.com/ng-primitives/ng-primitives
23
+ *
24
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
25
+ * LICENSE file in the root directory of this source tree.
26
+ */
27
+ class NgpAutofill {
28
+ constructor() {
29
+ /**
30
+ * Access the style injector.
31
+ */
32
+ this.styleInjector = injectStyleInjector();
33
+ /**
34
+ * Store the autofill state.
35
+ */
36
+ this.autofilled = signal(false);
37
+ /**
38
+ * Emit when the autofill state changes.
39
+ */
40
+ this.autofillChange = output({
41
+ alias: 'ngpAutofill',
42
+ });
43
+ // This technique is based on that used by the Angular CDK
44
+ // https://github.com/angular/components/blob/main/src/cdk/text-field/_index.scss
45
+ this.styleInjector.add('ngp-autofill', `
46
+ @keyframes ngp-autofill-start { }
47
+ @keyframes ngp-autofill-end {}
48
+
49
+ [data-autofill]:-webkit-autofill {
50
+ animation: ngp-autofill-start 0s 1ms;
51
+ }
52
+
53
+ [data-autofill]:not(:-webkit-autofill) {
54
+ animation: ngp-autofill-end 0s 1ms;
55
+ }
56
+ `);
57
+ }
58
+ onAnimationStart(event) {
59
+ if (event.animationName === 'ngp-autofill-start') {
60
+ this.autofilled.set(true);
61
+ this.autofillChange.emit(true);
62
+ }
63
+ if (event.animationName === 'ngp-autofill-end') {
64
+ this.autofilled.set(false);
65
+ this.autofillChange.emit(false);
66
+ }
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAutofill, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
69
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: NgpAutofill, isStandalone: true, selector: "[ngpAutofill]", outputs: { autofillChange: "ngpAutofill" }, host: { listeners: { "animationstart": "onAnimationStart($event)" }, properties: { "attr.data-autofill": "autofilled()" } }, providers: [{ provide: NgpAutofillToken, useExisting: NgpAutofill }], exportAs: ["ngpAutofill"], ngImport: i0 }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAutofill, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ standalone: true,
75
+ selector: '[ngpAutofill]',
76
+ exportAs: 'ngpAutofill',
77
+ providers: [{ provide: NgpAutofillToken, useExisting: NgpAutofill }],
78
+ host: {
79
+ '[attr.data-autofill]': 'autofilled()',
80
+ },
81
+ }]
82
+ }], ctorParameters: () => [], propDecorators: { onAnimationStart: [{
83
+ type: HostListener,
84
+ args: ['animationstart', ['$event']]
85
+ }] } });
86
+
87
+ /**
88
+ * Copyright © 2024 Angular Primitives.
89
+ * https://github.com/ng-primitives/ng-primitives
90
+ *
91
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
92
+ * LICENSE file in the root directory of this source tree.
93
+ */
94
+
95
+ /**
96
+ * Generated bundle index. Do not edit.
97
+ */
98
+
99
+ export { NgpAutofill, NgpAutofillToken };
100
+ //# sourceMappingURL=ng-primitives-autofill.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-primitives-autofill.mjs","sources":["../../../../packages/ng-primitives/autofill/src/autofill/autofill.token.ts","../../../../packages/ng-primitives/autofill/src/autofill/autofill.directive.ts","../../../../packages/ng-primitives/autofill/src/index.ts","../../../../packages/ng-primitives/autofill/src/ng-primitives-autofill.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 { NgpAutofill } from './autofill.directive';\n\nexport const NgpAutofillToken = new InjectionToken<NgpAutofill>('NgpAutofillToken');\n\n/**\n * Inject the Autofill directive instance\n */\nexport function injectAutofill(): NgpAutofill {\n return inject(NgpAutofillToken);\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, output, signal } from '@angular/core';\nimport { injectStyleInjector } from 'ng-primitives/internal';\nimport { NgpAutofillToken } from './autofill.token';\n\n@Directive({\n standalone: true,\n selector: '[ngpAutofill]',\n exportAs: 'ngpAutofill',\n providers: [{ provide: NgpAutofillToken, useExisting: NgpAutofill }],\n host: {\n '[attr.data-autofill]': 'autofilled()',\n },\n})\nexport class NgpAutofill {\n /**\n * Access the style injector.\n */\n private readonly styleInjector = injectStyleInjector();\n\n /**\n * Store the autofill state.\n */\n protected readonly autofilled = signal(false);\n\n /**\n * Emit when the autofill state changes.\n */\n readonly autofillChange = output<boolean>({\n alias: 'ngpAutofill',\n });\n\n constructor() {\n // This technique is based on that used by the Angular CDK\n // https://github.com/angular/components/blob/main/src/cdk/text-field/_index.scss\n this.styleInjector.add(\n 'ngp-autofill',\n `\n @keyframes ngp-autofill-start { }\n @keyframes ngp-autofill-end {}\n\n [data-autofill]:-webkit-autofill {\n animation: ngp-autofill-start 0s 1ms;\n }\n\n [data-autofill]:not(:-webkit-autofill) {\n animation: ngp-autofill-end 0s 1ms;\n }\n `,\n );\n }\n\n @HostListener('animationstart', ['$event'])\n protected onAnimationStart(event: AnimationEvent): void {\n if (event.animationName === 'ngp-autofill-start') {\n this.autofilled.set(true);\n this.autofillChange.emit(true);\n }\n\n if (event.animationName === 'ngp-autofill-end') {\n this.autofilled.set(false);\n this.autofillChange.emit(false);\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 { NgpAutofill } from './autofill/autofill.directive';\nexport { NgpAutofillToken } from './autofill/autofill.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;;;AAMG;MAIU,gBAAgB,GAAG,IAAI,cAAc,CAAc,kBAAkB,EAAE;AAEpF;;AAEG;SACa,cAAc,GAAA;AAC5B,IAAA,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC;;ACjBA;;;;;;AAMG;MAcU,WAAW,CAAA;AAkBtB,IAAA,WAAA,GAAA;AAjBA;;AAEG;QACc,IAAa,CAAA,aAAA,GAAG,mBAAmB,EAAE,CAAC;AAEvD;;AAEG;AACgB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAE9C;;AAEG;QACM,IAAc,CAAA,cAAA,GAAG,MAAM,CAAU;AACxC,YAAA,KAAK,EAAE,aAAa;AACrB,SAAA,CAAC,CAAC;;;AAKD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,cAAc,EACd,CAAA;;;;;;;;;;;AAWC,MAAA,CAAA,CACF,CAAC;KACH;AAGS,IAAA,gBAAgB,CAAC,KAAqB,EAAA;AAC9C,QAAA,IAAI,KAAK,CAAC,aAAa,KAAK,oBAAoB,EAAE;AAChD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChC;AAED,QAAA,IAAI,KAAK,CAAC,aAAa,KAAK,kBAAkB,EAAE;AAC9C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;KACF;8GAjDU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EALX,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAKzD,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,aAAa;oBACvB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAa,WAAA,EAAE,CAAC;AACpE,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,cAAc;AACvC,qBAAA;AACF,iBAAA,CAAA;wDAwCW,gBAAgB,EAAA,CAAA;sBADzB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC1D5C;;;;;;AAMG;;ACNH;;AAEG;;;;"}
@@ -1,7 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, signal, Directive, input, numberAttribute, computed, ElementRef, HostListener } from '@angular/core';
3
3
  import { injectDisposables } from 'ng-primitives/utils';
4
- import * as i1 from 'ng-primitives/a11y';
4
+ import * as i1 from 'ng-primitives/interactions';
5
+ import { NgpHover, NgpFocusVisible, NgpPress } from 'ng-primitives/interactions';
6
+ import * as i1$1 from 'ng-primitives/a11y';
5
7
  import { injectVisuallyHidden, NgpVisuallyHidden } from 'ng-primitives/a11y';
6
8
 
7
9
  /**
@@ -43,10 +45,10 @@ class NgpAvatar {
43
45
  setState(state) {
44
46
  this.state.set(state);
45
47
  }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAvatar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
47
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpAvatar, isStandalone: true, selector: "[ngpAvatar]", host: { properties: { "attr.data-state": "state()" } }, providers: [{ provide: NgpAvatarToken, useExisting: NgpAvatar }], ngImport: i0 }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAvatar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
49
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: NgpAvatar, isStandalone: true, selector: "[ngpAvatar]", host: { properties: { "attr.data-state": "state()" } }, providers: [{ provide: NgpAvatarToken, useExisting: NgpAvatar }], hostDirectives: [{ directive: i1.NgpHover }, { directive: i1.NgpFocusVisible }, { directive: i1.NgpPress }], ngImport: i0 }); }
48
50
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAvatar, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAvatar, decorators: [{
50
52
  type: Directive,
51
53
  args: [{
52
54
  selector: '[ngpAvatar]',
@@ -55,6 +57,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
55
57
  host: {
56
58
  '[attr.data-state]': 'state()',
57
59
  },
60
+ hostDirectives: [NgpHover, NgpFocusVisible, NgpPress],
58
61
  }]
59
62
  }] });
60
63
  var NgpAvatarState;
@@ -134,10 +137,10 @@ class NgpAvatarFallback {
134
137
  ngOnInit() {
135
138
  this.disposables.setTimeout(() => this.delayElapsed.set(true), this.delay());
136
139
  }
137
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAvatarFallback, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
138
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpAvatarFallback, isStandalone: true, selector: "[ngpAvatarFallback]", inputs: { delay: { classPropertyName: "delay", publicName: "ngpAvatarFallbackDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.display": "visible() ? null : \"none\"" } }, ngImport: i0 }); }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAvatarFallback, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
141
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.1", type: NgpAvatarFallback, isStandalone: true, selector: "[ngpAvatarFallback]", inputs: { delay: { classPropertyName: "delay", publicName: "ngpAvatarFallbackDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.display": "visible() ? null : \"none\"" } }, ngImport: i0 }); }
139
142
  }
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAvatarFallback, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAvatarFallback, decorators: [{
141
144
  type: Directive,
142
145
  args: [{
143
146
  selector: '[ngpAvatarFallback]',
@@ -193,10 +196,10 @@ class NgpAvatarImage {
193
196
  // if the state is loaded then we should make the image visible
194
197
  this.visuallyHidden.setVisibility(state === NgpAvatarState.Loaded);
195
198
  }
196
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAvatarImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
197
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpAvatarImage, isStandalone: true, selector: "img[ngpAvatarImage]", host: { listeners: { "load": "onLoad()", "error": "onError()" } }, hostDirectives: [{ directive: i1.NgpVisuallyHidden }], ngImport: i0 }); }
199
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAvatarImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
200
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: NgpAvatarImage, isStandalone: true, selector: "img[ngpAvatarImage]", host: { listeners: { "load": "onLoad()", "error": "onError()" } }, hostDirectives: [{ directive: i1$1.NgpVisuallyHidden }], ngImport: i0 }); }
198
201
  }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpAvatarImage, decorators: [{
202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: NgpAvatarImage, decorators: [{
200
203
  type: Directive,
201
204
  args: [{
202
205
  selector: 'img[ngpAvatarImage]',
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-avatar.mjs","sources":["../../../../packages/ng-primitives/avatar/src/avatar/avatar.token.ts","../../../../packages/ng-primitives/avatar/src/avatar/avatar.directive.ts","../../../../packages/ng-primitives/avatar/src/config/avatar.config.ts","../../../../packages/ng-primitives/avatar/src/avatar-fallback/avatar-fallback.directive.ts","../../../../packages/ng-primitives/avatar/src/avatar-image/avatar-image.directive.ts","../../../../packages/ng-primitives/avatar/src/index.ts","../../../../packages/ng-primitives/avatar/src/ng-primitives-avatar.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 { NgpAvatar } from './avatar.directive';\n\nexport const NgpAvatarToken = new InjectionToken<NgpAvatar>('NgpAvatarToken');\n\n/**\n * Provide the avatar\n * @returns The provider\n */\nexport function injectAvatar(): NgpAvatar {\n return inject(NgpAvatarToken);\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, signal } from '@angular/core';\nimport { NgpAvatarToken } from './avatar.token';\n\n@Directive({\n selector: '[ngpAvatar]',\n standalone: true,\n providers: [{ provide: NgpAvatarToken, useExisting: NgpAvatar }],\n host: {\n '[attr.data-state]': 'state()',\n },\n})\nexport class NgpAvatar {\n /**\n * Store the current state of the avatar.\n * @internal\n */\n readonly state = signal(NgpAvatarState.Idle);\n\n /**\n * Set the avatar state.\n * @param state The state to set.\n * @internal\n */\n setState(state: NgpAvatarState): void {\n this.state.set(state);\n }\n}\n\nexport enum NgpAvatarState {\n Idle = 'idle',\n Loading = 'loading',\n Loaded = 'loaded',\n Error = 'error',\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, Provider, inject } from '@angular/core';\n\nexport interface NgpAvatarConfig {\n /**\n * Define a delay before the fallback is shown. This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n delay: number;\n}\n\nexport const defaultAvatarConfig: NgpAvatarConfig = {\n delay: 0,\n};\n\nexport const NgpAvatarConfigToken = new InjectionToken<NgpAvatarConfig>('NgpAvatarConfigToken');\n\n/**\n * Provide the avatar config\n * @param config The avatar config\n * @returns The provider\n */\nexport function provideAvatarConfig(config: Partial<NgpAvatarConfig>): Provider[] {\n return [\n {\n provide: NgpAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the avatar config\n * @returns The global avatar config\n */\nexport function injectAvatarConfig(): NgpAvatarConfig {\n return inject(NgpAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\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 { NumberInput } from '@angular/cdk/coercion';\nimport { Directive, OnInit, computed, input, numberAttribute, signal } from '@angular/core';\nimport { injectDisposables } from 'ng-primitives/utils';\nimport { NgpAvatarState } from '../avatar/avatar.directive';\nimport { injectAvatar } from '../avatar/avatar.token';\nimport { injectAvatarConfig } from '../config/avatar.config';\n\n@Directive({\n selector: '[ngpAvatarFallback]',\n standalone: true,\n host: {\n '[style.display]': 'visible() ? null : \"none\"',\n },\n})\nexport class NgpAvatarFallback implements OnInit {\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatar();\n\n /**\n * Access the global configuration.\n */\n private readonly config = injectAvatarConfig();\n\n /**\n * Access the disposable utilities.\n */\n private readonly disposables = injectDisposables();\n\n /**\n * Define a delay before the fallback is shown. This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n readonly delay = input<number, NumberInput>(this.config.delay, {\n alias: 'ngpAvatarFallbackDelay',\n transform: numberAttribute,\n });\n\n /**\n * Determine if this element should be hidden.\n * @returns True if the element should be visible\n */\n protected readonly visible = computed(\n () =>\n // we need to check if the element can render and if the avatar is not in a loaded state\n this.delayElapsed() && this.avatar.state() !== NgpAvatarState.Loaded,\n );\n\n /**\n * Determine the delay has elapsed, and we can show the fallback.\n */\n private delayElapsed = signal(false);\n\n ngOnInit(): void {\n this.disposables.setTimeout(() => this.delayElapsed.set(true), this.delay());\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 { Directive, ElementRef, HostListener, OnInit, inject } from '@angular/core';\nimport { NgpVisuallyHidden, injectVisuallyHidden } from 'ng-primitives/a11y';\nimport { NgpAvatarState } from '../avatar/avatar.directive';\nimport { injectAvatar } from '../avatar/avatar.token';\n\n@Directive({\n selector: 'img[ngpAvatarImage]',\n standalone: true,\n hostDirectives: [NgpVisuallyHidden],\n})\nexport class NgpAvatarImage implements OnInit {\n /**\n * Control the visibility of the image.\n */\n protected readonly visuallyHidden = injectVisuallyHidden();\n\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatar();\n\n /**\n * Access the image element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLImageElement>>(ElementRef);\n\n ngOnInit(): void {\n // mark the avatar as loading\n this.setState(NgpAvatarState.Loading);\n\n // if there is no src, we can report this as an error\n if (!this.elementRef.nativeElement.src) {\n this.setState(NgpAvatarState.Error);\n }\n\n // if the image has already loaded, we can report this to the avatar\n if (this.elementRef.nativeElement.complete) {\n this.setState(NgpAvatarState.Loaded);\n }\n }\n\n @HostListener('load')\n protected onLoad(): void {\n this.setState(NgpAvatarState.Loaded);\n }\n\n @HostListener('error')\n protected onError(): void {\n this.setState(NgpAvatarState.Error);\n }\n\n private setState(state: NgpAvatarState) {\n this.avatar.setState(state);\n\n // if the state is loaded then we should make the image visible\n this.visuallyHidden.setVisibility(state === NgpAvatarState.Loaded);\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 { NgpAvatarFallback } from './avatar-fallback/avatar-fallback.directive';\nexport { NgpAvatarImage } from './avatar-image/avatar-image.directive';\nexport { NgpAvatar, NgpAvatarState } from './avatar/avatar.directive';\nexport { NgpAvatarToken } from './avatar/avatar.token';\nexport { NgpAvatarConfig, provideAvatarConfig } from './config/avatar.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-primitives-avatar.mjs","sources":["../../../../packages/ng-primitives/avatar/src/avatar/avatar.token.ts","../../../../packages/ng-primitives/avatar/src/avatar/avatar.directive.ts","../../../../packages/ng-primitives/avatar/src/config/avatar.config.ts","../../../../packages/ng-primitives/avatar/src/avatar-fallback/avatar-fallback.directive.ts","../../../../packages/ng-primitives/avatar/src/avatar-image/avatar-image.directive.ts","../../../../packages/ng-primitives/avatar/src/index.ts","../../../../packages/ng-primitives/avatar/src/ng-primitives-avatar.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 { NgpAvatar } from './avatar.directive';\n\nexport const NgpAvatarToken = new InjectionToken<NgpAvatar>('NgpAvatarToken');\n\n/**\n * Provide the avatar\n * @returns The provider\n */\nexport function injectAvatar(): NgpAvatar {\n return inject(NgpAvatarToken);\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, signal } from '@angular/core';\nimport { NgpFocusVisible, NgpHover, NgpPress } from 'ng-primitives/interactions';\nimport { NgpAvatarToken } from './avatar.token';\n\n@Directive({\n selector: '[ngpAvatar]',\n standalone: true,\n providers: [{ provide: NgpAvatarToken, useExisting: NgpAvatar }],\n host: {\n '[attr.data-state]': 'state()',\n },\n hostDirectives: [NgpHover, NgpFocusVisible, NgpPress],\n})\nexport class NgpAvatar {\n /**\n * Store the current state of the avatar.\n * @internal\n */\n readonly state = signal(NgpAvatarState.Idle);\n\n /**\n * Set the avatar state.\n * @param state The state to set.\n * @internal\n */\n setState(state: NgpAvatarState): void {\n this.state.set(state);\n }\n}\n\nexport enum NgpAvatarState {\n Idle = 'idle',\n Loading = 'loading',\n Loaded = 'loaded',\n Error = 'error',\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, Provider, inject } from '@angular/core';\n\nexport interface NgpAvatarConfig {\n /**\n * Define a delay before the fallback is shown. This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n delay: number;\n}\n\nexport const defaultAvatarConfig: NgpAvatarConfig = {\n delay: 0,\n};\n\nexport const NgpAvatarConfigToken = new InjectionToken<NgpAvatarConfig>('NgpAvatarConfigToken');\n\n/**\n * Provide the avatar config\n * @param config The avatar config\n * @returns The provider\n */\nexport function provideAvatarConfig(config: Partial<NgpAvatarConfig>): Provider[] {\n return [\n {\n provide: NgpAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the avatar config\n * @returns The global avatar config\n */\nexport function injectAvatarConfig(): NgpAvatarConfig {\n return inject(NgpAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\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 { NumberInput } from '@angular/cdk/coercion';\nimport { Directive, OnInit, computed, input, numberAttribute, signal } from '@angular/core';\nimport { injectDisposables } from 'ng-primitives/utils';\nimport { NgpAvatarState } from '../avatar/avatar.directive';\nimport { injectAvatar } from '../avatar/avatar.token';\nimport { injectAvatarConfig } from '../config/avatar.config';\n\n@Directive({\n selector: '[ngpAvatarFallback]',\n standalone: true,\n host: {\n '[style.display]': 'visible() ? null : \"none\"',\n },\n})\nexport class NgpAvatarFallback implements OnInit {\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatar();\n\n /**\n * Access the global configuration.\n */\n private readonly config = injectAvatarConfig();\n\n /**\n * Access the disposable utilities.\n */\n private readonly disposables = injectDisposables();\n\n /**\n * Define a delay before the fallback is shown. This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n readonly delay = input<number, NumberInput>(this.config.delay, {\n alias: 'ngpAvatarFallbackDelay',\n transform: numberAttribute,\n });\n\n /**\n * Determine if this element should be hidden.\n * @returns True if the element should be visible\n */\n protected readonly visible = computed(\n () =>\n // we need to check if the element can render and if the avatar is not in a loaded state\n this.delayElapsed() && this.avatar.state() !== NgpAvatarState.Loaded,\n );\n\n /**\n * Determine the delay has elapsed, and we can show the fallback.\n */\n private delayElapsed = signal(false);\n\n ngOnInit(): void {\n this.disposables.setTimeout(() => this.delayElapsed.set(true), this.delay());\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 { Directive, ElementRef, HostListener, OnInit, inject } from '@angular/core';\nimport { NgpVisuallyHidden, injectVisuallyHidden } from 'ng-primitives/a11y';\nimport { NgpAvatarState } from '../avatar/avatar.directive';\nimport { injectAvatar } from '../avatar/avatar.token';\n\n@Directive({\n selector: 'img[ngpAvatarImage]',\n standalone: true,\n hostDirectives: [NgpVisuallyHidden],\n})\nexport class NgpAvatarImage implements OnInit {\n /**\n * Control the visibility of the image.\n */\n protected readonly visuallyHidden = injectVisuallyHidden();\n\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatar();\n\n /**\n * Access the image element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLImageElement>>(ElementRef);\n\n ngOnInit(): void {\n // mark the avatar as loading\n this.setState(NgpAvatarState.Loading);\n\n // if there is no src, we can report this as an error\n if (!this.elementRef.nativeElement.src) {\n this.setState(NgpAvatarState.Error);\n }\n\n // if the image has already loaded, we can report this to the avatar\n if (this.elementRef.nativeElement.complete) {\n this.setState(NgpAvatarState.Loaded);\n }\n }\n\n @HostListener('load')\n protected onLoad(): void {\n this.setState(NgpAvatarState.Loaded);\n }\n\n @HostListener('error')\n protected onError(): void {\n this.setState(NgpAvatarState.Error);\n }\n\n private setState(state: NgpAvatarState) {\n this.avatar.setState(state);\n\n // if the state is loaded then we should make the image visible\n this.visuallyHidden.setVisibility(state === NgpAvatarState.Loaded);\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 { NgpAvatarFallback } from './avatar-fallback/avatar-fallback.directive';\nexport { NgpAvatarImage } from './avatar-image/avatar-image.directive';\nexport { NgpAvatar, NgpAvatarState } from './avatar/avatar.directive';\nexport { NgpAvatarToken } from './avatar/avatar.token';\nexport { NgpAvatarConfig, provideAvatarConfig } from './config/avatar.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}