@ardium-ui/ui 1.0.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 (491) hide show
  1. package/README.md +25 -0
  2. package/esm2022/ardium-ui-ui.mjs +5 -0
  3. package/esm2022/lib/_internal/boolean-component.mjs +108 -0
  4. package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +12 -0
  5. package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +18 -0
  6. package/esm2022/lib/_internal/disablable-component.mjs +44 -0
  7. package/esm2022/lib/_internal/focusable-component.mjs +91 -0
  8. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +436 -0
  9. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +349 -0
  10. package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +155 -0
  11. package/esm2022/lib/_internal/models/pagination.model.mjs +124 -0
  12. package/esm2022/lib/_internal/ngmodel-component.mjs +42 -0
  13. package/esm2022/lib/_internal/queue.mjs +59 -0
  14. package/esm2022/lib/_internal/selectable-list-component.mjs +304 -0
  15. package/esm2022/lib/badge/badge.directive.mjs +123 -0
  16. package/esm2022/lib/badge/badge.module.mjs +18 -0
  17. package/esm2022/lib/badge/badge.types.mjs +16 -0
  18. package/esm2022/lib/buttons/_button-base.mjs +45 -0
  19. package/esm2022/lib/buttons/button/button.component.mjs +49 -0
  20. package/esm2022/lib/buttons/button/button.module.mjs +18 -0
  21. package/esm2022/lib/buttons/fab/fab.component.mjs +40 -0
  22. package/esm2022/lib/buttons/fab/fab.module.mjs +18 -0
  23. package/esm2022/lib/buttons/general-button.types.mjs +55 -0
  24. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +37 -0
  25. package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +18 -0
  26. package/esm2022/lib/calendar/calendar.component.mjs +982 -0
  27. package/esm2022/lib/calendar/calendar.directives.mjs +107 -0
  28. package/esm2022/lib/calendar/calendar.helpers.mjs +47 -0
  29. package/esm2022/lib/calendar/calendar.module.mjs +21 -0
  30. package/esm2022/lib/calendar/calendar.types.mjs +11 -0
  31. package/esm2022/lib/card/card.children.mjs +97 -0
  32. package/esm2022/lib/card/card.component.mjs +40 -0
  33. package/esm2022/lib/card/card.module.mjs +59 -0
  34. package/esm2022/lib/card/card.types.mjs +9 -0
  35. package/esm2022/lib/checkbox/checkbox.component.mjs +73 -0
  36. package/esm2022/lib/checkbox/checkbox.module.mjs +18 -0
  37. package/esm2022/lib/checkbox/checkbox.types.mjs +6 -0
  38. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +139 -0
  39. package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +19 -0
  40. package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +7 -0
  41. package/esm2022/lib/chip/chip.component.mjs +55 -0
  42. package/esm2022/lib/chip/chip.module.mjs +21 -0
  43. package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +80 -0
  44. package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +77 -0
  45. package/esm2022/lib/color/color-display/color-display.component.mjs +48 -0
  46. package/esm2022/lib/color/color-display/color-display.module.mjs +18 -0
  47. package/esm2022/lib/color/color-display/color-display.types.mjs +9 -0
  48. package/esm2022/lib/color/color-picker/color-picker.component.mjs +484 -0
  49. package/esm2022/lib/color/color-picker/color-picker.directives.mjs +55 -0
  50. package/esm2022/lib/color/color-picker/color-picker.module.mjs +43 -0
  51. package/esm2022/lib/color/color-picker/color-picker.types.mjs +11 -0
  52. package/esm2022/lib/dialog/dialog.component.mjs +167 -0
  53. package/esm2022/lib/dialog/dialog.directives.mjs +14 -0
  54. package/esm2022/lib/dialog/dialog.module.mjs +21 -0
  55. package/esm2022/lib/dialog/dialog.types.mjs +6 -0
  56. package/esm2022/lib/divider/divider.component.mjs +26 -0
  57. package/esm2022/lib/divider/divider.module.mjs +18 -0
  58. package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +130 -0
  59. package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +18 -0
  60. package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +10 -0
  61. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +82 -0
  62. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +42 -0
  63. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +58 -0
  64. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +153 -0
  65. package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +73 -0
  66. package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +21 -0
  67. package/esm2022/lib/file-inputs/file-input-base.mjs +187 -0
  68. package/esm2022/lib/file-inputs/file-input-types.mjs +2 -0
  69. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +74 -0
  70. package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +25 -0
  71. package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +19 -0
  72. package/esm2022/lib/icon/icon.component.mjs +85 -0
  73. package/esm2022/lib/icon/icon.module.mjs +19 -0
  74. package/esm2022/lib/icon/icon.pipe.mjs +18 -0
  75. package/esm2022/lib/inputs/color-input/color-input.component.mjs +421 -0
  76. package/esm2022/lib/inputs/color-input/color-input.directives.mjs +101 -0
  77. package/esm2022/lib/inputs/color-input/color-input.module.mjs +85 -0
  78. package/esm2022/lib/inputs/color-input/color-input.types.mjs +2 -0
  79. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +218 -0
  80. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +217 -0
  81. package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +18 -0
  82. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +15 -0
  83. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +8 -0
  84. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +234 -0
  85. package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +36 -0
  86. package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +21 -0
  87. package/esm2022/lib/inputs/hex-input.model.mjs +106 -0
  88. package/esm2022/lib/inputs/input/input.component.mjs +344 -0
  89. package/esm2022/lib/inputs/input/input.directives.mjs +58 -0
  90. package/esm2022/lib/inputs/input/input.module.mjs +47 -0
  91. package/esm2022/lib/inputs/input-transformers.mjs +66 -0
  92. package/esm2022/lib/inputs/input-types.mjs +6 -0
  93. package/esm2022/lib/inputs/input-utils.mjs +205 -0
  94. package/esm2022/lib/inputs/number-input/number-input.component.mjs +289 -0
  95. package/esm2022/lib/inputs/number-input/number-input.directives.mjs +14 -0
  96. package/esm2022/lib/inputs/number-input/number-input.module.mjs +21 -0
  97. package/esm2022/lib/inputs/password-input/password-input.component.mjs +222 -0
  98. package/esm2022/lib/inputs/password-input/password-input.directives.mjs +49 -0
  99. package/esm2022/lib/inputs/password-input/password-input.module.mjs +41 -0
  100. package/esm2022/lib/inputs/password-input/password-input.types.mjs +2 -0
  101. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +219 -0
  102. package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +36 -0
  103. package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +37 -0
  104. package/esm2022/lib/kbd/kbd.component.mjs +42 -0
  105. package/esm2022/lib/kbd/kbd.module.mjs +19 -0
  106. package/esm2022/lib/kbd/kbd.pipe.mjs +17 -0
  107. package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +55 -0
  108. package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +19 -0
  109. package/esm2022/lib/modal/modal.component.mjs +120 -0
  110. package/esm2022/lib/modal/modal.module.mjs +21 -0
  111. package/esm2022/lib/option/option.component.mjs +77 -0
  112. package/esm2022/lib/option/option.module.mjs +18 -0
  113. package/esm2022/lib/progress-bar/progress-bar.component.mjs +95 -0
  114. package/esm2022/lib/progress-bar/progress-bar.directive.mjs +14 -0
  115. package/esm2022/lib/progress-bar/progress-bar.module.mjs +19 -0
  116. package/esm2022/lib/progress-bar/progress-bar.types.mjs +19 -0
  117. package/esm2022/lib/progress-circle/progress-circle.component.mjs +94 -0
  118. package/esm2022/lib/progress-circle/progress-circle.directive.mjs +14 -0
  119. package/esm2022/lib/progress-circle/progress-circle.module.mjs +19 -0
  120. package/esm2022/lib/progress-circle/progress-circle.types.mjs +10 -0
  121. package/esm2022/lib/radio/radio/radio.component.mjs +53 -0
  122. package/esm2022/lib/radio/radio-group.component.mjs +207 -0
  123. package/esm2022/lib/radio/radio.module.mjs +19 -0
  124. package/esm2022/lib/search-functions.mjs +64 -0
  125. package/esm2022/lib/segment/segment.component.mjs +168 -0
  126. package/esm2022/lib/segment/segment.directives.mjs +14 -0
  127. package/esm2022/lib/segment/segment.module.mjs +19 -0
  128. package/esm2022/lib/segment/segment.types.mjs +12 -0
  129. package/esm2022/lib/select/select.component.mjs +1160 -0
  130. package/esm2022/lib/select/select.directive.mjs +171 -0
  131. package/esm2022/lib/select/select.module.mjs +112 -0
  132. package/esm2022/lib/select/select.types.mjs +2 -0
  133. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +46 -0
  134. package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +18 -0
  135. package/esm2022/lib/slider/abstract-slider.mjs +330 -0
  136. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +143 -0
  137. package/esm2022/lib/slider/range-slider/range-slider.module.mjs +18 -0
  138. package/esm2022/lib/slider/slider.component.mjs +93 -0
  139. package/esm2022/lib/slider/slider.directive.mjs +16 -0
  140. package/esm2022/lib/slider/slider.module.mjs +20 -0
  141. package/esm2022/lib/slider/slider.types.mjs +10 -0
  142. package/esm2022/lib/snackbar/index.mjs +5 -0
  143. package/esm2022/lib/snackbar/snackbar-ref.mjs +51 -0
  144. package/esm2022/lib/snackbar/snackbar.component.mjs +48 -0
  145. package/esm2022/lib/snackbar/snackbar.service.mjs +227 -0
  146. package/esm2022/lib/snackbar/snackbar.token.mjs +20 -0
  147. package/esm2022/lib/snackbar/snackbar.types.mjs +25 -0
  148. package/esm2022/lib/spinner/spinner.component.mjs +22 -0
  149. package/esm2022/lib/spinner/spinner.module.mjs +18 -0
  150. package/esm2022/lib/star/star-button/star-button.component.mjs +53 -0
  151. package/esm2022/lib/star/star-button/star-button.module.mjs +19 -0
  152. package/esm2022/lib/star/star-display/star-display.component.mjs +66 -0
  153. package/esm2022/lib/star/star-display/star-display.module.mjs +19 -0
  154. package/esm2022/lib/star/star-input/star-input.component.mjs +221 -0
  155. package/esm2022/lib/star/star-input/star-input.module.mjs +19 -0
  156. package/esm2022/lib/star/star.component.mjs +28 -0
  157. package/esm2022/lib/star/star.module.mjs +18 -0
  158. package/esm2022/lib/star/star.types.mjs +23 -0
  159. package/esm2022/lib/statebox/statebox.component.mjs +158 -0
  160. package/esm2022/lib/statebox/statebox.module.mjs +18 -0
  161. package/esm2022/lib/statebox/statebox.types.mjs +2 -0
  162. package/esm2022/lib/table/table-item-storage.mjs +560 -0
  163. package/esm2022/lib/table/table.component.mjs +468 -0
  164. package/esm2022/lib/table/table.directives.mjs +64 -0
  165. package/esm2022/lib/table/table.module.mjs +46 -0
  166. package/esm2022/lib/table/table.types.mjs +30 -0
  167. package/esm2022/lib/table/utils.mjs +18 -0
  168. package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +64 -0
  169. package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +19 -0
  170. package/esm2022/lib/table-pagination/table-pagination.component.mjs +172 -0
  171. package/esm2022/lib/table-pagination/table-pagination.module.mjs +21 -0
  172. package/esm2022/lib/table-pagination/table-pagination.types.mjs +7 -0
  173. package/esm2022/lib/types/alignment.types.mjs +10 -0
  174. package/esm2022/lib/types/colors.types.mjs +43 -0
  175. package/esm2022/lib/types/item-storage.types.mjs +6 -0
  176. package/esm2022/lib/types/theming.types.mjs +48 -0
  177. package/esm2022/lib/types/utility.types.mjs +5 -0
  178. package/esm2022/public-api.mjs +194 -0
  179. package/fesm2022/ardium-ui-ui.mjs +14316 -0
  180. package/fesm2022/ardium-ui-ui.mjs.map +1 -0
  181. package/index.d.ts +5 -0
  182. package/lib/_internal/boolean-component.d.ts +50 -0
  183. package/lib/_internal/clear-button/clear-button.component.d.ts +6 -0
  184. package/lib/_internal/clear-button/clear-button.module.d.ts +8 -0
  185. package/lib/_internal/disablable-component.d.ts +11 -0
  186. package/lib/_internal/focusable-component.d.ts +52 -0
  187. package/lib/_internal/item-storages/dropdown-item-storage.d.ts +87 -0
  188. package/lib/_internal/item-storages/simple-item-storage.d.ts +159 -0
  189. package/lib/_internal/item-storages/simplest-item-storage.d.ts +70 -0
  190. package/lib/_internal/models/pagination.model.d.ts +53 -0
  191. package/lib/_internal/ngmodel-component.d.ts +42 -0
  192. package/lib/_internal/queue.d.ts +21 -0
  193. package/lib/_internal/selectable-list-component.d.ts +71 -0
  194. package/lib/badge/badge.directive.d.ts +31 -0
  195. package/lib/badge/badge.module.d.ts +8 -0
  196. package/lib/badge/badge.types.d.ts +17 -0
  197. package/lib/buttons/_button-base.d.ts +18 -0
  198. package/lib/buttons/button/button.component.d.ts +15 -0
  199. package/lib/buttons/button/button.module.d.ts +8 -0
  200. package/lib/buttons/fab/fab.component.d.ts +12 -0
  201. package/lib/buttons/fab/fab.module.d.ts +8 -0
  202. package/lib/buttons/general-button.types.d.ts +57 -0
  203. package/lib/buttons/icon-button/icon-button.component.d.ts +13 -0
  204. package/lib/buttons/icon-button/icon-button.module.d.ts +8 -0
  205. package/lib/calendar/calendar.component.d.ts +155 -0
  206. package/lib/calendar/calendar.directives.d.ts +51 -0
  207. package/lib/calendar/calendar.helpers.d.ts +15 -0
  208. package/lib/calendar/calendar.module.d.ts +11 -0
  209. package/lib/calendar/calendar.types.d.ts +80 -0
  210. package/lib/card/card.children.d.ts +43 -0
  211. package/lib/card/card.component.d.ts +13 -0
  212. package/lib/card/card.module.d.ts +9 -0
  213. package/lib/card/card.types.d.ts +10 -0
  214. package/lib/checkbox/checkbox.component.d.ts +21 -0
  215. package/lib/checkbox/checkbox.module.d.ts +8 -0
  216. package/lib/checkbox/checkbox.types.d.ts +6 -0
  217. package/lib/checkbox-list/checkbox-list.component.d.ts +50 -0
  218. package/lib/checkbox-list/checkbox-list.module.d.ts +9 -0
  219. package/lib/checkbox-list/checkbox-list.types.d.ts +7 -0
  220. package/lib/chip/chip.component.d.ts +18 -0
  221. package/lib/chip/chip.module.d.ts +11 -0
  222. package/lib/chip/deletable-chip/deletable-chip.component.d.ts +24 -0
  223. package/lib/chip/selectable-chip/selectable-chip.component.d.ts +24 -0
  224. package/lib/color/color-display/color-display.component.d.ts +17 -0
  225. package/lib/color/color-display/color-display.module.d.ts +8 -0
  226. package/lib/color/color-display/color-display.types.d.ts +9 -0
  227. package/lib/color/color-picker/color-picker.component.d.ts +125 -0
  228. package/lib/color/color-picker/color-picker.directives.d.ts +27 -0
  229. package/lib/color/color-picker/color-picker.module.d.ts +13 -0
  230. package/lib/color/color-picker/color-picker.types.d.ts +21 -0
  231. package/lib/dialog/dialog.component.d.ts +44 -0
  232. package/lib/dialog/dialog.directives.d.ts +9 -0
  233. package/lib/dialog/dialog.module.d.ts +11 -0
  234. package/lib/dialog/dialog.types.d.ts +28 -0
  235. package/lib/divider/divider.component.d.ts +8 -0
  236. package/lib/divider/divider.module.d.ts +8 -0
  237. package/lib/dropdown-panel/dropdown-panel.component.d.ts +37 -0
  238. package/lib/dropdown-panel/dropdown-panel.module.d.ts +8 -0
  239. package/lib/dropdown-panel/dropdown-panel.types.d.ts +12 -0
  240. package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +22 -0
  241. package/lib/file-inputs/file-drop-area/file-drop-area.directives.d.ts +21 -0
  242. package/lib/file-inputs/file-drop-area/file-drop-area.module.d.ts +12 -0
  243. package/lib/file-inputs/file-input/file-input.component.d.ts +41 -0
  244. package/lib/file-inputs/file-input/file-input.directives.d.ts +39 -0
  245. package/lib/file-inputs/file-input/file-input.module.d.ts +11 -0
  246. package/lib/file-inputs/file-input-base.d.ts +43 -0
  247. package/lib/file-inputs/file-input-types.d.ts +10 -0
  248. package/lib/form-field-frame/form-field-frame.component.d.ts +32 -0
  249. package/lib/form-field-frame/form-field-frame.directives.d.ts +14 -0
  250. package/lib/form-field-frame/form-field-frame.module.d.ts +9 -0
  251. package/lib/icon/icon.component.d.ts +32 -0
  252. package/lib/icon/icon.module.d.ts +9 -0
  253. package/lib/icon/icon.pipe.d.ts +7 -0
  254. package/lib/inputs/color-input/color-input.component.d.ts +147 -0
  255. package/lib/inputs/color-input/color-input.directives.d.ts +52 -0
  256. package/lib/inputs/color-input/color-input.module.d.ts +16 -0
  257. package/lib/inputs/color-input/color-input.types.d.ts +5 -0
  258. package/lib/inputs/digit-input/digit-input.component.d.ts +50 -0
  259. package/lib/inputs/digit-input/digit-input.model.d.ts +26 -0
  260. package/lib/inputs/digit-input/digit-input.module.d.ts +8 -0
  261. package/lib/inputs/digit-input/digit-input.types.d.ts +27 -0
  262. package/lib/inputs/digit-input/digit-input.utils.d.ts +17 -0
  263. package/lib/inputs/hex-input/hex-input.component.d.ts +60 -0
  264. package/lib/inputs/hex-input/hex-input.directives.d.ts +20 -0
  265. package/lib/inputs/hex-input/hex-input.module.d.ts +11 -0
  266. package/lib/inputs/hex-input.model.d.ts +27 -0
  267. package/lib/inputs/input/input.component.d.ts +79 -0
  268. package/lib/inputs/input/input.directives.d.ts +33 -0
  269. package/lib/inputs/input/input.module.d.ts +13 -0
  270. package/lib/inputs/input-transformers.d.ts +24 -0
  271. package/lib/inputs/input-types.d.ts +6 -0
  272. package/lib/inputs/input-utils.d.ts +58 -0
  273. package/lib/inputs/number-input/number-input.component.d.ts +70 -0
  274. package/lib/inputs/number-input/number-input.directives.d.ts +8 -0
  275. package/lib/inputs/number-input/number-input.module.d.ts +11 -0
  276. package/lib/inputs/password-input/password-input.component.d.ts +54 -0
  277. package/lib/inputs/password-input/password-input.directives.d.ts +27 -0
  278. package/lib/inputs/password-input/password-input.module.d.ts +11 -0
  279. package/lib/inputs/password-input/password-input.types.d.ts +3 -0
  280. package/lib/inputs/simple-input/simple-input.component.d.ts +58 -0
  281. package/lib/inputs/simple-input/simple-input.directives.d.ts +20 -0
  282. package/lib/inputs/simple-input/simple-input.module.d.ts +11 -0
  283. package/lib/kbd/kbd.component.d.ts +15 -0
  284. package/lib/kbd/kbd.module.d.ts +9 -0
  285. package/lib/kbd/kbd.pipe.d.ts +7 -0
  286. package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +18 -0
  287. package/lib/kbd-shortcut/kbd-shortcut.module.d.ts +9 -0
  288. package/lib/modal/modal.component.d.ts +36 -0
  289. package/lib/modal/modal.module.d.ts +11 -0
  290. package/lib/option/option.component.d.ts +29 -0
  291. package/lib/option/option.module.d.ts +8 -0
  292. package/lib/progress-bar/progress-bar.component.d.ts +26 -0
  293. package/lib/progress-bar/progress-bar.directive.d.ts +9 -0
  294. package/lib/progress-bar/progress-bar.module.d.ts +9 -0
  295. package/lib/progress-bar/progress-bar.types.d.ts +26 -0
  296. package/lib/progress-circle/progress-circle.component.d.ts +28 -0
  297. package/lib/progress-circle/progress-circle.directive.d.ts +9 -0
  298. package/lib/progress-circle/progress-circle.module.d.ts +9 -0
  299. package/lib/progress-circle/progress-circle.types.d.ts +17 -0
  300. package/lib/radio/radio/radio.component.d.ts +23 -0
  301. package/lib/radio/radio-group.component.d.ts +43 -0
  302. package/lib/radio/radio.module.d.ts +9 -0
  303. package/lib/search-functions.d.ts +10 -0
  304. package/lib/segment/segment.component.d.ts +48 -0
  305. package/lib/segment/segment.directives.d.ts +9 -0
  306. package/lib/segment/segment.module.d.ts +9 -0
  307. package/lib/segment/segment.types.d.ts +16 -0
  308. package/lib/select/select.component.d.ts +255 -0
  309. package/lib/select/select.directive.d.ts +94 -0
  310. package/lib/select/select.module.d.ts +14 -0
  311. package/lib/select/select.types.d.ts +109 -0
  312. package/lib/slide-toggle/slide-toggle.component.d.ts +14 -0
  313. package/lib/slide-toggle/slide-toggle.module.d.ts +8 -0
  314. package/lib/slider/abstract-slider.d.ts +88 -0
  315. package/lib/slider/range-slider/range-slider.component.d.ts +29 -0
  316. package/lib/slider/range-slider/range-slider.module.d.ts +8 -0
  317. package/lib/slider/slider.component.d.ts +18 -0
  318. package/lib/slider/slider.directive.d.ts +9 -0
  319. package/lib/slider/slider.module.d.ts +10 -0
  320. package/lib/slider/slider.types.d.ts +28 -0
  321. package/lib/snackbar/index.d.ts +4 -0
  322. package/lib/snackbar/snackbar-ref.d.ts +37 -0
  323. package/lib/snackbar/snackbar.component.d.ts +16 -0
  324. package/lib/snackbar/snackbar.service.d.ts +31 -0
  325. package/lib/snackbar/snackbar.token.d.ts +5 -0
  326. package/lib/snackbar/snackbar.types.d.ts +48 -0
  327. package/lib/spinner/spinner.component.d.ts +8 -0
  328. package/lib/spinner/spinner.module.d.ts +8 -0
  329. package/lib/star/star-button/star-button.component.d.ts +16 -0
  330. package/lib/star/star-button/star-button.module.d.ts +9 -0
  331. package/lib/star/star-display/star-display.component.d.ts +16 -0
  332. package/lib/star/star-display/star-display.module.d.ts +9 -0
  333. package/lib/star/star-input/star-input.component.d.ts +51 -0
  334. package/lib/star/star-input/star-input.module.d.ts +9 -0
  335. package/lib/star/star.component.d.ts +10 -0
  336. package/lib/star/star.module.d.ts +8 -0
  337. package/lib/star/star.types.d.ts +30 -0
  338. package/lib/statebox/statebox.component.d.ts +31 -0
  339. package/lib/statebox/statebox.module.d.ts +8 -0
  340. package/lib/statebox/statebox.types.d.ts +22 -0
  341. package/lib/table/table-item-storage.d.ts +266 -0
  342. package/lib/table/table.component.d.ts +127 -0
  343. package/lib/table/table.directives.d.ts +35 -0
  344. package/lib/table/table.module.d.ts +12 -0
  345. package/lib/table/table.types.d.ts +83 -0
  346. package/lib/table/utils.d.ts +4 -0
  347. package/lib/table-from-csv/table-from-csv.component.d.ts +16 -0
  348. package/lib/table-from-csv/table-from-csv.module.d.ts +9 -0
  349. package/lib/table-pagination/table-pagination.component.d.ts +48 -0
  350. package/lib/table-pagination/table-pagination.module.d.ts +11 -0
  351. package/lib/table-pagination/table-pagination.types.d.ts +9 -0
  352. package/lib/types/alignment.types.d.ts +11 -0
  353. package/lib/types/colors.types.d.ts +71 -0
  354. package/lib/types/item-storage.types.d.ts +98 -0
  355. package/lib/types/theming.types.d.ts +61 -0
  356. package/lib/types/utility.types.d.ts +11 -0
  357. package/package.json +36 -0
  358. package/prebuilt-themes/default/badge.css +208 -0
  359. package/prebuilt-themes/default/badge.css.map +1 -0
  360. package/prebuilt-themes/default/buttons/button.css +290 -0
  361. package/prebuilt-themes/default/buttons/button.css.map +1 -0
  362. package/prebuilt-themes/default/buttons/fab.css +307 -0
  363. package/prebuilt-themes/default/buttons/fab.css.map +1 -0
  364. package/prebuilt-themes/default/buttons/icon-button.css +288 -0
  365. package/prebuilt-themes/default/buttons/icon-button.css.map +1 -0
  366. package/prebuilt-themes/default/calendar.css +293 -0
  367. package/prebuilt-themes/default/calendar.css.map +1 -0
  368. package/prebuilt-themes/default/card.css +122 -0
  369. package/prebuilt-themes/default/card.css.map +1 -0
  370. package/prebuilt-themes/default/checkbox-list.css +65 -0
  371. package/prebuilt-themes/default/checkbox-list.css.map +1 -0
  372. package/prebuilt-themes/default/checkbox.css +365 -0
  373. package/prebuilt-themes/default/checkbox.css.map +1 -0
  374. package/prebuilt-themes/default/chips.css +367 -0
  375. package/prebuilt-themes/default/chips.css.map +1 -0
  376. package/prebuilt-themes/default/color-display.css +29 -0
  377. package/prebuilt-themes/default/color-display.css.map +1 -0
  378. package/prebuilt-themes/default/color-picker.css +106 -0
  379. package/prebuilt-themes/default/color-picker.css.map +1 -0
  380. package/prebuilt-themes/default/core.css +84 -0
  381. package/prebuilt-themes/default/core.css.map +1 -0
  382. package/prebuilt-themes/default/dialog.css +18 -0
  383. package/prebuilt-themes/default/dialog.css.map +1 -0
  384. package/prebuilt-themes/default/divider.css +11 -0
  385. package/prebuilt-themes/default/divider.css.map +1 -0
  386. package/prebuilt-themes/default/dropdown-panel.css +37 -0
  387. package/prebuilt-themes/default/dropdown-panel.css.map +1 -0
  388. package/prebuilt-themes/default/file-drop-area.css +279 -0
  389. package/prebuilt-themes/default/file-drop-area.css.map +1 -0
  390. package/prebuilt-themes/default/form-field-frame.css +84 -0
  391. package/prebuilt-themes/default/form-field-frame.css.map +1 -0
  392. package/prebuilt-themes/default/inputs/color-input.css +139 -0
  393. package/prebuilt-themes/default/inputs/color-input.css.map +1 -0
  394. package/prebuilt-themes/default/inputs/digit-input.css +45 -0
  395. package/prebuilt-themes/default/inputs/digit-input.css.map +1 -0
  396. package/prebuilt-themes/default/inputs/file-input.css +169 -0
  397. package/prebuilt-themes/default/inputs/file-input.css.map +1 -0
  398. package/prebuilt-themes/default/inputs/hex-input.css +119 -0
  399. package/prebuilt-themes/default/inputs/hex-input.css.map +1 -0
  400. package/prebuilt-themes/default/inputs/input.css +139 -0
  401. package/prebuilt-themes/default/inputs/input.css.map +1 -0
  402. package/prebuilt-themes/default/inputs/number-input.css +150 -0
  403. package/prebuilt-themes/default/inputs/number-input.css.map +1 -0
  404. package/prebuilt-themes/default/inputs/password-input.css +73 -0
  405. package/prebuilt-themes/default/inputs/password-input.css.map +1 -0
  406. package/prebuilt-themes/default/inputs/search-bar.css +114 -0
  407. package/prebuilt-themes/default/inputs/search-bar.css.map +1 -0
  408. package/prebuilt-themes/default/inputs/simple-input.css +114 -0
  409. package/prebuilt-themes/default/inputs/simple-input.css.map +1 -0
  410. package/prebuilt-themes/default/kbd-shortcut.css +12 -0
  411. package/prebuilt-themes/default/kbd-shortcut.css.map +1 -0
  412. package/prebuilt-themes/default/kbd.css +17 -0
  413. package/prebuilt-themes/default/kbd.css.map +1 -0
  414. package/prebuilt-themes/default/modal.css +73 -0
  415. package/prebuilt-themes/default/modal.css.map +1 -0
  416. package/prebuilt-themes/default/progress-bar.css +267 -0
  417. package/prebuilt-themes/default/progress-bar.css.map +1 -0
  418. package/prebuilt-themes/default/progress-circle.css +167 -0
  419. package/prebuilt-themes/default/progress-circle.css.map +1 -0
  420. package/prebuilt-themes/default/radio.css +226 -0
  421. package/prebuilt-themes/default/radio.css.map +1 -0
  422. package/prebuilt-themes/default/segment.css +391 -0
  423. package/prebuilt-themes/default/segment.css.map +1 -0
  424. package/prebuilt-themes/default/select.css +275 -0
  425. package/prebuilt-themes/default/select.css.map +1 -0
  426. package/prebuilt-themes/default/slide-toggle.css +264 -0
  427. package/prebuilt-themes/default/slide-toggle.css.map +1 -0
  428. package/prebuilt-themes/default/slider.css +354 -0
  429. package/prebuilt-themes/default/slider.css.map +1 -0
  430. package/prebuilt-themes/default/snackbar.css +183 -0
  431. package/prebuilt-themes/default/snackbar.css.map +1 -0
  432. package/prebuilt-themes/default/spinner.css +151 -0
  433. package/prebuilt-themes/default/spinner.css.map +1 -0
  434. package/prebuilt-themes/default/stars.css +291 -0
  435. package/prebuilt-themes/default/stars.css.map +1 -0
  436. package/prebuilt-themes/default/statebox.css +235 -0
  437. package/prebuilt-themes/default/statebox.css.map +1 -0
  438. package/prebuilt-themes/default/table-pagination.css +48 -0
  439. package/prebuilt-themes/default/table-pagination.css.map +1 -0
  440. package/prebuilt-themes/default/table.css +418 -0
  441. package/prebuilt-themes/default/table.css.map +1 -0
  442. package/public-api.d.ts +145 -0
  443. package/themes/_variables.scss +121 -0
  444. package/themes/default/_clear-button.scss +73 -0
  445. package/themes/default/_coloring.scss +137 -0
  446. package/themes/default/_dropdown-arrow.scss +12 -0
  447. package/themes/default/_mixins.scss +70 -0
  448. package/themes/default/badge.scss +94 -0
  449. package/themes/default/buttons/_button-mixins.scss +144 -0
  450. package/themes/default/buttons/button.scss +62 -0
  451. package/themes/default/buttons/fab.scss +72 -0
  452. package/themes/default/buttons/icon-button.scss +59 -0
  453. package/themes/default/calendar.scss +182 -0
  454. package/themes/default/card.scss +126 -0
  455. package/themes/default/checkbox-list.scss +83 -0
  456. package/themes/default/checkbox.scss +109 -0
  457. package/themes/default/chips.scss +206 -0
  458. package/themes/default/color-display.scss +41 -0
  459. package/themes/default/color-picker.scss +111 -0
  460. package/themes/default/core.scss +96 -0
  461. package/themes/default/dialog.scss +16 -0
  462. package/themes/default/divider.scss +13 -0
  463. package/themes/default/dropdown-panel.scss +45 -0
  464. package/themes/default/file-drop-area.scss +162 -0
  465. package/themes/default/form-field-frame.scss +78 -0
  466. package/themes/default/inputs/_shared.scss +46 -0
  467. package/themes/default/inputs/color-input.scss +46 -0
  468. package/themes/default/inputs/digit-input.scss +56 -0
  469. package/themes/default/inputs/file-input.scss +78 -0
  470. package/themes/default/inputs/hex-input.scss +27 -0
  471. package/themes/default/inputs/input.scss +52 -0
  472. package/themes/default/inputs/number-input.scss +121 -0
  473. package/themes/default/inputs/password-input.scss +43 -0
  474. package/themes/default/inputs/search-bar.scss +19 -0
  475. package/themes/default/inputs/simple-input.scss +19 -0
  476. package/themes/default/kbd-shortcut.scss +13 -0
  477. package/themes/default/kbd.scss +20 -0
  478. package/themes/default/modal.scss +93 -0
  479. package/themes/default/progress-bar.scss +166 -0
  480. package/themes/default/progress-circle.scss +56 -0
  481. package/themes/default/radio.scss +112 -0
  482. package/themes/default/segment.scss +339 -0
  483. package/themes/default/select.scss +253 -0
  484. package/themes/default/slide-toggle.scss +151 -0
  485. package/themes/default/slider.scss +224 -0
  486. package/themes/default/snackbar.scss +60 -0
  487. package/themes/default/spinner.scss +21 -0
  488. package/themes/default/stars.scss +122 -0
  489. package/themes/default/statebox.scss +109 -0
  490. package/themes/default/table-pagination.scss +56 -0
  491. package/themes/default/table.scss +403 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ardium-ui-ui.mjs","sources":["../../../projects/ui/src/lib/buttons/general-button.types.ts","../../../projects/ui/src/lib/types/alignment.types.ts","../../../projects/ui/src/lib/_internal/disablable-component.ts","../../../projects/ui/src/lib/_internal/focusable-component.ts","../../../projects/ui/src/lib/types/colors.types.ts","../../../projects/ui/src/lib/buttons/_button-base.ts","../../../projects/ui/src/lib/buttons/button/button.component.ts","../../../projects/ui/src/lib/buttons/button/button.component.html","../../../projects/ui/src/lib/buttons/button/button.module.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.html","../../../projects/ui/src/lib/buttons/fab/fab.module.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.html","../../../projects/ui/src/lib/buttons/icon-button/icon-button.module.ts","../../../projects/ui/src/lib/_internal/ngmodel-component.ts","../../../projects/ui/src/lib/_internal/boolean-component.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.html","../../../projects/ui/src/lib/checkbox/checkbox.module.ts","../../../projects/ui/src/lib/checkbox/checkbox.types.ts","../../../projects/ui/src/lib/_internal/item-storages/simple-item-storage.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.types.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.html","../../../projects/ui/src/lib/checkbox-list/checkbox-list.module.ts","../../../projects/ui/src/lib/types/theming.types.ts","../../../projects/ui/src/lib/chip/chip.component.ts","../../../projects/ui/src/lib/chip/chip.component.html","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.ts","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.html","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.ts","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.module.ts","../../../projects/ui/src/lib/chip/chip.module.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.types.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.html","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.module.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.directives.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.html","../../../projects/ui/src/lib/form-field-frame/form-field-frame.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simplest-item-storage.ts","../../../projects/ui/src/lib/inputs/input-transformers.ts","../../../projects/ui/src/lib/inputs/input-utils.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.directives.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.html","../../../projects/ui/src/lib/inputs/input/input.directives.ts","../../../projects/ui/src/lib/inputs/input/input.component.ts","../../../projects/ui/src/lib/inputs/input/input.component.html","../../../projects/ui/src/lib/inputs/input/input.module.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.module.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.directives.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.html","../../../projects/ui/src/lib/inputs/number-input/number-input.module.ts","../../../projects/ui/src/lib/inputs/input-types.ts","../../../projects/ui/src/lib/inputs/hex-input.model.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.directives.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.html","../../../projects/ui/src/lib/inputs/hex-input/hex-input.module.ts","../../../projects/ui/src/lib/_internal/item-storages/dropdown-item-storage.ts","../../../projects/ui/src/lib/option/option.component.ts","../../../projects/ui/src/lib/search-functions.ts","../../../projects/ui/src/lib/types/item-storage.types.ts","../../../projects/ui/src/lib/select/select.directive.ts","../../../projects/ui/src/lib/select/select.component.ts","../../../projects/ui/src/lib/select/select.component.html","../../../projects/ui/src/lib/select/select.module.ts","../../../projects/ui/src/lib/option/option.module.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/ui/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/ui/src/lib/slider/slider.directive.ts","../../../projects/ui/src/lib/slider/slider.types.ts","../../../projects/ui/src/lib/slider/abstract-slider.ts","../../../projects/ui/src/lib/slider/slider.component.ts","../../../projects/ui/src/lib/slider/slider.component.html","../../../projects/ui/src/lib/slider/slider.module.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.html","../../../projects/ui/src/lib/slider/range-slider/range-slider.module.ts","../../../projects/ui/src/lib/star/star.types.ts","../../../projects/ui/src/lib/star/star.component.ts","../../../projects/ui/src/lib/star/star.component.html","../../../projects/ui/src/lib/star/star.module.ts","../../../projects/ui/src/lib/types/utility.types.ts","../../../projects/ui/src/lib/star/star-button/star-button.component.ts","../../../projects/ui/src/lib/star/star-button/star-button.component.html","../../../projects/ui/src/lib/star/star-button/star-button.module.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.html","../../../projects/ui/src/lib/star/star-display/star-display.module.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.html","../../../projects/ui/src/lib/star/star-input/star-input.module.ts","../../../projects/ui/src/lib/statebox/statebox.component.ts","../../../projects/ui/src/lib/statebox/statebox.component.html","../../../projects/ui/src/lib/statebox/statebox.module.ts","../../../projects/ui/src/lib/_internal/selectable-list-component.ts","../../../projects/ui/src/lib/segment/segment.directives.ts","../../../projects/ui/src/lib/segment/segment.types.ts","../../../projects/ui/src/lib/segment/segment.component.ts","../../../projects/ui/src/lib/segment/segment.component.html","../../../projects/ui/src/lib/segment/segment.module.ts","../../../projects/ui/src/lib/icon/icon.pipe.ts","../../../projects/ui/src/lib/icon/icon.component.ts","../../../projects/ui/src/lib/icon/icon.component.html","../../../projects/ui/src/lib/icon/icon.module.ts","../../../projects/ui/src/lib/color/color-display/color-display.types.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.html","../../../projects/ui/src/lib/color/color-display/color-display.module.ts","../../../projects/ui/src/lib/color/color-picker/color-picker.directives.ts","../../../projects/ui/src/lib/color/color-picker/color-picker.types.ts","../../../projects/ui/src/lib/color/color-picker/color-picker.component.ts","../../../projects/ui/src/lib/color/color-picker/color-picker.component.html","../../../projects/ui/src/lib/color/color-picker/color-picker.module.ts","../../../projects/ui/src/lib/card/card.children.ts","../../../projects/ui/src/lib/card/card-header.template.html","../../../projects/ui/src/lib/card/card.types.ts","../../../projects/ui/src/lib/card/card.component.ts","../../../projects/ui/src/lib/card/card.module.ts","../../../projects/ui/src/lib/inputs/color-input/color-input.directives.ts","../../../projects/ui/src/lib/inputs/color-input/color-input.component.ts","../../../projects/ui/src/lib/inputs/color-input/color-input.component.html","../../../projects/ui/src/lib/inputs/color-input/color-input.module.ts","../../../projects/ui/src/lib/calendar/calendar.directives.ts","../../../projects/ui/src/lib/calendar/calendar.helpers.ts","../../../projects/ui/src/lib/calendar/calendar.types.ts","../../../projects/ui/src/lib/calendar/calendar.component.ts","../../../projects/ui/src/lib/calendar/calendar.component.html","../../../projects/ui/src/lib/calendar/calendar.module.ts","../../../projects/ui/src/lib/kbd/kbd.pipe.ts","../../../projects/ui/src/lib/kbd/kbd.component.ts","../../../projects/ui/src/lib/kbd/kbd.component.html","../../../projects/ui/src/lib/kbd/kbd.module.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.html","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.module.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.directive.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.types.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.html","../../../projects/ui/src/lib/progress-circle/progress-circle.module.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.directive.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.types.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.html","../../../projects/ui/src/lib/progress-bar/progress-bar.module.ts","../../../projects/ui/src/lib/divider/divider.component.ts","../../../projects/ui/src/lib/divider/divider.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.directives.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.component.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.component.html","../../../projects/ui/src/lib/inputs/password-input/password-input.module.ts","../../../projects/ui/src/lib/radio/radio/radio.component.ts","../../../projects/ui/src/lib/radio/radio/radio.component.html","../../../projects/ui/src/lib/radio/radio-group.component.ts","../../../projects/ui/src/lib/radio/radio.module.ts","../../../projects/ui/src/lib/file-inputs/file-input-base.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.directives.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.html","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.module.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.html","../../../projects/ui/src/lib/file-inputs/file-input/file-input.module.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.types.ts","../../../projects/ui/src/lib/table/table.types.ts","../../../projects/ui/src/lib/table/utils.ts","../../../projects/ui/src/lib/table/table-item-storage.ts","../../../projects/ui/src/lib/table/table.directives.ts","../../../projects/ui/src/lib/_internal/models/pagination.model.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.html","../../../projects/ui/src/lib/table/table.component.ts","../../../projects/ui/src/lib/table/table.component.html","../../../projects/ui/src/lib/table-pagination/table-pagination.module.ts","../../../projects/ui/src/lib/table/table.module.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.html","../../../projects/ui/src/lib/table-from-csv/table-from-csv.module.ts","../../../projects/ui/src/lib/badge/badge.types.ts","../../../projects/ui/src/lib/badge/badge.directive.ts","../../../projects/ui/src/lib/badge/badge.module.ts","../../../projects/ui/src/lib/spinner/spinner.component.ts","../../../projects/ui/src/lib/spinner/spinner.component.html","../../../projects/ui/src/lib/spinner/spinner.module.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.utils.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.types.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.model.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.html","../../../projects/ui/src/lib/inputs/digit-input/digit-input.module.ts","../../../projects/ui/src/lib/modal/modal.component.ts","../../../projects/ui/src/lib/modal/modal.component.html","../../../projects/ui/src/lib/modal/modal.module.ts","../../../projects/ui/src/lib/dialog/dialog.directives.ts","../../../projects/ui/src/lib/dialog/dialog.component.ts","../../../projects/ui/src/lib/dialog/dialog.component.html","../../../projects/ui/src/lib/dialog/dialog.module.ts","../../../projects/ui/src/lib/dialog/dialog.types.ts","../../../projects/ui/src/lib/_internal/queue.ts","../../../projects/ui/src/lib/snackbar/snackbar-ref.ts","../../../projects/ui/src/lib/snackbar/snackbar.types.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.html","../../../projects/ui/src/lib/snackbar/snackbar.token.ts","../../../projects/ui/src/lib/snackbar/snackbar.service.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/ardium-ui-ui.ts"],"sourcesContent":["/**\n * General button appearance. Controls which parts of the button can be colored.\n *\n * @see {@link ButtonColoringMode}\n */\nexport const ButtonAppearance = {\n /**\n * No border and no background. Text and icon are colored.\n */\n Transparent: 'transparent',\n /**\n * No border, but with text shadow. Text, icon, and background are colored.\n */\n Raised: 'raised',\n /**\n * No border, but with text shadow. White background. Text and icon are colored.\n */\n RaisedStrong: 'raised-strong',\n /**\n * White background. Text and icon are colored.\n */\n Outlined: 'outlined',\n /**\n * White background. Text, icon, and border may be colored.\n *\n * Background becomes colored on hover/focus.\n */\n OutlinedStrong: 'outlined-strong',\n /**\n * No border. Text, icon, and background are colored.\n */\n Flat: 'flat',\n} as const;\nexport type ButtonAppearance = (typeof ButtonAppearance)[keyof typeof ButtonAppearance];\n\nexport const ButtonVariant = {\n /**\n * Basic, rectangular button.\n */\n Rounded: 'rounded',\n /**\n * Pill-shaped button.\n */\n Pill: 'pill',\n /**\n * Basic, rectangular button with sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type ButtonVariant = (typeof ButtonVariant)[keyof typeof ButtonVariant];\n\n/**\n * **F**loating **A**ction **B**utton size.\n */\nexport const FABSize = {\n Standard: 'standard',\n Small: 'small',\n} as const;\nexport type FABSize = (typeof FABSize)[keyof typeof FABSize];\n","export const SimpleOneAxisAlignment = {\n Left: 'left',\n Right: 'right',\n} as const;\nexport type SimpleOneAxisAlignment = (typeof SimpleOneAxisAlignment)[keyof typeof SimpleOneAxisAlignment];\n\nexport const OneAxisAlignment = {\n Left: 'left',\n Middle: 'middle',\n Right: 'right',\n} as const;\nexport type OneAxisAlignment = (typeof OneAxisAlignment)[keyof typeof OneAxisAlignment];\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\n\n@Directive()\nexport abstract class _DisablableComponentBase {\n //! no value arguments\n protected _readonly: boolean = false;\n @Input()\n @HostBinding('attr.readonly')\n @HostBinding('class.ard-readonly')\n /**\n * Whether the component is read-only. Defines the `readonly` host attribute and `ard-readonly` host class. Coearcible into a boolean.\n */\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(v: any) {\n this._readonly = coerceBooleanProperty(v);\n }\n\n protected _disabled: boolean = false;\n @Input()\n @HostBinding('attr.disabled')\n @HostBinding('class.ard-disabled')\n /**\n * Whether the component is disabled. Defines the `disabled` host attribute and `ard-disabled` host class. Coearcible into a boolean.\n */\n get disabled(): boolean {\n return this.readonly || this._disabled;\n }\n set disabled(v: any) {\n this._disabled = coerceBooleanProperty(v);\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, Output, QueryList, ViewChildren } from '@angular/core';\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\nimport { _DisablableComponentBase } from './disablable-component';\n\n@Directive()\nexport abstract class _FocusableComponentBase extends _DisablableComponentBase {\n //! make the component focusable programmatically\n @ViewChildren('focusableElement')\n private readonly _focusableElement!: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * Focuses the correct element in the component.\n */\n public focus(): void {\n this._focusableElement?.first?.nativeElement.focus();\n }\n /**\n * Focuses the first of all available elements in the component.\n */\n public focusFirst(): void {\n this.focus();\n }\n /**\n * Focuses the last of all available elements in the component.\n */\n public focusLast(): void {\n this._focusableElement?.last?.nativeElement.focus();\n }\n /**\n * Blurs all focusable elements in the component.\n */\n public blur(): void {\n this._focusableElement?.forEach(el => el.nativeElement.blur());\n }\n\n //! tabindex\n protected _tabIndex: number = 0;\n /**\n * The component's overall tab index. If the component is disabled, it is always `-1`. Coercible into a number, defaults to `0`.\n */\n @Input()\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(v: any) {\n this._tabIndex = coerceNumberProperty(v, 0);\n }\n\n //! events\n /**\n * The event emitter responsible for firing `focus` events.\n */\n @Output('focus') focusEvent = new EventEmitter<FocusEvent>();\n /**\n * The event emitter responsible for firing `blur` events.\n */\n @Output('blur') blurEvent = new EventEmitter<FocusEvent>();\n\n //! focus event handlers\n /**\n * Whether the component is currently focused.\n */\n public isFocused: boolean = false;\n\n /**\n * Function to handle when an element is focused. Sets `isFocused` and fires the `focus` event.\n * @param event The focus event to emit.\n */\n onFocus(event: FocusEvent) {\n this.isFocused = true;\n this.focusEvent.emit(event);\n }\n /**\n * Function to handle when an element is blurred. Sets `isFocused` and fires the `blur` event.\n * @param event The focus event to emit.\n */\n onBlur(event: FocusEvent) {\n this.isFocused = false;\n this.blurEvent.emit(event);\n }\n}\n","/**\n * The color of the component.\n *\n * @see {@link ButtonColoringMode} to set what part of the component should be colored.\n */\nexport const ComponentColor = {\n /**\n * The app's standard text color.\n */\n None: 'none',\n /**\n * The app's primary color.\n */\n Primary: 'primary',\n /**\n * The app's secondary color.\n */\n Secondary: 'secondary',\n /**\n * The app's warning color. Usually some shade of yellow.\n */\n Warning: 'warn',\n /**\n * The app's danger color. Usually some shade of red.\n */\n Danger: 'danger',\n /**\n * The app's success color. Usually some shade of green or lime.\n */\n Success: 'success',\n /**\n * The app's info color. Usually some shade of blue or light blue.\n */\n Info: 'info',\n} as const;\nexport type ComponentColor = (typeof ComponentColor)[keyof typeof ComponentColor];\n\nexport const SimpleComponentColor = {\n ...ComponentColor,\n /**\n * The current color set by css.\n */\n CurrentColor: 'currentColor',\n} as const;\nexport type SimpleComponentColor = (typeof SimpleComponentColor)[keyof typeof SimpleComponentColor];\n","import { Directive, Input } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { ButtonAppearance } from './general-button.types';\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\nimport { ComponentColor } from '../types/colors.types';\n\n@Directive()\nexport abstract class _ButtonBase extends _FocusableComponentBase {\n @Input() wrapperClasses: string = '';\n\n //* button settings\n @Input() appearance: ButtonAppearance = ButtonAppearance.Raised;\n @Input() color: ComponentColor = ComponentColor.Primary;\n\n private _lightColoring: boolean = false;\n @Input()\n get lightColoring(): boolean {\n return this._lightColoring;\n }\n set lightColoring(v: any) {\n this._lightColoring = coerceBooleanProperty(v);\n }\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n //* for adding classes to the button\n abstract get ngClasses(): string;\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\nimport { _ButtonBase } from '../_button-base';\nimport { ButtonVariant } from '../general-button.types';\n\n@Component({\n selector: 'ard-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumButtonComponent extends _ButtonBase {\n //* button settings\n @Input() variant: ButtonVariant = ButtonVariant.Rounded;\n @Input() alignIcon: SimpleOneAxisAlignment = SimpleOneAxisAlignment.Left;\n\n private _vertical: boolean = false;\n @Input()\n get vertical(): boolean {\n return this._vertical;\n }\n set vertical(v: any) {\n this._vertical = coerceBooleanProperty(v);\n }\n\n @Input() icon?: string;\n\n //* for adding classes to the button\n get ngClasses(): string {\n return [\n `ard-appearance-${this.appearance}`,\n `ard-variant-${this.variant}`,\n `ard-color-${this.color}`,\n `ard-align-${this.alignIcon}`,\n this.lightColoring ? `ard-light-coloring` : '',\n this.compact ? 'ard-compact' : '',\n this.vertical ? 'ard-button-vertical' : '',\n ].join(' ');\n }\n}\n","<button #buttonElement\r\n class=\"ard-button\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-icon\" *ngIf=\"icon\">{{icon}}</div>\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ArdiumButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumButtonComponent],\n})\nexport class ArdiumButtonModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { _ButtonBase } from '../_button-base';\nimport { FABSize } from '../general-button.types';\n\n@Component({\n selector: 'ard-fab',\n templateUrl: './fab.component.html',\n styleUrls: ['./fab.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumFabComponent extends _ButtonBase {\n //! appearance\n @Input() size: FABSize = FABSize.Standard;\n\n private _extended: boolean = false;\n @Input()\n get extended(): boolean {\n return this._extended;\n }\n set extended(v: any) {\n this._extended = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [\n `ard-appearance-${this.appearance}`,\n `ard-color-${this.color}`,\n `ard-fab-size-${this.size}`,\n this.lightColoring ? `ard-light-coloring` : '',\n this.extended ? 'ard-fab-extended' : '',\n ].join(' ');\n }\n}\n","<button\r\n class=\"ard-fab\"\r\n [ngClass]=\"ngClasses\"\r\n [tabindex]=\"tabIndex\"\r\n [class]=\"wrapperClasses\"\r\n [style]=\"'--ard-_fab-content-size:'+content.clientWidth+'px'\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\" #content>\r\n <ng-content></ng-content>\r\n </div>\r\n</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFabComponent } from './fab.component';\n\n@NgModule({\n declarations: [ArdiumFabComponent],\n imports: [CommonModule],\n exports: [ArdiumFabComponent],\n})\nexport class ArdiumFabModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\nimport { ComponentColor } from '../../types/colors.types';\n\n@Component({\n selector: 'ard-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumIconButtonComponent extends _FocusableComponentBase {\n @Input() wrapperClasses: string = '';\n\n //! button settings\n @Input() color: ComponentColor = ComponentColor.Primary;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return ['ard-appearance-transparent', `ard-color-${this.disabled ? ComponentColor.None : this.color}`, this.compact ? 'ard-compact' : ''].join(' ');\n }\n}\n","<button\r\n class=\"ard-icon-button\"\r\n [ngClass]=\"ngClasses\"\r\n [tabindex]=\"tabIndex\"\r\n [class]=\"wrapperClasses\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumIconButtonComponent } from './icon-button.component';\n\n@NgModule({\n declarations: [ArdiumIconButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumIconButtonComponent],\n})\nexport class ArdiumIconButtonModule {}\n","import { Directive } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { _FocusableComponentBase } from './focusable-component';\n\n/**\n * Common code for components, which implement the ControlValueAccessor.\n *\n * **Warning**: `writeValue` function should be implemented on the child component!\n */\n@Directive()\nexport abstract class _NgModelComponentBase extends _FocusableComponentBase implements ControlValueAccessor {\n //! control value accessor\n protected _onChangeRegistered!: (_: any) => void;\n protected _onTouchedRegistered!: () => void;\n /**\n * Registers a function to handle touched state. Required by ControlValueAccessor.\n * @param fn The function to register.\n */\n registerOnTouched(fn: () => void): void {\n this._onTouchedRegistered = fn;\n }\n /**\n * Registers a function to handle value change. Required by ControlValueAccessor.\n * @param fn The function to register.\n */\n registerOnChange(fn: (_: any) => {}): void {\n this._onChangeRegistered = fn;\n }\n /**\n * Sets the component's disabled state. Required by ControlValueAccessor.\n * @param isDisabled the new disabled state.\n */\n setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n }\n\n /**\n * Writes the a new value into the component. Required by ControlValueAccessor.\n * @abstract\n * @param v The new value to write.\n */\n abstract writeValue(v: any): void; //* abstract\n\n /**\n * Writes the a new value into the component. Required by ControlValueAccessor.\n * @abstract\n * @param v The new value to write.\n */\n protected abstract _emitChange(): void; //* abstract\n\n //! event handlers\n override onBlur(event: FocusEvent) {\n super.onBlur(event);\n this._onTouchedRegistered?.();\n }\n}\n","import { EventEmitter, HostBinding, Input, Output, Directive } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { _NgModelComponentBase } from './ngmodel-component';\n\n/**\n * Common code for components, which only operate on the \"selected\" state.\n */\n@Directive()\nexport abstract class _BooleanComponentBase extends _NgModelComponentBase implements ControlValueAccessor {\n //! control value accessor\n writeValue(v: any): void {\n this.selected = v;\n }\n //emitter function\n /**\n * Emits all select-state-related events.\n */\n protected _emitChange() {\n this._onChangeRegistered?.(this.selected);\n\n if (this._selected) this.selectEvent.emit(null);\n else this.unselectEvent.emit(null);\n\n this.selectedChange.emit(this.selected);\n this.changeEvent.emit(this.selected);\n }\n\n //! events\n /**\n * The event emitter responsible for firing `select` events. Fired when the `selected` state is set to true.\n */\n @Output('select') selectEvent = new EventEmitter<null>();\n /**\n * The event emitter responsible for firing `unselect` events. Fired when the `selected` state is set to false.\n */\n @Output('unselect') unselectEvent = new EventEmitter<null>();\n /**\n * The event emitter responsible for firing `change` events. Fired when the `selected` state is changed.\n */\n @Output('change') changeEvent = new EventEmitter<boolean>();\n\n //! [(selected)] two-way binding\n // can be set using a no-value argument\n protected _selected: boolean = false;\n /**\n * The selection state of the component. Coercible into a boolean.\n */\n @Input()\n @HostBinding('attr.selected')\n @HostBinding('class.ard-selected')\n get selected(): boolean {\n return this._selected;\n }\n set selected(v: any) {\n this._selected = coerceBooleanProperty(v);\n }\n /**\n * The event emitter responsible for firing `selectedChange` events. Fired when the `selected` state is changed.\n */\n @Output() selectedChange = new EventEmitter<boolean>();\n\n /**\n * Toggles the selected state. Emits all appropriate events.\n */\n toggleSelected() {\n this._selected = !this._selected;\n\n this._emitChange();\n }\n\n /**\n * Sets the state to \"selected\". Emits all appropriate events only if the state changes.\n */\n select() {\n const oldState = this._selected;\n this._selected = true;\n\n if (oldState != true) this._emitChange();\n }\n /**\n * Sets the state to \"unselected\". Emits all appropriate events only if the state changes.\n */\n unselect() {\n const oldState = this._selected;\n this._selected = false;\n\n if (oldState != false) this._emitChange();\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation, ChangeDetectionStrategy, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SimpleComponentColor } from '../types/colors.types';\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\nimport { CheckboxState } from './checkbox.types';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\n\n@Component({\n selector: 'ard-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumCheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumCheckboxComponent extends _BooleanComponentBase implements ControlValueAccessor {\n @Input() wrapperClasses: string = '';\n\n @Input() htmlId?: string;\n\n //* appearance\n @Input() color: SimpleComponentColor = SimpleComponentColor.Primary;\n @Input() unselectedColor: SimpleComponentColor = SimpleComponentColor.None;\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`, `ard-unselected-color-${this.unselectedColor}`, `ard-checkbox-${this.state}`].join(' ');\n }\n\n //override the \"selected\" setter, so it changes the state too.\n override set selected(v: any) {\n this._selected = coerceBooleanProperty(v);\n this.state = this._selected ? 'selected' : 'unselected';\n }\n override get selected(): boolean {\n return this._selected;\n }\n\n @Input() state: CheckboxState = 'unselected';\n @Output() stateChange = new EventEmitter<CheckboxState>();\n\n //* click action\n toggleState() {\n if (this.state == 'selected' || this.state == 'indeterminate') this.state = 'unselected';\n else this.state = 'selected';\n this._selected = this.state == 'selected';\n\n this._emitChange();\n }\n protected override _emitChange(): void {\n super._emitChange();\n this.stateChange.emit(this.state);\n }\n}\n","<button\r\n class=\"ard-checkbox\"\r\n role=\"checkbox\"\r\n [id]=\"htmlId\"\r\n [ariaChecked]=\"selected\"\r\n [tabindex]=\"tabIndex\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n (click)=\"toggleState()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-selected\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-indeterminate\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-unselected\"></div>\r\n</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [ArdiumCheckboxComponent],\n imports: [CommonModule],\n exports: [ArdiumCheckboxComponent],\n})\nexport class ArdiumCheckboxModule {}\n","export const CheckboxState = {\n Unselected: 'unselected',\n Indeterminate: 'indeterminate',\n Selected: 'selected',\n} as const;\nexport type CheckboxState = (typeof CheckboxState)[keyof typeof CheckboxState];\n","import { ArdOptionSimple, CompareWithFn } from '../../types/item-storage.types';\nimport resolvePath from 'resolve-object-path';\nimport { any, evaluate, isDefined, isObject, isPrimitive } from 'simple-bool';\n\nexport interface ItemStorageHostDefaults {\n valueFrom: string;\n labelFrom: string;\n disabledFrom: string;\n}\nexport interface SimpleItemStorageHost {\n valueFrom?: string;\n labelFrom?: string;\n disabledFrom?: string;\n invertDisabled?: boolean;\n readonly DEFAULTS: ItemStorageHostDefaults;\n compareWith?: CompareWithFn;\n multiselectable: boolean;\n requireValue: boolean;\n maxSelectedItems?: number;\n}\n\nexport class SimpleItemStorage {\n private _items: ArdOptionSimple[] = [];\n private _highlightedItems: ArdOptionSimple[] = [];\n private _selectedItems: ArdOptionSimple[] = [];\n\n constructor(private _ardParentComp: SimpleItemStorageHost) {}\n\n /**\n * Gets all items.\n */\n get items(): ArdOptionSimple[] {\n return this._items;\n }\n /**\n * Gets all currently selected items.\n */\n get selectedItems(): ArdOptionSimple[] {\n return this._selectedItems;\n }\n /**\n * Gets all currently highlighted items.\n */\n get highlightedItems(): ArdOptionSimple[] {\n return this._highlightedItems;\n }\n /**\n * Gets the values of the currently selected items.\n */\n get value(): any[] {\n return this._itemsToValue(this.selectedItems);\n }\n /**\n * Maps an array of items into their values.\n * @param items The items to convert to value.\n * @returns An array of item values.\n */\n private _itemsToValue(items: ArdOptionSimple[]): any[] {\n return items.map(item => item.value);\n }\n\n /**\n * Returns true if at least one item is highlighted, otherwise false.\n */\n get isAnyItemHighlighted(): boolean {\n return this._highlightedItems.length > 0;\n }\n /**\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\n *\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\n */\n get isItemLimitReached(): boolean {\n if (!this._ardParentComp.multiselectable || !isDefined(this._ardParentComp.maxSelectedItems)) {\n return false;\n }\n return this._ardParentComp.maxSelectedItems <= this.selectedItems.length;\n }\n\n /**\n * Sets the component's items. Takes into account the values defined by the parent component for `valueFrom`, `labelFrom`, and `disabledFrom`.\n * @param items An array of items to be set as the component's items.\n * @returns true if at least one of the items is of primitive type, otherwise false.\n */\n setItems(items: any[]): boolean {\n let areItemsPrimitive = false;\n if (any(items, isPrimitive)) {\n items = items.map(this._primitiveItemsMapFn);\n areItemsPrimitive = true;\n }\n\n this._items = items.map((item, index) => {\n return this._setItemsMapFn(item, index, areItemsPrimitive);\n });\n\n return areItemsPrimitive;\n }\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\n return { value: item };\n }\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOptionSimple {\n if (areItemsPrimitive) {\n return {\n itemData: rawItemData,\n index,\n value: rawItemData.value,\n label: rawItemData.value?.toString?.() ?? String(rawItemData.value),\n };\n }\n //get value\n const valuePath = this._ardParentComp.valueFrom ?? this._ardParentComp.labelFrom ?? this._ardParentComp.DEFAULTS.valueFrom;\n const value = resolvePath(rawItemData, valuePath);\n\n //get label\n const labelPath = this._ardParentComp.labelFrom ?? this._ardParentComp.valueFrom ?? this._ardParentComp.DEFAULTS.labelFrom;\n const label = resolvePath(rawItemData, labelPath) ?? value;\n\n //get disabled\n const disabledPath = this._ardParentComp.disabledFrom ?? this._ardParentComp.DEFAULTS.disabledFrom;\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\n if (this._ardParentComp.invertDisabled) {\n disabled = !disabled;\n }\n\n const itemData = areItemsPrimitive ? rawItemData.value : rawItemData;\n\n //return\n return {\n itemData,\n index,\n value,\n label: label?.toString?.() ?? String(label),\n disabled,\n };\n }\n /**\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\n * @param ngModel The value of the ngModel to set.\n */\n writeValue(ngModel: any[]): void {\n this._forceUnselectAll();\n\n if (!this._validateWriteValue(ngModel)) return;\n\n const selectItemByValue = (value: any) => {\n let item = this.findItemByValue(value);\n\n if (item) {\n this.selectItem(item);\n return;\n }\n console.warn(`Couldn't find an item with value ${value?.toString?.() || String(value)}.`);\n };\n\n for (const modelValue of ngModel) {\n selectItemByValue(modelValue);\n }\n }\n /**\n * Validates that all values of the value to be written are able to be accurately compared against the storage items.\n *\n * An item from the ngModel array is considered valid if it is a primitive value, or if all of the below points are met:\n * 1. The parent component defines the `compareWith` property.\n * 2. The ngModel value item is an object (or array).\n * 3. The parent component has a defined `valueFrom` property.\n * @param ngModel The value of ngModel to validate.\n * @returns true if all items are valid, otherwise false.\n */\n private _validateWriteValue(ngModel: any[]): boolean {\n return ngModel.every(item => {\n if (!isDefined(this._ardParentComp.compareWith) && isObject(item) && this._ardParentComp.valueFrom) {\n console.warn(`Setting object(${JSON.stringify(item)}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`);\n return false;\n }\n return true;\n });\n }\n findItemByValue(valueToFind: any): ArdOptionSimple | undefined {\n let findBy: (item: ArdOptionSimple) => boolean;\n if (isDefined(this._ardParentComp.compareWith)) {\n findBy = item => this._ardParentComp.compareWith!(valueToFind, item.value);\n } else {\n findBy = item => item.value === valueToFind;\n }\n return this._items.find(item => findBy(item));\n }\n\n /**\n * Unselects all selected items.\n *\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\n * @returns An array of items cleared, mapped to only their values.\n */\n unselectAll(): any[] {\n for (const item of this._selectedItems) {\n item.selected = false;\n }\n\n const ret = this._itemsToValue(this._selectedItems);\n\n if (this._ardParentComp.requireValue && this._selectedItems.length > 0) {\n this._selectedItems.first().selected = true;\n ret.splice(0, 1);\n }\n\n this._selectedItems = [];\n\n return ret;\n }\n /**\n * Unselects all selected items, no matter what the component settings are.\n * @returns An array of items cleared, mapped to only their values.\n */\n private _forceUnselectAll(): any[] {\n for (const item of this._selectedItems) {\n item.selected = false;\n }\n\n const ret = this._itemsToValue(this._selectedItems);\n\n this._selectedItems = [];\n\n return ret;\n }\n /**\n * Selects one or multiple items.\n *\n * Accounts for the limit of concurrently selected items defined by the parent component.\n * @param items A rest operator array of item objects to be selected.\n * @returns A tuple containing three arrays, all mapped to only their values:\n * * An array of items selected,\n * * An array of items unselected,\n * * An array of items failed to select due to the limit.\n */\n selectItem(...items: ArdOptionSimple[]): [any[], any[], any[]] {\n if (this.isItemLimitReached) {\n return [[], [], this._itemsToValue(items)];\n }\n let unselected = [];\n if (!this._ardParentComp.multiselectable) {\n unselected = this._forceUnselectAll();\n }\n\n let itemsSelectedCount = 0;\n const itemsSelected = [];\n for (const item of items) {\n itemsSelectedCount++;\n if (item.selected) continue;\n if (this.isItemLimitReached) {\n break;\n }\n item.selected = true;\n this._selectedItems.push(item);\n itemsSelected.push(item);\n }\n\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\n }\n /**\n *\n * @param items A rest operator array of item objects to be unselected.\n * @returns An array of items unselected, mapped to only their values.\n */\n unselectItem(...items: ArdOptionSimple[]): any[] {\n let skippedItem = false;\n for (const item of items) {\n if (this._ardParentComp.requireValue && !skippedItem) {\n skippedItem = true;\n continue;\n }\n\n if (!item.selected) continue;\n item.selected = false;\n }\n this._selectedItems = this._selectedItems.filter(v => v.selected);\n\n return this._itemsToValue(items);\n }\n\n /**\n * Unhighlights all currently highlighted items.\n */\n unhighlightAll(): void {\n for (const item of this._highlightedItems) {\n item.highlighted = false;\n }\n this._highlightedItems = [];\n }\n /**\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\n * @param item The item to be highlighted.\n * @returns The highlighted item.\n */\n highlightSingleItem(item: ArdOptionSimple): ArdOptionSimple | null {\n if (!item || item.disabled) return null;\n this.unhighlightAll();\n return this.highlightItem(item);\n }\n /**\n * Highlights all given items.\n * @param items A rest operator array of items to be highlighted.\n * @returns The last highlighted item.\n */\n highlightItem(...items: ArdOptionSimple[]): ArdOptionSimple {\n for (const item of items) {\n item.highlighted = true;\n }\n this._highlightedItems.push(...items);\n return items.last();\n }\n /**\n * Unhighlights all given items.\n * @param items A rest operator array of items to be unhighlighted.\n */\n unhighlightItem(...items: ArdOptionSimple[]): void {\n for (const item of items) {\n if (!item || !item.highlighted) return;\n\n item.highlighted = false;\n }\n this._highlightedItems = this._highlightedItems.filter(v => v.highlighted);\n }\n /**\n * Highlights the first item out of all items.\n * @returns The highlighted item.\n */\n highlightFirstItem(): ArdOptionSimple | null {\n this.unhighlightAll();\n\n let itemToHighlight = this._getHiglightableItems().first();\n return this.highlightItem(itemToHighlight);\n }\n /**\n * Highlights the last item out of all items.\n * @returns The highlighted item.\n */\n highlightLastItem(): ArdOptionSimple | null {\n this.unhighlightAll();\n\n let itemToHighlight = this._getHiglightableItems().last();\n return this.highlightItem(itemToHighlight);\n }\n /**\n * Highlights all non-disabled items.\n */\n highlightAllItems(): void {\n let itemsToHighlight = this._getHiglightableItems();\n\n this.highlightItem(...itemsToHighlight);\n }\n /**\n * Highlights the next non-disabled item defined by the offset amount.\n *\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\n * @param offset The amount of items to offset the highlight by.\n * @param hasShift Whether the user has the shift key pressed.\n * @returns The item highlighted.\n */\n highlightNextItem(offset: number, hasShift?: boolean): ArdOptionSimple | null {\n if (!this.isAnyItemHighlighted) {\n return this.highlightFirstItem();\n }\n const currentItem = this.highlightedItems.last();\n const itemsWithoutDisabled = this._items.filter(item => !item.disabled && (!this.isItemLimitReached || item.selected));\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index == currentItem.index);\n\n let nextItemIndex = currentIndexInItems + offset;\n if (nextItemIndex >= itemsWithoutDisabled.length) {\n nextItemIndex -= itemsWithoutDisabled.length;\n }\n if (nextItemIndex < 0) {\n nextItemIndex += itemsWithoutDisabled.length;\n }\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\n\n if (hasShift && this._ardParentComp.multiselectable) {\n if (itemToHighlight.highlighted) {\n this.unhighlightItem(currentItem);\n }\n return this.highlightItem(itemToHighlight);\n }\n return this.highlightSingleItem(itemToHighlight);\n }\n /**\n * Finds all highlightable items. An item is considered highlightable if it is **not** disabled.\n * @returns An array of all highlightable items.\n */\n private _getHiglightableItems(): ArdOptionSimple[] {\n return this._items.filter(item => !item.disabled);\n }\n}\n","export const CheckboxListAlignType = {\n LeftClumped: 'left-clumped',\n LeftSplit: 'left-split',\n RightSplit: 'right-split',\n RightClumped: 'right-clumped',\n} as const;\nexport type CheckboxListAlignType = (typeof CheckboxListAlignType)[keyof typeof CheckboxListAlignType];\n","import { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { SimpleItemStorage, SimpleItemStorageHost } from '../_internal/item-storages/simple-item-storage';\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\nimport { ComponentColor } from '../types/colors.types';\nimport { ArdOptionSimple, CompareWithFn } from '../types/item-storage.types';\nimport { CheckboxListAlignType } from './checkbox-list.types';\n\n@Component({\n selector: 'ard-checkbox-list',\n templateUrl: './checkbox-list.component.html',\n styleUrls: ['./checkbox-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumCheckboxListComponent extends _NgModelComponentBase implements SimpleItemStorageHost, AfterViewInit {\n @HostBinding('attr.id')\n @Input()\n htmlId: string = crypto.randomUUID();\n\n readonly DEFAULTS = {\n valueFrom: 'value',\n labelFrom: 'label',\n disabledFrom: 'disabled',\n };\n readonly multiselectable = true;\n readonly requireValue = false;\n\n private _itemStorage = new SimpleItemStorage(this);\n\n @Input()\n set items(v: any[]) {\n this._itemStorage.setItems(v);\n }\n get items(): ArdOptionSimple[] {\n return this._itemStorage.items;\n }\n\n compareWith?: CompareWithFn;\n\n private _invertDisabled: boolean = false;\n @Input()\n get invertDisabled(): boolean {\n return this._invertDisabled;\n }\n set invertDisabled(v: any) {\n this._invertDisabled = coerceBooleanProperty(v);\n }\n\n private _maxSelectedItems?: number;\n @Input()\n get maxSelectedItems(): number | undefined {\n return this._maxSelectedItems;\n }\n set maxSelectedItems(v: any) {\n this._maxSelectedItems = coerceNumberProperty(v);\n }\n\n //! appearance\n @Input() color: ComponentColor = ComponentColor.Primary;\n @Input() align: CheckboxListAlignType = CheckboxListAlignType.LeftClumped;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`, `ard-align-${this.align}`, this.compact ? 'ard-compact' : ''].join(' ');\n }\n\n //! value\n @Input()\n get value(): any {\n return this._itemStorage.value;\n }\n set value(v: any) {\n this.writeValue(v);\n }\n\n @Output() valueChange = new EventEmitter<any>();\n @Output('change') changeEvent = new EventEmitter<any>();\n\n private _valueBeforeInit: any;\n writeValue(v: any): void {\n if (!this._isViewInit) {\n this._valueBeforeInit = v;\n return;\n }\n this._itemStorage.writeValue(v);\n }\n\n private _isViewInit: boolean = false;\n ngAfterViewInit(): void {\n this._isViewInit = true;\n\n if (this._valueBeforeInit) {\n this.writeValue(this._valueBeforeInit);\n }\n }\n\n protected _emitChange(): void {\n const v = this.value;\n this._onChangeRegistered?.(v);\n this.changeEvent.emit(v);\n this.valueChange.emit(v);\n }\n\n onItemHighlight(v: ArdOptionSimple): void {\n this._itemStorage.highlightSingleItem(v);\n }\n onItemFocus(v: ArdOptionSimple): void {\n this._itemStorage.highlightSingleItem(v);\n }\n onItemBlur(): void {\n this._itemStorage.unhighlightAll();\n }\n selectItem(v: ArdOptionSimple): void {\n this._itemStorage.selectItem(v);\n this._emitChange();\n }\n unselectItem(v: ArdOptionSimple): void {\n this._itemStorage.unselectItem(v);\n this._emitChange();\n }\n toggleItem(v: ArdOptionSimple): void {\n if (v.selected) {\n this.unselectItem(v);\n return;\n }\n this.selectItem(v);\n }\n}\n","<div class=\"ard-checkbox-list\"\r\n [class.ard-compact]=\"compact\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div\r\n *ngFor=\"let item of items\"\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted\"\r\n [class.ard-item-disabled]=\"item.disabled\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected\"\r\n [disabled]=\"item.disabled\"\r\n [color]=\"color\"\r\n [htmlId]=\"htmlId + item.index\"\r\n [tabIndex]=\"tabIndex\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n ></ard-checkbox>\r\n <label [for]=\"htmlId + item.index\">\r\n {{ item.label }}\r\n </label>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxListComponent } from './checkbox-list.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\n\n@NgModule({\n declarations: [ArdiumCheckboxListComponent],\n imports: [CommonModule, ArdiumCheckboxModule],\n exports: [ArdiumCheckboxListComponent],\n})\nexport class ArdiumCheckboxListModule {}\n","//! appearances\nexport const OutlinedAppearance = {\n /**\n * No background with solid border.\n */\n Outlined: 'outlined',\n} as const;\nexport type OutlinedAppearance = (typeof OutlinedAppearance)[keyof typeof OutlinedAppearance];\n\nexport const PanelAppearance = {\n /**\n * Filled with a background color, with slight shadow.\n */\n Raised: 'raised',\n} as const;\nexport type PanelAppearance = (typeof PanelAppearance)[keyof typeof PanelAppearance];\n\nexport const FormElementAppearance = {\n ...OutlinedAppearance,\n /**\n * No background and no border. Useful for when trying to create a component that uses another component inside its borders.\n */\n Transparent: 'transparent',\n /**\n * Slighthly darker/lighter background with rounded but transparent border.\n */\n Filled: 'filled',\n} as const;\nexport type FormElementAppearance = (typeof FormElementAppearance)[keyof typeof FormElementAppearance];\n\nexport const DecorationElementAppearance = {\n Outlined: 'outlined',\n OutlinedStrong: 'outlined-strong',\n Filled: 'filled',\n} as const;\nexport type DecorationElementAppearance = (typeof DecorationElementAppearance)[keyof typeof DecorationElementAppearance];\n\n//! variants\nexport const PanelVariant = {\n /**\n * Slightly rounded corners.\n */\n Rounded: 'rounded',\n /**\n * Sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type PanelVariant = (typeof PanelVariant)[keyof typeof PanelVariant];\n\nexport const FormElementVariant = {\n ...PanelVariant,\n /**\n * Fully rounded corners - pill shaped.\n */\n Pill: 'pill',\n} as const;\nexport type FormElementVariant = (typeof FormElementVariant)[keyof typeof FormElementVariant];\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { SimpleOneAxisAlignment } from '../types/alignment.types';\nimport { ComponentColor } from '../types/colors.types';\nimport { DecorationElementAppearance, FormElementVariant } from '../types/theming.types';\nimport { _DisablableComponentBase } from './../_internal/disablable-component';\n\n@Component({\n selector: 'ard-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumChipComponent extends _DisablableComponentBase {\n @Input() contentAlignment: SimpleOneAxisAlignment = SimpleOneAxisAlignment.Left;\n\n //* appearance\n @Input() appearance: DecorationElementAppearance = DecorationElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n @Input() color: ComponentColor = ComponentColor.Primary;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n @Input() wrapperClasses: string = '';\n get ngClasses(): string {\n return [\n this.wrapperClasses,\n `ard-chip-align-${this.contentAlignment}`,\n `ard-variant-${this.variant}`,\n `ard-appearance-${this.appearance}`,\n `ard-color-${this.color}`,\n this.compact ? 'ard-compact' : '',\n ].join(' ');\n }\n}\n","<div class=\"ard-chip-wrapper ard-chip\" [ngClass]=\"ngClasses\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\nimport { ComponentColor } from '../../types/colors.types';\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport { _BooleanComponentBase } from './../../_internal/boolean-component';\n\n@Component({\n selector: 'ard-selectable-chip',\n templateUrl: './selectable-chip.component.html',\n styleUrls: ['../chip.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumSelectableChipComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumSelectableChipComponent extends _BooleanComponentBase implements ControlValueAccessor {\n readonly DEFAULTS = {\n chipTitle: 'Select',\n };\n\n @Input() chipTitle: string = this.DEFAULTS.chipTitle;\n @Input() useSelectionIcon: boolean = true;\n @Input() contentAlignment: SimpleOneAxisAlignment = SimpleOneAxisAlignment.Left;\n\n //* appearance\n @Input() appearance: DecorationElementAppearance = DecorationElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n @Input() color: ComponentColor = ComponentColor.Primary;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n @Input() wrapperClasses: string = '';\n get ngClasses(): string {\n return [\n this.wrapperClasses,\n `ard-chip-align-${this.contentAlignment}`,\n `ard-variant-${this.variant}`,\n `ard-appearance-${this.appearance}`,\n `ard-color-${this.color}`,\n this.compact ? 'ard-compact' : '',\n ].join(' ');\n }\n}\n","<button\r\n class=\"ard-chip-wrapper ard-chip-selectable\"\r\n [class.ard-chip-selected]=\"selected\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n [title]=\"chipTitle\"\r\n [tabindex]=\"tabIndex\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-chip-selection-icon\" role=\"img\"></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>","import { Component } from '@angular/core';\nimport { _FocusableComponentBase } from './../focusable-component';\n\n@Component({\n selector: 'ard-_clear-button',\n templateUrl: './clear-button.component.html',\n styleUrls: ['./clear-button.component.scss'],\n})\nexport class _ClearButtonComponent extends _FocusableComponentBase {}\n","<button #focusableElement\r\n class=\"ard-clear-btn-wrapper\"\r\n [tabindex]=\"tabIndex\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-clear-btn\" aria-hidden=\"true\"></div>\r\n</button>","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\nimport { ComponentColor } from '../../types/colors.types';\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\n\n@Component({\n selector: 'ard-deletable-chip',\n templateUrl: './deletable-chip.component.html',\n styleUrls: ['../chip.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumDeletableChipComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumDeletableChipComponent extends _FocusableComponentBase {\n readonly DEFAULTS = {\n deleteButtonTitle: 'Delete',\n };\n\n @Input() deleteButtonTitle: string = this.DEFAULTS.deleteButtonTitle;\n @Input() contentAlignment: SimpleOneAxisAlignment = SimpleOneAxisAlignment.Left;\n\n //* appearance\n @Input() appearance: DecorationElementAppearance = DecorationElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n @Input() color: ComponentColor = ComponentColor.Primary;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n @Input() wrapperClasses: string = '';\n get ngClasses(): string {\n return [\n this.wrapperClasses,\n `ard-chip-align-${this.contentAlignment}`,\n `ard-variant-${this.variant}`,\n `ard-appearance-${this.appearance}`,\n `ard-color-${this.color}`,\n this.compact ? 'ard-compact' : '',\n ].join(' ');\n }\n //* events\n @Output('delete') deleteEvent = new EventEmitter<MouseEvent>();\n}\n","<div\r\n class=\"ard-chip-wrapper ard-chip-deletable\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-_clear-button\r\n [title]=\"deleteButtonTitle\"\r\n (click)=\"deleteEvent.emit($event)\"\r\n [tabIndex]=\"tabIndex\"\r\n ></ard-_clear-button>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { _ClearButtonComponent } from './clear-button.component';\n\n@NgModule({\n declarations: [_ClearButtonComponent],\n imports: [CommonModule],\n exports: [_ClearButtonComponent],\n})\nexport class _ClearButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumChipComponent } from './chip.component';\nimport { ArdiumSelectableChipComponent } from './selectable-chip/selectable-chip.component';\nimport { ArdiumDeletableChipComponent } from './deletable-chip/deletable-chip.component';\nimport { _ClearButtonModule } from '../_internal/clear-button/clear-button.module';\n\n@NgModule({\n declarations: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n imports: [CommonModule, _ClearButtonModule],\n exports: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n})\nexport class ArdiumChipModule {}\n","export type ScrollAlignment = 'top' | 'bottom' | 'middle';\n\nexport const DropdownPanelAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type DropdownPanelAppearance = (typeof DropdownPanelAppearance)[keyof typeof DropdownPanelAppearance];\n\nexport const DropdownPanelVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n SharpConnected: 'sharp ard-connected',\n} as const;\nexport type DropdownPanelVariant = (typeof DropdownPanelVariant)[keyof typeof DropdownPanelVariant];\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { DropdownPanelAppearance, DropdownPanelVariant, ScrollAlignment } from './dropdown-panel.types';\n\n@Component({\n selector: 'ard-dropdown-panel',\n templateUrl: './dropdown-panel.component.html',\n styleUrls: ['./dropdown-panel.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumDropdownPanelComponent implements AfterViewInit, AfterViewChecked {\n constructor() {}\n\n @ViewChild('scroll', { static: true }) private _scrollRef!: ElementRef;\n private _scrollElement!: HTMLElement;\n\n //! options\n @Input() panelId!: string;\n @Input() headerTemplate?: TemplateRef<any>;\n @Input() footerTemplate?: TemplateRef<any>;\n @Input() filterValue?: string;\n\n //! appearance\n @Input() appearance: DropdownPanelAppearance = DropdownPanelAppearance.Raised;\n @Input() variant: DropdownPanelVariant = DropdownPanelVariant.Rounded;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [`ard-appearance-${this.appearance}`, `ard-variant-${this.variant}`, this.compact ? 'ard-compact' : ''].join(' ');\n }\n\n //! states\n @Input() @HostBinding('class.ard-open') isOpen!: boolean;\n\n //! output events\n @Output('scroll') scrollEvent = new EventEmitter<{\n start: number;\n end: number;\n }>();\n @Output('scrollToEnd') scrollToEndEvent = new EventEmitter();\n\n //! event handlers\n onScroll() {\n const start = this._scrollTop;\n const end = this._scrollBottom;\n this.scrollEvent.emit({ start, end });\n\n if (end == this._scrollElement.scrollHeight) {\n this.scrollToEndEvent.emit();\n }\n }\n\n //! hooks\n ngAfterViewInit(): void {\n this._scrollElement = this._scrollRef.nativeElement as HTMLElement;\n }\n ngAfterViewChecked(): void {\n if (!this._currentScrollToDirection) return;\n\n const recent = this._scrollElement.querySelector<HTMLElement>('.ard-option-highlighted-recent');\n if (!recent) return;\n\n const isInView = this._isElementInView(recent);\n if (!isInView) {\n this._scrollToElement(recent, this._currentScrollToDirection);\n }\n\n this._currentScrollToDirection = null;\n }\n\n //! scroll position\n private get _scrollTop(): number {\n return this._scrollElement.scrollTop;\n }\n private set _scrollTop(value: number) {\n this._scrollElement.scrollTop = value;\n }\n private get _scrollBottom(): number {\n return this._scrollTop + this._scrollElement.getBoundingClientRect().height;\n }\n\n //! scroll to element methods\n private _scrollToElement(el: HTMLElement, alignTo: ScrollAlignment = 'middle'): void {\n const parentContentRect = this._getContentRect(this._scrollElement);\n const elementRect = el.getBoundingClientRect();\n\n switch (alignTo) {\n case 'top':\n this._scrollTop += elementRect.top - parentContentRect.top;\n break;\n case 'bottom':\n this._scrollTop += elementRect.bottom - parentContentRect.bottom;\n break;\n case 'middle':\n this._scrollTop += (elementRect.top + elementRect.bottom) / 2 - parentContentRect.top - parentContentRect.height / 2;\n break;\n }\n }\n\n private _currentScrollToDirection: ScrollAlignment | null = null;\n scrollToRecentlyHighlighted(direction: ScrollAlignment): void {\n this._currentScrollToDirection = direction;\n }\n private _isElementInView(el: HTMLElement): boolean {\n const parentContentRect = this._getContentRect(this._scrollElement);\n const elementRect = el.getBoundingClientRect();\n return elementRect.bottom < parentContentRect.bottom && elementRect.top > parentContentRect.top;\n }\n private _getContentRect(el: HTMLElement): DOMRect {\n const elRect = el.getBoundingClientRect();\n const elPadding = window.getComputedStyle(el).getPropertyValue('padding');\n const paddings = elPadding.split(' ').map(v => (v ? parseFloat(v) : null));\n const topPadd = paddings[0] ?? 0;\n const rightPadd = paddings[1] ?? topPadd;\n const bottomPadd = paddings[2] ?? topPadd;\n const leftPadd = paddings[3] ?? rightPadd ?? topPadd;\n return new DOMRect(elRect.x + leftPadd, elRect.y + topPadd, elRect.width - leftPadd - rightPadd, elRect.height - topPadd - bottomPadd);\n }\n}\n","<div class=\"ard-dropdown-panel-container\" [ngClass]=\"ngClasses\">\r\n <div *ngIf=\"headerTemplate\" class=\"ard-dropdown-header\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\" [ngTemplateOutletContext]=\"{ searchTerm: filterValue }\">\r\n </ng-template>\r\n </div>\r\n <div #scroll\r\n class=\"ard-dropdown-panel-content\"\r\n [attr.id]=\"panelId\"\r\n (scroll)=\"onScroll()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n <div *ngIf=\"footerTemplate\" class=\"ard-dropdown-footer\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{ searchTerm: filterValue }\">\r\n </ng-template>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDropdownPanelComponent } from './dropdown-panel.component';\n\n@NgModule({\n declarations: [ArdiumDropdownPanelComponent],\n imports: [CommonModule],\n exports: [ArdiumDropdownPanelComponent],\n})\nexport class ArdiumDropdownPanelModule {}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-prefix-tmp]' })\nexport class ArdFormFieldPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-suffix-tmp]' })\nexport class ArdFormFieldSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, ContentChild, TemplateRef, Input, HostBinding } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { FormElementAppearance, FormElementVariant } from '../types/theming.types';\nimport { _DisablableComponentBase } from '../_internal/disablable-component';\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\n\n@Component({\n selector: 'ard-form-field-frame',\n templateUrl: './form-field-frame.component.html',\n styleUrls: ['./form-field-frame.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {\n //! focused state\n @Input() override isFocused: boolean = false;\n\n //! appearance\n /**\n * The appearance of the component, aka the styling.\n */\n @Input() appearance: FormElementAppearance = FormElementAppearance.Outlined;\n /**\n * The variant of the component, aka the shape.\n */\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n\n /**\n * @private\n * Whether to use the compact styling or not.\n */\n private _compact: boolean = false;\n @Input()\n /**\n * Whether to use the compact styling or not.\n */\n get compact(): boolean {\n return this._compact;\n }\n /**\n * Whether to use the compact styling or not.\n */\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [\n `ard-appearance-${this.appearance}`,\n `ard-variant-${this.variant}`,\n this.compact ? 'ard-compact' : '',\n this.isFocused ? 'ard-focused' : 'ard-unfocused',\n ].join(' ');\n }\n\n //! prefix & suffix\n @Input('prefixTemplate') prefixTemplateInput?: TemplateRef<any>;\n @Input('suffixTemplate') suffixTemplateInput?: TemplateRef<any>;\n @ContentChild(ArdFormFieldPrefixTemplateDirective)\n prefixTemplate: TemplateRef<any> | null = null;\n @ContentChild(ArdFormFieldSuffixTemplateDirective)\n suffixTemplate: TemplateRef<any> | null = null;\n}\n","<div class=\"ard-form-field-frame\" [ngClass]=\"ngClasses\">\r\n <div class=\"ard-form-field-overlay\"></div>\r\n <div class=\"ard-form-field-prefix-container\" *ngIf=\"prefixTemplateInput ?? prefixTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput ?? prefixTemplate\"></ng-template>\r\n </div>\r\n <div class=\"ard-form-field-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ard-form-field-suffix-container\" *ngIf=\"suffixTemplateInput ?? suffixTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput ?? suffixTemplate\"></ng-template>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFormFieldFrameComponent } from './form-field-frame.component';\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\n\n@NgModule({\n declarations: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n})\nexport class ArdiumFormFieldFrameModule {}\n","import resolvePath from 'resolve-object-path';\nimport { any, isPrimitive } from 'simple-bool';\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\n\nexport interface SimplestItemStorageHostDefaults {\n valueFrom: string;\n labelFrom: string;\n}\nexport interface SimplestItemStorageHost {\n valueFrom?: string;\n labelFrom?: string;\n readonly DEFAULTS: SimplestItemStorageHostDefaults;\n}\n\nexport class SimplestItemStorage {\n private _items: ArdSimplestStorageItem[] = [];\n private _highlightedItem: ArdSimplestStorageItem | null = null;\n\n get highlightedItem(): ArdSimplestStorageItem | null {\n return this._highlightedItem;\n }\n\n constructor(private _ardParentComp: SimplestItemStorageHost) {}\n\n /**\n * Gets all items.\n */\n get items(): ArdSimplestStorageItem[] {\n return this._items;\n }\n\n /**\n * Returns true if at least one item is highlighted, otherwise false.\n */\n get isAnyItemHighlighted(): boolean {\n return this._highlightedItem != null;\n }\n\n /**\n * Sets the component's items. Takes into account the values defined by the parent component for `suggValueFrom` and `suggLabelFrom`.\n * @param items An array of items to be set as the component's items.\n * @returns true if at least one of the items is of primitive type, otherwise false.\n */\n setItems(items: any[]): boolean {\n let areItemsPrimitive = false;\n if (any(items, isPrimitive)) {\n items = items.map(this._primitiveItemsMapFn);\n areItemsPrimitive = true;\n }\n\n this._items = items.map((item, index) => {\n return this._setItemsMapFn(item, index, areItemsPrimitive);\n });\n\n return areItemsPrimitive;\n }\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\n return { value: item };\n }\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdSimplestStorageItem {\n if (areItemsPrimitive) {\n return {\n itemData: rawItemData,\n index,\n value: rawItemData.value,\n label: rawItemData.value?.toString?.() ?? String(rawItemData.value),\n };\n }\n //get value\n const valuePath = this._ardParentComp.valueFrom ?? this._ardParentComp.labelFrom ?? this._ardParentComp.DEFAULTS.valueFrom;\n const value = resolvePath(rawItemData, valuePath);\n\n //get label\n const labelPath = this._ardParentComp.labelFrom ?? this._ardParentComp.valueFrom ?? this._ardParentComp.DEFAULTS.labelFrom;\n const label = resolvePath(rawItemData, labelPath) ?? value;\n\n const itemData = areItemsPrimitive ? rawItemData.value : rawItemData;\n\n //return\n return {\n itemData,\n index,\n value,\n label: label?.toString?.() ?? String(label),\n };\n }\n\n /**\n * Selects the given item.\n * @param items The item to select.\n * @returns The value of the selected item.\n */\n selectItem(item: ArdSimplestStorageItem): any {\n return item.value;\n }\n selectCurrent(): any {\n if (!this._highlightedItem) return undefined;\n return this.selectItem(this._highlightedItem);\n }\n\n /**\n * Unhighlights all currently highlighted items.\n */\n unhighlightCurrent(): void {\n if (this._highlightedItem) {\n this._highlightedItem.highlighted = false;\n }\n this._highlightedItem = null;\n }\n /**\n * Highlights a given item.\n * @param item The item to be highlighted.\n */\n highlightItem(item: ArdSimplestStorageItem): void {\n this.unhighlightCurrent();\n\n item.highlighted = true;\n\n this._highlightedItem = item;\n }\n /**\n * Unhighlights a given item.\n * @param item The item to be unhighlighted.\n */\n unhighlightItem(item: ArdSimplestStorageItem): void {\n item.highlighted = false;\n\n if (this._highlightedItem?.index == item.index) this._highlightedItem = null;\n }\n /**\n * Highlights the first item out of all items.\n * @returns The highlighted item.\n */\n highlightFirstItem(): ArdSimplestStorageItem | null {\n if (!this.items.length) return null;\n\n this.unhighlightCurrent();\n\n let itemToHighlight = this.items.first();\n this.highlightItem(itemToHighlight);\n\n return itemToHighlight;\n }\n /**\n * Highlights the last item out of all items.\n * @returns The highlighted item.\n */\n highlightLastItem(): ArdSimplestStorageItem | null {\n if (!this.items.length) return null;\n\n this.unhighlightCurrent();\n\n let itemToHighlight = this.items.last();\n this.highlightItem(itemToHighlight);\n\n return itemToHighlight;\n }\n /**\n * Highlights the next non-disabled item defined by the offset amount.\n * @param offset The amount of items to offset the highlight by.\n * @returns The item highlighted.\n */\n highlightNextItem(offset: number): ArdSimplestStorageItem | null {\n const currentItem = this._highlightedItem;\n if (!currentItem) {\n return this.highlightFirstItem();\n }\n const itemsWithoutDisabled = this._items.filter(item => !item.disabled);\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index == currentItem.index);\n\n let nextItemIndex = currentIndexInItems + offset;\n if (nextItemIndex >= itemsWithoutDisabled.length) {\n nextItemIndex -= itemsWithoutDisabled.length;\n } else if (nextItemIndex < 0) {\n nextItemIndex += itemsWithoutDisabled.length;\n }\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\n\n this.highlightItem(itemToHighlight);\n\n return itemToHighlight;\n }\n}\n","export type ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => { text: string; caretPos: number };\n\ninterface IRegExpTransformer {\n apply: ArdTransformerFn;\n}\nexport class RegExpTransformer implements IRegExpTransformer {\n constructor(\n public regex: RegExp,\n public replace: string = '',\n public caretModif: number = 0\n ) {}\n\n apply(currentText: string, previousText: string, caretPos: number): { text: string; caretPos: number } {\n let text = currentText;\n if (text && this.regex) {\n let safetySwitch = 0;\n while (text.match(this.regex)) {\n //prevent infinite loop\n if (safetySwitch > 999) {\n console.error(this, new Error('Possible infinite loop in the above RegExpTransformer. Exited after 1000 iterations.'));\n break;\n }\n //apply regex\n let lengthBefore = text.length;\n text = text.replace(this.regex, this.replace);\n let lengthAfter = text.length;\n //fix caret pos\n caretPos = caretPos + (lengthAfter - lengthBefore);\n //for infinite loop prevention\n safetySwitch++;\n }\n }\n return { text, caretPos };\n }\n}\n\nconst toUpper: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\n return { text: currentText.toUpperCase(), caretPos };\n};\nconst toLower: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\n return { text: currentText.toLowerCase(), caretPos };\n};\nconst int: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [[/[^0-9-]/], [/(.+)-/, '$1']];\n let obj = { text: currentText, caretPos };\n for (const arr of regexes) {\n let [regex, replace, caretModif] = arr;\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\n }\n return obj;\n};\nconst float: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [\n [/[^0-9,\\.\\-]/],\n [/,/, '.'],\n [/(.+)-/, '$1'],\n [/\\.(.*)\\./, '$1.'],\n [/^(-?)\\./, '$10.'],\n ];\n let obj = { text: currentText, caretPos };\n for (const arr of regexes) {\n let [regex, replace, caretModif] = arr;\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\n }\n return obj;\n};\nexport const ArdTransformer = {\n ToUpper: toUpper,\n ToLower: toLower,\n Integer: int,\n Float: float,\n} as const;\n","import { isAnyString, isNull, isNumber } from 'simple-bool';\nimport { ArdTransformer, RegExpTransformer } from './input-transformers';\n\nexport interface SimpleInputModelHost {\n maxLength?: number;\n}\nexport class SimpleInputModel {\n protected _hostComp!: SimpleInputModelHost;\n constructor(\n protected inputEl: HTMLInputElement,\n hostComp: SimpleInputModelHost\n ) {\n this._hostComp = hostComp;\n }\n\n protected _value: string | null = null;\n get value(): string | null {\n return this._value;\n }\n set value(v: string | null) {\n this._value = v;\n }\n get stringValue(): string {\n return this._value ?? '';\n }\n set stringValue(v: string) {\n this._value = v || null;\n }\n\n writeValue(v: any): boolean {\n if (!isAnyString(v) && !isNull(v)) {\n //warn when using non-string/non-null value\n console.warn(new Error(`Trying to set simple-input's value to ${typeof v}, expected string.`));\n //normalize the value\n v = v?.toString?.() ?? String(v);\n }\n return this._writeValue(v);\n }\n protected _writeValue(v: string | null): boolean {\n //constraints\n v = this._applyLengthTransformer(v);\n //update view\n let oldVal = this.value;\n this.value = v;\n this._updateInputElement();\n return oldVal !== v;\n }\n rewriteValueAfterHostUpdate(): void {\n this._writeValue(this._value);\n }\n clear(): void {\n this._value = null;\n this._updateInputElement();\n }\n\n _updateInputElement() {\n this.inputEl.value = this.stringValue;\n }\n get caretPos(): number {\n return this.inputEl.selectionEnd ?? this.stringValue.length;\n }\n set caretPos(pos: number) {\n this.inputEl.setSelectionRange(pos, pos);\n }\n //* constraints\n protected _applyLengthTransformer(v: string | null): string | null {\n //exit if max length not specified\n if (this._hostComp.maxLength == undefined) return v;\n //exit if not value\n //exit if value length is less than specified max length\n if (!v || v.length <= this._hostComp.maxLength) return v;\n //cut the excess off\n v = v.substring(0, this._hostComp.maxLength);\n this.caretPos = this._hostComp.maxLength;\n return v;\n }\n}\nexport interface InputModelHost extends SimpleInputModelHost {\n charlist?: RegExp;\n}\nexport class InputModel extends SimpleInputModel {\n protected override _hostComp!: InputModelHost;\n constructor(inputEl: HTMLInputElement, hostComp: InputModelHost) {\n super(inputEl, hostComp);\n }\n protected override _writeValue(v: string | null): boolean {\n //transformers\n if (v) {\n let prev = this.stringValue;\n v = this._applyAllowOrDenylistTransformer(v, prev);\n prev = this.stringValue;\n v = this._applyLengthTransformer(v);\n }\n let oldVal = this.value;\n //update view\n this.value = v;\n this._updateInputElement();\n return oldVal !== v;\n }\n\n setSelection(from: number | null, to: number | null): void;\n setSelection(from: number | null, to?: number | null): void {\n to = to ?? this.value?.length ?? Infinity;\n this.inputEl.setSelectionRange(from, to);\n }\n //* constraints\n protected _applyAllowOrDenylistTransformer(v: string, prev: string): string {\n if (!this._hostComp.charlist || !v) return v;\n let { text, caretPos } = new RegExpTransformer(this._hostComp.charlist).apply(v, prev, this.caretPos);\n this.caretPos = caretPos;\n return text;\n }\n}\n\nexport interface NumberInputModelHost {\n max: number;\n min: number;\n allowFloat: boolean;\n}\nexport class NumberInputModel {\n protected _hostComp!: NumberInputModelHost;\n constructor(\n protected inputEl: HTMLInputElement,\n hostComp: NumberInputModelHost\n ) {\n this._hostComp = hostComp;\n }\n\n //! value setters/getters\n protected _value: string | null = null;\n get value(): string | null {\n return this._value;\n }\n set value(v: string | null) {\n this._value = v;\n }\n //value as string\n get stringValue(): string {\n return this._value ?? '';\n }\n set stringValue(v: string) {\n this._value = v || null;\n }\n //value as number\n get numberValue(): number | null {\n return (this._value == null && null) || Number(this._value);\n }\n set numberValue(v: number | null) {\n this._value = v == null ? null : v.toString();\n }\n\n //! write value handlers\n writeValue(v: any): boolean {\n if (!isNumber(v) && !isAnyString(v) && !isNull(v)) {\n //warn when using non-string/non-null value\n console.warn(new Error(`Trying to set simple-input's value to ${typeof v}, expected string, number, or null.`));\n //normalize the value\n v = v?.toString?.() ?? String(v);\n }\n v = String(v);\n return this._writeValue(v);\n }\n protected _writeValue(v: string | null): boolean {\n //constraints\n if (v) {\n v = this._removeDecimalPlaces(v);\n v = this._applyNumberConstraint(v);\n v = this._applyMinMaxConstraints(v);\n }\n //update view\n let oldVal = this.value;\n this.value = v;\n this._updateInputElement();\n return oldVal !== v;\n }\n rewriteValueAfterHostUpdate(): void {\n this._writeValue(this._value);\n }\n\n //! input element methods\n _updateInputElement() {\n this.inputEl.value = this.stringValue;\n }\n get caretPos(): number {\n return this.inputEl.selectionEnd ?? this.stringValue.length;\n }\n set caretPos(pos: number) {\n this.inputEl.setSelectionRange(pos, pos);\n }\n\n //! constraints\n private _removeDecimalPlaces(v: string): string {\n if (!v) return '';\n if (this._hostComp.allowFloat) return v;\n\n if (v.match(/[.,].+/)) {\n const num = Number(v);\n if (!isNaN(num)) v = Math.round(num).toString();\n }\n return v;\n }\n private _applyNumberConstraint(v: string): string {\n if (!v) return '';\n\n if (this._hostComp.allowFloat) {\n const { text, caretPos } = ArdTransformer.Float(v, this.stringValue, this.caretPos);\n this.caretPos = caretPos;\n return text;\n }\n const { text, caretPos } = ArdTransformer.Integer(v, this.stringValue, this.caretPos);\n this.caretPos = caretPos;\n return text;\n }\n private _applyMinMaxConstraints(v: string): string {\n if (!v) return '';\n\n const numericValue = Number(v);\n if (numericValue > this._hostComp.max) return this._hostComp.max.toString();\n if (numericValue < this._hostComp.min) return this._hostComp.min.toString();\n return v;\n }\n}\n\nexport function escapeAndCreateRegex(str: string, flags?: string, negated: boolean = true): RegExp {\n str = str.replace(/([\\]]+)/g, '\\\\$1');\n return new RegExp(`[${negated ? '^' : ''}${str}]`, flags);\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdSimpleInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-prefix-tmp]' })\nexport class ArdSimpleInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-suffix-tmp]' })\nexport class ArdSimpleInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\nimport { SimpleOneAxisAlignment } from './../../types/alignment.types';\nimport { SimpleInputModel, SimpleInputModelHost } from './../input-utils';\nimport {\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n} from './simple-input.directives';\n\n@Component({\n selector: 'ard-simple-input',\n templateUrl: './simple-input.component.html',\n styleUrls: ['./simple-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumSimpleInputComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumSimpleInputComponent extends _NgModelComponentBase implements SimpleInputModelHost, ControlValueAccessor, OnInit {\n readonly DEFAULTS = {\n clearButtonTitle: 'Clear',\n };\n //! input view\n @ViewChild('textInput', { static: true })\n textInputEl!: ElementRef<HTMLInputElement>;\n protected inputModel!: SimpleInputModel;\n ngOnInit(): void {\n this.inputModel = new SimpleInputModel(this.textInputEl.nativeElement, this);\n this._setInputAttributes();\n //set the value\n if (this._valueBeforeInit) {\n this.writeValue(this._valueBeforeInit);\n delete this._valueBeforeInit;\n }\n }\n\n @Input() placeholder: string = '';\n @Input() inputId?: string;\n @Input() clearButtonTitle: string = this.DEFAULTS.clearButtonTitle;\n\n //! prefix & suffix\n @ContentChild(ArdSimpleInputPrefixTemplateDirective, { read: TemplateRef })\n prefixTemplate?: TemplateRef<any>;\n @ContentChild(ArdSimpleInputSuffixTemplateDirective, { read: TemplateRef })\n suffixTemplate?: TemplateRef<any>;\n\n //! placeholder\n @ContentChild(ArdSimpleInputPlaceholderTemplateDirective, {\n read: TemplateRef,\n })\n placeholderTemplate?: TemplateRef<any>;\n\n get shouldDisplayPlaceholder(): boolean {\n return Boolean(this.placeholder) && !this.value;\n }\n\n //! appearance\n @Input() appearance: FormElementAppearance = FormElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n @Input() alignText: SimpleOneAxisAlignment = SimpleOneAxisAlignment.Left;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [`ard-appearance-${this.appearance}`, `ard-variant-${this.variant}`, `ard-text-align-${this.alignText}`, this.compact ? 'ard-compact' : ''].join(\n ' '\n );\n }\n\n //! other inputs\n @Input() inputAttrs: { [key: string]: any } = {};\n\n //! number attribute setters/getters\n protected _maxLength?: number;\n @Input()\n get maxLength(): number | undefined {\n return this._maxLength;\n }\n set maxLength(v: any) {\n this._maxLength = coerceNumberProperty(v);\n }\n\n //! no-value attribute setters/getters\n protected _clearable: boolean = true;\n @Input()\n @HostBinding('class.ard-clearable')\n get clearable(): boolean {\n return this._clearable;\n }\n set clearable(v: any) {\n this._clearable = coerceBooleanProperty(v);\n }\n\n //! control value accessor's write value implementation\n writeValue(v: any) {\n this.inputModel.writeValue(v);\n }\n //! value two-way binding\n protected _valueBeforeInit?: string | null = null;\n @Input()\n set value(v: string | null) {\n if (!this.inputModel) {\n this._valueBeforeInit = v;\n return;\n }\n this.writeValue(v);\n }\n get value(): string | null {\n return this.inputModel.value;\n }\n @Output() valueChange = new EventEmitter<string | null>();\n\n //! event emitters\n @Output('input') inputEvent = new EventEmitter<string | null>();\n @Output('change') changeEvent = new EventEmitter<string | null>();\n @Output('clear') clearEvent = new EventEmitter<MouseEvent>();\n\n //! event handlers\n onInput(newVal: string): void {\n let valueHasChanged = this.inputModel.writeValue(newVal);\n if (!valueHasChanged) return;\n this._emitInput();\n }\n protected _emitInput(): void {\n this._onChangeRegistered?.(this.value);\n this.inputEvent.emit(this.value);\n this.valueChange.emit(this.value);\n }\n //focus, blur, change\n onFocusMaster(event: FocusEvent): void {\n this.onFocus(event);\n }\n onBlurMaster(event: FocusEvent): void {\n this.onBlur(event);\n }\n onChange(event: Event): void {\n event.stopPropagation();\n this._emitChange();\n }\n protected _emitChange(): void {\n this.changeEvent.emit(this.inputModel.value);\n }\n // clear button\n get shouldShowClearButton(): boolean {\n return this._clearable && !this.disabled && Boolean(this.inputModel.value);\n }\n onClearButtonClick(event: MouseEvent): void {\n event.stopPropagation();\n this.inputModel.clear();\n this._emitChange();\n this._emitInput();\n this.clearEvent.emit(event);\n this.focus();\n }\n\n // copy\n onCopy(event: ClipboardEvent): void {\n if (\n this.value &&\n //does the selection cover the entire input\n ((this.textInputEl.nativeElement.selectionStart == 0 &&\n this.textInputEl.nativeElement.selectionEnd == this.textInputEl.nativeElement.value.length) ||\n //or is zero-wide\n this.textInputEl.nativeElement.selectionStart == this.textInputEl.nativeElement.selectionEnd)\n ) {\n event.clipboardData?.setData('text/plain', this.value);\n event.preventDefault();\n }\n }\n //! helpers\n protected _setInputAttributes() {\n const input = this.textInputEl.nativeElement;\n const attributes: { [key: string]: string } = {\n type: 'text',\n autocorrect: 'off',\n autocapitalize: 'off',\n autocomplete: 'off',\n tabindex: String(this.tabIndex),\n ...this.inputAttrs,\n };\n\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, String(attributes[key]));\n }\n }\n}\n","<ard-form-field-frame\r\n [appearance]=\"appearance\"\r\n [variant]=\"variant\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n>\r\n <div class=\"ard-simple-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n \r\n <input #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n >\r\n </div>\r\n\r\n <ard-_clear-button\r\n *ngIf=\"shouldShowClearButton\"\r\n [title]=\"clearButtonTitle\"\r\n (click)=\"onClearButtonClick($event)\"\r\n ></ard-_clear-button>\r\n </div>\r\n</ard-form-field-frame>","import { Directive, TemplateRef } from '@angular/core';\nimport { OptionContext } from '../../types/item-storage.types';\n\n@Directive({ selector: 'ard-input > ng-template[ard-suggestion-tmp]' })\nexport class ArdSuggestionTemplateDirective {\n constructor(public template: TemplateRef<OptionContext>) {}\n}\n\n@Directive({ selector: 'ard-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-input > ng-template[ard-loading-tmp]' })\nexport class ArdInputLoadingTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-input > ng-template[ard-prefix-tmp]' })\nexport class ArdInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-input > ng-template[ard-suffix-tmp]' })\nexport class ArdInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceArrayProperty, coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { isString } from 'simple-bool';\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel/dropdown-panel.types';\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport { SimplestItemStorage, SimplestItemStorageHost } from '../../_internal/item-storages/simplest-item-storage';\nimport { ArdiumSimpleInputComponent } from '../simple-input/simple-input.component';\nimport { OptionContext } from './../../types/item-storage.types';\nimport { escapeAndCreateRegex, InputModel, InputModelHost } from './../input-utils';\nimport {\n ArdInputLoadingTemplateDirective,\n ArdInputPlaceholderTemplateDirective,\n ArdInputPrefixTemplateDirective,\n ArdInputSuffixTemplateDirective,\n ArdSuggestionTemplateDirective,\n} from './input.directives';\n\n@Component({\n selector: 'ard-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumInputComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumInputComponent extends ArdiumSimpleInputComponent implements InputModelHost, OnInit, SimplestItemStorageHost, AfterViewInit {\n private readonly element!: HTMLElement;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private overlay: Overlay,\n private scrollStrategyOpts: ScrollStrategyOptions\n ) {\n super();\n\n this.element = viewContainerRef.element.nativeElement;\n }\n\n override readonly DEFAULTS = {\n clearButtonTitle: 'Clear',\n valueFrom: 'value',\n labelFrom: 'label',\n suggestionsLoadingText: 'Loading...',\n };\n //! input view\n protected override inputModel!: InputModel;\n override ngOnInit(): void {\n this.inputModel = new InputModel(this.textInputEl.nativeElement, this);\n this._setInputAttributes();\n //set the value\n if (this._valueBeforeInit) {\n this.writeValue(this._valueBeforeInit);\n delete this._valueBeforeInit;\n }\n }\n\n //! allowlist/denylist of characters\n //use standard string for denylist, prepend with ^ for allowlist\n private _charlistRegExp?: RegExp;\n @Input()\n get charlist(): RegExp | undefined {\n return this._charlistRegExp;\n }\n set charlist(v: any) {\n if (!isString(v)) {\n throw new Error('charlistRegExp must be a non-empty string.');\n }\n let flags = this._charlistCaseInsensitive ? 'i' : '';\n let negated = v.startsWith('^');\n this._charlistRegExp = escapeAndCreateRegex(v, flags, !negated);\n }\n protected _charlistCaseInsensitive: boolean = false;\n @Input()\n get charlistCaseInsensitive(): boolean {\n return this._charlistCaseInsensitive;\n }\n set charlistCaseInsensitive(v: any) {\n this._charlistCaseInsensitive = coerceBooleanProperty(v);\n if (this._charlistRegExp) {\n let flags = this._charlistCaseInsensitive ? 'i' : '';\n this._charlistRegExp = new RegExp(this._charlistRegExp.source, flags);\n }\n }\n\n //! autocomplete\n protected _autocomplete?: string | null;\n @Input()\n set autocomplete(v: string | null | undefined) {\n this._autocomplete = v;\n }\n get autocomplete(): string | null | undefined {\n return this._autocomplete ?? '';\n }\n //should show autocomplete\n get shouldDisplayAutocomplete(): boolean {\n return !this.disabled && Boolean(this.autocomplete);\n }\n //autocomplete event\n @Output('acceptAutocomplete') acceptAutocompleteEvent = new EventEmitter();\n\n //! prefix & suffix\n @ContentChild(ArdInputPrefixTemplateDirective, { read: TemplateRef })\n override prefixTemplate?: TemplateRef<any>;\n @ContentChild(ArdInputSuffixTemplateDirective, { read: TemplateRef })\n override suffixTemplate?: TemplateRef<any>;\n\n //! placeholder\n @ContentChild(ArdInputPlaceholderTemplateDirective, { read: TemplateRef })\n override placeholderTemplate?: TemplateRef<any>;\n\n //! suggestions\n suggestionStorage = new SimplestItemStorage(this);\n\n @Input('suggValueFrom') valueFrom?: string;\n @Input('suggLabelFrom') labelFrom?: string;\n\n @Output('acceptSuggestion') acceptSuggestionEvent = new EventEmitter<any>();\n\n get suggestionItems(): any[] {\n return this.suggestionStorage.items;\n }\n @Input()\n set suggestions(value: any) {\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\n\n let shouldPrintErrors = this.suggestionStorage.setItems(value);\n\n this._suggestionDropdowOpen = true;\n this.suggestionStorage.highlightFirstItem();\n\n if (shouldPrintErrors) {\n this._printPrimitiveWarnings();\n }\n }\n private _printPrimitiveWarnings() {\n function makeWarning(str: string): void {\n console.warn(`Skipped using [${str}] property bound to <ard-input>, as some provided suggestion items are of primitive type`);\n }\n if (this.valueFrom) {\n makeWarning('valueFrom');\n }\n if (this.labelFrom) {\n makeWarning('labelFrom');\n }\n }\n\n private _suggestionDropdowOpen: boolean = false;\n\n get shouldDisplaySuggestions(): boolean {\n return !this.disabled && (this.suggestionItems.length > 0 || this.areSuggestionsLoading) && this._suggestionDropdowOpen;\n }\n\n @Input() areSuggestionsLoading: boolean = false;\n @Input() suggestionsLoadingText: string = this.DEFAULTS.suggestionsLoadingText;\n\n @ContentChild(ArdSuggestionTemplateDirective, { read: TemplateRef })\n suggestionTemplate?: TemplateRef<any>;\n @ContentChild(ArdInputLoadingTemplateDirective, { read: TemplateRef })\n suggestionLoadingTemplate?: TemplateRef<any>;\n\n //! suggestions overlay\n @ViewChild('suggestionsHost', { read: ElementRef })\n dropdownHost!: ElementRef<HTMLDivElement>;\n @ViewChild('suggestionsTemplate', { read: TemplateRef })\n dropdownTemplate!: TemplateRef<any>;\n\n private dropdownOverlay!: OverlayRef;\n\n ngAfterViewInit(): void {\n const strategy = this.overlay\n .position()\n .flexibleConnectedTo(this.dropdownHost)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n } as ConnectedPosition,\n ])\n .withPush(false);\n\n const config = new OverlayConfig({\n positionStrategy: strategy,\n scrollStrategy: this.scrollStrategyOpts.block(),\n hasBackdrop: false,\n });\n\n this.dropdownOverlay = this.overlay.create(config);\n\n this.dropdownOverlay;\n\n const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);\n this.dropdownOverlay.attach(portal);\n\n this.setOverlaySize();\n }\n\n setOverlaySize(): void {\n const rect = this.dropdownHost.nativeElement.getBoundingClientRect();\n this.dropdownOverlay.updateSize({ width: rect.width });\n }\n\n @HostListener('window:resize')\n onWindowResize(): void {\n this.setOverlaySize();\n }\n\n getOptionContext(item: ArdSimplestStorageItem): OptionContext {\n return {\n $implicit: item,\n item,\n itemData: item.itemData,\n };\n }\n\n //! suggestion-highligh-related\n private _isMouseBeingUsed: boolean = false;\n @HostListener('mousemove')\n onMouseMove() {\n this._isMouseBeingUsed = true;\n }\n onSuggestionMouseEnter(item: ArdSimplestStorageItem, event: MouseEvent): void {\n if (!this._isMouseBeingUsed) return;\n this.suggestionStorage.highlightItem(item);\n\n event.stopPropagation();\n }\n onSuggestionMouseLeave(item: ArdSimplestStorageItem, event: MouseEvent): void {\n if (!this._isMouseBeingUsed) return;\n this.suggestionStorage.unhighlightItem(item);\n\n event.stopPropagation();\n }\n\n //! suggestion selection\n selectSuggestion(item: ArdSimplestStorageItem, event: MouseEvent): void {\n event.stopPropagation();\n\n this._selectSuggestion(item);\n }\n private _selectSuggestion(item: ArdSimplestStorageItem): void {\n const selected = this.suggestionStorage.selectItem(item);\n this.writeValue(selected ?? '');\n\n this.acceptSuggestionEvent.next(selected);\n\n //important to do those two things in this exact order\n this.focus();\n this._suggestionDropdowOpen = false;\n }\n handleSuggestionClickOutside(event: MouseEvent): void {\n if (!this.shouldDisplaySuggestions) return;\n\n const target = event.target as HTMLElement;\n if (this.element.contains(target)) return;\n\n this._suggestionDropdowOpen = false;\n }\n //! suggestion appearance\n private _dropdownAppearance?: DropdownPanelAppearance = undefined;\n @Input()\n set dropdowonAppearance(v: DropdownPanelAppearance) {\n this._dropdownAppearance = v;\n }\n get dropdownAppearance(): DropdownPanelAppearance {\n if (this._dropdownAppearance) return this._dropdownAppearance;\n if (this.appearance == FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\n return DropdownPanelAppearance.Raised;\n }\n private _dropdownVariant?: DropdownPanelVariant = undefined;\n @Input()\n set dropdowonVariant(v: DropdownPanelVariant) {\n this._dropdownVariant = v;\n }\n get dropdownVariant(): DropdownPanelVariant {\n if (this._dropdownVariant) return this._dropdownVariant;\n if (this.variant == FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\n return this.variant;\n }\n\n //! focus override\n override onFocus(event: FocusEvent): void {\n this._suggestionDropdowOpen = true;\n if (!this.suggestionStorage.highlightedItem) this.suggestionStorage.highlightFirstItem();\n\n super.onFocus(event);\n }\n\n //! key press handlers\n @HostListener('keydown', ['$event'])\n onKeyPress(event: KeyboardEvent): void {\n switch (event.code) {\n case 'Enter': {\n this._onTabOrEnterPress(event);\n this._onEnterPress(event);\n return;\n }\n case 'Tab': {\n this._onTabOrEnterPress(event);\n return;\n }\n case 'ArrowDown': {\n this._onArrowDownPress(event);\n return;\n }\n case 'ArrowUp': {\n this._onArrowUpPress(event);\n return;\n }\n }\n }\n protected _onTabOrEnterPress(event: KeyboardEvent): void {\n if (!this.shouldDisplayAutocomplete) return;\n event.preventDefault();\n\n this.onInput(this.autocomplete ?? '');\n this.acceptAutocompleteEvent.emit();\n }\n private _onEnterPress(event: KeyboardEvent): void {\n if (!this.shouldDisplaySuggestions) return;\n if (!this.suggestionStorage.highlightedItem) return;\n\n event.preventDefault();\n this._selectSuggestion(this.suggestionStorage.highlightedItem);\n }\n private _onArrowDownPress(event: KeyboardEvent): void {\n if (!this.shouldDisplaySuggestions) return;\n event.preventDefault();\n\n this._isMouseBeingUsed = false;\n\n this.suggestionStorage.highlightNextItem(+1);\n }\n private _onArrowUpPress(event: KeyboardEvent): void {\n if (!this.shouldDisplaySuggestions) return;\n event.preventDefault();\n\n this._isMouseBeingUsed = false;\n\n this.suggestionStorage.highlightNextItem(-1);\n }\n}\n","<ard-form-field-frame\r\n [appearance]=\"appearance\"\r\n [variant]=\"variant\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n>\r\n <div class=\"ard-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n <div class=\"ard-autocomplete\" *ngIf=\"shouldDisplayAutocomplete\">{{ autocomplete }}</div>\r\n\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n \r\n <input #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n >\r\n </div>\r\n\r\n <ard-_clear-button\r\n *ngIf=\"shouldShowClearButton\"\r\n [title]=\"clearButtonTitle\"\r\n (click)=\"onClearButtonClick($event)\"\r\n ></ard-_clear-button>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearance\"\r\n [variant]=\"dropdownVariant\"\r\n [isOpen]=\"shouldDisplaySuggestions\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n *ngFor=\"let item of suggestionItems\"\r\n [class.ard-option-disabled]=\"item.disabled\"\r\n [class.ard-option-selected]=\"item.selected\"\r\n [class.ard-option-highlighted]=\"item.highlighted\"\r\n [class.ard-option-highlighted-recent]=\"item.highlighted_recently\"\r\n [attr.aria-selected]=\"item.selected\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{item.label}}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"areSuggestionsLoading\">\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{suggestionsLoadingText}}</div>\r\n </ng-template>\r\n \r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n </ard-dropdown-panel>\r\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumClickOutsideEventModule } from '@ardium-ui/devkit';\nimport { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport { ArdiumInputComponent } from './input.component';\nimport {\n ArdInputLoadingTemplateDirective,\n ArdInputPlaceholderTemplateDirective,\n ArdInputPrefixTemplateDirective,\n ArdInputSuffixTemplateDirective,\n ArdSuggestionTemplateDirective,\n} from './input.directives';\n\n@NgModule({\n declarations: [\n ArdiumInputComponent,\n ArdSuggestionTemplateDirective,\n ArdInputPlaceholderTemplateDirective,\n ArdInputLoadingTemplateDirective,\n ArdInputPrefixTemplateDirective,\n ArdInputSuffixTemplateDirective,\n ],\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule, ArdiumDropdownPanelModule, ArdiumClickOutsideEventModule],\n exports: [\n ArdiumInputComponent,\n ArdSuggestionTemplateDirective,\n ArdInputPlaceholderTemplateDirective,\n ArdInputLoadingTemplateDirective,\n ArdInputPrefixTemplateDirective,\n ArdInputSuffixTemplateDirective,\n ],\n})\nexport class ArdiumInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSimpleInputComponent } from './simple-input.component';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport {\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n} from './simple-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n imports: [CommonModule, _ClearButtonModule, ArdiumFormFieldFrameModule],\n exports: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSimpleInputModule {}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-number-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdNumberInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n ContentChild,\n TemplateRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { ButtonVariant, ButtonAppearance } from '../../buttons/general-button.types';\nimport { OneAxisAlignment } from '../../types/alignment.types';\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\nimport { NumberInputModel, NumberInputModelHost } from '../input-utils';\nimport { isDefined, isFloat } from 'simple-bool';\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\nimport { roundToPrecision } from 'more-rounding';\n\n@Component({\n selector: 'ard-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumNumberInputComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumNumberInputComponent extends _NgModelComponentBase implements ControlValueAccessor, NumberInputModelHost, OnInit {\n //! input view\n @ViewChild('textInput', { static: true })\n textInputEl!: ElementRef<HTMLInputElement>;\n protected inputModel!: NumberInputModel;\n ngOnInit(): void {\n this.inputModel = new NumberInputModel(this.textInputEl.nativeElement, this);\n this._setInputAttributes();\n //set the value\n if (this._valueBeforeInit) {\n this.writeValue(this._valueBeforeInit);\n delete this._valueBeforeInit;\n }\n }\n\n @Input() inputId?: string;\n\n //! placeholder\n @Input() placeholder: string = '';\n\n @ContentChild(ArdNumberInputPlaceholderTemplateDirective, {\n read: TemplateRef,\n })\n placeholderTemplate?: TemplateRef<any>;\n\n get shouldDisplayPlaceholder(): boolean {\n return Boolean(this.placeholder) && !this.inputModel.stringValue;\n }\n\n //! appearance\n @Input() appearance: FormElementAppearance = FormElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n @Input() alignText: OneAxisAlignment = OneAxisAlignment.Middle;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [\n `ard-appearance-${this.appearance}`,\n `ard-variant-${this.variant}`,\n `ard-text-align-${this.alignText}`,\n `ard-quick-change-${this.allowQuickChange}`,\n this.compact ? 'ard-compact' : '',\n ].join(' ');\n }\n\n get buttonVariant(): ButtonVariant {\n if (this.variant == FormElementVariant.Rounded) return ButtonVariant.Rounded;\n if (this.variant == FormElementVariant.Pill) return ButtonVariant.Pill;\n if (this.variant == FormElementVariant.Sharp) return ButtonVariant.Sharp;\n return ButtonVariant.Rounded;\n }\n get buttonAppearance(): ButtonAppearance {\n if (this.appearance == FormElementAppearance.Outlined && this.variant != FormElementVariant.Pill) return ButtonAppearance.Outlined;\n return ButtonAppearance.Transparent;\n }\n\n //! other inputs\n @Input() inputAttrs: { [key: string]: any } = {};\n\n //! control value accessor's write value implementation\n writeValue(v: any) {\n this.inputModel.writeValue(v);\n }\n\n //! value two-way binding\n protected _valueBeforeInit?: string | null = '0';\n @Input()\n set value(v: string | number | null) {\n if (typeof v == 'number') v = v.toString();\n if (!this.inputModel) {\n this._valueBeforeInit = v;\n return;\n }\n this.writeValue(v);\n }\n @Output() valueChange = new EventEmitter<number | null>();\n\n //* event emitters\n @Output('input') inputEvent = new EventEmitter<number | null>();\n @Output('change') changeEvent = new EventEmitter<number | null>();\n @Output('clear') clearEvent = new EventEmitter<MouseEvent>();\n @Output('quickChange') quickChangeEvent = new EventEmitter<{\n direction: 1 | -1;\n value: number;\n }>();\n\n //! min/max and number type\n private _min: number = 0;\n @Input()\n get min(): number {\n return this._min;\n }\n set min(v: any) {\n this._min = coerceNumberProperty(v);\n }\n\n private _max: number = 999;\n @Input()\n get max(): number {\n return this._max;\n }\n set max(v: any) {\n this._max = coerceNumberProperty(v);\n }\n\n private _allowFloat?: boolean = undefined;\n @Input()\n get allowFloat(): boolean {\n return this._allowFloat ?? isFloat(this._stepSize);\n }\n set allowFloat(v: any) {\n this._allowFloat = coerceBooleanProperty(v);\n }\n\n //! incerement/decrement buttons\n private _allowQuickChange: boolean = true;\n @Input()\n get allowQuickChange(): boolean {\n return this._allowQuickChange;\n }\n set allowQuickChange(v: any) {\n this._allowQuickChange = coerceBooleanProperty(v);\n }\n\n private _stepSize: number = 1;\n @Input()\n get stepSize(): number {\n return this._stepSize;\n }\n set stepSize(v: any) {\n this._stepSize = coerceNumberProperty(v);\n }\n\n onQuickChangeButtonClick(direction: 1 | -1, event?: MouseEvent): void {\n let num = this.inputModel.numberValue;\n if (!num) num = 0;\n\n if (direction == 1 && num >= this.max) return;\n if (direction == -1 && num <= this.min) return;\n\n if (event) event.stopPropagation();\n\n const newValue = num + this.stepSize * direction;\n //round to 9 decimal places to avoid floating point arithmetic errors\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\n const newValuePrecise = roundToPrecision(newValue, 9);\n\n this.writeValue(newValuePrecise);\n this.quickChangeEvent.next({ direction, value: newValuePrecise });\n this._emitChange();\n\n this._checkButtonAvailability();\n }\n private _checkButtonAvailability(): void {\n if (!this.canDecrement() || !this.canIncrement()) this.focus();\n }\n\n canIncrement(): boolean {\n const num = this.inputModel.numberValue;\n return !isDefined(num) || num < this.max;\n }\n canDecrement(): boolean {\n const num = this.inputModel.numberValue;\n return !isDefined(num) || num > this.min;\n }\n\n //! event handlers\n onInput(newVal: string): void {\n let valueHasChanged = this.inputModel.writeValue(newVal);\n if (!valueHasChanged) return;\n this._emitInput();\n }\n protected _emitInput(): void {\n this.inputEvent.emit(this.inputModel.numberValue);\n this._emitChange();\n }\n\n //focus, blur, change\n onFocusMaster(event: FocusEvent): void {\n this.onFocus(event);\n }\n onBlurMaster(event: FocusEvent): void {\n this.onBlur(event);\n }\n //change\n onChange(event: Event): void {\n event.stopPropagation();\n this._emitChange();\n }\n protected _emitChange(): void {\n const v = this.inputModel.numberValue;\n this._onChangeRegistered?.(v);\n this.changeEvent.emit(v);\n this.valueChange.emit(this.inputModel.numberValue);\n }\n\n //smart focus\n onMouseup(event: MouseEvent): void {\n const selection = window.getSelection();\n if (selection && selection.type === 'Range') return;\n\n this.focus();\n }\n\n // copy\n onCopy(event: ClipboardEvent): void {\n if (\n this.value &&\n //does the selection cover the entire input\n ((this.textInputEl.nativeElement.selectionStart == 0 &&\n this.textInputEl.nativeElement.selectionEnd == this.textInputEl.nativeElement.value.length) ||\n //or is zero-wide\n this.textInputEl.nativeElement.selectionStart == this.textInputEl.nativeElement.selectionEnd)\n ) {\n event.clipboardData?.setData('text/plain', String(this.value));\n event.preventDefault();\n }\n }\n\n //! helpers\n protected _setInputAttributes() {\n const input = this.textInputEl.nativeElement;\n const attributes: { [key: string]: string } = {\n type: 'text',\n autocorrect: 'off',\n autocapitalize: 'off',\n autocomplete: 'off',\n tabindex: String(this.tabIndex),\n ...this.inputAttrs,\n };\n\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, String(attributes[key]));\n }\n }\n}\n","<div class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup($event)\"\r\n>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >-</ard-button>\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n\r\n <input #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n >\r\n </div>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >+</ard-button>\r\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumHoldEventModule } from '@ardium-ui/devkit';\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\nimport { ArdiumNumberInputComponent } from './number-input.component';\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\n\n@NgModule({\n declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule],\n exports: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n})\nexport class ArdiumNumberInputModule {}\n","export const CaseTransformerType = {\n NoChange: 'nochange',\n Uppercase: 'uppercase',\n Lowercase: 'lowercase',\n} as const;\nexport type CaseTransformerType = (typeof CaseTransformerType)[keyof typeof CaseTransformerType];\n","import { isAnyString, isDefined, isNull } from 'simple-bool';\nimport { RegExpTransformer } from './input-transformers';\nimport { CaseTransformerType } from './input-types';\n\nexport interface HexInputModelHost {\n case: CaseTransformerType;\n maxDigits: number | undefined;\n}\nexport class HexInputModel {\n constructor(\n protected inputEl: HTMLInputElement,\n protected _hostComp: HexInputModelHost\n ) {}\n\n //! value setters/getters\n protected _value: string | null = null;\n get value(): string | null {\n return this._value;\n }\n set value(v: string | null) {\n this._value = v;\n }\n //value as string\n get stringValue(): string {\n return this._value ?? '';\n }\n set stringValue(v: string) {\n this._value = v || null;\n }\n //value with the hash sign\n get hashSignValue(): string {\n return '#' + this._value;\n }\n\n //! write value handlers\n writeValue(v: any): boolean {\n if (!isAnyString(v) && !isNull(v)) {\n //warn when using non-string/non-null value\n console.warn(new Error(`Trying to set ard-hex-input's value to type ${typeof v}, expected string, or null.`));\n }\n //normalize the value\n v = v ?? '';\n if (typeof v == 'string') v = v.replace('#', '');\n\n return this._writeValue(v);\n }\n protected _writeValue(v: string | null): boolean {\n const oldVal = this.value;\n //constraints\n if (v) {\n v = this._applyCharactersConstraint(v);\n v = this._applyDigitsConstraint(v, oldVal ?? '');\n v = this._applyCaseTransformer(v);\n }\n //update view\n this.value = v;\n this._updateInputElement();\n return oldVal !== v;\n }\n clear(): void {\n this._writeValue(null);\n }\n rewriteValueAfterHostUpdate(): void {\n this._writeValue(this._value);\n }\n\n //! input element methods\n _updateInputElement() {\n const caretPos = this.caretPos;\n this.inputEl.value = this.stringValue;\n this.caretPos = caretPos;\n }\n get caretPos(): number {\n return this.inputEl.selectionEnd ?? this.stringValue.length;\n }\n set caretPos(pos: number) {\n this.inputEl.setSelectionRange(pos, pos);\n }\n\n //! constraints\n private _charactersRegexTransformer = new RegExpTransformer(/[^0-9a-f]/i, '');\n private _applyCharactersConstraint(v: string): string {\n const { text, caretPos } = this._charactersRegexTransformer.apply(v, '', this.caretPos);\n this.caretPos = caretPos;\n return text;\n }\n private _applyDigitsConstraint(v: string, prev: string): string {\n const maxLength = this._hostComp.maxDigits;\n if (!isDefined(maxLength)) return v;\n if (v.length <= maxLength) return v;\n if (v.length < prev.length) return v;\n\n let firstChangeIndex = 0;\n while (\n firstChangeIndex < v.length &&\n (!prev.charAt(firstChangeIndex) || v.charAt(firstChangeIndex) == prev.charAt(firstChangeIndex)) &&\n firstChangeIndex <= maxLength\n ) {\n firstChangeIndex++;\n }\n if (firstChangeIndex > maxLength) return v.substring(0, maxLength);\n\n const overflow = v.length - maxLength;\n this.caretPos -= overflow;\n return v.substring(0, firstChangeIndex) + v.substring(firstChangeIndex + overflow);\n }\n private _applyCaseTransformer(v: string): string {\n if (this._hostComp.case == CaseTransformerType.Uppercase) return v.toUpperCase();\n if (this._hostComp.case == CaseTransformerType.Lowercase) return v.toLowerCase();\n return v;\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-hex-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdHexInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-prefix-tmp]' })\nexport class ArdHexInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-suffix-tmp]' })\nexport class ArdHexInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\nimport { HexInputModel, HexInputModelHost } from '../hex-input.model';\nimport { CaseTransformerType } from '../input-types';\nimport { ArdHexInputPlaceholderTemplateDirective, ArdHexInputPrefixTemplateDirective, ArdHexInputSuffixTemplateDirective } from './hex-input.directives';\n\n@Component({\n selector: 'ard-hex-input',\n templateUrl: './hex-input.component.html',\n styleUrls: ['./hex-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumHexInputComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumHexInputComponent extends _NgModelComponentBase implements ControlValueAccessor, HexInputModelHost, AfterViewInit {\n //! input view\n @ViewChild('textInput', { static: true })\n textInputEl!: ElementRef<HTMLInputElement>;\n protected inputModel!: HexInputModel;\n ngAfterViewInit(): void {\n this.inputModel = new HexInputModel(this.textInputEl.nativeElement, this);\n this._setInputAttributes();\n //set the value\n if (this._valueBeforeInit) {\n this.writeValue(this._valueBeforeInit);\n delete this._valueBeforeInit;\n }\n }\n\n readonly DEFAULTS = {\n clearButtonTitle: 'Clear',\n };\n\n @Input() inputId?: string;\n\n //! prefix & suffix\n @ContentChild(ArdHexInputPrefixTemplateDirective, { read: TemplateRef })\n prefixTemplate?: TemplateRef<any>;\n @ContentChild(ArdHexInputSuffixTemplateDirective, { read: TemplateRef })\n suffixTemplate?: TemplateRef<any>;\n\n //! placeholder\n @Input() placeholder: string = '';\n\n @ContentChild(ArdHexInputPlaceholderTemplateDirective, {\n read: TemplateRef,\n })\n placeholderTemplate?: TemplateRef<any>;\n\n get shouldDisplayPlaceholder(): boolean {\n return Boolean(this.placeholder) && !this.inputModel.stringValue;\n }\n\n //! appearance\n //all handled in ard-form-field-frame component\n @Input() appearance: FormElementAppearance = FormElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n //! settings\n @Input() case: CaseTransformerType = CaseTransformerType.NoChange;\n\n private _maxDigits: number | undefined = undefined;\n @Input()\n get maxDigits(): number | undefined {\n return this._maxDigits;\n }\n set maxDigits(v: any) {\n this._maxDigits = coerceNumberProperty(v, undefined);\n }\n\n private _hideHash: boolean = false;\n @Input()\n get hideHash(): boolean {\n return this._hideHash;\n }\n set hideHash(v: any) {\n this._hideHash = coerceBooleanProperty(v);\n }\n\n get showHash(): boolean {\n return !this.hideHash;\n }\n\n //! clear button\n private _clearable: boolean = true;\n @Input()\n get clearable(): boolean {\n return this._clearable;\n }\n set clearable(v: any) {\n this._clearable = coerceBooleanProperty(v);\n }\n\n @Input() clearButtonTitle: string = this.DEFAULTS.clearButtonTitle;\n\n get shouldShowClearButton(): boolean {\n return this._clearable && !this.disabled && Boolean(this.inputModel?.value);\n }\n onClearButtonClick(event: MouseEvent): void {\n event.stopPropagation();\n this.inputModel.clear();\n this._emitChange();\n this._emitInput();\n this.clearEvent.emit();\n this.focus();\n }\n\n //! other inputs\n @Input() inputAttrs: { [key: string]: any } = {};\n\n //! control value accessor's write value implementation\n writeValue(v: any) {\n if (!this.inputModel) {\n this._valueBeforeInit = v;\n return;\n }\n this.inputModel.writeValue(v);\n }\n\n //! value two-way binding\n protected _valueBeforeInit?: string | null = null;\n @Input()\n set value(v: string | null) {\n if (!this.inputModel) {\n this._valueBeforeInit = v;\n return;\n }\n this.writeValue(v);\n }\n get value(): string | null {\n return this.inputModel?.hashSignValue ?? '';\n }\n @Output() valueChange = new EventEmitter<string>();\n\n //* event emitters\n @Output('input') inputEvent = new EventEmitter<string>();\n @Output('change') changeEvent = new EventEmitter<string>();\n @Output('clear') clearEvent = new EventEmitter<any>();\n\n //! event handlers\n onInput(newVal: string): void {\n let valueHasChanged = this.inputModel.writeValue(newVal);\n if (!valueHasChanged) return;\n this._emitInput();\n }\n protected _emitInput(): void {\n this.inputEvent.emit(this.inputModel.hashSignValue);\n this._emitChange();\n }\n\n //change\n onChange(event: Event): void {\n event.stopPropagation();\n this._emitChange();\n }\n protected _emitChange(): void {\n const v = this.inputModel.hashSignValue;\n this._onChangeRegistered?.(v);\n this.changeEvent.emit(v);\n this.valueChange.emit(v);\n }\n\n //smart focus\n onMouseup(event: MouseEvent): void {\n const selection = window.getSelection();\n if (selection && selection.type === 'Range') return;\n\n this.focus();\n }\n\n onCopy(event: ClipboardEvent): void {\n if (\n this.value &&\n //does the selection cover the entire input\n ((this.textInputEl.nativeElement.selectionStart == 0 &&\n this.textInputEl.nativeElement.selectionEnd == this.textInputEl.nativeElement.value.length) ||\n //or is zero-wide\n this.textInputEl.nativeElement.selectionStart == this.textInputEl.nativeElement.selectionEnd)\n ) {\n event.clipboardData?.setData('text/plain', this.value);\n event.preventDefault();\n }\n }\n\n //! helpers\n protected _setInputAttributes() {\n const input = this.textInputEl.nativeElement;\n const attributes: { [key: string]: string } = {\n type: 'text',\n autocorrect: 'off',\n autocapitalize: 'off',\n autocomplete: 'off',\n tabindex: String(this.tabIndex),\n ...this.inputAttrs,\n };\n\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, String(attributes[key]));\n }\n }\n}\n","<ard-form-field-frame\r\n [appearance]=\"appearance\"\r\n [variant]=\"variant\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n>\r\n <div class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup($event)\"\r\n >\r\n <div class=\"ard-hash-container\" *ngIf=\"showHash\">#</div>\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n\r\n <input #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n >\r\n </div>\r\n\r\n <ard-_clear-button\r\n *ngIf=\"shouldShowClearButton\"\r\n [title]=\"clearButtonTitle\"\r\n (click)=\"onClearButtonClick($event)\"\r\n ></ard-_clear-button>\r\n </div>\r\n</ard-form-field-frame>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumHexInputComponent } from './hex-input.component';\nimport { ArdHexInputPlaceholderTemplateDirective, ArdHexInputPrefixTemplateDirective, ArdHexInputSuffixTemplateDirective } from './hex-input.directives';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [ArdiumHexInputComponent, ArdHexInputPlaceholderTemplateDirective, ArdHexInputPrefixTemplateDirective, ArdHexInputSuffixTemplateDirective],\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule],\n exports: [ArdiumHexInputComponent, ArdHexInputPlaceholderTemplateDirective, ArdHexInputPrefixTemplateDirective, ArdHexInputSuffixTemplateDirective],\n})\nexport class ArdiumHexInputModule {}\n","import { ArdOptionGroup, ArdOption, GroupByFn, ArdItemGroupMap, SearchFn, CompareWithFn } from '../../types/item-storage.types';\nimport resolvePath from 'resolve-object-path';\nimport { any, evaluate, isArray, isDefined, isObject, isPrimitive, isPromise } from 'simple-bool';\nimport { AddCustomFn } from '../../select/select.types';\n\nexport interface ItemStorageHostDefaults {\n valueFrom: string;\n labelFrom: string;\n disabledFrom: string;\n groupLabelFrom: string;\n groupDisabledFrom: string;\n childrenFrom: string;\n [key: string]: any;\n}\nexport interface ItemStorageHost {\n valueFrom?: string;\n labelFrom?: string;\n disabledFrom?: string;\n invertDisabled?: boolean;\n groupLabelFrom?: string | GroupByFn;\n groupDisabledFrom?: string;\n childrenFrom?: string;\n readonly DEFAULTS: ItemStorageHostDefaults;\n groupItems?: boolean;\n itemsAlreadyGrouped?: boolean;\n hideSelected: boolean;\n searchCaseSensitive: boolean;\n searchFn: SearchFn;\n compareWith?: CompareWithFn;\n multiselectable: boolean;\n sortMultipleValues: boolean;\n maxSelectedItems?: number;\n addCustom: boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>;\n}\n\nexport class ItemStorage {\n private _groups: ArdItemGroupMap = this._createEmptyGroupMap();\n private _items: ArdOption[] = [];\n private _filteredItems: ArdOption[] = [];\n private _highlightedItems: ArdOption[] = [];\n private _highlightedGroups: ArdOptionGroup[] = [];\n private _recentlyHighlightedItem?: ArdOption;\n private _selectedItems: ArdOption[] = [];\n\n constructor(private _ardParentComp: ItemStorageHost) {}\n\n get groups(): ArdOptionGroup[] {\n return Array.from(this._groups.entries())\n .map(([_, group]) => group)\n .filter(group => group.children.length);\n }\n get items(): ArdOption[] {\n return this._items;\n }\n get filteredItems(): ArdOption[] {\n return this._filteredItems;\n }\n get selectedItems(): ArdOption[] {\n if (this._ardParentComp.sortMultipleValues) {\n return this._selectedItems.sort((a, b) => {\n return a.index - b.index;\n });\n }\n return this._selectedItems;\n }\n get highlightedItems(): ArdOption[] {\n return this._highlightedItems;\n }\n get lastSelectedItem(): ArdOption {\n return this._filteredItems.last(1, item => !item.disabled);\n }\n get value(): any[] {\n return this._itemsToValue(this.selectedItems);\n }\n private _itemsToValue(items: ArdOption[]): any[] {\n return items.map(item => item.value);\n }\n\n get isNoItemsToSelect(): boolean {\n return this._items.length == this._selectedItems.length;\n }\n get isNoItemsFound(): boolean {\n return this._filteredItems.length == 0;\n }\n get isAnyItemSelected(): boolean {\n return this._selectedItems.length > 0;\n }\n get isAnyItemHighlighted(): boolean {\n return this._highlightedItems.length > 0;\n }\n get isItemLimitReached(): boolean {\n return (\n this._ardParentComp.multiselectable &&\n isDefined(this._ardParentComp.maxSelectedItems) &&\n this._ardParentComp.maxSelectedItems! <= this.selectedItems.length\n );\n }\n\n setItems(items: any[]): boolean {\n let areItemsPrimitive = false;\n if (this._ardParentComp.groupItems && this._ardParentComp.itemsAlreadyGrouped) {\n let newItems = [];\n for (const group of items) {\n let children: any[];\n [children, areItemsPrimitive] = this._ungroupAlreadyGroupedItems(group);\n newItems.push(...children);\n }\n items = newItems;\n }\n if (any(items, isPrimitive)) {\n items = items.map(this._primitiveItemsMapFn);\n areItemsPrimitive = true;\n }\n\n this._items = items.map((item, index) => {\n return this._setItemsMapFn(item, index, areItemsPrimitive);\n });\n\n //add all items to filter array\n this._filteredItems = this._items;\n\n //add items to groups\n this._populateGroups();\n\n //write value if it was\n if (this._valueToWriteAfterItemsLoad !== undefined) {\n this.handleWriteValue(this._valueToWriteAfterItemsLoad);\n }\n\n return areItemsPrimitive;\n }\n private _addSingleItem(item: any): ArdOption {\n let isItemPrimitive = isPrimitive(item);\n //map a primitive item to a usable object\n if (isItemPrimitive) {\n item = this._primitiveItemsMapFn(item);\n }\n //map the item to create data bindings\n const ardOption = this._setItemsMapFn(item, this._items.last()?.index + 1, isItemPrimitive);\n\n //push the item into all items\n this._items.push(ardOption);\n\n //add item to groups\n this._populateGroups();\n\n return ardOption;\n }\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\n return { value: item };\n }\n private _ungroupAlreadyGroupedItems<T extends object>(group: T): [any[], boolean] {\n //determine groupBy (groupLabel) path\n let groupBy = this._ardParentComp.groupLabelFrom ?? this._ardParentComp.DEFAULTS.groupLabelFrom;\n\n //get group label from object\n let groupName: any;\n if (typeof groupBy == 'string') {\n groupName = resolvePath(group, groupBy);\n } else {\n groupName = groupBy(group);\n }\n\n //determine group children path\n let childrenPath = this._ardParentComp.childrenFrom ?? this._ardParentComp.DEFAULTS.childrenFrom;\n\n //get group children\n let groupItems: any = resolvePath(group, childrenPath);\n\n //return empty array if groupItems is not an array or is empty\n if (!isArray(groupItems) || groupItems.length == 0) return [[], false];\n\n //check if the array is an array of primitives, and map it if needed\n let areItemsPrimitive = false;\n if (any(groupItems, isPrimitive)) {\n groupItems = groupItems.map(this._primitiveItemsMapFn);\n }\n //add group name to every child\n groupItems = groupItems.map((item: any) => {\n item.$ardgroup = groupName;\n return item;\n });\n\n return [groupItems, areItemsPrimitive];\n }\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOption {\n if (areItemsPrimitive) {\n return {\n itemData: rawItemData,\n index,\n value: rawItemData.value,\n label: rawItemData.value?.toString?.() ?? String(rawItemData.value),\n };\n }\n //get value\n const valuePath = this._ardParentComp.valueFrom ?? this._ardParentComp.labelFrom ?? this._ardParentComp.DEFAULTS.valueFrom;\n const value = resolvePath(rawItemData, valuePath);\n\n //get label\n const labelPath = this._ardParentComp.labelFrom ?? this._ardParentComp.valueFrom ?? this._ardParentComp.DEFAULTS.labelFrom;\n const label = resolvePath(rawItemData, labelPath) ?? value;\n\n //get disabled\n const disabledPath = this._ardParentComp.disabledFrom ?? this._ardParentComp.DEFAULTS.disabledFrom;\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\n if (this._ardParentComp.invertDisabled) {\n disabled = !disabled;\n }\n\n //get groups\n let group: any = undefined;\n if (this._ardParentComp.groupItems) {\n if (rawItemData.$ardgroup) {\n group = rawItemData.$ardgroup;\n } else {\n let groupBy = this._ardParentComp.groupLabelFrom ?? this._ardParentComp.DEFAULTS.groupLabelFrom;\n if (typeof groupBy == 'string') {\n group = resolvePath(rawItemData, groupBy);\n } else {\n group = (groupBy as GroupByFn)(rawItemData);\n }\n }\n }\n\n const itemData = areItemsPrimitive ? rawItemData.value : rawItemData;\n\n //return\n return {\n itemData,\n index,\n value,\n label: label?.toString?.() ?? String(label),\n disabled,\n group,\n };\n }\n private _populateGroups(): void {\n this._groups = this._createEmptyGroupMap();\n\n for (const item of this._filteredItems) {\n if (this._ardParentComp.hideSelected && item.selected) continue;\n\n this._addToGroup(item);\n }\n }\n private _addToGroup(item: ArdOption): void {\n const groupKey = item.group;\n let targetGroup = this._groups.get(groupKey);\n //create new group if needed\n if (!targetGroup) {\n this._groups.set(groupKey, {\n label: String(groupKey ?? ''),\n children: [item],\n });\n return;\n }\n targetGroup.children.push(item);\n }\n private _createEmptyGroupMap() {\n return new Map([[undefined, { label: '', children: [] }]]);\n }\n private _isWriteValueValid(ngModel: any[]): boolean {\n return ngModel.every(item => {\n if (!isDefined(this._ardParentComp.compareWith) && isObject(item) && this._ardParentComp.valueFrom) {\n console.warn(`Setting object(${JSON.stringify(item)}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`);\n return false;\n }\n return true;\n });\n }\n private _valueToWriteAfterItemsLoad: any;\n private _wasValueWriteDeferred: boolean = false;\n handleWriteValue(ngModel: any[]): void {\n //defer writing the value if no options are yet loaded\n if (!this._wasValueWriteDeferred && this._items.length == 0) {\n this._valueToWriteAfterItemsLoad = ngModel;\n return;\n }\n\n this.clearAllSelected();\n\n if (!this._isWriteValueValid(ngModel)) {\n return;\n }\n\n const selectItemByValue = (value: any) => {\n let item = this.findItemByValue(value);\n\n if (item) {\n this.selectItem(item);\n return;\n }\n console.warn(`Couldn't find an item with value ${value?.toString?.() || String(value)}.`);\n };\n\n for (const modelValue of ngModel) {\n selectItemByValue(modelValue);\n }\n }\n findItemByValue(valueToFind: any): ArdOption | undefined {\n let findBy: (item: ArdOption) => boolean;\n if (this._ardParentComp.compareWith) {\n findBy = item => this._ardParentComp.compareWith!(valueToFind, item.value);\n } else {\n findBy = item => item.value === valueToFind;\n }\n return this._items.find(item => findBy(item));\n }\n async addCustomOption(value: string, fn: AddCustomFn<any> | AddCustomFn<Promise<any>>): Promise<ArdOption> {\n const fnResult = fn(value);\n\n let optionValue = fnResult;\n if (isPromise(optionValue)) optionValue = await optionValue;\n\n const newOptionObj = this._addSingleItem(optionValue);\n\n return newOptionObj;\n }\n\n clearAllSelected(repopulateGroups: boolean = false): any[] {\n for (const item of this._selectedItems) {\n item.selected = false;\n }\n let removedItemValues = this._itemsToValue(this._selectedItems);\n this._selectedItems = [];\n\n if (repopulateGroups && this._ardParentComp.hideSelected) this._populateGroups();\n\n return removedItemValues;\n }\n clearLastSelected(): ArdOption {\n let item = this._selectedItems.last();\n if (!item) return item;\n this.unselectItem(item);\n return item;\n }\n selectItem(...items: ArdOption[]): [any[], any[], any[]] {\n if (this.isItemLimitReached) {\n return [[], [], this._itemsToValue(items)];\n }\n let unselected = [];\n if (!this._ardParentComp.multiselectable) {\n unselected = this.clearAllSelected(false);\n }\n\n let itemsSelectedCount = 0;\n const itemsSelected = [];\n for (const item of items) {\n itemsSelectedCount++;\n if (item.selected) continue;\n if (this.isItemLimitReached) {\n break;\n }\n item.selected = true;\n this._selectedItems.push(item);\n itemsSelected.push(item);\n }\n\n if (this._ardParentComp.hideSelected) {\n this._populateGroups();\n }\n\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\n }\n unselectItem(...items: ArdOption[]): any[] {\n for (const item of items) {\n if (!item.selected) continue;\n item.selected = false;\n }\n this._selectedItems = this._selectedItems.filter(v => v.selected);\n\n if (this._ardParentComp.hideSelected) this._populateGroups();\n\n return this._itemsToValue(items);\n }\n\n clearAllHighlights(): void {\n for (const item of this._highlightedItems) {\n item.highlighted = false;\n }\n for (const group of this._highlightedGroups) {\n group.highlighted = false;\n }\n this._highlightedItems = [];\n this._highlightedGroups = [];\n }\n highlightGroup(group: ArdOptionGroup): ArdOption {\n this.clearAllHighlights();\n group.highlighted = true;\n this.highlightItem(...group.children);\n return group.children.first();\n }\n highlightSingleItem(item: ArdOption): ArdOption | null {\n if (!item || item.disabled) return null;\n this.clearAllHighlights();\n return this.highlightItem(item);\n }\n highlightItem(...items: ArdOption[]): ArdOption {\n for (const item of items) {\n item.highlighted = true;\n }\n this._highlightedItems.push(...items);\n return items.last();\n }\n unhighlightItem(...items: ArdOption[]): void {\n for (const item of items) {\n if (!item || !item.highlighted) return;\n\n item.highlighted = false;\n }\n this._highlightedItems = this._highlightedItems.filter(v => v.highlighted);\n }\n highlightFirstItem(): ArdOption | null {\n this.clearAllHighlights();\n let itemsToHighlight = this._getHiglightableItems();\n return this.highlightSingleItem(itemsToHighlight.first());\n }\n highlightLastItem(): ArdOption | null {\n this.clearAllHighlights();\n let itemsToHighlight = this._getHiglightableItems();\n return this.highlightSingleItem(itemsToHighlight.last());\n }\n private _getHiglightableItems(): ArdOption[] {\n let itemsToHighlight = this._filteredItems.filter(item => !item.disabled);\n if (this._ardParentComp.hideSelected) {\n itemsToHighlight = itemsToHighlight.filter(item => !item.selected);\n }\n return itemsToHighlight;\n }\n highlightAllItems(): void {\n let itemsToHighlight = this._filteredItems.filter(item => !item.disabled);\n\n if (this._ardParentComp.hideSelected) {\n itemsToHighlight = itemsToHighlight.filter(item => !item.selected);\n }\n this.highlightItem(...itemsToHighlight);\n }\n private _clearRecentlyHighlighted(): void {\n if (this._recentlyHighlightedItem) {\n this._recentlyHighlightedItem.highlighted_recently = false;\n }\n }\n setRecentlyHighlighted(item: ArdOption): void {\n this._clearRecentlyHighlighted();\n this._recentlyHighlightedItem = item;\n this._recentlyHighlightedItem.highlighted_recently = true;\n }\n highlightNextItem(offset: number, hasShift?: boolean): ArdOption | null {\n if (!this.isAnyItemHighlighted) {\n return this.highlightFirstItem();\n }\n const currentItem = this.highlightedItems.last();\n const highlightableItems = this._getHiglightableItems();\n const currentIndexInFiltered = highlightableItems.findIndex(item => item.index == currentItem.index);\n\n let nextItemIndex = currentIndexInFiltered + offset;\n if (nextItemIndex >= highlightableItems.length) {\n nextItemIndex -= highlightableItems.length;\n }\n if (nextItemIndex < 0) {\n nextItemIndex += highlightableItems.length;\n }\n const itemToHighlight = highlightableItems[nextItemIndex];\n\n if (hasShift && this._ardParentComp.multiselectable) {\n if (itemToHighlight.highlighted) {\n this.unhighlightItem(currentItem);\n }\n return this.highlightItem(itemToHighlight);\n }\n return this.highlightSingleItem(itemToHighlight);\n }\n filter(filterTerm: string): any[] {\n if (!filterTerm) {\n this.resetFiltered();\n return this._itemsToValue(this._filteredItems);\n }\n if (!this._ardParentComp.searchCaseSensitive) {\n filterTerm = filterTerm.toLocaleLowerCase();\n }\n\n const searchFn = this._ardParentComp.searchFn;\n this._filteredItems = this._items.filter(item => searchFn(filterTerm, item));\n\n this._populateGroups();\n\n if (!this.isNoItemsFound) this.highlightFirstItem();\n else this.clearAllHighlights();\n\n return this._itemsToValue(this._filteredItems);\n }\n resetFiltered(): void {\n if (this._filteredItems.length == this._items.length) return;\n\n if (this._ardParentComp.hideSelected && this.isAnyItemSelected) {\n this._filteredItems = this._items.filter(item => !item.selected);\n } else {\n this._filteredItems = this._items;\n }\n this._populateGroups();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, OnChanges, AfterViewChecked, OnDestroy, ElementRef, Input, SimpleChanges } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\n\n@Component({\n selector: 'ard-option',\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n private _value: any;\n @Input()\n set value(v: any) {\n this._value = v;\n }\n get value(): any {\n return this._value ?? this.label;\n }\n get hasImplicitValue(): boolean {\n return this._value === undefined;\n }\n\n private _label: string | undefined = undefined;\n @Input()\n set label(v: any) {\n this._label = v?.toString?.() ?? String(v);\n }\n get label(): string {\n return this._label ?? (this.elementRef.nativeElement.innerHTML || '').trim();\n }\n\n private _disabled: boolean = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(v: any) {\n this._disabled = coerceBooleanProperty(v);\n }\n\n //! state change listener\n readonly stateChange$ = new Subject<{\n value: any;\n oldValue?: string;\n disabled: boolean;\n label?: string;\n }>();\n\n private _previousLabel?: string;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['disabled']) {\n this.stateChange$.next({\n value: this.value,\n disabled: this.disabled,\n });\n }\n }\n\n ngAfterViewChecked(): void {\n if (this.label !== this._previousLabel) {\n let oldValue = this.value;\n if (this.hasImplicitValue) oldValue = this._previousLabel;\n\n this._previousLabel = this.label;\n\n this.stateChange$.next({\n value: this.value,\n oldValue,\n disabled: this.disabled,\n label: this.label,\n });\n }\n }\n\n ngOnDestroy(): void {\n this.stateChange$.complete();\n }\n}\n","import { ArdOption, SearchFn } from './types/item-storage.types';\n\nexport function searchInString(searchTerm: string, toSearch: any) {\n if (toSearch === undefined) return false;\n return String(toSearch).toLocaleLowerCase().indexOf(searchTerm) != -1;\n}\nexport const searchFunctions: {\n byLabel: SearchFn;\n byValue: SearchFn;\n byGroup: SearchFn;\n byLabelAndGroup: SearchFn;\n byLabelAndValue: SearchFn;\n byLabelAndGroupAndValue: SearchFn;\n} = {\n /**\n * Determines if the item should appear in the search results, based on the label only.\n * @param searchTerm The term to search by.\n * @param item The `ArdOption` item to search in.\n * @returns `true` if the item matches the search term, otherwise `false`.\n */\n byLabel: (searchTerm: string, item: ArdOption) => {\n return searchInString(searchTerm, item.label);\n },\n /**\n * Determines if the item should appear in the search results, based on the value only.\n * @param searchTerm The term to search by.\n * @param item The `ArdOption` item to search in.\n * @returns `true` if the item matches the search term, otherwise `false`.\n */\n byValue: (searchTerm: string, item: ArdOption) => {\n return searchInString(searchTerm, item.value);\n },\n /**\n * Determines if the item should appear in the search results, based on the group only.\n * @param searchTerm The term to search by.\n * @param item The `ArdOption` item to search in.\n * @returns `true` if the item matches the search term, otherwise `false`.\n */\n byGroup: (searchTerm: string, item: ArdOption) => {\n return searchInString(searchTerm, item.group);\n },\n /**\n * Determines if the item should appear in the search results, based on the label and group.\n * @param searchTerm The term to search by.\n * @param item The `ArdOption` item to search in.\n * @returns `true` if the item matches the search term, otherwise `false`.\n */\n byLabelAndGroup: (searchTerm: string, item: ArdOption) => {\n return searchFunctions.byLabel(searchTerm, item) || (item.label !== item.value && searchFunctions.byValue(searchTerm, item));\n },\n /**\n * Determines if the item should appear in the search results, based on the label and value.\n * @param searchTerm The term to search by.\n * @param item The `ArdOption` item to search in.\n * @returns `true` if the item matches the search term, otherwise `false`.\n */\n byLabelAndValue: (searchTerm: string, item: ArdOption) => {\n return searchFunctions.byLabel(searchTerm, item) || searchFunctions.byValue(searchTerm, item);\n },\n /**\n * Determines if the item should appear in the search results, based on the label, group, and value.\n * @param searchTerm The term to search by.\n * @param item The `ArdOption` item to search in.\n * @returns `true` if the item matches the search term, otherwise `false`.\n */\n byLabelAndGroupAndValue: (searchTerm: string, item: ArdOption) => {\n return (\n searchFunctions.byLabel(searchTerm, item) ||\n (item.label !== item.value && searchFunctions.byValue(searchTerm, item)) ||\n searchFunctions.byGroup(searchTerm, item)\n );\n },\n};\n","/**\n```typescript\ninterface OptionContext {\n $implicit: ArdOption;\n item: ArdOption;\n itemData: any;\n}\n```\n */\nexport interface OptionContext {\n $implicit: ArdOption;\n item: ArdOption;\n itemData: any;\n}\n\n/**\n```typescript\ninterface ArdOption {\n readonly itemData: any;\n readonly index: number;\n label: string;\n value: any;\n highlighted?: boolean;\n selected?: boolean;\n}\n```\n */\nexport interface ArdSimplestStorageItem {\n readonly itemData: any;\n readonly index: number;\n value: any;\n label: string;\n disabled?: boolean;\n selected?: boolean;\n highlighted?: boolean;\n}\n\n/**\n```typescript\ninterface ArdOption {\n readonly itemData: any;\n readonly index: number;\n readonly label: string;\n readonly value: any;\n disabled?: boolean;\n highlighted?: boolean;\n selected?: boolean;\n}\n```\n */\nexport interface ArdOptionSimple extends ArdSimplestStorageItem {\n disabled?: boolean;\n}\n/**\n```typescript\ninterface ArdOption {\n readonly itemData: any;\n readonly index: number;\n readonly label: string;\n readonly value: any;\n readonly group?: any;\n disabled?: boolean;\n selected?: boolean;\n highlighted?: boolean;\n highlighted_recently?: boolean;\n}\n```\n */\nexport interface ArdOption extends ArdOptionSimple {\n readonly group?: any;\n highlighted_recently?: boolean;\n}\n\n/**\n```typescript\ninterface ArdItemGroup {\n label: string;\n disabled?: boolean;\n highlighted?: boolean;\n selected?: boolean;\n children: ArdOption[];\n}\n```\n */\nexport interface ArdOptionGroup {\n label: string;\n disabled?: boolean;\n highlighted?: boolean;\n selected?: boolean;\n children: ArdOption[];\n}\n\nexport const ArdPanelPosition = {\n Top: 'top',\n Bottom: 'bottom',\n Auto: 'auto',\n} as const;\nexport type ArdPanelPosition = (typeof ArdPanelPosition)[keyof typeof ArdPanelPosition];\n\nexport type ArdItemGroupMap = Map<any, ArdOptionGroup>;\n\nexport type GroupByFn = (item: any) => any;\nexport type SearchFn = (searchTerm: string, item: ArdOption) => boolean;\nexport type CompareWithFn = (value: any, optionValue: any) => boolean;\n","import { Directive, TemplateRef } from '@angular/core';\nimport { OptionContext } from '../types/item-storage.types';\nimport {\n CustomOptionContext,\n GroupContext,\n ItemDisplayLimitContext,\n ItemLimitContext,\n PlaceholderContext,\n SearchContext,\n StatsContext,\n ValueContext,\n} from './select.types';\n\n//public (exported)\n\n@Directive({ selector: 'ard-select > ng-template[ard-prefix-tmp]' })\nexport class ArdSelectPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-suffix-tmp]' })\nexport class ArdSelectSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-value-tmp]' })\nexport class ArdValueTemplateDirective {\n constructor(public template: TemplateRef<ValueContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-value-chip-tmp]' })\nexport class ArdValueChipTemplateDirective {\n constructor(public template: TemplateRef<ValueContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-option-tmp]' })\nexport class ArdOptionTemplateDirective {\n constructor(public template: TemplateRef<OptionContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-optgroup-tmp]' })\nexport class ArdOptgroupTemplateDirective {\n constructor(public template: TemplateRef<GroupContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-placeholder-tmp]' })\nexport class ArdSelectPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<PlaceholderContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-loading-spinner-tmp]' })\nexport class ArdLoadingSpinnerTemplateDirective {\n constructor(public template: TemplateRef<null>) {}\n}\n\n@Directive({\n selector: 'ard-select > ng-template[ard-loading-placeholder-tmp]',\n})\nexport class ArdLoadingPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<SearchContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-header-tmp]' })\nexport class ArdDropdownHeaderTemplateDirective {\n constructor(public template: TemplateRef<SearchContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-footer-tmp]' })\nexport class ArdDropdownFooterTemplateDirective {\n constructor(public template: TemplateRef<SearchContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-no-items-found-tmp]' })\nexport class ArdNoItemsFoundTemplateDirective {\n constructor(public template: TemplateRef<SearchContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-add-custom-tmp]' })\nexport class ArdAddCustomTemplateDirective {\n constructor(public template: TemplateRef<CustomOptionContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-item-limit-reached-tmp]' })\nexport class ArdItemLimitReachedTemplateDirective {\n constructor(public template: TemplateRef<ItemLimitContext>) {}\n}\n\n@Directive({ selector: 'ard-select > ng-template[ard-item-display-limit-tmp]' })\nexport class ArdItemDisplayLimitTemplateDirective {\n constructor(public template: TemplateRef<ItemDisplayLimitContext>) {}\n}\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { Subject, merge, startWith, takeUntil } from 'rxjs';\nimport { isAnyString, isArray, isFunction } from 'simple-bool';\nimport { ItemStorage } from '../_internal/item-storages/dropdown-item-storage';\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\nimport { ArdiumDropdownPanelComponent } from '../dropdown-panel/dropdown-panel.component';\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../dropdown-panel/dropdown-panel.types';\nimport { ArdiumOptionComponent } from '../option/option.component';\nimport { searchFunctions } from '../search-functions';\nimport { ArdOption, ArdOptionGroup, ArdPanelPosition, CompareWithFn, GroupByFn, OptionContext, SearchFn } from '../types/item-storage.types';\nimport { FormElementAppearance } from '../types/theming.types';\nimport { FormElementVariant } from './../types/theming.types';\nimport {\n ArdAddCustomTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdOptionTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ArdValueTemplateDirective,\n} from './select.directive';\nimport {\n AddCustomFn,\n CustomOptionContext,\n GroupContext,\n ItemDisplayLimitContext,\n ItemLimitContext,\n PlaceholderContext,\n SearchContext,\n StatsContext,\n ValueContext,\n} from './select.types';\n\n@Component({\n selector: 'ard-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumSelectComponent\n extends _NgModelComponentBase\n implements OnChanges, AfterViewInit, AfterContentInit, OnInit, OnDestroy, ControlValueAccessor\n{\n //! public constants\n readonly itemStorage = new ItemStorage(this);\n readonly element!: HTMLElement;\n readonly DEFAULTS = {\n valueFrom: 'value',\n labelFrom: 'label',\n disabledFrom: 'disabled',\n groupLabelFrom: 'group',\n groupDisabledFrom: 'disabled',\n childrenFrom: 'children',\n searchFn: searchFunctions.byLabel,\n clearButtonTitle: 'Clear',\n noItemsFoundText: 'No items found.',\n loadingPlaceholderText: 'Loading...',\n };\n\n //! privates\n private _items: any[] | null = [];\n private _isMouseBeingUsed = false;\n private _searchBarFocused = false;\n private readonly _destroy$ = new Subject<void>();\n\n //! publics\n public searchTerm: string = '';\n isItemsInputUsed: boolean = false;\n\n //! binding-related inputs\n //value/label/disabled/group/pre-grouped children paths\n @Input() valueFrom?: string;\n @Input() labelFrom?: string;\n @Input() disabledFrom?: string;\n //! group-related inputs\n @Input() groupLabelFrom?: string | GroupByFn;\n @Input() groupDisabledFrom?: string;\n @Input() childrenFrom?: string;\n //! settings\n @Input() placeholder: string = 'Select item';\n @Input() searchPlaceholder: string = 'Search...';\n @Input() dropdownPosition: ArdPanelPosition = ArdPanelPosition.Auto;\n @Input() clearButtonTitle: string = this.DEFAULTS.clearButtonTitle;\n //! template-related settings\n @Input() noItemsFoundText: string = this.DEFAULTS.noItemsFoundText;\n @Input() loadingPlaceholderText: string = this.DEFAULTS.loadingPlaceholderText;\n //! search-related options\n @Input() searchInputId?: string;\n //! other inputs\n @Input() isLoading: boolean = false;\n @Input() inputAttrs: { [key: string]: any } = {};\n @Input() htmlId: string = crypto.randomUUID();\n\n //! boolean settings\n private _itemsAlreadyGrouped: boolean = false;\n @Input()\n get itemsAlreadyGrouped(): boolean {\n return this._itemsAlreadyGrouped;\n }\n set itemsAlreadyGrouped(v: any) {\n this._itemsAlreadyGrouped = coerceBooleanProperty(v);\n }\n\n //should the value that the \"disabledFrom\" path lead to be inverted?\n //useful when the property is e.g. \"active\", which is the oposite of \"disabled\"\n private _invertDisabled: boolean = false;\n @Input()\n get invertDisabled(): boolean {\n return this._invertDisabled;\n }\n set invertDisabled(v: any) {\n this._invertDisabled = coerceBooleanProperty(v);\n }\n\n private _noGroupActions: boolean = false;\n @Input()\n get noGroupActions(): boolean {\n return this._noGroupActions;\n }\n set noGroupActions(v: any) {\n this._noGroupActions = coerceBooleanProperty(v);\n }\n\n private _autoHighlightFirst: boolean = true;\n @Input()\n get autoHighlightFirst(): boolean {\n return this._autoHighlightFirst;\n }\n set autoHighlightFirst(v: any) {\n this._autoHighlightFirst = coerceBooleanProperty(v);\n }\n\n private _autoFocus: boolean = false;\n @Input()\n get autoFocus(): boolean {\n return this._autoFocus;\n }\n set autoFocus(v: any) {\n this._autoFocus = coerceBooleanProperty(v);\n }\n\n private _keepOpen: boolean = false;\n @Input()\n get keepOpen(): boolean {\n return this._keepOpen;\n }\n set keepOpen(v: any) {\n this._keepOpen = coerceBooleanProperty(v);\n }\n\n private _hideSelected: boolean = false;\n @Input()\n get hideSelected(): boolean {\n return this._hideSelected;\n }\n set hideSelected(v: any) {\n this._hideSelected = coerceBooleanProperty(v);\n }\n\n private _clearOnBackspace: boolean = false;\n @Input()\n get noBackspaceClear(): boolean {\n return this._clearOnBackspace;\n }\n set noBackspaceClear(v: any) {\n this._clearOnBackspace = coerceBooleanProperty(v);\n }\n\n private _sortMultipleValues: boolean = false;\n @Input()\n get sortMultipleValues(): boolean {\n return this._sortMultipleValues;\n }\n set sortMultipleValues(v: any) {\n this._sortMultipleValues = coerceBooleanProperty(v);\n }\n\n private _searchCaseSensitive: boolean = false;\n @Input()\n get searchCaseSensitive(): boolean {\n return this._searchCaseSensitive;\n }\n set searchCaseSensitive(v: any) {\n this._searchCaseSensitive = coerceBooleanProperty(v);\n }\n\n private _keepSearchAfterSelect: boolean = false;\n @Input()\n get keepSearchAfterSelect(): boolean {\n return this._keepSearchAfterSelect;\n }\n set keepSearchAfterSelect(v: any) {\n this._keepSearchAfterSelect = coerceBooleanProperty(v);\n }\n\n //! number inputs\n private _maxSelectedItems: number | undefined = undefined;\n @Input()\n get maxSelectedItems(): number | undefined {\n return this._maxSelectedItems;\n }\n set maxSelectedItems(v: any) {\n this._maxSelectedItems = coerceNumberProperty(v, undefined);\n }\n\n private _itemDisplayLimit: number = Infinity;\n @Input()\n get itemDisplayLimit(): number {\n return this._itemDisplayLimit;\n }\n set itemDisplayLimit(v: any) {\n this._itemDisplayLimit = coerceNumberProperty(v, Infinity);\n }\n\n //! function inputs\n private _searchFn: SearchFn = this.DEFAULTS.searchFn;\n @Input()\n get searchFn(): SearchFn {\n return this._searchFn;\n }\n set searchFn(fn: SearchFn) {\n if (fn !== undefined && fn !== null && !isFunction(fn)) {\n throw Error('`searchFn` must be a function.');\n }\n this._searchFn = fn;\n }\n private _compareWith?: CompareWithFn;\n @Input()\n get compareWith(): CompareWithFn | undefined {\n return this._compareWith;\n }\n set compareWith(fn: CompareWithFn | undefined) {\n if (fn !== undefined && fn !== null && !isFunction(fn)) {\n throw Error('`compareWith` must be a function.');\n }\n this._compareWith = fn;\n }\n\n //! appearance\n @Input() appearance: FormElementAppearance = FormElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [\n //appearance, variant handled in ard-form-field-frame component\n this.compact ? 'ard-compact' : '',\n this.multiselectable ? 'ard-multiselect' : 'ard-singleselect',\n this.clearable ? 'ard-clearable' : '',\n this.searchable ? 'ard-searchable' : '',\n this.filtered ? 'ard-filtered' : '',\n this.touched ? 'ard-touched' : '',\n this.isDropdownOpen ? 'ard-dropdown-open' : '',\n this._searchBarFocused ? 'ard-select-focused' : '',\n this._searchBarFocused ? 'ard-select-focused' : '',\n ].join(' ');\n }\n\n private _dropdownAppearance?: DropdownPanelAppearance = undefined;\n @Input()\n set dropdowonAppearance(v: DropdownPanelAppearance) {\n this._dropdownAppearance = v;\n }\n get dropdownAppearance(): DropdownPanelAppearance {\n if (this._dropdownAppearance) return this._dropdownAppearance;\n if (this.appearance == FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\n return DropdownPanelAppearance.Raised;\n }\n private _dropdownVariant?: DropdownPanelVariant = undefined;\n @Input()\n set dropdowonVariant(v: DropdownPanelVariant) {\n this._dropdownVariant = v;\n }\n get dropdownVariant(): DropdownPanelVariant {\n if (this._dropdownVariant) return this._dropdownVariant;\n if (this.variant == FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\n return this.variant;\n }\n\n //! class-based inputs\n @Input() @HostBinding('class.ard-group-items') groupItems: boolean = false; //default value may be changed to \"true\" in ngOnChanges if this.groupBy is defined or this.itemsAlreadyGrouped is set to \"true\"\n\n //! items setter/getter\n @Input()\n get items() {\n return this._items;\n }\n set items(value: string | any[] | null) {\n this.isItemsInputUsed = true;\n if (value === null) {\n value = [];\n this.isItemsInputUsed = false;\n } else if (isAnyString(value)) {\n value = coerceArrayProperty(value);\n }\n let printErrors = this.itemStorage.setItems(value);\n if (printErrors) {\n this._printPrimitiveWarnings();\n }\n }\n\n @ContentChildren(ArdiumOptionComponent)\n optionComponents!: QueryList<ArdiumOptionComponent>;\n\n private _setItemsFromComponents() {\n const handleOptionChange = () => {\n const changedOrDestroyed = merge(this.optionComponents.changes, this._destroy$);\n merge(...this.optionComponents.map(option => option.stateChange$))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(option => {\n setTimeout(() => {\n const item = this.itemStorage.findItemByValue(option.oldValue ?? option.value);\n if (item) {\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n item.value = option.value;\n item.itemData.disabled = option.disabled;\n item.itemData.label = option.label || item.label;\n item.itemData.value = option.value;\n }\n this.detectChanges();\n }, 0);\n });\n };\n this.optionComponents.changes\n .pipe(startWith(this.optionComponents), takeUntil(this._destroy$))\n .subscribe((options: QueryList<ArdiumOptionComponent>) => {\n if (options.length == 0) return;\n setTimeout(() => {\n this.items = options.map(option => ({\n value: option.value,\n label: option.label,\n disabled: option.disabled,\n }));\n handleOptionChange();\n this.detectChanges();\n }, 0);\n });\n }\n\n //! attribute and/or class setters/getters\n private _multiselectable: boolean = false;\n @Input()\n @HostBinding('attr.multiple')\n get multiselectable(): boolean {\n return this._multiselectable;\n }\n set multiselectable(v: any) {\n this._multiselectable = coerceBooleanProperty(v);\n }\n get singleselectable(): boolean {\n return !this._multiselectable;\n }\n\n private _clearable: boolean = true;\n @Input()\n get clearable(): boolean {\n return this._clearable;\n }\n set clearable(v: any) {\n this._clearable = coerceBooleanProperty(v);\n }\n\n private _searchable: boolean = false;\n @Input()\n get searchable(): boolean {\n return this._searchable;\n }\n set searchable(v: any) {\n this._searchable = coerceBooleanProperty(v);\n }\n\n get filtered(): boolean {\n return this._searchable && this.searchTerm != '';\n }\n\n private _touched: boolean = false;\n get touched(): boolean {\n return this._touched;\n }\n private set touched(state: boolean) {\n this._touched = state;\n }\n\n //! custom options\n private _defaultAddCustomFn: AddCustomFn<any> = (value: string) => value;\n private _addCustom: false | AddCustomFn<any> | AddCustomFn<Promise<any>> = false;\n @Input()\n get addCustom(): false | AddCustomFn<any> | AddCustomFn<Promise<any>> {\n return this._addCustom;\n }\n set addCustom(v: string | boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>) {\n if (isFunction(v)) {\n this._addCustom = v;\n return;\n }\n //coerce the value into a boolean\n //if \"true\", use the default function. Otherwise, just set to \"false\".\n this._addCustom = coerceBooleanProperty(v) && this._defaultAddCustomFn;\n }\n\n get shouldShowAddCustom(): boolean {\n return this.addCustom != false && this.searchTerm.length > 0 && this.itemStorage.isNoItemsFound;\n }\n\n async addCustomOption(value: string) {\n if (!this.addCustom) return;\n\n const newOptionObj = await this.itemStorage.addCustomOption(value, this.addCustom);\n\n this.selectItem(newOptionObj);\n }\n\n //! control value accessor\n //override the writeValue and setDisabledState defined in _NgModelComponent\n override setDisabledState(state: boolean): void {\n this._disabled = state;\n this._cd.markForCheck();\n }\n writeValue(ngModel: any[]): void {\n this.itemStorage.handleWriteValue(ngModel);\n this._cd.markForCheck();\n }\n //* change & touch event emitters\n protected _emitChange(): void {\n let value = this.itemStorage.value;\n this._onChangeRegistered?.(value);\n this.changeEvent.emit(value);\n this.valueChange.emit(value);\n }\n private _onTouched(): void {\n this.touched = true;\n this._onTouchedRegistered?.();\n }\n\n //! value input & output\n @Input()\n set value(newValue: any) {\n //if is a string, coerce it into array of strings\n if (isAnyString(newValue)) newValue = coerceArrayProperty(newValue);\n //if it is not a string and not an array, just put it in an array\n else if (!isArray(newValue)) newValue = [newValue];\n\n this.writeValue(newValue);\n }\n get value(): any[] {\n return this.itemStorage.value;\n }\n @Output() valueChange = new EventEmitter<any[]>();\n\n //! output events\n @Output('change') changeEvent = new EventEmitter<any[]>();\n @Output('add') addEvent = new EventEmitter<any[]>();\n @Output('failedToAdd') failedToAddEvent = new EventEmitter<any[]>();\n @Output('remove') removeEvent = new EventEmitter<any[]>();\n @Output('clear') clearEvent = new EventEmitter<null>();\n @Output('open') openEvent = new EventEmitter<null>();\n @Output('close') closeEvent = new EventEmitter<null>();\n @Output('scroll') scrollEvent = new EventEmitter<{\n start: number;\n end: number;\n }>();\n @Output('scrollToEnd') scrollToEndEvent = new EventEmitter();\n @Output('search') searchEvent = new EventEmitter<{\n search: string;\n matching: any[];\n }>();\n\n @Input('isOpen')\n isDropdownOpen!: boolean;\n @Output('isOpenChange') isDropdownOpenChange = new EventEmitter<boolean>();\n\n //! view children\n @ViewChild('searchInput', { static: true })\n searchInput!: ElementRef<HTMLInputElement>;\n @ViewChild(forwardRef(() => ArdiumDropdownPanelComponent))\n dropdownPanel!: ArdiumDropdownPanelComponent;\n\n //! templates\n @ContentChild(ArdOptionTemplateDirective, { read: TemplateRef })\n optionTemplate?: TemplateRef<any>;\n @ContentChild(ArdOptgroupTemplateDirective, { read: TemplateRef })\n optgroupTemplate?: TemplateRef<any>;\n @ContentChild(ArdValueTemplateDirective, { read: TemplateRef })\n valueTemplate?: TemplateRef<any>;\n @ContentChild(ArdSelectPlaceholderTemplateDirective, { read: TemplateRef })\n placeholderTemplate?: TemplateRef<any>;\n @ContentChild(ArdLoadingSpinnerTemplateDirective, { read: TemplateRef })\n loadingSpinnerTemplate?: TemplateRef<any>;\n @ContentChild(ArdLoadingPlaceholderTemplateDirective, { read: TemplateRef })\n loadingPlaceholderTemplate?: TemplateRef<any>;\n @ContentChild(ArdDropdownHeaderTemplateDirective, { read: TemplateRef })\n dropdownHeaderTemplate?: TemplateRef<any>;\n @ContentChild(ArdDropdownFooterTemplateDirective, { read: TemplateRef })\n dropdownFooterTemplate?: TemplateRef<any>;\n @ContentChild(ArdNoItemsFoundTemplateDirective, { read: TemplateRef })\n noItemsFoundTemplate?: TemplateRef<any>;\n @ContentChild(ArdAddCustomTemplateDirective, { read: TemplateRef })\n addCustomTemplate?: TemplateRef<any>;\n @ContentChild(ArdItemLimitReachedTemplateDirective, { read: TemplateRef })\n itemLimitReachedTemplate?: TemplateRef<any>;\n @ContentChild(ArdItemDisplayLimitTemplateDirective, { read: TemplateRef })\n itemDisplayLimitTemplate?: TemplateRef<any>;\n\n @ContentChild(ArdSelectPrefixTemplateDirective, { read: TemplateRef })\n prefixTemplate?: TemplateRef<any>;\n @ContentChild(ArdSelectSuffixTemplateDirective, { read: TemplateRef })\n suffixTemplate?: TemplateRef<any>;\n\n //! context providers\n getValueContext(item: ArdOption): ValueContext {\n const $this = this;\n return {\n $implicit: item,\n item,\n itemData: item.itemData,\n unselect() {\n $this.unselectItem(item);\n },\n };\n }\n getStatsContext(): StatsContext {\n return {\n totalItems: this.totalItems,\n foundItems: this.foundItems,\n };\n }\n getSearchContext(): SearchContext {\n return {\n $implicit: this.searchTerm,\n searchTerm: this.searchTerm,\n totalItems: this.totalItems,\n foundItems: this.foundItems,\n };\n }\n getPlaceholderContext(): PlaceholderContext {\n const placeholder = this.placeholderForCurrentContext;\n return {\n placeholder,\n $implicit: placeholder,\n };\n }\n getCustomOptionContext(): CustomOptionContext {\n return {\n $implicit: this.searchTerm,\n searchTerm: this.searchTerm,\n };\n }\n getGroupContext(group: ArdOptionGroup): GroupContext {\n return {\n $implicit: group,\n group,\n selectedChildren: group.children.filter(v => v.selected).length,\n totalChildren: group.children.length,\n };\n }\n getOptionContext(item: ArdOption): OptionContext {\n return {\n $implicit: item,\n item,\n itemData: item.itemData,\n };\n }\n getItemLimitContext(): ItemLimitContext {\n return {\n totalItems: this.totalItems,\n selectedItems: this.itemStorage.selectedItems.length,\n itemLimit: this.maxSelectedItems,\n };\n }\n getItemDisplayLimitContext(): ItemDisplayLimitContext {\n let selectedItems = this.itemStorage.selectedItems.length;\n return {\n totalItems: this.totalItems,\n selectedItems,\n itemLimit: this.maxSelectedItems,\n overflowCount: selectedItems - (this.itemDisplayLimit ?? 0),\n };\n }\n\n constructor(\n _elementRef: ElementRef<HTMLElement>,\n private _cd: ChangeDetectorRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private scrollStrategyOpts: ScrollStrategyOptions\n ) {\n super();\n this.element = _elementRef.nativeElement;\n }\n\n //! dropdown overlay\n @ViewChild('dropdownHost', { read: ElementRef })\n dropdownHost!: ElementRef<HTMLDivElement>;\n @ViewChild('dropdownTemplate', { read: TemplateRef })\n dropdownTemplate!: TemplateRef<any>;\n\n private dropdownOverlay?: OverlayRef;\n\n private _createOverlay(): void {\n const strategy = this.overlay\n .position()\n .flexibleConnectedTo(this.dropdownHost)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]);\n\n const config = new OverlayConfig({\n positionStrategy: strategy,\n scrollStrategy: this.scrollStrategyOpts.block(),\n hasBackdrop: false,\n });\n\n this.dropdownOverlay = this.overlay.create(config);\n\n const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);\n this.dropdownOverlay.attach(portal);\n this.setOverlaySize();\n }\n private _destroyOverlay(): void {\n if (!this.dropdownOverlay) return;\n\n this.dropdownOverlay.dispose();\n delete this.dropdownOverlay;\n }\n\n setOverlaySize(): void {\n if (!this.dropdownOverlay) return;\n\n const rect = this.dropdownHost.nativeElement.getBoundingClientRect();\n this.dropdownOverlay.updateSize({ width: rect.width });\n }\n\n @HostListener('window:resize')\n onWindowResize(): void {\n this.setOverlaySize();\n }\n\n //! hooks\n ngOnInit(): void {\n this._setSearchInputAttributes();\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n ngAfterViewInit(): void {\n if (this.autoFocus) {\n this.focus();\n }\n }\n ngAfterContentInit(): void {\n if (!this.isItemsInputUsed) {\n this._setItemsFromComponents();\n }\n }\n ngOnChanges(changes: SimpleChanges): void {\n //fire items load handler when loading is set to false\n if (changes['loading']) {\n if (changes['loading'].currentValue == false) {\n this._onItemsLoad();\n }\n }\n //set groupItems to true by default if groupLabelFrom or itemsAlreadyGrouped is set to true as the first change\n if ((changes['groupLabelFrom']?.firstChange || changes['itemsAlreadyGrouped']?.firstChange) && !changes['groupItems']) {\n this.groupItems = true;\n }\n }\n private _onItemsLoad() {\n if (!this._searchBarFocused) return;\n this.open();\n }\n private _printPrimitiveWarnings() {\n function makeWarning(str: string): void {\n console.warn(`Skipped using [${str}] property bound to <ard-select>, as some provided items are of primitive type`);\n }\n if (this.valueFrom) {\n makeWarning('valueFrom');\n }\n if (this.labelFrom) {\n makeWarning('labelFrom');\n }\n if (this.disabledFrom) {\n makeWarning('disabledFrom');\n }\n if (this.groupLabelFrom) {\n makeWarning('groupLabelFrom');\n }\n if (this.groupDisabledFrom) {\n makeWarning('groupDisabledFrom');\n }\n if (this.childrenFrom) {\n makeWarning('childrenFrom');\n }\n if (this.invertDisabled) {\n makeWarning('invertDisabled');\n }\n }\n\n //! getters\n get firstHighlightedItem(): ArdOption | undefined {\n return this.itemStorage.highlightedItems?.first();\n }\n get shouldDisplayPlaceholder(): boolean {\n return !this.itemStorage.isAnyItemSelected && !this.searchTerm;\n }\n get shouldDisplayValue(): boolean {\n return this.itemStorage.isAnyItemSelected && (!this.searchTerm || this.multiselectable);\n }\n get shouldShowClearButton(): boolean {\n return this._clearable && !this._disabled && (this.itemStorage.isAnyItemSelected || this.searchTerm != '');\n }\n get itemsToDisplay(): IterableIterator<ArdOptionGroup> {\n return this.itemStorage.groups.values();\n }\n get shouldShowNoItemsFound(): boolean {\n return this.itemStorage.isNoItemsFound && !this.isLoading && !this.shouldShowAddCustom;\n }\n get totalItems(): number {\n return this.itemStorage.items.length;\n }\n get foundItems(): number | undefined {\n if (!this.searchable) return undefined;\n return this.itemStorage.filteredItems.length;\n }\n get shouldShowItemDisplayLimit(): boolean {\n return this.multiselectable && this.itemDisplayLimit != Infinity && this.itemStorage.selectedItems.length > this.itemDisplayLimit;\n }\n get isInputElementReadonly(): boolean {\n return !this.addCustom && (!this.searchable || this.itemStorage.isItemLimitReached);\n }\n isValueWithinDisplayLimit(i: number): boolean {\n return !this.multiselectable || this.itemDisplayLimit == Infinity || i < this.itemDisplayLimit;\n }\n get placeholderForCurrentContext(): string {\n if (this.searchPlaceholder && this.searchable && (this._searchBarFocused || this._isClickedWithin)) return this.searchPlaceholder;\n return this.placeholder;\n }\n\n //! search input event handlers\n filter(filterTerm: string, suppressSearchEvent: boolean = false): void {\n this.searchTerm = filterTerm;\n let matching = this.itemStorage.filter(filterTerm);\n if (!suppressSearchEvent) this.searchEvent.emit({ search: filterTerm, matching });\n this.open();\n }\n onSearchInputFocus(event: FocusEvent): void {\n this._searchBarFocused = true;\n }\n onSearchInputBlur(event: FocusEvent): void {\n if (!this._searchBarFocused) return;\n\n this._onTouched();\n\n this._searchBarFocused = false;\n }\n //! item selection handlers\n toggleItem(item: ArdOption): void {\n if (item.selected) {\n this.unselectItem(item);\n return;\n }\n this.selectItem(item);\n }\n selectItem(...items: ArdOption[]): void {\n let [selected, unselected, failedToSelect] = this.itemStorage.selectItem(...items);\n\n if (unselected.length > 0) this.removeEvent.emit(unselected);\n\n if (failedToSelect.length > 0) {\n this.failedToAddEvent.emit(failedToSelect);\n }\n\n if (selected.length > 0) {\n this.addEvent.emit(selected);\n this._emitChange();\n\n this.focus();\n if (!this.keepSearchAfterSelect) this._clearSearch(true);\n\n if (!this.keepOpen || this.itemStorage.isNoItemsToSelect) {\n this.close();\n }\n }\n }\n unselectItem(...items: ArdOption[]): void {\n let unselected = this.itemStorage.unselectItem(...items);\n\n this.removeEvent.emit(unselected);\n this._emitChange();\n if (!this.keepSearchAfterSelect) this._clearSearch();\n\n this.focus();\n\n if (!this.keepOpen || this.itemStorage.isNoItemsToSelect) {\n this.close();\n }\n }\n private _clearAllItems(): void {\n let cleared = this.itemStorage.clearAllSelected(true);\n\n this.focus();\n\n this.clearEvent.emit();\n this.removeEvent.emit(cleared);\n this._emitChange();\n }\n private _clearLastItem(): void {\n let clearedValue = this.itemStorage.clearLastSelected().value;\n\n this.focus();\n\n this.removeEvent.emit([clearedValue]);\n this._emitChange();\n }\n //! highligh-related\n onMouseMove() {\n this._isMouseBeingUsed = true;\n }\n onGroupMouseover(group: ArdOptionGroup): void {\n if (!this.multiselectable || this.noGroupActions) return;\n this.itemStorage.highlightGroup(group);\n }\n onItemMouseOver(event: MouseEvent): void {\n event.stopPropagation();\n }\n onItemMouseEnter(option: ArdOption, event: MouseEvent): void {\n if (!this._isMouseBeingUsed) return;\n this.itemStorage.highlightSingleItem(option);\n event.stopPropagation();\n }\n onItemMouseLeave(option: ArdOption, event: MouseEvent): void {\n if (!this._isMouseBeingUsed) return;\n this.itemStorage.unhighlightItem(option);\n event.stopPropagation();\n }\n //! click handlers\n private _isClickedWithin: boolean = false;\n onItemClick(option: ArdOption, event: MouseEvent): void {\n event.stopPropagation();\n if (this.clearable) this.toggleItem(option);\n else this.selectItem(option);\n\n this._isClickedWithin = true;\n }\n onGroupClick(group: ArdOptionGroup): void {\n if (!this.multiselectable || this.noGroupActions) return;\n if (group.children.every(o => o.selected)) {\n this.unselectItem(...group.children);\n return;\n }\n this.selectItem(...group.children);\n\n this._isClickedWithin = true;\n }\n handleClearButtonClick(event: MouseEvent): void {\n event.stopPropagation();\n if (this.searchTerm) {\n this._clearSearch();\n return;\n }\n this._clearAllItems();\n }\n handleDropdownArrowClick(event: MouseEvent): void {\n event.stopPropagation();\n\n this._isClickedWithin = true;\n\n this.toggle();\n }\n handleOutsideClick(event: MouseEvent): void {\n if (!this.isDropdownOpen) return;\n const target = event.target as HTMLElement;\n if (this.element.contains(target)) return;\n\n this.close();\n }\n handleAnywhereClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n if (target.tagName != 'INPUT') {\n event.preventDefault();\n }\n\n this._isClickedWithin = true;\n\n if (!this._searchBarFocused) {\n this.focus();\n }\n\n if (this._searchable) {\n this.open();\n } else {\n this.toggle();\n }\n }\n @HostListener('mouseup')\n onMouseup(): void {\n this._isClickedWithin = false;\n }\n //! dropdown state handlers\n toggle(): void {\n if (this.isDropdownOpen) {\n this.close();\n return;\n }\n this.open();\n }\n open(): void {\n if (this.disabled || this.isDropdownOpen) return;\n\n this.isDropdownOpen = true;\n if (this.autoHighlightFirst) this.itemStorage.highlightFirstItem();\n\n this._createOverlay();\n this.focus();\n\n this.openEvent.emit();\n this.isDropdownOpenChange.emit(this.isDropdownOpen);\n this.detectChanges();\n }\n close(): void {\n if (!this.isDropdownOpen) return;\n\n this.isDropdownOpen = false;\n\n this._destroyOverlay();\n\n this._onTouched();\n this.closeEvent.emit();\n this.isDropdownOpenChange.emit(this.isDropdownOpen);\n this._cd.markForCheck();\n }\n //! ChangeDetectorRef\n detectChanges(): void {\n if (!(<any>this._cd).destroyed) {\n this._cd.detectChanges();\n }\n }\n //! search\n private _clearSearch(suppressSearchEvent: boolean = false): void {\n this._setSearch('', suppressSearchEvent);\n }\n private _setSearch(searchTerm: string, suppressSearchEvent: boolean = false): void {\n this.searchTerm = searchTerm;\n this.filter(searchTerm, suppressSearchEvent);\n }\n private _setSearchInputAttributes() {\n const input = this.searchInput.nativeElement;\n const attributes: { [key: string]: string } = {\n type: 'text',\n autocorrect: 'off',\n autocapitalize: 'off',\n autocomplete: 'off',\n ...this.inputAttrs,\n };\n\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, attributes[key]);\n }\n }\n\n //! key press handlers\n @HostListener('keydown', ['$event'])\n onKeyPress(event: KeyboardEvent): void {\n switch (event.code) {\n case 'Enter': {\n this._onEnterPress(event);\n return;\n }\n case 'Space': {\n this._onSpacePress(event);\n return;\n }\n case 'ArrowDown': {\n this._onArrowDownPress(event);\n return;\n }\n case 'ArrowUp': {\n this._onArrowUpPress(event);\n return;\n }\n case 'Home': {\n this._onHomePress(event);\n return;\n }\n case 'End': {\n this._onEndPress(event);\n return;\n }\n case 'Backspace':\n case 'Delete': {\n this._onBackspaceOrDeletePress(event);\n return;\n }\n case 'KeyA': {\n if (event.ctrlKey) {\n this._onCtrlAPress(event);\n return;\n }\n }\n }\n }\n private async _onEnterPress(event: KeyboardEvent) {\n event.preventDefault();\n let shouldClose = true;\n\n //select the currently highlighted option\n if (this.isDropdownOpen && this.firstHighlightedItem) {\n if (this.clearable && this.itemStorage.highlightedItems.every(item => item.selected)) {\n this.unselectItem(...this.itemStorage.highlightedItems);\n } else {\n this.selectItem(...this.itemStorage.highlightedItems);\n }\n }\n //add a custom option\n else if (this.isDropdownOpen && this.shouldShowAddCustom) {\n await this.addCustomOption(this.searchTerm);\n }\n //in case of no action, open the dropdown (or keep it open)\n else shouldClose = false;\n\n if (!this.keepOpen && shouldClose) {\n this.itemStorage.clearAllHighlights();\n this.close();\n } else {\n this.open();\n }\n }\n private _onSpacePress(event: KeyboardEvent): void {\n if (this.isDropdownOpen) return;\n\n event.preventDefault();\n this.open();\n }\n private _onArrowDownPress(event: KeyboardEvent): void {\n event.preventDefault();\n this.open();\n\n this._isMouseBeingUsed = false;\n\n const recentlyHighlighted = this.itemStorage.highlightNextItem(+1, event.shiftKey);\n if (recentlyHighlighted) {\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\n }\n\n this.dropdownPanel.scrollToRecentlyHighlighted('bottom');\n }\n private _onArrowUpPress(event: KeyboardEvent): void {\n if (!this.isDropdownOpen) return;\n event.preventDefault();\n\n this._isMouseBeingUsed = false;\n\n const recentlyHighlighted = this.itemStorage.highlightNextItem(-1, event.shiftKey);\n if (recentlyHighlighted) {\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\n }\n\n this.dropdownPanel.scrollToRecentlyHighlighted('top');\n }\n private _onHomePress(event: KeyboardEvent): void {\n if (!this.isDropdownOpen || (this.searchInput.nativeElement.selectionEnd != 0 && this.searchInput.nativeElement.selectionStart != 0)) return;\n event.preventDefault();\n\n this._isMouseBeingUsed = false;\n\n const recentlyHighlighted = this.itemStorage.highlightFirstItem();\n if (!recentlyHighlighted) return;\n\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\n this.dropdownPanel.scrollToRecentlyHighlighted('top');\n }\n private _onEndPress(event: KeyboardEvent): void {\n if (\n !this.isDropdownOpen ||\n (this.searchInput.nativeElement.selectionEnd != this.searchTerm.length && this.searchInput.nativeElement.selectionStart != this.searchTerm.length)\n )\n return;\n event.preventDefault();\n\n this._isMouseBeingUsed = false;\n\n const recentlyHighlighted = this.itemStorage.highlightLastItem();\n if (!recentlyHighlighted) return;\n\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\n this.dropdownPanel.scrollToRecentlyHighlighted('bottom');\n }\n private _onBackspaceOrDeletePress(event: KeyboardEvent): void {\n if (this.searchTerm || !this._clearable || this.noBackspaceClear || !this.itemStorage.isAnyItemSelected) return;\n\n event.preventDefault();\n if (this.multiselectable && this.itemStorage.selectedItems.length > 1) {\n this._clearLastItem();\n return;\n }\n this._clearAllItems();\n }\n private _onCtrlAPress(event: KeyboardEvent): void {\n this.itemStorage.highlightAllItems();\n }\n}\n","<ard-form-field-frame\r\n [appearance]=\"appearance\"\r\n [variant]=\"variant\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n>\r\n <div class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected\"\r\n [ngClass]=\"ngClasses\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate let-plhldr>\r\n <div class=\"ard-placeholder\">{{ plhldr }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getPlaceholderContext()\"\r\n ></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"shouldDisplayValue\">\r\n <div class=\"ard-select-value\"\r\n *ngFor=\"let item of itemStorage.selectedItems; let i = index\"\r\n [class.ard-value-disabled]=\"item.disabled\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit(i) ? true : null\"\r\n >\r\n <ng-template *ngIf=\"isValueWithinDisplayLimit(i)\"\r\n [ngTemplateOutlet]=\"valueTemplate || (multiselectable ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"getValueContext(item)\"\r\n ></ng-template>\r\n </div>\r\n\r\n <ng-template #defaultValueTemplate let-item>\r\n <div [ardInnerHTML]=\"item.label\" [ardEscapeInnerHTML]=\"isItemsInputUsed\"></div>\r\n </ng-template>\r\n <ng-template #defaultMultiValueTemplate let-item let-unselect=\"unselect\">\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant\"\r\n compact\r\n appearance=\"outlined-strong\"\r\n >\r\n <div [ardInnerHTML]=\"item.label\" [ardEscapeInnerHTML]=\"isItemsInputUsed\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"itemStorage.isAnyItemSelected && shouldShowItemDisplayLimit\">\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n ></ng-template>\r\n\r\n <ng-template #defaultItemDisplayLimitTemplate let-count=\"overflowCount\">\r\n <div>{{count}} more...</div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n \r\n <div class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isDropdownOpen\"\r\n [attr.aria-owns]=\"isDropdownOpen ? htmlId : null\"\r\n >\r\n <input #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"isInputElementReadonly\"\r\n [disabled]=\"disabled\"\r\n [value]=\"searchTerm\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isDropdownOpen ? htmlId : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur($event)\"\r\n >\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n <ng-container *ngIf=\"isLoading\">\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-simple-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate || defaultLoadingSpinnerTemplate\">\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ard-_clear-button *ngIf=\"shouldShowClearButton\"\r\n [title]=\"clearButtonTitle\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n ></ard-_clear-button>\r\n\r\n <div class=\"ard-dropdown-arrow-wrapper\"\r\n role=\"button\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n >\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n <div class=\"ard-hitbox\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate\"\r\n [footerTemplate]=\"dropdownFooterTemplate\"\r\n [appearance]=\"dropdownAppearance\"\r\n [variant]=\"dropdownVariant\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm\"\r\n [panelId]=\"htmlId\"\r\n [compact]=\"compact\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n <ng-container *ngIf=\"!shouldShowNoItemsFound\">\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n *ngFor=\"let group of itemStorage.groups\"\r\n [class.ard-group-disabled]=\"group.disabled\"\r\n [class.ard-group-selected]=\"group.selected\"\r\n [class.ard-group-highlighted]=\"group.highlighted\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n <ng-container *ngIf=\"group.label !== '' && group.label !== undefined\">\r\n <ng-template #defaultOptgroupTemplate>\r\n <span class=\"ard-optgroup-label\" [ardInnerHTML]=\"group.label\" [ardEscapeInnerHTML]=\"isItemsInputUsed\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"getGroupContext(group)\"\r\n ></ng-template>\r\n </ng-container>\r\n\r\n <div class=\"ard-optgroup-children\">\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n *ngFor=\"let option of group.children\"\r\n [class.ard-option-disabled]=\"option.disabled\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently\"\r\n [attr.aria-selected]=\"option.selected\"\r\n [attr.id]=\"htmlId + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n <span [ardInnerHTML]=\"option.label\" [ardEscapeInnerHTML]=\"isItemsInputUsed\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"shouldShowNoItemsFound\">\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{noItemsFoundText}}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"noItemsFoundTemplate || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\">\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"shouldShowAddCustom\">\r\n <ng-template #defaultAddCustomTemplate let-searchTerm>\r\n <div class=\"ard-option ard-option-highlighted ard-add-custom\" (click)=\"addCustomOption(searchTerm)\">\r\n <span class=\"ard-add-custom-label\">Add option</span>\r\n <span class=\"ard-add-custom-value\">\"{{searchTerm}}\"</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"addCustomTemplate || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\">\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isLoading\">\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{loadingPlaceholderText}}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingPlaceholderTemplate || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\">\r\n </ng-template>\r\n </ng-container>\r\n </ard-dropdown-panel>\r\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ArdiumChipModule } from './../chip/chip.module';\n\nimport { ArdiumClickOutsideEventModule, ArdiumInnerHTMLModule } from '@ardium-ui/devkit';\nimport { ArdiumDropdownPanelModule } from '../dropdown-panel/dropdown-panel.module';\nimport { ArdiumSelectComponent } from './select.component';\nimport {\n ArdAddCustomTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdOptionTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdValueTemplateDirective,\n} from './select.directive';\n\nimport { _ClearButtonModule } from './../_internal/clear-button/clear-button.module';\nimport { ArdiumFormFieldFrameModule } from '../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n imports: [\n CommonModule,\n ArdiumFormFieldFrameModule,\n ArdiumDropdownPanelModule,\n ArdiumChipModule,\n ArdiumClickOutsideEventModule,\n _ClearButtonModule,\n ArdiumInnerHTMLModule,\n ],\n exports: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumOptionComponent } from './option.component';\n\n@NgModule({\n declarations: [ArdiumOptionComponent],\n imports: [CommonModule],\n exports: [ArdiumOptionComponent],\n})\nexport class ArdiumOptionModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ComponentColor } from '../types/colors.types';\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\n\n@Component({\n selector: 'ard-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumSlideToggleComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumSlideToggleComponent extends _BooleanComponentBase implements ControlValueAccessor {\n @Input() wrapperClasses: string = '';\n\n //* appearance\n @Input() color: ComponentColor = ComponentColor.Primary;\n @Input() icon?: string;\n @Input() selectedIcon?: string;\n @Input() unselectedIcon?: string;\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`].join(' ');\n }\n}\n","<button\r\n class=\"ard-slide-toggle\"\r\n role=\"checkbox\"\r\n [tabindex]=\"tabIndex\"\r\n [class.ard-slide-toggle-selected]=\"selected\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slide-toggle-track\">\r\n <div class=\"ard-slide-toggle-track-overlay\"></div>\r\n </div>\r\n <div class=\"ard-slide-toggle-handle\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-selected\" *ngIf=\"selectedIcon ?? icon\">{{selectedIcon ?? icon}}</div>\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-unselected\" *ngIf=\"unselectedIcon ?? icon\">{{unselectedIcon ?? icon}}</div>\r\n </div>\r\n</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSlideToggleComponent } from './slide-toggle.component';\n\n@NgModule({\n declarations: [ArdiumSlideToggleComponent],\n imports: [CommonModule],\n exports: [ArdiumSlideToggleComponent],\n})\nexport class ArdiumSlideToggleModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { SliderTooltipContext } from './slider.types';\n\n@Directive({\n selector: 'ng-template[ard-slider-tooltip-tmp]',\n})\nexport class ArdSliderTooltipDirective {\n constructor(public template: TemplateRef<SliderTooltipContext>) {}\n}\n","export type SliderTooltipContext = {\n value: string | number;\n $implicit: string | number;\n};\n\nexport const SliderTooltipBehavior = {\n Always: 'always',\n Auto: 'auto',\n Never: 'never',\n} as const;\nexport type SliderTooltipBehavior = (typeof SliderTooltipBehavior)[keyof typeof SliderTooltipBehavior];\n\nexport const SliderDecorationPosition = {\n Top: 'top',\n Bottom: 'bottom',\n} as const;\nexport type SliderDecorationPosition = (typeof SliderDecorationPosition)[keyof typeof SliderDecorationPosition];\n\nexport type SliderLabelObject = {\n label: string | number;\n for: number;\n};\nexport type _InternalSliderLabelObject = {\n label: string;\n positionPercent: string;\n};\n\nexport type SliderRange<T = number> = {\n low: T;\n high: T;\n};\n\nexport type SliderTooltipFormatFn = (value: number) => string | number;\n","import { Overlay, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { roundToMultiple, roundToPrecision } from 'more-rounding';\nimport { isDefined, isObject } from 'simple-bool';\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\nimport { SimpleComponentColor } from '../types/colors.types';\nimport { ArdSliderTooltipDirective } from './slider.directive';\nimport { SliderDecorationPosition, SliderLabelObject, SliderTooltipBehavior, SliderTooltipFormatFn, _InternalSliderLabelObject } from './slider.types';\n\n@Directive()\nexport abstract class _AbstractSlider<T> extends _NgModelComponentBase {\n @ViewChild('track')\n public readonly element!: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(DOCUMENT) protected document: Document,\n protected renderer: Renderer2,\n protected overlay: Overlay,\n protected scrollStrategyOpts: ScrollStrategyOptions,\n protected viewContainerRef: ViewContainerRef\n ) {\n super();\n }\n\n private _noTooltip: boolean = false;\n @Input()\n get noTooltip(): boolean {\n return this._noTooltip;\n }\n set noTooltip(v: any) {\n this._noTooltip = coerceBooleanProperty(v);\n }\n\n @Input() tooltipFormat?: SliderTooltipFormatFn;\n\n protected abstract _updateTooltipValue(): void;\n\n //! min, max, step sizes\n protected _min: number = 0;\n @Input()\n get min(): number {\n return this._min;\n }\n set min(v: any) {\n this._min = coerceNumberProperty(v, 0);\n this._updateComputedStepSizes();\n this._updateTickArray();\n }\n protected _max: number = 100;\n @Input()\n get max(): number {\n return this._max;\n }\n set max(v: any) {\n this._max = coerceNumberProperty(v, 100);\n this._updateComputedStepSizes();\n this._updateTickArray();\n }\n protected _step: number = 1;\n @Input()\n get step(): number {\n return this._step;\n }\n set step(v: any) {\n this._step = coerceNumberProperty(v, 0.5);\n if (this._step <= 0) {\n throw new Error('Cannot use negative or zero step size for a slider.');\n }\n this._updateComputedStepSizes();\n this._updateTickArray();\n }\n protected _shiftMultiplier: number = 5;\n @Input()\n get shiftMultiplier(): number {\n return this._shiftMultiplier;\n }\n set shiftMultiplier(v: any) {\n this._shiftMultiplier = coerceNumberProperty(v, 1);\n }\n\n protected _stepSizeComputed: number = this._updateComputedStepSizes();\n protected _updateComputedStepSizes(): number {\n const minMaxDifference = Math.abs(this._min - this._max);\n this._stepSizeComputed = this._step / minMaxDifference;\n return this._stepSizeComputed;\n }\n\n //! value ticks\n protected _showValueTicks: boolean = false;\n @Input()\n get showValueTicks(): boolean {\n return this._showValueTicks;\n }\n set showValueTicks(v: any) {\n this._showValueTicks = coerceBooleanProperty(v);\n }\n\n get percentStepSize(): number {\n return this._stepSizeComputed * 100;\n }\n protected _tickArray: string[] = this._updateTickArray();\n protected _updateTickArray(): string[] {\n let newArr: number[] = [];\n let positionPercentCumulative: number = 0;\n\n while (positionPercentCumulative < 100) {\n newArr.push(positionPercentCumulative);\n positionPercentCumulative += this._stepSizeComputed * 100;\n positionPercentCumulative = roundToPrecision(positionPercentCumulative, 6);\n }\n newArr.push(100);\n\n let stringArr = newArr.map(v => `${v}%`);\n\n this._tickArray = stringArr;\n return stringArr;\n }\n get tickArray(): string[] {\n return this._tickArray;\n }\n\n //! labels\n @Input() labelPosition: SliderDecorationPosition = SliderDecorationPosition.Bottom;\n public labelObjects: _InternalSliderLabelObject[] = [];\n @Input()\n set labels(val: SliderLabelObject[] | number[] | null) {\n if (!isDefined(val) || val.length == 0) {\n this.labelObjects = [];\n return;\n }\n this.labelObjects = val.map(this._numberLabelArrayMapFn).map(label => {\n let v = this._clampValue(label.for);\n return {\n label: String(label.label),\n positionPercent: `${this._valueToPercent(v) * 100}%`,\n };\n });\n }\n protected _numberLabelArrayMapFn(val: SliderLabelObject | number): SliderLabelObject {\n if (isObject(val)) return val;\n return {\n label: val,\n for: val,\n };\n }\n\n //! appearance\n @Input() color: SimpleComponentColor = SimpleComponentColor.Primary;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`, `ard-labels-${this.labelPosition}`, `ard-tooltip-${this.tooltipPosition}`, this.compact ? 'ard-compact' : ''].join(\n ' '\n );\n }\n\n //! determining transition\n get sliderTransition(): string {\n const x = this._totalSteps;\n //this is determined using this graph: https://www.geogebra.org/calculator/nqgnhpap\n //capped at y=80\n const formulaResult = (20 * (x + 200)) / (x + 20) - 80;\n const formulaResultRounded = roundToPrecision(formulaResult, 3);\n\n if (formulaResultRounded < 0) return '0';\n\n const transitionDuration = Math.min(80, formulaResultRounded);\n return transitionDuration + 'ms';\n }\n private get _totalSteps(): number {\n return (this.max - this.min) / this.step;\n }\n\n //! value input & output\n //! abstract here\n protected abstract _value: T;\n @Input()\n set value(newValue: T) {\n this.writeValue(newValue);\n }\n get value(): T {\n return this._value;\n }\n @Output() valueChange = new EventEmitter<T>();\n\n //! writeValue\n //! abstract here\n abstract override writeValue(v: any): void; //* abstact\n //! methods for programmatic manipulation\n abstract reset(): void;\n\n protected _offset(offset: number, hasShift: boolean, handleId: number = 1): void {\n let stepSize = this._stepSizeComputed * (hasShift ? this._shiftMultiplier : 1);\n let newPercent = this._positionPercent[handleId - 1] + stepSize * offset;\n newPercent = this._clampPercentValue(newPercent);\n this._setValueFromPercent(newPercent);\n }\n\n //! helper methods\n protected _clampValue(v: number): number {\n //clamp between min and max\n v = Math.min(v, this._max);\n v = Math.max(v, this._min);\n //round to the nearest step\n v -= this._min;\n v = roundToMultiple(v, this._step);\n v += this._min;\n return v;\n }\n protected _valueToPercent(v: number): number {\n const minMaxDifference = Math.abs(this._min - this._max);\n return (v - this._min) / minMaxDifference;\n }\n protected _emitChange(): void {\n let v = this.value;\n this._onChangeRegistered?.(v);\n this.valueChange.emit(v);\n }\n\n //! tooltip\n @ContentChild(ArdSliderTooltipDirective, { read: TemplateRef })\n tooltipTemplate?: TemplateRef<any>;\n\n @Input() tooltipPosition: SliderDecorationPosition = SliderDecorationPosition.Top;\n\n private _tooltipBehavior: SliderTooltipBehavior = SliderTooltipBehavior.Auto;\n @Input()\n set tooltipBehavior(v: SliderTooltipBehavior) {\n this._tooltipBehavior = v;\n }\n get tooltipBehavior(): SliderTooltipBehavior {\n return this._tooltipBehavior;\n }\n\n //! event handlers\n protected _isGrabbed: number = 0;\n protected _shouldCheckForMovement: boolean = false;\n protected _bodyHasClass: boolean = false;\n\n get isSliderHandleGrabbed(): boolean {\n return this._isGrabbed != 0;\n }\n abstract onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void; //* abstact\n\n onPointerDownOnHandle(event: MouseEvent | TouchEvent, handleId: number = 1): void {\n this._isGrabbed = handleId;\n this._shouldCheckForMovement = true;\n if (!this._bodyHasClass) {\n this._bodyHasClass = true;\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\n }\n }\n\n abstract onPointerMove(event: MouseEvent | TouchEvent): void; //* abstact\n\n @HostListener('document:pointerup', ['$event'])\n @HostListener('document:touchend', ['$event'])\n onPointerUp(event: MouseEvent | TouchEvent): void {\n if (!this._shouldCheckForMovement) return;\n this._isGrabbed = 0;\n this._shouldCheckForMovement = false;\n if (this._bodyHasClass) {\n this._bodyHasClass = false;\n this.renderer.removeClass(this.document.body, 'ard-prevent-touch-actions');\n }\n }\n\n //! position calculators\n protected _positionPercent: [number] | [number, number] = [0];\n getHandlePosition(handleId: number = 1): string {\n return this._positionPercent[handleId - 1] * 100 + '%';\n }\n protected _setValueFromPercent(percent: number, handleId: number = 1): void {\n if (this._positionPercent[handleId - 1] == percent) return;\n this._positionPercent[handleId - 1] = percent;\n this._value = this._percentValueToValue(percent, handleId);\n\n this._updateTooltipValue();\n\n this._emitChange();\n }\n protected _writeValueFromEvent(event: MouseEvent | TouchEvent, handleId?: number): void {\n let percent = this._getPercentValueFromEvent(event);\n this._setValueFromPercent(percent, handleId);\n }\n protected abstract _percentValueToValue(percent: number, handleId?: number): T; //* abstact\n\n protected _getElementRect(): DOMRect {\n return this.element.nativeElement.getBoundingClientRect();\n }\n protected _clampPercentValue(percent: number): number {\n //clamp between 0 and 1\n percent = Math.min(percent, 1);\n percent = Math.max(percent, 0);\n //round to the nearest step\n percent = roundToMultiple(percent, this._stepSizeComputed);\n return percent;\n }\n protected _getPercentValueFromEvent(event: MouseEvent | TouchEvent): number {\n const rect = this._getElementRect();\n let position: number;\n if (event instanceof MouseEvent) {\n position = event.clientX;\n } else {\n position = event.targetTouches[0].clientX;\n }\n let percent = (position - rect.left) / rect.width;\n return this._clampPercentValue(percent);\n }\n //! key press handlers\n @HostListener('keydown', ['$event'])\n onKeyPress(event: KeyboardEvent): void {\n switch (event.code) {\n case 'ArrowLeft': {\n this._decrement(event);\n return;\n }\n case 'ArrowRight': {\n this._increment(event);\n return;\n }\n }\n }\n protected _decrement(event: KeyboardEvent, steps: number = 1): void {\n this._offset(-steps, event.shiftKey);\n }\n protected _increment(event: KeyboardEvent, steps: number = 1): void {\n this._offset(+steps, event.shiftKey);\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, HostListener, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { roundToPrecision } from 'more-rounding';\nimport { _AbstractSlider } from './abstract-slider';\nimport { SliderTooltipContext } from './slider.types';\n\n@Component({\n selector: 'ard-slider',\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumSliderComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumSliderComponent extends _AbstractSlider<number> {\n //! value input & output\n protected _value: number = 0;\n\n //! tooltip updater\n _tooltipValue: string = String(this.value);\n\n protected _updateTooltipValue(): void {\n let v: string | number = this._value;\n if (this.tooltipFormat) v = this.tooltipFormat(v);\n this._tooltipValue = String(v);\n }\n\n getTooltipContext(): SliderTooltipContext {\n return {\n value: this._tooltipValue,\n $implicit: this._tooltipValue,\n };\n }\n\n //! writeValue\n writeValue(v: any): void {\n v = Number(v);\n if (isNaN(v)) {\n this.reset();\n return;\n }\n v = this._clampValue(v);\n this._value = v;\n this._positionPercent[0] = this._valueToPercent(v);\n this._updateTooltipValue();\n }\n\n //! methods for programmatic manipulation\n reset(): void {\n this._value = 0;\n this._positionPercent[0] = 0;\n }\n increment(steps: number = 1): void {\n this._offset(steps, false);\n }\n decrement(steps: number = 1): void {\n this._offset(-steps, false);\n }\n\n //! event handlers\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\n this._writeValueFromEvent(event);\n this.onPointerDownOnHandle(event);\n }\n @HostListener('document:mousemove', ['$event'])\n @HostListener('document:touchmove', ['$event'])\n onPointerMove(event: MouseEvent | TouchEvent): void {\n if (!this._shouldCheckForMovement) return;\n this._writeValueFromEvent(event);\n }\n\n //! position calculators\n protected _percentValueToValue(percent: number): number {\n const minMaxDifference = Math.abs(this._min - this._max);\n const newVal = percent * minMaxDifference + this._min;\n //round to 9 decimal places to avoid floating point arithmetic errors\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\n return roundToPrecision(newVal, 9);\n }\n}\n","<div class=\"ard-slider-container-master\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed\"\r\n [style]=\"{'--_ard-slider-transition': sliderTransition }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-active\" [style]=\"{width: getHandlePosition(1)}\"></div>\r\n <div class=\"ard-value-tick-container\" *ngIf=\"showValueTicks\">\r\n <div class=\"ard-value-tick\" *ngFor=\"let left of tickArray\" [style]=\"{left: left}\"></div>\r\n </div>\r\n </div>\r\n <button #focusableElement\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed\"\r\n (pointerdown)=\"onPointerDownOnHandle($event)\"\r\n (touchstart)=\"onPointerDownOnHandle($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{left: getHandlePosition(1)}\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n <div class=\"ard-slider-tooltip-wrapper\"\r\n *ngIf=\"tooltipBehavior != 'never'\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior == 'always'\"\r\n [style]=\"{left: getHandlePosition(1)}\"\r\n >\r\n <ng-template #defaultTooltipTemplate let-value>\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n \r\n <ng-template [ngTemplateOutlet]=\"tooltipTemplate || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext()\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"ard-slider-label-container\" *ngIf=\"labelObjects.length\">\r\n <div\r\n *ngFor=\"let label of labelObjects\"\r\n class=\"ard-slider-label\"\r\n [style]=\"{left: label.positionPercent}\"\r\n >{{ label.label }}</div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSliderComponent } from './slider.component';\nimport { ArdSliderTooltipDirective } from './slider.directive';\nimport { Overlay, OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n declarations: [ArdiumSliderComponent, ArdSliderTooltipDirective],\n imports: [CommonModule, OverlayModule],\n exports: [ArdiumSliderComponent, ArdSliderTooltipDirective],\n})\nexport class ArdiumSliderModule {}\n","import { ChangeDetectionStrategy, Component, HostListener, OnInit, ViewEncapsulation } from '@angular/core';\nimport { roundToPrecision } from 'more-rounding';\nimport { isNumber, isObject } from 'simple-bool';\nimport { _AbstractSlider } from '../abstract-slider';\nimport { SliderRange, SliderTooltipContext } from '../slider.types';\nimport { isDefined } from 'simple-bool';\n\n@Component({\n selector: 'ard-range-slider',\n templateUrl: './range-slider.component.html',\n styleUrls: ['./range-slider.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumRangeSliderComponent extends _AbstractSlider<SliderRange> implements OnInit {\n protected _value: SliderRange = { low: -Infinity, high: Infinity };\n\n ngOnInit(): void {\n if (this._value.low != -Infinity && this._value.high != Infinity) return;\n\n this.writeValue({ low: this._min, high: this._max });\n }\n\n //! writeValue\n private _isValidObject(v: any): v is SliderRange {\n return isObject(v) && isNumber(v['low']) && isNumber(v['high']);\n }\n private _isValidTuple(v: any): v is [number, number] {\n return Array.isArray(v) && isNumber(v[0]) && isNumber(v[1]) && v.length == 2;\n }\n private _arrayValueToObjectValue(v: [number, number]): SliderRange {\n return { low: v[0], high: v[1] };\n }\n private _normalizeSliderRange(v: SliderRange): SliderRange {\n if (v.low <= v.high) return v;\n return { low: v.high, high: v.low };\n }\n writeValue(v: any): void {\n if (!this._isValidObject(v) && !this._isValidTuple(v)) {\n this.reset();\n return;\n }\n let low: number = -Infinity;\n let high: number = Infinity;\n if (this._isValidObject(v)) {\n low = v.low;\n high = v.high;\n } else if (this._isValidTuple(v)) {\n low = v[0];\n high = v[1];\n }\n let lowClamped = this._clampValue(low);\n let highClamped = this._clampValue(high);\n let value: SliderRange = this._arrayValueToObjectValue([lowClamped, highClamped]);\n this._value = value;\n this._positionPercent[0] = this._valueToPercent(lowClamped);\n this._positionPercent[1] = this._valueToPercent(highClamped);\n this._updateTooltipValue();\n }\n override get value(): SliderRange {\n return this._normalizeSliderRange(this._value);\n }\n override set value(v: any) {\n this.writeValue(v);\n }\n\n //! tooltip updater\n _tooltipValue: SliderRange<string | number> = this.value;\n\n protected _updateTooltipValue(): void {\n let v: SliderRange<string | number> = Object.create(this._value);\n if (this.tooltipFormat) {\n v.low = this.tooltipFormat(v.low as number);\n v.high = this.tooltipFormat(v.high as number);\n }\n this._tooltipValue = v;\n }\n\n getTooltipContext(type: 'low' | 'high'): SliderTooltipContext {\n return {\n value: this._tooltipValue[type],\n $implicit: this._tooltipValue[type],\n };\n }\n\n //! methods for programmatic manipulation\n reset(): void {\n this._value = { low: -Infinity, high: Infinity };\n this._positionPercent[0] = 0;\n this._positionPercent[1] = 1;\n }\n\n //! track overlay getters\n get trackOverlayLeft(): string {\n return Math.min(...this._positionPercent) * 100 + '%';\n }\n get trackOverlayWidth(): string {\n return Math.abs(this._positionPercent[0] - this._positionPercent[1]!) * 100 + '%';\n }\n\n //! event handlers\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\n this._writeValueFromEvent(event);\n this.onPointerDownOnHandle(event);\n }\n @HostListener('document:mousemove', ['$event'])\n @HostListener('document:touchmove', ['$event'])\n onPointerMove(event: MouseEvent | TouchEvent): void {\n if (!this._shouldCheckForMovement) return;\n if (!this._bodyHasClass) {\n this._bodyHasClass = true;\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\n }\n this._writeValueFromEvent(event, this._isGrabbed);\n }\n\n //! position calculators\n protected _percentValueToValue(percent: number, handleId: number): SliderRange {\n const minMaxDifference = Math.abs(this._min - this._max);\n let newVal = percent * minMaxDifference + this._min;\n //round to 9 decimal places to avoid floating point arithmetic errors\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\n newVal = roundToPrecision(newVal, 9);\n\n const newValObj = { low: this._value.low, high: this._value.high };\n if (handleId == 1) {\n newValObj.low = newVal;\n } else {\n newValObj.high = newVal;\n }\n return newValObj;\n }\n\n //! handle focus monitors\n currentHandle: 1 | 2 | null = null;\n onHandleFocus(event: FocusEvent, handleId: 1 | 2) {\n this.onFocus(event);\n\n this.currentHandle = handleId;\n }\n override onBlur(event: FocusEvent) {\n super.onBlur(event);\n this.currentHandle = null;\n }\n}\n","<div class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed\"\r\n [style]=\"{'--_ard-slider-transition': sliderTransition }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div \r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft,\r\n width: trackOverlayWidth\r\n }\"\r\n ></div>\r\n <div class=\"ard-value-tick-container\" *ngIf=\"showValueTicks\">\r\n <div class=\"ard-value-tick\" *ngFor=\"let left of tickArray\" [style]=\"{left: left}\"></div>\r\n </div>\r\n </div>\r\n <button #focusableElement\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed && currentHandle == 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{left: getHandlePosition(1)}\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n <div class=\"ard-slider-tooltip-wrapper\"\r\n *ngIf=\"tooltipBehavior != 'never'\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior == 'always'\"\r\n [style]=\"{left: getHandlePosition(1)}\"\r\n >\r\n <ng-template #defaultTooltipTemplate let-value>\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n \r\n <ng-template [ngTemplateOutlet]=\"tooltipTemplate || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('low')\">\r\n </ng-template>\r\n </div>\r\n <button\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed && currentHandle == 2\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 2)\"\r\n (focus)=\"onHandleFocus($event, 2)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{left: getHandlePosition(2)}\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n <div class=\"ard-slider-tooltip-wrapper\"\r\n *ngIf=\"tooltipBehavior != 'never'\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior == 'always'\"\r\n [style]=\"{left: getHandlePosition(2)}\"\r\n >\r\n <ng-template #defaultTooltipTemplate let-value>\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n \r\n <ng-template [ngTemplateOutlet]=\"tooltipTemplate || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('high')\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"ard-slider-label-container\" *ngIf=\"labelObjects.length\">\r\n <div\r\n *ngFor=\"let label of labelObjects\"\r\n class=\"ard-slider-label\"\r\n [style]=\"{left: label.positionPercent}\"\r\n >{{ label.label }}</div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #handleThumbBase>\r\n <div class=\"ard-slide-thumb\">Test</div>\r\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumRangeSliderComponent } from './range-slider.component';\n\n@NgModule({\n declarations: [ArdiumRangeSliderComponent],\n imports: [CommonModule],\n exports: [ArdiumRangeSliderComponent],\n})\nexport class ArdiumRangeSliderModule {}\n","import { SimpleComponentColor } from '../types/colors.types';\n\nexport const StarFillMode = {\n /**\n * The star is not filled, just an outline.\n */\n None: 'none',\n /**\n * Half of the star is filled.\n */\n Half: 'half',\n /**\n * The star is fully filled.\n */\n Filled: 'filled',\n} as const;\nexport type StarFillMode = (typeof StarFillMode)[keyof typeof StarFillMode];\n\nexport const StarColor = {\n ...SimpleComponentColor,\n /**\n * THe app's color set for all stars. Usually gold or yellow-gold.\n */\n Star: 'star',\n} as const;\nexport type StarColor = (typeof StarColor)[keyof typeof StarColor];\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { StarColor, StarFillMode } from './star.types';\n\n@Component({\n selector: 'ard-star',\n templateUrl: './star.component.html',\n styleUrls: ['./star.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumStarComponent {\n @Input() wrapperClasses: string = '';\n @Input() fill: StarFillMode = StarFillMode.Filled;\n\n //* appearance\n @Input() color: StarColor = StarColor.Star;\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`, `ard-star-fill-${this.fill}`].join(' ');\n }\n}\n","<div\r\n class=\"ard-star\"\r\n [class]=\"wrapperClasses\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-star-icon ard-star-selected\"></div>\r\n <div class=\"ard-star-icon ard-star-half\"></div>\r\n <div class=\"ard-star-icon ard-star-unselected\"></div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarComponent } from './star.component';\n\n@NgModule({\n declarations: [ArdiumStarComponent],\n imports: [CommonModule],\n exports: [ArdiumStarComponent],\n})\nexport class ArdiumStarModule {}\n","export const ClickStrategy = {\n None: 'none',\n Default: 'default',\n} as const;\nexport type ClickStrategy = (typeof ClickStrategy)[keyof typeof ClickStrategy];\n\n/**\n * Represents an array type that must contain at least one element.\n *\n * @template T - The type of elements in the array.\n */\nexport type NonEmptyArray<T> = [T, ...T[]];\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ClickStrategy } from '../../types/utility.types';\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\nimport { StarColor } from '../star.types';\nimport { StarFillMode } from './../star.types';\n\n@Component({\n selector: 'ard-star-button',\n templateUrl: './star-button.component.html',\n styleUrls: ['./star-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumStarButtonComponent extends _BooleanComponentBase implements ControlValueAccessor {\n @Input() wrapperClasses: string = '';\n @Input() clickStrategy: ClickStrategy = ClickStrategy.Default;\n\n //* appearance\n @Input() color: StarColor = StarColor.Star;\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`].join(' ');\n }\n\n get starFillState(): StarFillMode {\n return this.selected ? 'filled' : 'none';\n }\n\n onClick(): void {\n if (this.clickStrategy == 'none') return;\n this.toggleSelected();\n }\n}\n","<button #focusableElement\r\n class=\"ard-star-button\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n (click)=\"onClick()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-star [fill]=\"starFillState\" [color]=\"color\"></ard-star>\r\n</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarButtonComponent } from './star-button.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarButtonComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarButtonComponent],\n})\nexport class ArdiumStarButtonModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { isArray } from 'simple-bool';\nimport { StarColor, StarFillMode } from './../star.types';\n\n@Component({\n selector: 'ard-star-display',\n templateUrl: './star-display.component.html',\n styleUrls: ['./star-display.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumStarDisplayComponent implements OnChanges {\n @Input() wrapperClasses: string = '';\n\n //* appearance\n @Input() color: StarColor = StarColor.Star;\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`].join(' ');\n }\n\n //* stars\n starArray: StarFillMode[] = this.setStarArrayFromNumber(0);\n @Input() max: number = 5;\n @Input() value: number | StarFillMode[] = 0;\n\n setStarArrayFromArray(starArr: StarFillMode[]): void {\n this.starArray = [...starArr];\n while (this.starArray.length < this.max) {\n this.starArray.push('none');\n }\n }\n setStarArrayFromNumber(stars: number): StarFillMode[] {\n this.starArray = [];\n while (this.starArray.length < this.max) {\n if (stars >= 1) {\n this.starArray.push('filled');\n } else if (Math.round(stars) == 1) {\n this.starArray.push('half');\n } else {\n this.starArray.push('none');\n }\n stars--;\n }\n return this.starArray;\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['max'] || changes['value']) {\n if (isArray(this.value)) {\n this.setStarArrayFromArray(this.value);\n } else this.setStarArrayFromNumber(this.value);\n }\n }\n}\n","<div class=\"ard-star-display\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n>\r\n <ard-star\r\n *ngFor=\"let fillMode of starArray\"\r\n [fill]=\"fillMode\"\r\n [color]=\"color\"\r\n ></ard-star>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarDisplayComponent } from './star-display.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarDisplayComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarDisplayComponent],\n})\nexport class ArdiumStarDisplayModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n HostListener,\n ViewEncapsulation,\n ViewChildren,\n ElementRef,\n QueryList,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ArdiumStarButtonComponent } from '../star-button/star-button.component';\nimport { _NgModelComponentBase } from './../../_internal/ngmodel-component';\nimport { StarColor } from './../star.types';\n\ntype StarInputObject = {\n filled: boolean;\n isInValue: boolean;\n};\n\n@Component({\n selector: 'ard-star-input',\n templateUrl: './star-input.component.html',\n styleUrls: ['./star-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumStarInputComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumStarInputComponent extends _NgModelComponentBase implements OnChanges, ControlValueAccessor {\n @Input() wrapperClasses: string = '';\n\n //* appearance\n @Input() color: StarColor = StarColor.Star;\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`].join(' ');\n }\n\n @ViewChildren('starButton')\n starButtonInstances!: QueryList<ArdiumStarButtonComponent>;\n\n //* events\n @Output('change') changeEvent = new EventEmitter<number>();\n @Output('highlight') highlightEvent = new EventEmitter<number>();\n\n @Input() value: number = 0;\n @Output() valueChange = new EventEmitter<number>();\n\n //* stars\n @Input() max: number = 5;\n starArray: StarInputObject[] = this.createFirstStarArray();\n\n setStarArrayFromNumber(targetIndex: number): void {\n targetIndex = Math.round(targetIndex);\n this.starArray.forEach((v, i) => {\n if (i < targetIndex) {\n v.filled = true;\n v.isInValue = true;\n } else if (i < this.value) {\n v.filled = false;\n v.isInValue = true;\n } else {\n v.filled = false;\n v.isInValue = false;\n }\n });\n }\n createFirstStarArray(): StarInputObject[] {\n let arr = new Array(this.max);\n for (let i = 0; i < this.max; i++) {\n arr[i] = { filled: false, isInValue: false };\n }\n return arr;\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['max']) {\n this.starArray = this.createFirstStarArray();\n }\n if (changes['value']) {\n this.setStarArrayFromNumber(this.value);\n }\n }\n //* implement ControlValueAccessor's writeValue\n writeValue(v: number): void {\n this.setStarArrayFromNumber(v);\n }\n onStarClick(index: number): void {\n this.value = index + 1;\n this.setStarArrayFromNumber(this.value);\n this._emitChange();\n }\n private _currentHoverIndex: number | null = null;\n onStarHighlight(index: number): void {\n if (this._currentHoverIndex == index) return;\n this._currentHoverIndex = index;\n this.setStarArrayFromNumber(index + 1);\n this.highlightEvent.emit(index + 1);\n }\n setDisplayToValue() {\n this._currentHoverIndex = null;\n this.setStarArrayFromNumber(this.value);\n }\n protected _emitChange(): void {\n this._onChangeRegistered?.(this.value);\n this.changeEvent.emit(this.value);\n this.valueChange.emit(this.value);\n }\n\n //* focus handlers\n private _isFocusEventSuppressed: boolean = false;\n private _isBlurEventSuppressed: boolean = false;\n private _wasComponentBlurred: boolean = true;\n private _currentFocusIndex: number | null = null;\n onStarButtonFocus(index: number) {\n this._currentFocusIndex = index;\n this._wasComponentBlurred = false;\n if (this._isFocusEventSuppressed) {\n this._isFocusEventSuppressed = false;\n return;\n }\n this.focusEvent.emit();\n }\n onStarButtonBlur(): void {\n this._currentFocusIndex = null;\n if (this._isBlurEventSuppressed) {\n this._isBlurEventSuppressed = false;\n return;\n }\n this._wasComponentBlurred = true;\n this.blurEvent.emit();\n }\n focusStarButtonByIndex(index: number): void {\n if (!this.starButtonInstances) return;\n this.starButtonInstances.get(index)!.focus();\n }\n focusNextStarButton(offset: number): void {\n if (!this.starButtonInstances || this._currentFocusIndex == null) return;\n\n let nextIndex = this._currentFocusIndex + offset;\n nextIndex = Math.min(nextIndex, this.max - 1);\n nextIndex = Math.max(nextIndex, 0);\n\n this.focusStarButtonByIndex(nextIndex);\n }\n private _suppressFocusEvents(): void {\n this._isFocusEventSuppressed = true;\n this._isBlurEventSuppressed = true;\n }\n\n override focus(): void {\n this.focusStarButtonByIndex(0);\n }\n override blur(): void {\n if (!this.starButtonInstances || this._currentFocusIndex == null) return;\n this.starButtonInstances.get(this._currentFocusIndex)!.blur();\n }\n\n //* key press handlers\n @HostListener('keydown', ['$event'])\n onKeyPress(event: KeyboardEvent): void {\n switch (event.code) {\n case 'Tab': {\n this._onTabPress(event);\n return;\n }\n case 'ArrowRight': {\n this._onArrowRightPress(event);\n return;\n }\n case 'ArrowLeft': {\n this._onArrowLeftPress(event);\n return;\n }\n case 'Home': {\n this._onHomePress(event);\n return;\n }\n case 'End': {\n this._onEndPress(event);\n return;\n }\n }\n }\n private _onArrowRightPress(event: KeyboardEvent): void {\n event.preventDefault();\n this._suppressFocusEvents();\n this.focusNextStarButton(+1);\n }\n private _onArrowLeftPress(event: KeyboardEvent): void {\n event.preventDefault();\n this._suppressFocusEvents();\n this.focusNextStarButton(-1);\n }\n private _onHomePress(event: KeyboardEvent): void {\n event.preventDefault();\n this._suppressFocusEvents();\n this.focusStarButtonByIndex(0);\n }\n private _onEndPress(event: KeyboardEvent): void {\n event.preventDefault();\n this._suppressFocusEvents();\n this._onTabPress(event);\n }\n private _onTabPress(event: KeyboardEvent): void {\n this.focusStarButtonByIndex(this.max - 1);\n }\n}\n","<div class=\"ard-star-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n (mouseleave)=\"setDisplayToValue()\"\r\n>\r\n <ard-star-button\r\n *ngFor=\"let object of starArray; let index = index\"\r\n #starButton\r\n [class.ard-star-not-in-value]=\"!(object.isInValue)\"\r\n [color]=\"object.isInValue ? color : 'none'\"\r\n clickStrategy=\"none\"\r\n [selected]=\"object.filled\"\r\n (click)=\"onStarClick(index)\"\r\n (focus)=\"onStarButtonFocus(index)\"\r\n (blur)=\"onStarButtonBlur()\"\r\n (mouseenter)=\"onStarHighlight(index)\"\r\n [tabIndex]=\"tabIndex\"\r\n ></ard-star-button>\r\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumStarButtonModule } from '../star-button/star-button.module';\nimport { ArdiumStarInputComponent } from './star-input.component';\n\n@NgModule({\n declarations: [ArdiumStarInputComponent],\n imports: [CommonModule, ArdiumStarButtonModule],\n exports: [ArdiumStarInputComponent],\n})\nexport class ArdiumStarInputModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { _NgModelComponentBase } from './../_internal/ngmodel-component';\nimport { StateboxState, StateboxValue, _StateboxInternalState } from './statebox.types';\nimport { ArdiumStarButtonComponent } from './../star/star-button/star-button.component';\n\nconst defaultStateboxStates: StateboxState[] = [\n { value: false, color: 'none' },\n { value: true, color: 'secondary', icon: 'check', fillMode: true },\n];\n\n@Component({\n selector: 'ard-statebox',\n templateUrl: './statebox.component.html',\n styleUrls: ['./statebox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumStateboxComponent extends _NgModelComponentBase implements ControlValueAccessor, OnChanges {\n _states: _StateboxInternalState[] = defaultStateboxStates.map(this._stateMapFn);\n @Input() states?: StateboxState[];\n\n @Input() manualStateHandling: boolean = false;\n\n @Input() wrapperClasses: string = '';\n\n get ngClasses(): string {\n return [\n this.currState.useCustomColor ? 'ard-color-custom' : `ard-color-${this.currState.color}`,\n this.currState.fillMode ? 'ard-statebox-filled' : '',\n this.currState.keepFrame ? 'ard-statebox-keep-frame' : '',\n ].join(' ');\n }\n\n //* events\n @Output('change') changeEvent = new EventEmitter<StateboxValue>();\n @Output('click') clickEvent = new EventEmitter<MouseEvent>();\n\n //* state handlers\n private _state: _StateboxInternalState = this.defaultState;\n private _stateIndex: number = 0;\n @Input()\n set state(v: StateboxValue) {\n this.writeValue(v);\n }\n get state(): StateboxValue {\n return this._state.value;\n }\n @Output() stateChange = new EventEmitter<StateboxValue>();\n\n writeValue(v: StateboxValue) {\n for (let i = 0; i < this._states.length; i++) {\n const state = this._states[i];\n if (state.value === v) {\n this._state = state;\n this._stateIndex = i;\n return;\n }\n }\n this._state = this.defaultState;\n this._stateIndex = 0;\n }\n\n //* change handlers\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['states']) {\n const newVal = changes['states'].currentValue as StateboxState[];\n this._states = newVal.map(this._stateMapFn);\n this.writeValue(this._state.value);\n }\n if (changes['state']?.firstChange) {\n this.writeValue(changes['state'].currentValue);\n }\n }\n private _stateMapFn(state: StateboxState): _StateboxInternalState {\n let display: string;\n let displayAsIcon = false;\n let keepFrame = true;\n if (state.icon) {\n display = state.icon;\n displayAsIcon = true;\n let keepFrame = false;\n } else if (state.character) {\n display = state.character.substring(0, 1);\n } else {\n display = '';\n }\n return {\n value: state.value,\n display,\n displayAsIcon,\n color: state.color ?? state.customColor ?? 'none',\n useCustomColor: state.color ? false : true,\n colorOnCustomColor: state.colorOnCustomColor,\n fillMode: state.fillMode ?? false,\n keepFrame: state.keepFrame ?? keepFrame,\n };\n }\n get defaultState(): _StateboxInternalState {\n return this._states[0];\n }\n\n //* event handlers\n onClick(event: MouseEvent) {\n if (this.manualStateHandling) {\n this.clickEvent.emit(event);\n return;\n }\n this._stateIndex++;\n if (this._stateIndex >= this._states.length) {\n this._stateIndex = 0;\n }\n this._state = this._states[this._stateIndex];\n this._emitChange();\n }\n //emitter_onChangeRegistered\n protected _emitChange() {\n this._onChangeRegistered?.(this.state);\n this.stateChange.emit(this.state);\n this.changeEvent.emit(this.state);\n }\n\n //* template helpers\n get currState(): _StateboxInternalState {\n return this._state;\n }\n get ngStyle(): { [klass: string]: any } {\n let customColor = null;\n if (this.currState.useCustomColor) {\n customColor = this.currState.color;\n }\n return {\n '--ard-custom-color': customColor,\n '--ard-on-custom-color': this.currState.colorOnCustomColor ?? '#fff',\n };\n }\n}\n","<button\r\n class=\"ard-statebox\"\r\n [ngClass]=\"ngClasses\"\r\n [tabindex]=\"tabIndex\"\r\n [class]=\"wrapperClasses\"\r\n (click)=\"onClick($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"ngStyle\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-statebox-frame\" *ngIf=\"currState.keepFrame\"></div>\r\n <div class=\"ard-statebox-icon\" *ngIf=\"currState.displayAsIcon\">{{ currState.display }}</div>\r\n <div class=\"ard-statebox-character\" *ngIf=\"!currState.displayAsIcon\">{{ currState.display }}</div>\r\n</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStateboxComponent } from './statebox.component';\n\n@NgModule({\n declarations: [ArdiumStateboxComponent],\n imports: [CommonModule],\n exports: [ArdiumStateboxComponent],\n})\nexport class ArdiumStateboxModule {}\n","import { ChangeDetectorRef, Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { ArdOptionSimple, OptionContext } from '../types/item-storage.types';\nimport { SimpleItemStorage, SimpleItemStorageHost } from './item-storages/simple-item-storage';\nimport { _NgModelComponentBase } from './ngmodel-component';\n\n@Directive()\nexport abstract class _SelectableListComponentBase extends _NgModelComponentBase implements ControlValueAccessor, SimpleItemStorageHost {\n //! public constants\n readonly itemStorage = new SimpleItemStorage(this);\n readonly htmlId = crypto.randomUUID();\n readonly element!: HTMLElement;\n readonly DEFAULTS = {\n valueFrom: 'value',\n labelFrom: 'label',\n disabledFrom: 'disabled',\n };\n\n constructor(private _cd: ChangeDetectorRef) {\n super();\n }\n\n //! binding-related inputs\n @Input() valueFrom?: string;\n @Input() labelFrom?: string;\n @Input() disabledFrom?: string;\n\n //! items setter/getter\n @Input()\n get items(): any[] {\n return this.itemStorage.items;\n }\n set items(value: any) {\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\n\n let shouldPrintErrors = this.itemStorage.setItems(value);\n\n if (shouldPrintErrors) {\n this._printPrimitiveWarnings();\n }\n }\n private _printPrimitiveWarnings() {\n function makeWarning(str: string): void {\n console.warn(`Skipped using [${str}] property bound to <ard-segment>, as some provided items are of primitive type`);\n }\n if (this.valueFrom) {\n makeWarning('valueFrom');\n }\n if (this.labelFrom) {\n makeWarning('labelFrom');\n }\n if (this.disabledFrom) {\n makeWarning('disabledFrom');\n }\n if (this.invertDisabled) {\n makeWarning('invertDisabled');\n }\n }\n\n //! multiselectable\n protected _multiselectable: boolean = false;\n abstract multiselectable: any;\n get singleselectable(): boolean {\n return !this._multiselectable;\n }\n\n //! require value\n protected _requireValue: boolean | undefined = undefined;\n abstract requireValue: any;\n\n //! coerced properties\n //should the value that the \"disabledFrom\" path lead to be inverted?\n //useful when the property is e.g. \"active\", which is the oposite of \"disabled\"\n private _invertDisabled: boolean = false;\n @Input()\n get invertDisabled(): boolean {\n return this._invertDisabled;\n }\n set invertDisabled(v: any) {\n this._invertDisabled = coerceBooleanProperty(v);\n }\n\n private _maxSelectedItems: number | undefined = undefined;\n @Input()\n get maxSelectedItems(): number | undefined {\n return this._maxSelectedItems;\n }\n set maxSelectedItems(v: any) {\n this._maxSelectedItems = coerceNumberProperty(v);\n }\n\n //! control value accessor\n //override the writeValue and setDisabledState defined in _NgModelComponent\n override setDisabledState(state: boolean): void {\n this._disabled = state;\n this._cd.markForCheck();\n }\n writeValue(ngModel: any[]): void {\n this.itemStorage.writeValue(ngModel);\n this._cd.markForCheck();\n }\n\n //! change & touch event emitters\n private _touched: boolean = false;\n @HostBinding('class.ard-touched')\n get touched(): boolean {\n return this._touched;\n }\n protected set touched(state: boolean) {\n this._touched = state;\n }\n\n protected _emitChange(): void {\n let value = this.itemStorage.value;\n this._onChangeRegistered?.(value);\n this.changeEvent.emit(value);\n this.valueChange.emit(value);\n }\n protected _onTouched(): void {\n if (this.touched) return;\n\n this._onTouchedRegistered?.();\n this.touched = true;\n }\n\n //! focus & blur handlers\n lastBlurTimestamp: number | null = null;\n override onFocus(event: FocusEvent): void {\n super.onFocus(event);\n\n if (this.touched || !this.lastBlurTimestamp || this.lastBlurTimestamp + 1 < Date.now()) return;\n this.lastBlurTimestamp = null;\n\n this._onTouched();\n }\n override onBlur(event: FocusEvent): void {\n super.onBlur(event);\n\n if (!this.touched) this.lastBlurTimestamp = Date.now();\n }\n\n //! getters\n get firstHighlightedItem(): ArdOptionSimple | undefined {\n return this.itemStorage.highlightedItems?.first();\n }\n get highlightedItems(): ArdOptionSimple[] {\n return this.itemStorage.highlightedItems;\n }\n get isItemLimitReached(): boolean {\n return this.itemStorage.isItemLimitReached;\n }\n\n //! context providers\n getOptionContext(item: ArdOptionSimple): OptionContext {\n return {\n $implicit: item,\n item,\n itemData: item.itemData,\n };\n }\n\n //! value input & output\n @Input()\n set value(newValue: any) {\n if (!Array.isArray(newValue)) newValue = coerceArrayProperty(newValue);\n this.writeValue(newValue);\n }\n @Output() valueChange = new EventEmitter<any[]>();\n\n //! output events\n @Output('change') changeEvent = new EventEmitter<any[]>();\n @Output('add') addEvent = new EventEmitter<any[]>();\n @Output('remove') removeEvent = new EventEmitter<any[]>();\n\n //! item selection handlers\n toggleItem(item: ArdOptionSimple): void {\n if (item.selected) {\n this.unselectItem(item);\n return;\n }\n this.selectItem(item);\n }\n selectItem(...items: ArdOptionSimple[]): void {\n let [selected, unselected] = this.itemStorage.selectItem(...items);\n\n if (unselected.length > 0) this.removeEvent.emit(unselected);\n\n if (selected.length > 0) {\n this.addEvent.emit(selected);\n this._emitChange();\n }\n }\n unselectItem(...items: ArdOptionSimple[]): void {\n let unselected = this.itemStorage.unselectItem(...items);\n\n this.removeEvent.emit(unselected);\n this._emitChange();\n }\n\n //! highligh-related\n public isMouseBeingUsed: boolean = false;\n @HostListener('mousemove')\n onMouseMove() {\n this.isMouseBeingUsed = true;\n }\n onItemMouseEnter(option: ArdOptionSimple, event: MouseEvent): void {\n if (!this.isMouseBeingUsed) return;\n this.itemStorage.highlightSingleItem(option);\n event.stopPropagation();\n }\n onItemMouseLeave(option: ArdOptionSimple, event: MouseEvent): void {\n if (!this.isMouseBeingUsed) return;\n this.itemStorage.unhighlightItem(option);\n event.stopPropagation();\n }\n\n //! click handlers\n onItemClick(option: ArdOptionSimple, event: MouseEvent): void {\n event.stopPropagation();\n this.toggleItem(option);\n }\n\n //! key press handlers\n @HostListener('keydown', ['$event'])\n onKeyPress(event: KeyboardEvent): void {\n switch (event.code) {\n case 'Space':\n case 'Enter': {\n this._toggleHighlightedItems(event);\n return;\n }\n case 'ArrowRight': {\n this._highlightNext(event);\n return;\n }\n case 'ArrowLeft': {\n this._highlightPrevious(event);\n return;\n }\n case 'Home': {\n this._highlightFirst(event);\n return;\n }\n case 'End': {\n this._highlightLast(event);\n return;\n }\n case 'KeyA': {\n if (event.ctrlKey) {\n this._highlightAll(event);\n return;\n }\n }\n }\n }\n private _toggleHighlightedItems(event: KeyboardEvent): void {\n if (!this.isFocused) return;\n\n event.preventDefault();\n\n const highlightedItems = this.highlightedItems;\n\n if (highlightedItems.every(item => item.selected)) {\n this.unselectItem(...highlightedItems);\n } else {\n this.selectItem(...highlightedItems);\n }\n }\n private _highlightPrevious(event: KeyboardEvent): void {\n if (!this.isFocused) return;\n\n event.preventDefault();\n this.isMouseBeingUsed = false;\n\n this.itemStorage.highlightNextItem(-1, event.shiftKey);\n }\n private _highlightNext(event: KeyboardEvent): void {\n if (!this.isFocused) return;\n\n event.preventDefault();\n this.isMouseBeingUsed = false;\n\n this.itemStorage.highlightNextItem(+1, event.shiftKey);\n }\n private _highlightFirst(event: KeyboardEvent): void {\n if (!this.isFocused) return;\n\n event.preventDefault();\n this.isMouseBeingUsed = false;\n\n this.itemStorage.highlightFirstItem();\n }\n private _highlightLast(event: KeyboardEvent): void {\n if (!this.isFocused) return;\n\n event.preventDefault();\n this.isMouseBeingUsed = false;\n\n this.itemStorage.highlightLastItem();\n }\n private _highlightAll(event: KeyboardEvent): void {\n this.itemStorage.highlightAllItems();\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { OptionContext } from '../types/item-storage.types';\n\n@Directive({ selector: 'ng-template[ard-segm-option-tmp]' })\nexport class ArdSegmentOptionTemplateDirective {\n constructor(public template: TemplateRef<OptionContext>) {}\n}\n","import { FormElementAppearance, FormElementVariant } from '../types/theming.types';\n\nexport const SegmentVariant = {\n ...FormElementVariant,\n RoundedConnected: 'rounded-connected',\n SharpConnected: 'sharp-connected',\n} as const;\nexport type SegmentVariant = (typeof SegmentVariant)[keyof typeof SegmentVariant];\n\nexport const SegmentAppearance = {\n ...FormElementAppearance,\n FilledStrong: 'filled-strong',\n OutlinedStrong: 'outlined-strong',\n} as const;\nexport type SegmentAppearance = (typeof SegmentAppearance)[keyof typeof SegmentAppearance];\n","import { ChangeDetectionStrategy, Component, ContentChild, HostBinding, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { ComponentColor } from '../types/colors.types';\nimport { ArdOptionSimple } from '../types/item-storage.types';\nimport { _SelectableListComponentBase } from '../_internal/selectable-list-component';\nimport { SimpleItemStorageHost } from './../_internal/item-storages/simple-item-storage';\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\nimport { SegmentAppearance, SegmentVariant } from './segment.types';\nimport { OneAxisAlignment } from '../types/alignment.types';\n\ntype SegmentRow = {\n options: ArdOptionSimple[];\n isNotFull?: boolean;\n};\n\n@Component({\n selector: 'ard-segment',\n templateUrl: './segment.component.html',\n styleUrls: ['./segment.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumSegmentComponent extends _SelectableListComponentBase implements SimpleItemStorageHost {\n //! appearance\n @Input() appearance: SegmentAppearance = SegmentAppearance.Outlined;\n @Input() variant: SegmentVariant = SegmentVariant.RoundedConnected;\n @Input() color: ComponentColor = ComponentColor.Primary;\n @Input() align: OneAxisAlignment = OneAxisAlignment.Middle;\n\n private _iconBased: boolean = false;\n @Input()\n get iconBased(): boolean {\n return this._iconBased;\n }\n set iconBased(v: any) {\n this._iconBased = coerceBooleanProperty(v);\n }\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [\n `ard-appearance-${this.appearance}`,\n `ard-variant-${this.variant}`,\n `ard-color-${this.color}`,\n `ard-align-${this.align}`,\n this.iconBased ? 'ard-icon-based' : '',\n this.compact ? 'ard-compact' : '',\n ].join(' ');\n }\n\n //! coerced properties\n @Input()\n @HostBinding('attr.multiple')\n @HostBinding('class.ard-multiselect')\n get multiselectable(): boolean {\n return this._multiselectable;\n }\n set multiselectable(v: any) {\n this._multiselectable = coerceBooleanProperty(v);\n }\n\n @Input()\n @HostBinding('class.ard-require-value')\n get requireValue(): boolean {\n return this._requireValue ?? !this.multiselectable;\n }\n set requireValue(v: any) {\n this._requireValue = coerceBooleanProperty(v);\n }\n\n private _autoFocus: boolean = false;\n @Input()\n get autoFocus(): boolean {\n return this._autoFocus;\n }\n set autoFocus(v: any) {\n this._autoFocus = coerceBooleanProperty(v);\n }\n\n private _uniformWidths: boolean = false;\n @Input()\n get uniformWidths(): boolean {\n return this._uniformWidths;\n }\n set uniformWidths(v: any) {\n this._uniformWidths = coerceBooleanProperty(v);\n }\n\n private _itemsPerRow: number | undefined = undefined;\n @Input()\n get itemsPerRow(): number {\n return this._itemsPerRow ?? Infinity;\n }\n set itemsPerRow(v: any) {\n const newValue = coerceNumberProperty(v, undefined);\n if (newValue == 0) throw new Error('Cannot set items per row to 0.');\n this._itemsPerRow = newValue;\n }\n get itemsInActualRow(): number {\n return this._itemsPerRow ?? this.items.length;\n }\n\n //! option template\n @ContentChild(ArdSegmentOptionTemplateDirective, { read: TemplateRef })\n optionTemplate?: TemplateRef<any>;\n\n //! lifecycle hooks\n ngAfterContentInit(): void {\n if (this.autoFocus) {\n this.focus();\n }\n }\n\n //! item row getters\n private _itemRowsCache: SegmentRow[] | null = null;\n get itemRows(): SegmentRow[] {\n if (this._itemRowsCache) return this._itemRowsCache;\n\n const itemRows: SegmentRow[] = [];\n let currentRow: ArdOptionSimple[] = [];\n //get all rows\n for (const item of this.items) {\n //add item\n currentRow.push(item);\n\n //push if item amount reached the limit\n if (this._itemsPerRow && currentRow.length == this.itemsPerRow) {\n itemRows.push({ options: currentRow });\n currentRow = [];\n }\n }\n //push the last row if it is not full\n if (currentRow.length != 0) {\n itemRows.push({\n options: currentRow,\n isNotFull: Boolean(this._itemsPerRow),\n });\n }\n\n this._itemRowsCache = itemRows;\n return itemRows;\n }\n\n //! focus handler override\n override onFocus(event: FocusEvent): void {\n super.onFocus(event);\n\n if (this.itemStorage.isAnyItemHighlighted) return;\n\n this.itemStorage.highlightFirstItem();\n }\n\n override onBlur(event: FocusEvent): void {\n super.onBlur(event);\n\n this.itemStorage.unhighlightAll();\n }\n}\n","<div class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled\"\r\n [ariaDisabled]=\"disabled\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-focus-visible]=\"isFocused && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed\"\r\n [attr.tabindex]=\"tabIndex\"\r\n #focusableElement\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-segment-row\"\r\n *ngFor=\"let row of itemRows\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths || itemsPerRow < items.length\"\r\n [style]=\"{'--ard-_segment-row-items': itemsInActualRow}\"\r\n >\r\n <button *ngFor=\"let option of row.options\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled || isItemLimitReached && !option.selected\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [ariaSelected]=\"option.selected\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{option.label}}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n </button>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSegmentComponent } from './segment.component';\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\n\n@NgModule({\n declarations: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n})\nexport class ArdiumSegmentModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'icon',\n})\nexport class ArdiumIconPipe implements PipeTransform {\n transform(value: string): string {\n value = value.trim().toLowerCase();\n value = value.replace(/[ -]/g, '_');\n return value;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, AfterViewInit, ViewChild, ElementRef } from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { isDefined } from 'simple-bool';\n\ntype WeightNumber = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\ntype WeightString = '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\n\ntype GradeNumber = -25 | 0 | 200;\ntype GradeString = '-25' | '0' | '200';\n\ntype OpticalSizeNumber = 20 | 24 | 40 | 48;\ntype OpticalSizeString = '20' | '24' | '40' | '48';\n\n@Component({\n selector: 'ard-icon',\n templateUrl: `./icon.component.html`,\n styleUrls: ['./icon.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumIconComponent implements AfterViewInit {\n @Input() ariaLabel?: string;\n @Input() icon?: string | null;\n\n private _filled?: boolean;\n @Input()\n get filled(): boolean | undefined {\n return this._filled;\n }\n set filled(v: any) {\n this._filled = coerceBooleanProperty(v);\n this._isMemoUpToDate = false;\n }\n\n private _weight?: WeightNumber;\n @Input()\n get weight(): WeightNumber | undefined {\n return this._weight;\n }\n set weight(v: WeightNumber | WeightString | undefined) {\n this._weight = coerceNumberProperty(v, 400) as WeightNumber;\n this._isMemoUpToDate = false;\n }\n\n private _grade?: GradeNumber;\n @Input()\n get grade(): GradeNumber | undefined {\n return this._grade;\n }\n set grade(v: GradeNumber | GradeString | undefined) {\n this._grade = coerceNumberProperty(v, 0) as GradeNumber;\n this._isMemoUpToDate = false;\n }\n\n private _opticalSize?: OpticalSizeNumber;\n @Input()\n get opticalSize(): OpticalSizeNumber | undefined {\n return this._opticalSize;\n }\n set opticalSize(v: OpticalSizeNumber | OpticalSizeString | undefined) {\n this._opticalSize = coerceNumberProperty(v, 40) as OpticalSizeNumber;\n this._isMemoUpToDate = false;\n }\n\n private _isMemoUpToDate = false;\n private _fontVariationMemo: string = this.fontVariationSettings;\n\n get fontVariationSettings(): string {\n if (!this._isMemoUpToDate) {\n this._isMemoUpToDate = true;\n //map values to different properties defined by google icons\n let propObject = {\n FILL: isDefined(this.filled) ? Number(this.filled) : undefined,\n wght: this.weight,\n GRAD: this.grade,\n opsz: this.opticalSize,\n };\n //map the object to an array of strings\n let propObjectAsArray = Object.entries(propObject) //object to array\n .filter(v => isDefined(v[1])) //filter undefined values\n .map(v => `\"${v[0]}\" ${v[1]}`) //map key-value pairs to strings\n .flat(); //flatten\n\n //create the final string only if any of the properties are defined\n this._fontVariationMemo = propObjectAsArray.length === 0 ? '' : ['font-variation-settings: ', ...propObjectAsArray].join('');\n }\n return this._fontVariationMemo;\n }\n\n @ViewChild('contentWrapper') contentWrapper!: ElementRef<HTMLElement>;\n\n ngAfterViewInit(): void {\n if (!this.icon && !this.contentWrapper.nativeElement.innerText) console.warn(`Using <ard-icon> without specifying the [icon] field.`);\n }\n}\n","<span class=\"ard-icon material-symbols-outlined\"\r\n [attr.aria-hidden]=\"ariaLabel != undefined\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [style]=\"fontVariationSettings\"\r\n>\r\n {{ icon ?? contentWrapper.innerText | icon }}\r\n</span>\r\n\r\n\r\n<div #contentWrapper class=\"ard-icon-content-wrapper\">\r\n <ng-content></ng-content>\r\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconComponent } from './icon.component';\nimport { ArdiumIconPipe } from './icon.pipe';\n\n@NgModule({\n declarations: [ArdiumIconComponent, ArdiumIconPipe],\n imports: [CommonModule],\n exports: [ArdiumIconComponent, ArdiumIconPipe],\n})\nexport class ArdiumIconModule {}\n","export const ColorDisplayAppearance = {\n Rounded: 'rounded with-border',\n Circle: 'circle with-border',\n Sharp: 'sharp with-border',\n RoundedBorderless: 'rounded',\n CircleBorderless: 'circle',\n SharpBorderless: 'sharp',\n} as const;\nexport type ColorDisplayAppearance = (typeof ColorDisplayAppearance)[keyof typeof ColorDisplayAppearance];\n","import { AfterViewInit, ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport * as Color from 'color';\nimport { ColorDisplayAppearance } from './color-display.types';\n\n@Component({\n selector: 'ard-color-display',\n templateUrl: './color-display.component.html',\n styleUrls: ['./color-display.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumColorDisplayComponent implements AfterViewInit {\n @Input() ariaLabel?: string;\n\n private _withLabel: boolean = false;\n @Input()\n get withLabel(): boolean {\n return this._withLabel;\n }\n set withLabel(v: any) {\n this._withLabel = coerceBooleanProperty(v);\n }\n\n //! appearance\n @Input() appearance: ColorDisplayAppearance = ColorDisplayAppearance.Rounded;\n\n get ngClasses(): string {\n const apprncParts = this.appearance.split(' ');\n return `ard-appearance-${apprncParts[0]} ${apprncParts[1] ? 'ard-with-border' : ''}`;\n }\n\n //! color\n private _color?: string;\n get color(): string | null {\n return this._color ?? null;\n }\n @Input()\n set color(v: any) {\n this._color = Color(v).hex();\n }\n\n ngAfterViewInit(): void {\n if (!this._color) console.warn(`Using <ard-color-display> without specifying the [color] field.`);\n }\n}\n","<div class=\"ard-color-display-wrapper\" [ngClass]=\"ngClasses\">\r\n <div class=\"ard-color-display\"\r\n [title]=\"color\"\r\n [style]=\"{ background: color }\"\r\n ></div>\r\n <span class=\"ard-color-display-label\" *ngIf=\"withLabel\">{{ color }}</span>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumColorDisplayComponent } from './color-display.component';\n\n@NgModule({\n declarations: [ArdiumColorDisplayComponent],\n imports: [CommonModule],\n exports: [ArdiumColorDisplayComponent],\n})\nexport class ArdiumColorDisplayModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ColorPickerColorReferenceContext, ColorPickerIndicatorContext } from './color-picker.types';\n\n@Directive({\n selector: 'ard-color-picker > ng-template[ard-shade-indicator-tmp]',\n})\nexport class ArdColorPickerShadeIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-picker > ng-template[ard-hue-indicator-tmp]',\n})\nexport class ArdColorPickerHueIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-picker > ng-template[ard-opacity-indicator-tmp]',\n})\nexport class ArdColorPickerOpacityIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-picker > ng-template[ard-color-reference-tmp]',\n})\nexport class ArdColorPickerColorReferenceTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerColorReferenceContext>) {}\n}\n","import * as Color from 'color';\n\nexport type ColorPickerIndicatorContext = {\n $implicit: Color;\n};\n\nexport type ColorPickerColorReferenceContext = {\n color: Color;\n $implicit: Color;\n referenceColor: Color;\n};\n\nexport const _ColorPickerInputsSectionType = {\n HEX: 'HEX',\n RGB: 'RGB',\n HSL: 'HSL',\n HSV: 'HSV',\n} as const;\nexport type _ColorPickerInputsSectionType = (typeof _ColorPickerInputsSectionType)[keyof typeof _ColorPickerInputsSectionType];\n\nexport const ColorPickerVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type ColorPickerVariant = (typeof ColorPickerVariant)[keyof typeof ColorPickerVariant];\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty, getEventRelativePos } from '@ardium-ui/devkit';\nimport * as Color from 'color';\nimport { round, roundToMultiple, roundToPrecision } from 'more-rounding';\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\nimport {\n ArdColorPickerColorReferenceTemplateDirective,\n ArdColorPickerHueIndicatorTemplateDirective,\n ArdColorPickerOpacityIndicatorTemplateDirective,\n ArdColorPickerShadeIndicatorTemplateDirective,\n} from './color-picker.directives';\nimport { ColorPickerColorReferenceContext, ColorPickerIndicatorContext, ColorPickerVariant, _ColorPickerInputsSectionType } from './color-picker.types';\n\nconst validHexColorRegex = /^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i;\nconst validHexAlphaColorRegex = /^#[0-9a-f]{4}(?:[0-9a-f]{4})?$/i;\n\ntype TripleInputObject = {\n value: number;\n max: number;\n};\n\n@Component({\n selector: 'ard-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumColorPickerComponent extends _NgModelComponentBase implements OnInit {\n private _withOpacity: boolean = false;\n @Input()\n get withOpacity(): boolean {\n return this._withOpacity;\n }\n set withOpacity(v: any) {\n this._withOpacity = coerceBooleanProperty(v);\n\n if (this.focusedArea == 'opacity') this.focusedArea = null;\n }\n\n private _referenceColor: Color = Color('transparent');\n private _wasReferenceColorSet: boolean = false;\n @Input()\n set referenceColor(v: any) {\n this._referenceColor = Color(v);\n this._wasReferenceColorSet = true;\n }\n get referenceColor(): Color {\n return this._referenceColor;\n }\n\n //! appearance\n @Input() wrapperClasses: string = '';\n\n @Input() variant: ColorPickerVariant = ColorPickerVariant.Rounded;\n\n private _vertical: boolean = false; //TODO implement in CSS\n @Input()\n get vertical(): boolean {\n return this._vertical;\n }\n set vertical(v: any) {\n this._vertical = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [this.wrapperClasses, `ard-variant-${this.variant}`, this.vertical ? 'ard-vertical' : ''].join(' ');\n }\n\n //! value-related\n private _value: Color = Color('red');\n private _exactHue: number = 0;\n @Input()\n set value(v: any) {\n this.writeValue(v);\n }\n get value(): Color {\n return this._value;\n }\n\n @Input()\n set colorHue(v: any) {\n const hue = coerceNumberProperty(v, 0);\n this.value.hue(hue);\n }\n get colorHue(): number {\n return this.value.hue();\n }\n\n @Input()\n set colorSaturation(v: any) {\n const saturation = coerceNumberProperty(v, 100);\n this.value.saturationl(saturation);\n }\n get colorSaturation(): number {\n return this.value.saturationl();\n }\n\n @Input()\n set colorValue(v: any) {\n const value = coerceNumberProperty(v, 100);\n this.value.value(value);\n }\n get colorValue(): number {\n return this.value.value();\n }\n\n @Input()\n set colorOpacity(v: any) {\n const opacity = coerceNumberProperty(v, 1);\n this.value.alpha(opacity);\n }\n get colorOpacity(): number {\n return this.value.alpha();\n }\n\n @Output() valueChange = new EventEmitter<Color>();\n @Output() colorHueChange = new EventEmitter<number>();\n @Output() colorSaturationChange = new EventEmitter<number>();\n @Output() colorValueChange = new EventEmitter<number>();\n @Output() colorOpacityChange = new EventEmitter<number>();\n\n writeValue(v: any) {\n this._value = Color(v);\n\n this._updateCurrentShadeMapColor();\n this._updateCurrentOpacityMapColor();\n this._updateHexInputValue();\n this._updateTripleInputValues();\n }\n\n ngOnInit(): void {\n if (this._wasReferenceColorSet) return;\n\n this._wasReferenceColorSet = true;\n this.referenceColor = Color(this.value);\n\n this._updateHexInputValue();\n }\n\n //! creating new value from interactions\n @ViewChild('shadeMap', { read: ElementRef })\n shadeMapEl!: ElementRef<HTMLDivElement>;\n @ViewChild('hueMap', { read: ElementRef })\n hueMapEl!: ElementRef<HTMLDivElement>;\n @ViewChild('opacityMap', { read: ElementRef })\n opacityMapEl!: ElementRef<HTMLDivElement>;\n\n focusedArea: 'shade' | 'hue' | 'opacity' | null = null;\n\n onShadeAreaMouseDown(event: MouseEvent): void {\n this._isMouseDown = true;\n this._updateShadeFromEvent(event);\n }\n onHueAreaMouseDown(event: MouseEvent): void {\n this._isMouseDown = true;\n this._updateHueFromEvent(event);\n }\n onOpacityAreaMouseDown(event: MouseEvent): void {\n this._isMouseDown = true;\n this._updateOpacityFromEvent(event);\n }\n\n private _isMouseDown: boolean = false;\n @HostListener('document:pointerup')\n @HostListener('document:touchend')\n onDocumentMouseUp(): void {\n this._isMouseDown = false;\n }\n\n @HostListener('document:pointermove', ['$event'])\n @HostListener('document:touchmove', ['$event'])\n onDocumentMousemove(event: MouseEvent | TouchEvent): void {\n if (!this.focusedArea || !this._isMouseDown) return;\n\n if (!(event instanceof TouchEvent)) event.preventDefault();\n\n if (this.focusedArea == 'shade') {\n this._updateShadeFromEvent(event);\n return;\n }\n if (this.focusedArea == 'hue') {\n this._updateHueFromEvent(event);\n return;\n }\n this._updateOpacityFromEvent(event);\n }\n\n private _updateShadeFromEvent(event: MouseEvent | TouchEvent): void {\n const { left, right, top, bottom } = getEventRelativePos(event, this.shadeMapEl);\n\n const shadeMapWidth = left + right;\n const newSaturationRaw = (left / shadeMapWidth) * 100;\n const newSaturation = round(Math.max(0, Math.min(100, newSaturationRaw)));\n\n const shadeMapHeight = top + bottom;\n const newValueRaw = (bottom / shadeMapHeight) * 100;\n const newValue = round(Math.max(0, Math.min(100, newValueRaw)));\n\n const oldSaturation = this.value.saturationv();\n const oldValue = this.value.value();\n\n if (oldSaturation == newSaturation && oldValue == newValue) return;\n\n this.value = Color(this.value).saturationv(newSaturation).value(newValue);\n\n this._emitChange();\n this._updateCurrentOpacityMapColor();\n //emit specific events\n if (oldSaturation != this.value.saturationv()) this.colorSaturationChange.next(this.value.saturationv());\n if (oldValue != this.value.value()) this.colorValueChange.next(this.value.value());\n }\n private _updateHueFromEvent(event: MouseEvent | TouchEvent): void {\n const { top, bottom } = getEventRelativePos(event, this.hueMapEl);\n\n const hueMapHeight = top + bottom;\n const newHueRaw = (top / hueMapHeight) * 360;\n const newHue = round(Math.max(0, Math.min(360, newHueRaw)));\n const newHueExact = newHue == 360 ? 359.99 : newHue;\n\n if (this.value.hue() == newHueExact) return;\n\n this.value = Color(this.value).hue(newHueExact);\n\n this._emitChange();\n this.colorHueChange.next(this.value.hue());\n this._updateCurrentShadeMapColor();\n this._updateCurrentOpacityMapColor();\n }\n private _updateOpacityFromEvent(event: MouseEvent | TouchEvent): void {\n if (!this.withOpacity) return;\n\n const { top, bottom } = getEventRelativePos(event, this.opacityMapEl);\n\n const hueMapHeight = top + bottom;\n const newOpacityRaw = bottom / hueMapHeight;\n const newOpacity = roundToPrecision(Math.max(0, Math.min(1, newOpacityRaw)), 2);\n\n if (this.value.alpha() == newOpacity) return;\n\n this.value = Color(this.value).alpha(newOpacity);\n\n this._emitChange();\n this.colorOpacityChange.next(this.value.alpha());\n }\n\n //! displaying the maps correctly\n currentShadeMapColor: Color = this.value;\n private _updateCurrentShadeMapColor(): void {\n this.currentShadeMapColor = Color.hsv(this.value.hue(), 100, 100);\n }\n currentOpacityMapColor: Color = this.value;\n private _updateCurrentOpacityMapColor(): void {\n if (!this.withOpacity) return;\n this.currentOpacityMapColor = Color.hsv(this.value.hue(), this.value.saturationv(), this.value.value());\n }\n\n getShadeIndicatorPosition(): { '--top': string; '--left': string } {\n return {\n '--top': 100 - this.value.value() + '%',\n '--left': this.value.saturationv() + '%',\n };\n }\n getHueIndicatorPosition(): { '--top': string } {\n return {\n '--top': this.value.hue() / 3.6 + '%',\n };\n }\n getOpacityIndicatorPosition(): { '--top': string } {\n return {\n '--top': 100 - this.value.alpha() * 100 + '%',\n };\n }\n\n //! inputs section\n inputTypes: _ColorPickerInputsSectionType[] = Object.values(_ColorPickerInputsSectionType);\n currentInputType: _ColorPickerInputsSectionType = _ColorPickerInputsSectionType.HEX;\n\n onCurrentInputTypeChange(value: _ColorPickerInputsSectionType[]): void {\n this.currentInputType = value[0];\n\n if (this.currentInputType != _ColorPickerInputsSectionType.HEX) {\n this._updateTripleInputValues();\n }\n }\n\n hexInputValue: string = this.value.hex();\n private _updateHexInputValue(): void {\n if (this.currentInputType != _ColorPickerInputsSectionType.HEX) return;\n\n const HEX = this.value;\n this.hexInputValue = HEX.hex().replace('#', '');\n this.tripleInputData4.value = HEX.alpha() * 100;\n }\n\n tripleInputData1: TripleInputObject = {\n value: 0,\n max: 0 /* temporary value */,\n };\n tripleInputData2: TripleInputObject = {\n value: 0,\n max: 0 /* temporary value */,\n };\n tripleInputData3: TripleInputObject = {\n value: 0,\n max: 0 /* temporary value */,\n };\n tripleInputData4: TripleInputObject = { value: 0, max: 100 };\n private _updateTripleInputValues(): void {\n if (this.currentInputType == _ColorPickerInputsSectionType.HEX) return;\n\n switch (this.currentInputType) {\n case _ColorPickerInputsSectionType.RGB:\n const RGB = this.value.rgb();\n this.tripleInputData1.value = RGB.red();\n this.tripleInputData1.max = 255;\n this.tripleInputData2.value = RGB.green();\n this.tripleInputData2.max = 255;\n this.tripleInputData3.value = RGB.blue();\n this.tripleInputData3.max = 255;\n this.tripleInputData4.value = RGB.alpha() * 100;\n break;\n case _ColorPickerInputsSectionType.HSL:\n const HSL = this.value.hsl();\n this.tripleInputData1.value = HSL.hue();\n this.tripleInputData1.max = 360;\n this.tripleInputData2.value = HSL.saturationl();\n this.tripleInputData2.max = 100;\n this.tripleInputData3.value = HSL.lightness();\n this.tripleInputData3.max = 100;\n this.tripleInputData4.value = HSL.alpha() * 100;\n break;\n case _ColorPickerInputsSectionType.HSV:\n const HSV = this.value.hsv();\n this.tripleInputData1.value = HSV.hue();\n this.tripleInputData1.max = 360;\n this.tripleInputData2.value = HSV.saturationv();\n this.tripleInputData2.max = 100;\n this.tripleInputData3.value = HSV.value();\n this.tripleInputData3.max = 100;\n this.tripleInputData4.value = HSV.alpha() * 100;\n break;\n\n default:\n break;\n }\n }\n\n onHexInputChange(value: string): void {\n if (this.withOpacity) {\n if (!value.match(validHexAlphaColorRegex)) return;\n } else if (!value.match(validHexColorRegex)) return;\n\n this.value = value;\n }\n\n onTripleInputChange(value: number | null, index: number): void {}\n\n //! events\n protected _emitChange() {\n const v = this.value;\n this._onChangeRegistered?.(v);\n this.valueChange.next(v);\n }\n\n //! template customization\n @Input() shadeIndicatorTemplate?: TemplateRef<any>;\n @Input() hueIndicatorTemplate?: TemplateRef<any>;\n @Input() opacityIndicatorTemplate?: TemplateRef<any>;\n @Input() colorReferenceTemplate?: TemplateRef<any>;\n @ContentChild(ArdColorPickerShadeIndicatorTemplateDirective, {\n read: TemplateRef,\n })\n shadeIndicatorTemplateChild?: TemplateRef<any>;\n @ContentChild(ArdColorPickerHueIndicatorTemplateDirective, {\n read: TemplateRef,\n })\n hueIndicatorTemplateChild?: TemplateRef<any>;\n @ContentChild(ArdColorPickerOpacityIndicatorTemplateDirective, {\n read: TemplateRef,\n })\n opacityIndicatorTemplateChild?: TemplateRef<any>;\n @ContentChild(ArdColorPickerColorReferenceTemplateDirective, {\n read: TemplateRef,\n })\n colorReferenceTemplateChild?: TemplateRef<any>;\n\n getIndicatorContext(): ColorPickerIndicatorContext {\n return {\n $implicit: this.value,\n };\n }\n getColorReferenceContext(): ColorPickerColorReferenceContext {\n return {\n color: this.value,\n $implicit: this.value,\n referenceColor: this.referenceColor,\n };\n }\n\n //! keyboard controls\n onKeydown(event: KeyboardEvent): void {\n const hasShift = event.shiftKey;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowLeft':\n if (this.focusedArea != 'shade') return;\n this.nudgeColorSaturation(event.key == 'ArrowRight' ? 1 : -1, hasShift);\n break;\n\n case 'ArrowUp':\n case 'ArrowDown':\n switch (this.focusedArea) {\n case 'shade':\n this.nudgeColorValue(event.key == 'ArrowUp' ? 1 : -1, hasShift);\n break;\n case 'hue':\n this.nudgeColorHue(event.key == 'ArrowDown' ? 1 : -1, hasShift);\n break;\n case 'opacity':\n this.nudgeColorOpacity(event.key == 'ArrowUp' ? 1 : -1, hasShift);\n break;\n\n default:\n console.error(new Error(`Unexpected ard-color-picker._focusedArea state \"${this.focusedArea}\"`));\n break;\n }\n break;\n }\n }\n nudgeColorSaturation(direction: 1 | -1, hasShift?: boolean): void {\n const v = this.value;\n let diff = (direction * 100) / 255;\n let newVal: number;\n if (hasShift) {\n diff = (diff * 255) / 10;\n newVal = v.saturationv() + diff;\n newVal = roundToMultiple(newVal, Math.abs(diff)); //round to tens\n } else {\n newVal = v.saturationv() + diff;\n }\n const newValClamped = Math.max(0, Math.min(100, newVal));\n this.value = Color(v).saturationv(newValClamped);\n }\n nudgeColorValue(direction: 1 | -1, hasShift?: boolean): void {\n const v = this.value;\n let diff = (direction * 100) / 255;\n let newVal: number;\n if (hasShift) {\n diff = (diff * 255) / 10;\n newVal = v.value() + diff;\n newVal = roundToMultiple(newVal, Math.abs(diff)); //round to tens\n } else {\n newVal = v.value() + diff;\n }\n const newValClamped = Math.max(0, Math.min(100, newVal));\n this.value = Color(v).value(newValClamped);\n }\n nudgeColorHue(direction: 1 | -1, hasShift?: boolean): void {\n const v = this.value;\n let diff = direction as number,\n newVal: number;\n if (hasShift) {\n diff = direction * 30;\n newVal = v.hue() + diff;\n newVal = roundToMultiple(newVal, Math.abs(diff)); //round to tens\n } else {\n newVal = v.hue() + diff;\n }\n const newValClamped = Math.max(0, Math.min(359.99, newVal));\n console.log(newValClamped);\n this.value = Color(v).hue(newValClamped);\n }\n nudgeColorOpacity(direction: 1 | -1, hasShift?: boolean): void {\n const v = this.value;\n let diff = direction * 0.01;\n let newVal: number;\n if (hasShift) {\n diff = diff * 10;\n newVal = v.alpha() + diff;\n newVal = roundToPrecision(newVal, 1); //round to one place\n } else {\n newVal = v.alpha() + diff;\n }\n const newValClamped = Math.max(0, Math.min(1, newVal));\n this.value = Color(v).alpha(newValClamped);\n }\n}\n","<div class=\"ard-color-picker\" [ngClass]=\"ngClasses\" (keydown)=\"onKeydown($event)\">\r\n <div class=\"ard-color-picker-click-areas\"\r\n [style]=\"{\r\n '--ard-color-picker-current-hue': currentShadeMapColor,\r\n '--ard-color-picker-current-color': currentOpacityMapColor\r\n }\"\r\n >\r\n <div #shadeMap\r\n [tabIndex]=\"tabIndex\"\r\n class=\"ard-color-picker-shade-map\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"focusedArea = 'shade'\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"focusedArea = null\"\r\n (mousedown)=\"onShadeAreaMouseDown($event)\"\r\n (pointerdown)=\"onShadeAreaMouseDown($event)\"\r\n >\r\n <div class=\"ard-color-picker-shade-indicator-container\" [style]=\"getShadeIndicatorPosition()\">\r\n <ng-template #defaultShadeIndicatorTemplate>\r\n <div class=\"ard-color-picker-shade-indicator\"></div>\r\n </ng-template>\r\n \r\n <ng-template [ngTemplateOutlet]=\"shadeIndicatorTemplate || shadeIndicatorTemplateChild || defaultShadeIndicatorTemplate\"\r\n [ngTemplateOutletContext]=\"getIndicatorContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n <div #hueMap\r\n [tabIndex]=\"tabIndex\"\r\n class=\"ard-color-picker-hue-map\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"focusedArea = 'hue'\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"focusedArea = null\"\r\n (mousedown)=\"onHueAreaMouseDown($event)\"\r\n (pointerdown)=\"onHueAreaMouseDown($event)\"\r\n >\r\n <div class=\"ard-color-picker-hue-indicator-container\" [style]=\"getHueIndicatorPosition()\">\r\n <ng-template #defaultHueIndicatorTemplate>\r\n <div class=\"ard-color-picker-hue-indicator\"></div>\r\n </ng-template>\r\n \r\n <ng-template [ngTemplateOutlet]=\"hueIndicatorTemplate || hueIndicatorTemplateChild || defaultHueIndicatorTemplate\"\r\n [ngTemplateOutletContext]=\"getIndicatorContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n <div #opacityMap\r\n *ngIf=\"withOpacity\"\r\n [tabIndex]=\"tabIndex\"\r\n class=\"ard-color-picker-opacity-map\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"focusedArea = 'opacity'\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"focusedArea = null\"\r\n (mousedown)=\"onOpacityAreaMouseDown($event)\"\r\n (pointerdown)=\"onOpacityAreaMouseDown($event)\"\r\n >\r\n <div class=\"ard-color-picker-opacity-indicator-container\" [style]=\"getOpacityIndicatorPosition()\">\r\n <ng-template #defaultOpacityIndicatorTemplate>\r\n <div class=\"ard-color-picker-opacity-indicator\"></div>\r\n </ng-template>\r\n \r\n <ng-template [ngTemplateOutlet]=\"opacityIndicatorTemplate || opacityIndicatorTemplateChild || defaultOpacityIndicatorTemplate\"\r\n [ngTemplateOutletContext]=\"getIndicatorContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ard-color-picker-input-panel\">\r\n <div class=\"ard-color-picker-inputs\">\r\n <div class=\"ard-color-picker-input-type\">\r\n <ard-select\r\n compact\r\n clearable=\"false\"\r\n appearance=\"transparent\"\r\n [items]=\"inputTypes\"\r\n [value]=\"currentInputType\"\r\n (valueChange)=\"onCurrentInputTypeChange($event)\"\r\n ></ard-select>\r\n </div>\r\n <div class=\"ard-color-picker-reference-container\">\r\n <ng-template #defaultColorReferenceTemplate let-col let-refcol=\"referenceColor\">\r\n <div class=\"ard-color-picker-reference\">\r\n <div class=\"ard-color-picker-reference-reference\" [style]=\"{ background: refcol.rgb().toString() }\"></div>\r\n <div class=\"ard-color-picker-reference-current\" [style]=\"{ background: col.rgb().toString() }\"></div>\r\n </div>\r\n </ng-template>\r\n \r\n <ng-template [ngTemplateOutlet]=\"colorReferenceTemplate || colorReferenceTemplateChild || defaultColorReferenceTemplate\"\r\n [ngTemplateOutletContext]=\"getColorReferenceContext()\"\r\n ></ng-template>\r\n </div>\r\n <div class=\"ard-color-picker-inputs-container\"\r\n [ngClass]=\"{\r\n 'ard-mode-hex': currentInputType == 'HEX',\r\n 'ard-mode-triple': currentInputType != 'HEX',\r\n 'ard-mode-opacity': withOpacity\r\n }\"\r\n >\r\n <ng-template\r\n [ngTemplateOutlet]=\"currentInputType == 'HEX' ? hexInput : tripleInput\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #hexInput>\r\n <ard-hex-input\r\n class=\"ard-color-picker-hex-input\"\r\n maxDigits=\"6\"\r\n [value]=\"hexInputValue\"\r\n (valueChange)=\"onHexInputChange($event)\"\r\n ></ard-hex-input>\r\n <ard-number-input\r\n *ngIf=\"withOpacity\"\r\n allowQuickChange=\"false\"\r\n [max]=\"tripleInputData4.max\"\r\n [value]=\"tripleInputData4.value\"\r\n (valueChange)=\"onTripleInputChange($event, 4)\"\r\n ></ard-number-input>\r\n</ng-template>\r\n\r\n<ng-template #tripleInput> \r\n <ard-number-input\r\n allowQuickChange=\"false\"\r\n [max]=\"tripleInputData1.max\"\r\n [value]=\"tripleInputData1.value\"\r\n (valueChange)=\"onTripleInputChange($event, 1)\"\r\n ></ard-number-input>\r\n <ard-number-input\r\n allowQuickChange=\"false\"\r\n [max]=\"tripleInputData2.max\"\r\n [value]=\"tripleInputData2.value\"\r\n (valueChange)=\"onTripleInputChange($event, 2)\"\r\n ></ard-number-input>\r\n <ard-number-input\r\n allowQuickChange=\"false\"\r\n [max]=\"tripleInputData3.max\"\r\n [value]=\"tripleInputData3.value\"\r\n (valueChange)=\"onTripleInputChange($event, 3)\"\r\n ></ard-number-input>\r\n <ard-number-input\r\n *ngIf=\"withOpacity\"\r\n allowQuickChange=\"false\"\r\n [max]=\"tripleInputData4.max\"\r\n [value]=\"tripleInputData4.value\"\r\n (valueChange)=\"onTripleInputChange($event, 4)\"\r\n ></ard-number-input>\r\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumHexInputModule } from '../../inputs/hex-input/hex-input.module';\nimport { ArdiumNumberInputModule } from '../../inputs/number-input/number-input.module';\nimport { ArdiumOptionModule } from '../../option/option.module';\nimport { ArdiumSelectModule } from '../../select/select.module';\nimport { ArdiumColorPickerComponent } from './color-picker.component';\nimport {\n ArdColorPickerColorReferenceTemplateDirective,\n ArdColorPickerHueIndicatorTemplateDirective,\n ArdColorPickerOpacityIndicatorTemplateDirective,\n ArdColorPickerShadeIndicatorTemplateDirective,\n} from './color-picker.directives';\n\n@NgModule({\n declarations: [\n ArdiumColorPickerComponent,\n ArdColorPickerHueIndicatorTemplateDirective,\n ArdColorPickerShadeIndicatorTemplateDirective,\n ArdColorPickerColorReferenceTemplateDirective,\n ArdColorPickerOpacityIndicatorTemplateDirective,\n ],\n imports: [CommonModule, ArdiumSelectModule, ArdiumOptionModule, ArdiumNumberInputModule, ArdiumHexInputModule],\n exports: [\n ArdiumColorPickerComponent,\n ArdColorPickerHueIndicatorTemplateDirective,\n ArdColorPickerShadeIndicatorTemplateDirective,\n ArdColorPickerColorReferenceTemplateDirective,\n ArdColorPickerOpacityIndicatorTemplateDirective,\n ],\n})\nexport class ArdiumColorPickerModule {}\n","import { ChangeDetectionStrategy, Component, Directive, ElementRef, HostBinding, Input, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { OneAxisAlignment } from '../types/alignment.types';\n\n@Component({\n selector: 'ard-card-header',\n templateUrl: 'card-header.template.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumCardHeaderComponent {}\n\n@Directive({ selector: 'ard-card-subtitle, [ard-card-subtitle]' })\nexport class ArdiumCardSubtitleDirective {\n constructor(renderer: Renderer2, hostElement: ElementRef) {\n renderer.addClass(hostElement.nativeElement, 'ard-card-subtitle');\n }\n}\n\n@Directive({ selector: 'ard-card-title, [ard-card-title]' })\nexport class ArdiumCardTitleDirective {\n constructor(renderer: Renderer2, hostElement: ElementRef) {\n renderer.addClass(hostElement.nativeElement, 'ard-card-title');\n }\n}\n\n@Directive({ selector: '[ard-card-avatar]' })\nexport class ArdiumCardAvatarDirective {\n constructor(renderer: Renderer2, hostElement: ElementRef) {\n renderer.addClass(hostElement.nativeElement, 'ard-card-avatar');\n }\n}\n\n@Directive({ selector: 'ard-card-content, [ard-card-content]' })\nexport class ArdiumCardContentDirective {\n constructor(renderer: Renderer2, hostElement: ElementRef) {\n renderer.addClass(hostElement.nativeElement, 'ard-card-content');\n }\n}\n\n@Directive({ selector: '[ard-card-image]' })\nexport class ArdiumCardImageDirective {\n constructor(renderer: Renderer2, hostElement: ElementRef) {\n renderer.addClass(hostElement.nativeElement, 'ard-card-image');\n }\n}\n\n@Directive({ selector: 'ard-card-action-buttons, [ard-card-action-buttons]' })\nexport class ArdiumCardActionButtonsDirective {\n @Input() align: OneAxisAlignment = OneAxisAlignment.Right;\n\n @HostBinding('class')\n get alignClass(): string {\n return `ard-card-action-buttons ard-align-${this.align}`;\n }\n}\n\n@Directive({ selector: 'ard-card-footer, [ard-card-footer]' })\nexport class ArdiumCardFooterDirective {\n constructor(renderer: Renderer2, hostElement: ElementRef) {\n renderer.addClass(hostElement.nativeElement, 'ard-card-footer');\n }\n}\n","<ng-content select=\"[ard-card-avatar]\"></ng-content>\r\n<div class=\"ard-card-header-title-container\">\r\n <ng-content\r\n select=\"ard-card-title, ard-card-subtitle,\r\n [ard-card-title], [ard-card-subtitle]\"></ng-content>\r\n</div>\r\n<ng-content></ng-content>","export const CardAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type CardAppearance = (typeof CardAppearance)[keyof typeof CardAppearance];\n\nexport const CardVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type CardVariant = (typeof CardVariant)[keyof typeof CardVariant];\n","import { ChangeDetectionStrategy, Component, Directive, HostBinding, Input, ViewEncapsulation } from '@angular/core';\nimport { CardAppearance, CardVariant } from './card.types';\n\n@Directive({ selector: '[ard-card]' })\nexport class ArdiumCardDirective {\n //! appearance\n @Input() appearance: CardAppearance = CardAppearance.Raised;\n @Input() variant: CardVariant = CardVariant.Rounded;\n\n @HostBinding('class')\n get ngClasses(): string {\n return ['ard-card', `ard-appearance-${this.appearance}`, `ard-variant-${this.variant}`].join(' ');\n }\n}\n\n@Component({\n selector: 'ard-card',\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumCardComponent extends ArdiumCardDirective {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n ArdiumCardActionButtonsDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardFooterDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardImageDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardTitleDirective,\n} from './card.children';\nimport { ArdiumCardComponent, ArdiumCardDirective } from './card.component';\n\n@NgModule({\n declarations: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n imports: [CommonModule],\n exports: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n})\nexport class ArdiumCardModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ColorPickerColorReferenceContext, ColorPickerIndicatorContext } from '../../color/color-picker/color-picker.types';\nimport { ColorInputActionButtonsContext } from './color-input.types';\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdColorInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-prefix-tmp]' })\nexport class ArdColorInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-suffix-tmp]' })\nexport class ArdColorInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n//! picker directives\n@Directive({\n selector: 'ard-color-input > ng-template[ard-shade-indicator-tmp]',\n})\nexport class ArdColorInputShadeIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-hue-indicator-tmp]' })\nexport class ArdColorInputHueIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-opacity-indicator-tmp]',\n})\nexport class ArdColorInputOpacityIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-color-reference-tmp]',\n})\nexport class ArdColorInputColorReferenceTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerColorReferenceContext>) {}\n}\n\n//! action buttons\n@Directive({\n selector: 'ard-color-picker > ng-template[ard-action-buttons-tmp]',\n})\nexport class ArdColorInputActionButtonsTemplateDirective {\n constructor(public template: TemplateRef<ColorInputActionButtonsContext>) {}\n}\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport * as Color from 'color';\nimport { ButtonVariant } from '../../buttons/general-button.types';\nimport { CardAppearance, CardVariant } from '../../card/card.types';\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel/dropdown-panel.types';\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\nimport { CaseTransformerType } from '../input-types';\nimport {\n ArdColorInputActionButtonsTemplateDirective,\n ArdColorInputColorReferenceTemplateDirective,\n ArdColorInputHueIndicatorTemplateDirective,\n ArdColorInputOpacityIndicatorTemplateDirective,\n ArdColorInputPlaceholderTemplateDirective,\n ArdColorInputPrefixTemplateDirective,\n ArdColorInputShadeIndicatorTemplateDirective,\n ArdColorInputSuffixTemplateDirective,\n} from './color-input.directives';\nimport { ColorInputActionButtonsContext } from './color-input.types';\n\n@Component({\n selector: 'ard-color-input',\n templateUrl: './color-input.component.html',\n styleUrls: ['./color-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumColorInputComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumColorInputComponent extends _NgModelComponentBase implements ControlValueAccessor, AfterViewInit {\n readonly element!: HTMLElement;\n\n constructor(\n private _cd: ChangeDetectorRef,\n private viewContainerRef: ViewContainerRef,\n private overlay: Overlay,\n private scrollStrategyOpts: ScrollStrategyOptions,\n elementRef: ElementRef<HTMLElement>\n ) {\n super();\n\n this.element = elementRef.nativeElement;\n }\n //! ChangeDetectorRef\n detectChanges(): void {\n if (!(<any>this._cd).destroyed) {\n this._cd.detectChanges();\n }\n }\n\n //! input view\n @ViewChild('textInput')\n protected textInputEl!: ElementRef<HTMLInputElement>;\n ngAfterViewInit(): void {\n this._setInputAttributes();\n }\n\n readonly DEFAULTS = {\n clearButtonTitle: 'Clear',\n };\n\n @Input() inputId?: string;\n\n //! prefix & suffix\n @ContentChild(ArdColorInputPrefixTemplateDirective, { read: TemplateRef })\n prefixTemplate?: TemplateRef<any>;\n @ContentChild(ArdColorInputSuffixTemplateDirective, { read: TemplateRef })\n suffixTemplate?: TemplateRef<any>;\n\n //! placeholder\n @Input() placeholder: string = '';\n\n @ContentChild(ArdColorInputPlaceholderTemplateDirective, {\n read: TemplateRef,\n })\n placeholderTemplate?: TemplateRef<any>;\n\n get shouldDisplayPlaceholder(): boolean {\n return Boolean(this.placeholder) && !this.value;\n }\n\n //! appearance\n //all handled in ard-form-field-frame component\n @Input() appearance: FormElementAppearance = FormElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n //! settings\n @Input() case: CaseTransformerType = CaseTransformerType.NoChange;\n\n private _withActionButtons: boolean = false;\n @Input()\n get withActionButtons(): boolean {\n return this._withActionButtons;\n }\n set withActionButtons(v: any) {\n this._withActionButtons = coerceBooleanProperty(v);\n }\n\n //! clear button\n private _clearable: boolean = true;\n @Input()\n get clearable(): boolean {\n return this._clearable;\n }\n set clearable(v: any) {\n this._clearable = coerceBooleanProperty(v);\n if (this.value == null) {\n this.value = Color('red');\n }\n }\n\n @Input() clearButtonTitle: string = this.DEFAULTS.clearButtonTitle;\n\n get shouldShowClearButton(): boolean {\n return this._clearable && !this.disabled && Boolean(this.value);\n }\n onClearButtonClick(event: MouseEvent): void {\n event.stopPropagation();\n this.clear();\n this.focus();\n }\n\n //! other inputs\n @Input() inputAttrs: { [key: string]: any } = {};\n\n //! control value accessor's write value implementation\n writeValue(v: Color | null) {\n this.value = v;\n }\n\n //! clear function\n clear(): void {\n if (!this.clearable) return;\n\n this.writeValue(null);\n this._emitChange();\n this.clearEvent.emit();\n }\n\n //! value two-way binding\n protected _value: Color | null = null;\n @Input()\n set value(v: Color | null) {\n this._value = v;\n this._updateInputElValue();\n }\n get value(): Color | null {\n return this._value;\n }\n @Output() valueChange = new EventEmitter<Color>();\n\n //* event emitters\n @Output('change') changeEvent = new EventEmitter<Color>();\n @Output('clear') clearEvent = new EventEmitter<any>();\n\n //! event handlers\n //change\n onChange(event: Event): void {\n event.stopPropagation();\n this._emitChange();\n }\n protected _emitChange(): void {\n const v = this.value;\n if (!v) return;\n\n this._onChangeRegistered?.(v);\n this.changeEvent.emit(v);\n this.valueChange.emit(v);\n }\n private _onTouched(): void {\n this.touched = true;\n this._onTouchedRegistered?.();\n }\n\n //smart focus\n onMouseup(): void {\n this.toggle();\n }\n\n onCopy(event: ClipboardEvent): void {\n const v = this.value;\n if (!v) return;\n\n event.clipboardData?.setData('text/plain', v.hex().toString());\n event.preventDefault();\n }\n\n //! state\n private _touched: boolean = false;\n get touched(): boolean {\n return this._touched;\n }\n private set touched(state: boolean) {\n this._touched = state;\n }\n\n //! color picker overlay\n @ViewChild('overlayHost', { read: ElementRef })\n overlayHost!: ElementRef<HTMLDivElement>;\n @ViewChild('overlayTemplate', { read: TemplateRef })\n overlayTemplate!: TemplateRef<any>;\n\n private overlayRef?: OverlayRef;\n\n private _createOverlay(): void {\n const strategy = this.overlay\n .position()\n .flexibleConnectedTo(this.overlayHost)\n .withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]);\n\n const config = new OverlayConfig({\n positionStrategy: strategy,\n scrollStrategy: this.scrollStrategyOpts.block(),\n hasBackdrop: false,\n });\n\n this.overlayRef = this.overlay.create(config);\n\n const portal = new TemplatePortal(this.overlayTemplate, this.viewContainerRef);\n this.overlayRef.attach(portal);\n }\n private _destroyOverlay(): void {\n if (!this.overlayRef) return;\n\n this.overlayRef.dispose();\n delete this.overlayRef;\n }\n\n //! overlay state handlers\n private _isOverlayOpen: boolean = false;\n\n @Output('open') openEvent = new EventEmitter<any>();\n @Output('close') closeEvent = new EventEmitter<any>();\n\n toggle(): void {\n if (this._isOverlayOpen) {\n this.close();\n return;\n }\n this.open();\n }\n open(): void {\n if (this.disabled || this._isOverlayOpen) return;\n\n this._isOverlayOpen = true;\n\n this._createOverlay();\n this.focus();\n\n this.openEvent.emit();\n }\n close(): void {\n if (!this._isOverlayOpen) return;\n\n this._isOverlayOpen = false;\n this._temporaryValue = null;\n\n this._destroyOverlay();\n\n this._onTouched();\n this.closeEvent.emit();\n }\n //! overlay appearance\n private _overlayAppearance?: CardAppearance = undefined;\n @Input()\n set overlayAppearance(v: CardAppearance) {\n this._overlayAppearance = v;\n }\n get overlayAppearance(): CardAppearance {\n if (this._overlayAppearance) return this._overlayAppearance;\n if (this.appearance == FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\n return DropdownPanelAppearance.Raised;\n }\n private _overlayVariant?: CardVariant = undefined;\n @Input()\n set overlayVariant(v: CardVariant) {\n this._overlayVariant = v;\n }\n get overlayVariant(): CardVariant {\n if (this._overlayVariant) return this._overlayVariant;\n if (this.variant == FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\n return this.variant;\n }\n\n //! color picker integration\n private _temporaryValue: Color | null = null;\n onColorPickerChange(event: Color): void {\n if (this.withActionButtons) {\n this._temporaryValue = event;\n return;\n }\n this.value = event;\n this.detectChanges();\n }\n handleOutsideClick(event: MouseEvent): void {\n if (!this._isOverlayOpen) return;\n const target = event.target as HTMLElement;\n if (this.element.contains(target)) return;\n\n this.close();\n }\n apply(): void {\n if (!this._temporaryValue) return this.cancel();\n\n this.value = this._temporaryValue;\n this.detectChanges();\n this.close();\n }\n cancel(): void {\n this.close();\n }\n reset(): void {\n this._temporaryValue = this.value;\n }\n\n //! overlay templates\n @ContentChild(ArdColorInputShadeIndicatorTemplateDirective, {\n read: TemplateRef,\n })\n shadeIndicatorTemplate?: TemplateRef<any>;\n @ContentChild(ArdColorInputHueIndicatorTemplateDirective, {\n read: TemplateRef,\n })\n hueIndicatorTemplate?: TemplateRef<any>;\n @ContentChild(ArdColorInputOpacityIndicatorTemplateDirective, {\n read: TemplateRef,\n })\n opacityIndicatorTemplate?: TemplateRef<any>;\n @ContentChild(ArdColorInputColorReferenceTemplateDirective, {\n read: TemplateRef,\n })\n colorReferenceTemplate?: TemplateRef<any>;\n @ContentChild(ArdColorInputActionButtonsTemplateDirective, {\n read: TemplateRef,\n })\n actionButtonsTemplate?: TemplateRef<any>;\n\n get actionButtonVariant(): ButtonVariant {\n if (this.variant == FormElementVariant.Sharp) return ButtonVariant.Sharp;\n return ButtonVariant.Rounded;\n }\n getActionButtonsContext(): ColorInputActionButtonsContext {\n return {\n apply: () => {\n this.apply();\n },\n cancel: () => {\n this.cancel();\n },\n reset: () => {\n this.reset();\n },\n };\n }\n\n //! helpers\n protected _updateInputElValue(): void {\n this.textInputEl.nativeElement.value = this.value?.hex().toString() ?? '';\n }\n protected _setInputAttributes() {\n const input = this.textInputEl.nativeElement;\n const attributes: { [key: string]: string } = {\n type: 'text',\n autocorrect: 'off',\n autocapitalize: 'off',\n autocomplete: 'off',\n tabindex: String(this.tabIndex),\n ...this.inputAttrs,\n };\n\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, String(attributes[key]));\n }\n }\n}\n","<ard-form-field-frame\r\n [appearance]=\"appearance\"\r\n [variant]=\"variant\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n #overlayHost\r\n>\r\n <div class=\"ard-color-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n\r\n <input #textInput\r\n [attr.id]=\"inputId\"\r\n tabindex=\"-1\"\r\n readonly\r\n >\r\n </div>\r\n\r\n <ard-_clear-button\r\n *ngIf=\"shouldShowClearButton\"\r\n [title]=\"clearButtonTitle\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n ></ard-_clear-button>\r\n\r\n <button\r\n class=\"ard-color-display-button\"\r\n #focusableElement\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n >\r\n <ard-color-display [color]=\"value\"></ard-color-display>\r\n </button>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #overlayTemplate>\r\n <ard-card\r\n class=\"ard-overlay-card ard-color-input-overlay-card\"\r\n [appearance]=\"overlayAppearance\"\r\n [variant]=\"overlayVariant\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n >\r\n <ard-color-picker\r\n [value]=\"value\"\r\n (valueChange)=\"onColorPickerChange($event)\"\r\n [hueIndicatorTemplate]=\"hueIndicatorTemplate\"\r\n [shadeIndicatorTemplate]=\"shadeIndicatorTemplate\"\r\n [opacityIndicatorTemplate]=\"opacityIndicatorTemplate\"\r\n [colorReferenceTemplate]=\"colorReferenceTemplate\"\r\n ></ard-color-picker>\r\n <ard-card-action-buttons *ngIf=\"withActionButtons\">\r\n <ng-template #defaultActionButtonsTemplate let-applyFn=\"apply\" let-cancelFn=\"cancel\">\r\n <ard-button appearance=\"transparent\" [variant]=\"actionButtonVariant\" (click)=\"cancelFn()\">Cancel</ard-button>\r\n <ard-button appearance=\"raised-strong\" [variant]=\"actionButtonVariant\" (click)=\"applyFn()\">Apply</ard-button>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"actionButtonsTemplate ?? defaultActionButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"getActionButtonsContext()\"\r\n />\r\n </ard-card-action-buttons>\r\n </ard-card>\r\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumClickOutsideEventModule } from '@ardium-ui/devkit';\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\nimport { ArdiumCardModule } from '../../card/card.module';\nimport { ArdiumColorDisplayModule } from '../../color/color-display/color-display.module';\nimport { ArdiumColorPickerModule } from '../../color/color-picker/color-picker.module';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport { ArdiumColorInputComponent } from './color-input.component';\nimport {\n ArdColorInputActionButtonsTemplateDirective,\n ArdColorInputColorReferenceTemplateDirective,\n ArdColorInputHueIndicatorTemplateDirective,\n ArdColorInputOpacityIndicatorTemplateDirective,\n ArdColorInputPlaceholderTemplateDirective,\n ArdColorInputPrefixTemplateDirective,\n ArdColorInputShadeIndicatorTemplateDirective,\n ArdColorInputSuffixTemplateDirective,\n} from './color-input.directives';\n\n@NgModule({\n declarations: [\n ArdiumColorInputComponent,\n ArdColorInputPlaceholderTemplateDirective,\n ArdColorInputPrefixTemplateDirective,\n ArdColorInputSuffixTemplateDirective,\n ArdColorInputShadeIndicatorTemplateDirective,\n ArdColorInputHueIndicatorTemplateDirective,\n ArdColorInputOpacityIndicatorTemplateDirective,\n ArdColorInputColorReferenceTemplateDirective,\n ArdColorInputActionButtonsTemplateDirective,\n ],\n imports: [\n CommonModule,\n ArdiumFormFieldFrameModule,\n _ClearButtonModule,\n ArdiumColorPickerModule,\n ArdiumColorDisplayModule,\n ArdiumCardModule,\n ArdiumClickOutsideEventModule,\n ArdiumButtonModule,\n ],\n exports: [\n ArdiumColorInputComponent,\n ArdColorInputPlaceholderTemplateDirective,\n ArdColorInputPrefixTemplateDirective,\n ArdColorInputSuffixTemplateDirective,\n ArdColorInputShadeIndicatorTemplateDirective,\n ArdColorInputHueIndicatorTemplateDirective,\n ArdColorInputOpacityIndicatorTemplateDirective,\n ArdColorInputColorReferenceTemplateDirective,\n ArdColorInputActionButtonsTemplateDirective,\n ],\n})\nexport class ArdiumColorInputModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport {\n CalendarActionButtonsContext,\n CalendarDayContext,\n CalendarFloatingMonthContext,\n CalendarDaysViewHeaderContext,\n CalendarMonthContext,\n CalendarWeekdayContext,\n CalendarYearContext,\n CalendarMonthsViewHeaderContext,\n CalendarYearsViewHeaderContext,\n} from './calendar.types';\n\n@Directive({\n selector: 'ard-calendar > ng-template[ard-header-tmp], ard-datepicker > ng-template[ard-header-tmp]',\n})\nexport class ArdDaysViewHeaderTemplateDirective {\n constructor(public template: TemplateRef<CalendarDaysViewHeaderContext>) {}\n}\n\n@Directive({\n selector: 'ard-calendar > ng-template[ard-year-picker-header-tmp], ard-datepicker > ng-template[ard-year-picker-header-tmp]',\n})\nexport class ArdYearsViewHeaderTemplateDirective {\n constructor(public template: TemplateRef<CalendarYearsViewHeaderContext>) {}\n}\n\n@Directive({\n selector: 'ard-calendar > ng-template[ard-month-picker-header-tmp], ard-datepicker > ng-template[ard-month-picker-header-tmp]',\n})\nexport class ArdMonthsViewHeaderTemplateDirective {\n constructor(public template: TemplateRef<CalendarMonthsViewHeaderContext>) {}\n}\n\n@Directive({\n selector: 'ard-calendar > ng-template[ard-weekday-tmp], ard-datepicker > ng-template[ard-weekday-tmp]',\n})\nexport class ArdWeekdayTemplateDirective {\n constructor(public template: TemplateRef<CalendarWeekdayContext>) {}\n}\n\n@Directive({\n selector: 'ard-calendar > ng-template[ard-floating-month-tmp], ard-datepicker > ng-template[ard-floating-month-tmp]',\n})\nexport class ArdFloatingMonthTemplateDirective {\n constructor(public template: TemplateRef<CalendarFloatingMonthContext>) {}\n}\n\n@Directive({\n selector: 'ard-calendar > ng-template[ard-year-tmp], ard-datepicker > ng-template[ard-year-tmp]',\n})\nexport class ArdYearTemplateDirective {\n constructor(public template: TemplateRef<CalendarYearContext>) {}\n}\n\n@Directive({\n selector: 'ard-calendar > ng-template[ard-month-tmp], ard-datepicker > ng-template[ard-month-tmp]',\n})\nexport class ArdMonthTemplateDirective {\n constructor(public template: TemplateRef<CalendarMonthContext>) {}\n}\n\n@Directive({\n selector: 'ard-calendar > ng-template[ard-day-tmp], ard-datepicker > ng-template[ard-day-tmp]',\n})\nexport class ArdDayTemplateDirective {\n constructor(public template: TemplateRef<CalendarDayContext>) {}\n}\n","export type CalendarArray = {\n array: (number | null)[][];\n leadingSpaces: number;\n trailingSpaces: number;\n weeks: number;\n};\n\n/**\n * Generates a layout array to be used to create a calendar page for the given date's month.\n *\n * The returned object contains an array to create the layout from, the number of leading and trailing spaces in the layout, and the number of weeks (full or not) in the month.\n * @param date The date to get the month from.\n * @param firstWeekday The index of the first weekday in the calendar layout. Starts at Sunday, with the index 0. Defaults to 1.\n * @returns A {@link CalendarArray} object.\n */\nexport function getMonthLayout(date: Date, firstWeekday: number = 1): CalendarArray {\n firstWeekday %= 7;\n\n const firstDayDate = new Date(date);\n firstDayDate.setDate(1);\n const firstDayWeekday = (firstDayDate.getDay() - firstWeekday + 7) % 7;\n\n const lastDayDate = new Date(firstDayDate);\n lastDayDate.setMonth(firstDayDate.getMonth() + 1);\n lastDayDate.setDate(0);\n const lastDay = lastDayDate.getDate();\n\n const calendarArray: (number | null)[][] = [];\n let currentDay = firstDayWeekday * -1;\n let trailingSpaces = 0;\n let totalWeeks = NaN;\n\n for (let week = 0; week < 6; week++) {\n const currentWeek: (number | null)[] = [];\n for (let weekday = 0; weekday < 7; weekday++) {\n currentDay++;\n if (currentDay < 1 || currentDay > lastDay) {\n currentWeek.push(null);\n trailingSpaces++;\n continue;\n }\n currentWeek.push(currentDay);\n }\n calendarArray.push(currentWeek);\n if (currentDay > lastDay) {\n totalWeeks = week + 1;\n break;\n }\n }\n trailingSpaces -= firstDayWeekday;\n\n return {\n array: calendarArray,\n leadingSpaces: firstDayWeekday,\n trailingSpaces,\n weeks: totalWeeks,\n };\n}\n","export const CalendarRangeVariant = {\n Row: 'row',\n OutlineRounded: 'outline-rounded',\n OutlineSharp: 'outline-sharp',\n} as const;\nexport type CalendarRangeVariant = (typeof CalendarRangeVariant)[keyof typeof CalendarRangeVariant];\n\nexport type DateRange = {\n low: Date;\n high: Date;\n};\n\nexport type YearRange = {\n low: number;\n high: number;\n};\n\nexport const CalendarView = {\n Years: 'years',\n Months: 'months',\n Days: 'days',\n} as const;\nexport type CalendarView = (typeof CalendarView)[keyof typeof CalendarView];\n\n//! template contexts\nexport type CalendarYearsViewHeaderContext = {\n nextPage: () => void;\n prevPage: () => void;\n openDaysView: () => void;\n yearRange: YearRange;\n dateRange: DateRange;\n $implicit: DateRange;\n};\n\nexport type CalendarMonthsViewHeaderContext = {\n openDaysView: () => void;\n openYearsView: () => void;\n year: number;\n date: Date;\n $implicit: number;\n};\n\nexport type CalendarDaysViewHeaderContext = {\n nextMonth: () => void;\n prevMonth: () => void;\n nextYear: () => void;\n prevYear: () => void;\n openYearsView: () => void;\n openMonthsView: () => void;\n year: number;\n month: number;\n date: Date;\n $implicit: Date;\n};\n\nexport type CalendarWeekdayContext = {\n dayIndex: number;\n date: Date;\n $implicit: Date;\n};\n\nexport type CalendarFloatingMonthContext = {\n month: number;\n date: Date;\n $implicit: Date;\n};\n\nexport type CalendarYearContext = {\n value: number;\n date: Date;\n $implicit: number;\n select: (year: number) => void;\n};\n\nexport type CalendarMonthContext = {\n month: number;\n date: Date;\n $implicit: Date;\n select: (month: number | Date) => void;\n};\n\nexport type CalendarDayContext = {\n value: number;\n date: Date;\n $implicit: number;\n select: (day: number | Date) => void;\n};\n\nexport type CalendarActionButtonsContext = {\n cancel: () => void;\n apply: () => void;\n reset: () => void;\n};\n","import { ThisReceiver } from '@angular/compiler';\nimport { OnChanges, SimpleChanges, forwardRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { roundToMultiple } from 'more-rounding';\nimport { isDefined, isNull } from 'simple-bool';\nimport { ComponentColor } from '../types/colors.types';\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\nimport {\n ArdDaysViewHeaderTemplateDirective,\n ArdDayTemplateDirective,\n ArdFloatingMonthTemplateDirective,\n ArdMonthsViewHeaderTemplateDirective,\n ArdMonthTemplateDirective,\n ArdWeekdayTemplateDirective,\n ArdYearsViewHeaderTemplateDirective,\n ArdYearTemplateDirective,\n} from './calendar.directives';\nimport { getMonthLayout } from './calendar.helpers';\nimport {\n CalendarView,\n CalendarDayContext,\n CalendarDaysViewHeaderContext,\n CalendarFloatingMonthContext,\n CalendarMonthContext,\n CalendarMonthsViewHeaderContext,\n CalendarWeekdayContext,\n CalendarYearContext,\n CalendarYearsViewHeaderContext,\n DateRange,\n} from './calendar.types';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nfunction isLeapYear(year: number): boolean {\n return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;\n}\n\n@Component({\n selector: 'ard-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumCalendarComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumCalendarComponent extends _NgModelComponentBase implements OnInit, OnChanges {\n ngOnInit(): void {\n this._updateCalendarArray();\n this._updateWeekdayArray();\n this._updateDisplayedYearRangeStart();\n }\n private _wasSelectedChecked: boolean = false;\n ngOnChanges(changes: SimpleChanges): void {\n if (this._wasSelectedChecked) return;\n this._wasSelectedChecked = true;\n\n if (changes['selected']) {\n const v = this.selected;\n if (isNull(v)) return;\n\n this.activeDate = new Date(v.getFullYear(), v.getMonth(), 1);\n }\n }\n\n //! determining today state\n todayDate: Date = new Date();\n\n isDayToday(day: number | null): boolean {\n return this.activeYear == this.todayDate.getFullYear() && this.activeMonth == this.todayDate.getMonth() && day == this.todayDate.getDate();\n }\n isMonthToday(month: number): boolean {\n return this.activeYear == this.todayDate.getFullYear() && month == this.todayDate.getMonth();\n }\n isYearToday(year: number): boolean {\n return year == this.todayDate.getFullYear();\n }\n\n //! determining if an entry is selected\n isDaySelected(day: number | Date | null): boolean {\n if (day instanceof Date) day = day.getDate();\n return (\n this.selected != null &&\n this.activeYear == this.selected.getFullYear() &&\n this.activeMonth == this.selected.getMonth() &&\n day == this.selected.getDate()\n );\n }\n isMonthSelected(month: number | Date): boolean {\n if (month instanceof Date) month = month.getMonth();\n return this.selected != null && this.activeYear == this.selected.getFullYear() && month == this.selected.getMonth();\n }\n isYearSelected(year: number | Date): boolean {\n if (year instanceof Date) year = year.getFullYear();\n return this.selected != null && year == this.selected.getFullYear();\n }\n\n //! color & wrapper classes\n @Input() color: ComponentColor = ComponentColor.Primary;\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`, this.nointeract ? 'ard-calendar-nointeract' : '', this.staticHeight ? 'ard-calendar-static-height' : ''].join(' ');\n }\n\n //! open year & month setters\n //pick a year range start so that the today date is always in the 3rd row\n private readonly todayYearRangeStart: number = this.todayDate.getFullYear() - (this.todayDate.getFullYear() % 4) - 8;\n\n displayedYearRangeStart: number = this.todayYearRangeStart;\n\n private _updateDisplayedYearRangeStart(forcedYear?: number): void {\n if (isDefined(forcedYear)) this.displayedYearRangeStart = forcedYear;\n\n //add the difference between the active year and the start of the range for the current year\n //rounded to a multiple of 24, towards the number zero\n //the difference may be negative, if the active year is before todayYearRangeStart\n this.displayedYearRangeStart = this.todayYearRangeStart + roundToMultiple(this.activeYear - this.todayYearRangeStart, 24, 'to_zero');\n }\n\n yearRangeArrayCache: number[] | null = null;\n get yearRangeArray(): number[] {\n if (!this.yearRangeArrayCache) {\n let yearRangeStart = this.displayedYearRangeStart;\n const newArray = new Array(24).map(() => yearRangeStart++);\n this.yearRangeArrayCache = newArray;\n }\n return this.yearRangeArrayCache;\n }\n\n protected _activeDate: Date = new Date(this.todayDate.getFullYear(), this.todayDate.getMonth(), this.todayDate.getDate());\n set activeDate(v: Date | string | number) {\n const newDate = new Date(v);\n if (this.activeYear != newDate.getFullYear()) this.yearRangeArrayCache = null;\n this._activeDate = newDate;\n\n this._updateCalendarArray();\n }\n get activeDate(): Date {\n return this._activeDate;\n }\n\n get activeYear(): number {\n return this._activeDate.getFullYear();\n }\n @Input()\n set activeYear(v: any) {\n const year = coerceNumberProperty(v, new Date().getFullYear());\n this._activeDate.setFullYear(year);\n this.activeDate = new Date(year, this.activeMonth, 1);\n this.yearRangeArrayCache = null;\n\n this._updateCalendarArray();\n }\n\n get activeMonth(): number {\n return this._activeDate.getMonth();\n }\n @Input()\n set activeMonth(v: any) {\n const month = coerceNumberProperty(v, new Date().getMonth());\n const oldDateYear = this.activeYear;\n this.activeDate = new Date(this.activeYear, month, 1);\n if (oldDateYear != this.activeYear) this.yearRangeArrayCache = null;\n\n this._updateCalendarArray();\n }\n //! selection functions\n protected _selected: Date | null = null;\n @Input()\n set selected(v: any) {\n this.writeValue(v);\n }\n get selected(): Date | null {\n return this._selected;\n }\n\n writeValue(v: any): void {\n if (typeof v == 'string') {\n //try to see if it is an array of numbers separated by a comma\n const vAsArray1 = v.split(',').map(v => Number(v));\n if (vAsArray1.length >= 1 && vAsArray1.length <= 3 && vAsArray1.every(v => !isNaN(v))) {\n v = new Date(vAsArray1[0], vAsArray1[1] ?? 0, vAsArray1[2] ?? 1);\n } else {\n //try to see if it is an array of numbers separated by some whitespace\n const vAsArray2 = v.split(/\\s/).map(v => Number(v));\n if (vAsArray2.length >= 1 && vAsArray2.length <= 3 && vAsArray2.every(v => !isNaN(v))) {\n v = new Date(vAsArray2[0], vAsArray2[1] ?? 0, vAsArray2[2] ?? 1);\n } else {\n v = new Date(v);\n }\n }\n }\n //is a Date object && does not contain an error\n if (v instanceof Date && !isNaN(v.valueOf())) {\n this._selected = v;\n return;\n }\n if (v == null) {\n this._selected = null;\n return;\n }\n console.warn(`Could not parse [selected] value on <ard-calendar>, as it is not a valid value. Provided value: \"${v}\"`);\n this._selected = null;\n }\n\n //! output events\n @Output() yearSelected = new EventEmitter<number>();\n @Output() monthSelected = new EventEmitter<number>();\n\n @Output() selectedChange = new EventEmitter<Date | null>();\n @Output() activeYearChange = new EventEmitter<number>();\n @Output() activeMonthChange = new EventEmitter<number>();\n\n @Output() viewChange = new EventEmitter<CalendarView>();\n\n @Output('change') changeEvent = new EventEmitter<Date | null>();\n\n protected _emitChange(): void {\n const v = this.selected;\n this._onChangeRegistered?.(v);\n this.selectedChange.emit(v);\n this.changeEvent.emit(v);\n }\n\n //! calendar entry hover & click\n private _highlightedDay: number | null = null;\n get highlightedDay(): number | null {\n return this._highlightedDay;\n }\n set highlightedDay(v: number | null) {\n if (isNull(v)) {\n this._highlightedDay = v;\n return;\n }\n const date = new Date(this.activeYear, this.activeMonth, v);\n this._highlightedDay = date.getDate();\n }\n\n setHighlightedDayAdjustDate(day: number): void {\n this.highlightedDay = day;\n\n const date = new Date(this.activeYear, this.activeMonth, day);\n\n if (this.activeYear != date.getFullYear()) this.activeYear = date.getFullYear();\n\n if (this.activeMonth != date.getMonth()) this.activeMonth = date.getMonth();\n }\n\n private _highlightedMonth: number | null = null;\n get highlightedMonth(): number | null {\n return this._highlightedMonth;\n }\n set highlightedMonth(v: number | null) {\n if (isNull(v)) {\n this._highlightedMonth = v;\n return;\n }\n const date = new Date(this.activeYear, v, 1);\n this._highlightedMonth = date.getMonth();\n }\n\n setHighlightedMonthAdjustDate(month: number): void {\n this.highlightedMonth = month;\n\n const date = new Date(this.activeYear, month, 1);\n\n if (this.activeYear != date.getFullYear()) this.activeYear = date.getFullYear();\n }\n\n private _highlightedYear: number | null = null;\n get highlightedYear(): number | null {\n return this._highlightedYear;\n }\n set highlightedYear(v: number | null) {\n this._highlightedYear = v;\n }\n\n setHighlightedYearAdjustPage(year: number): void {\n this.highlightedYear = year;\n\n if (year < this.displayedYearRangeStart || year >= this.displayedYearRangeStart + 24) {\n //add the difference between the highlighted year and the displayed range start year\n //rounded to a multiple of 24, away from the number zero\n //the difference may be negative, if the first if condition is met\n this.displayedYearRangeStart += roundToMultiple(year - this.displayedYearRangeStart, 24, 'from_zero');\n }\n }\n\n get currentAriaLabel(): string {\n return new Date(this.activeYear, this.activeMonth, this.highlightedDay ?? 1).toLocaleDateString(undefined, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n }\n\n onCalendarDayMouseover(day: number | null): void {\n if (day == null) return;\n if (this._isUsingKeyboard) return;\n\n this.highlightedDay = day;\n }\n onCalendarMonthMouseover(month: number): void {\n if (this._isUsingKeyboard) return;\n\n this.highlightedMonth = month;\n }\n onCalendarYearMouseover(year: number): void {\n if (this._isUsingKeyboard) return;\n\n this.highlightedYear = year;\n }\n\n private _isUsingKeyboard: boolean = false;\n @HostListener('document:mousemove')\n onDocumentMousemove(): void {\n if (!this._isUsingKeyboard) this.highlightedDay = null;\n\n this._isUsingKeyboard = false;\n }\n @HostListener('document:keydown')\n onDocumentKeydown(): void {\n this._isUsingKeyboard = true;\n }\n\n onCalendarDayClick(day: number | null): void {\n if (day == null) return;\n\n this.selectDay(day);\n\n this.focus();\n this.highlightedDay = day;\n }\n onCalendarMonthClick(month: number): void {\n this.selectMonth(month);\n }\n onCalendarYearClick(year: number): void {\n this.selectYear(year);\n }\n\n onDayGridFocus(): void {\n this.highlightedDay = 1;\n }\n onDayGridBlur(): void {\n this.highlightedDay = null;\n }\n onDayGridClick(): void {\n this.highlightedDay ??= 1;\n }\n\n onMonthGridFocus(): void {\n this.highlightedMonth = 0;\n }\n onMonthGridBlur(): void {\n this.highlightedMonth = null;\n }\n onMonthGridClick(): void {\n this.highlightedMonth ??= 0;\n }\n\n onYearGridFocus(): void {\n this.highlightedYear = this.displayedYearRangeStart;\n }\n onYearGridBlur(): void {\n this.highlightedYear = null;\n }\n onYearGridClick(): void {\n this.highlightedYear ??= this.displayedYearRangeStart;\n }\n\n //! main grid keyboard controls\n onMainGridKeydown(event: KeyboardEvent): void {\n switch (event.code) {\n case 'Space':\n case 'Enter':\n this._onEnterPress(event);\n break;\n case 'ArrowUp':\n this._onArrowUpPress(event);\n break;\n case 'ArrowDown':\n this._onArrowDownPress(event);\n break;\n case 'ArrowLeft':\n this._onArrowLeftPress(event);\n break;\n case 'ArrowRight':\n this._onArrowRightPress(event);\n break;\n case 'Home':\n this._onHomePress(event);\n break;\n case 'End':\n this._onEndPress(event);\n break;\n case 'PageUp':\n this._onPageUpPress(event);\n break;\n case 'PageDown':\n this._onPageDownPress(event);\n break;\n\n default:\n return;\n }\n }\n //select currently selected entry\n private _onEnterPress(event: KeyboardEvent): void {\n event.preventDefault();\n\n this.selectCurrentlyHighlighted();\n }\n //highlight the entry one line above\n private _onArrowUpPress(event: KeyboardEvent): void {\n event.preventDefault();\n switch (this.activeView) {\n case CalendarView.Days:\n this.highlightPreviousDay(7);\n break;\n case CalendarView.Months:\n this.highlightPreviousMonth(3); //3 months per line\n break;\n case CalendarView.Years:\n this.highlightPreviousYear(4); //4 years per line\n break;\n }\n }\n //highlight the entry one line below\n private _onArrowDownPress(event: KeyboardEvent): void {\n event.preventDefault();\n switch (this.activeView) {\n case CalendarView.Days:\n this.highlightNextDay(7);\n break;\n case CalendarView.Months:\n this.highlightNextMonth(3); //3 months per line\n break;\n case CalendarView.Years:\n this.highlightNextYear(4); //4 years per line\n break;\n }\n }\n //highlight previous entry\n private _onArrowLeftPress(event: KeyboardEvent): void {\n event.preventDefault();\n switch (this.activeView) {\n case CalendarView.Days:\n this.highlightPreviousDay();\n break;\n case CalendarView.Months:\n this.highlightPreviousMonth();\n break;\n case CalendarView.Years:\n this.highlightPreviousYear();\n break;\n }\n }\n //highlight next entry\n private _onArrowRightPress(event: KeyboardEvent): void {\n event.preventDefault();\n switch (this.activeView) {\n case CalendarView.Days:\n this.highlightNextDay();\n break;\n case CalendarView.Months:\n this.highlightNextMonth();\n break;\n case CalendarView.Years:\n this.highlightNextYear();\n break;\n }\n }\n //highlight first entry on the page\n private _onHomePress(event: KeyboardEvent): void {\n event.preventDefault();\n switch (this.activeView) {\n case CalendarView.Days:\n this.highlightFirstDay();\n break;\n case CalendarView.Months:\n this.highlightFirstMonth();\n break;\n case CalendarView.Years:\n this.highlightFirstYear();\n break;\n }\n }\n //highlight last entry on the page\n private _onEndPress(event: KeyboardEvent): void {\n event.preventDefault();\n switch (this.activeView) {\n case CalendarView.Days:\n this.highlightLastDay();\n break;\n case CalendarView.Months:\n this.highlightLastMonth();\n break;\n case CalendarView.Years:\n this.highlightLastYear();\n break;\n }\n }\n //alone: highlight same entry on the previous page\n //with alt: highlight same entry multiple pages before (days view: 12 pages, months view: 10 pages, years view: 5 pages)\n private _onPageUpPress(event: KeyboardEvent): void {\n event.preventDefault();\n switch (this.activeView) {\n case CalendarView.Days:\n if (event.altKey) this.highlightSameDayPreviousYear();\n else this.highlightSameDayPreviousMonth();\n break;\n case CalendarView.Months:\n this.highlightSameMonthPreviousYear(event.altKey);\n break;\n case CalendarView.Years:\n this.highlightSameYearPreviousPage(event.altKey);\n break;\n }\n }\n //alone: highlight same entry on the next page\n //with alt: highlight same entry multiple pages after (days view: 12 pages, months view: 10 pages, years view: 5 pages)\n private _onPageDownPress(event: KeyboardEvent): void {\n event.preventDefault();\n switch (this.activeView) {\n case CalendarView.Days:\n if (event.altKey) this.highlightSameDayNextYear();\n else this.highlightSameDayNextMonth();\n break;\n case CalendarView.Months:\n this.highlightSameMonthNextYear(event.altKey);\n break;\n case CalendarView.Years:\n this.highlightSameYearNextPage(event.altKey);\n break;\n }\n }\n //! manipulation methods\n //selecting\n selectDay(day: number | Date | null): void {\n if (this.isDaySelected(day)) return;\n if (isNull(day)) {\n if (!isDefined(this.selected)) return;\n\n this.selected = null;\n this._emitChange();\n return;\n }\n\n if (day instanceof Date) day = day.getDate();\n\n this.selected = new Date(this.activeYear, this.activeMonth, day);\n this._emitChange();\n }\n selectMonth(month: number | Date | null): void {\n if (isNull(month)) {\n this.activeMonth = null;\n return;\n }\n if (month instanceof Date) month = month.getMonth();\n\n this.activeMonth = month;\n\n this.activeMonthChange.emit(month);\n this.monthSelected.emit(month);\n\n this.openDaysView();\n }\n selectYear(year: number | Date | null): void {\n if (isNull(year)) {\n this.activeYear = null;\n return;\n }\n if (year instanceof Date) year = year.getFullYear();\n\n this.activeYear = year;\n\n this.activeYearChange.emit(year);\n this.yearSelected.emit(year);\n\n this.openMonthsView();\n }\n selectCurrentlyHighlighted(): void {\n if (!isDefined(this.highlightedDay)) return;\n\n switch (this.activeView) {\n case CalendarView.Days:\n this.selectDay(this.highlightedDay);\n return;\n case CalendarView.Months:\n this.selectMonth(this.highlightedMonth);\n return;\n case CalendarView.Years:\n this.selectYear(this.highlightedYear);\n return;\n\n default:\n return;\n }\n }\n //active months/years\n changeMonth(offset: number): void {\n const oldyear = this.activeYear;\n this.activeMonth += offset;\n\n if (this.activeYear != oldyear) this.activeYearChange.emit(this.activeYear);\n this.activeMonthChange.emit(this.activeMonth);\n }\n changeYear(offset: number): void {\n this.activeYear += offset;\n\n this.activeYearChange.emit(this.activeYear);\n }\n //changing year page\n changeYearsViewPage(pages: number): void {\n this.displayedYearRangeStart += 24 * pages;\n }\n //next/prev highlighting\n highlightNextDay(offset: number = 1): void {\n const currentDay = this.highlightedDay;\n if (!isDefined(currentDay)) {\n this.highlightedDay = 1;\n return;\n }\n this.setHighlightedDayAdjustDate(currentDay + offset);\n }\n highlightPreviousDay(offset: number = 1): void {\n this.highlightNextDay(offset * -1);\n }\n highlightNextMonth(offset: number = 1): void {\n const currentMonth = this.highlightedMonth;\n if (!isDefined(currentMonth)) {\n this.highlightedMonth = 0;\n return;\n }\n this.setHighlightedMonthAdjustDate(currentMonth + offset);\n }\n highlightPreviousMonth(offset: number = 1): void {\n this.highlightNextMonth(offset * -1);\n }\n highlightNextYear(offset: number = 1): void {\n const currentYear = this.highlightedYear;\n if (!isDefined(currentYear)) {\n this.highlightedYear = 0;\n return;\n }\n this.setHighlightedYearAdjustPage(currentYear + offset);\n }\n highlightPreviousYear(offset: number = 1): void {\n this.highlightNextYear(offset * -1);\n }\n //first/last highlighting\n highlightFirstDay(): void {\n this.highlightedDay = 1;\n }\n highlightLastDay(): void {\n switch (this.activeMonth + 1) {\n case 1:\n case 3:\n case 5:\n case 7:\n case 8:\n case 10:\n case 12:\n this.highlightedDay = 31;\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n this.highlightedDay = 30;\n break;\n case 2:\n if (isLeapYear(this.activeYear)) this.highlightedDay = 29;\n else this.highlightedDay = 28;\n }\n }\n highlightFirstMonth(): void {\n this.highlightedMonth = 0;\n }\n highlightLastMonth(): void {\n this.highlightedMonth = 11;\n }\n highlightFirstYear(): void {\n this.highlightedYear = this.displayedYearRangeStart;\n }\n highlightLastYear(): void {\n this.highlightedYear = this.displayedYearRangeStart + 23; //24 years per page\n }\n //same day next/prev month/year\n highlightSameDayNextMonth(): void {\n this.activeMonth++;\n\n this._fixDateAfterMonthChange();\n }\n highlightSameDayPreviousMonth(): void {\n this.activeMonth--;\n\n this._fixDateAfterMonthChange();\n }\n private _fixDateAfterMonthChange(): void {\n switch (this.activeMonth + 1) {\n case 1:\n case 3:\n case 5:\n case 7:\n case 8:\n case 10:\n case 12:\n //do nothing\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n //only do if day is 31\n if (this.highlightedDay == 31) this.highlightedDay = 30;\n break;\n case 2: {\n //skip if below 29 or null\n if (!this.highlightedDay || this.highlightedDay < 29) break;\n\n if (isLeapYear(this.activeYear)) this.highlightedDay = 29;\n else this.highlightedDay = 28;\n }\n }\n }\n highlightSameDayNextYear(): void {\n this.activeYear++;\n\n this._fixDateAfterYearChange();\n }\n highlightSameDayPreviousYear(): void {\n this.activeYear--;\n\n this._fixDateAfterYearChange();\n }\n private _fixDateAfterYearChange(): void {\n if (this.highlightedDay != 29) return; //skip if not 29th day is selected\n if (isLeapYear(this.activeYear)) return; //skip if nea year is a leap year\n if (this.activeMonth != 1) return; //skip if not february\n\n this.highlightedDay = 28;\n }\n //same month next/prev year\n highlightSameMonthNextYear(multiple: boolean): void {\n this.activeYear += multiple ? 10 : 1;\n }\n highlightSameMonthPreviousYear(multiple: boolean): void {\n this.activeYear -= multiple ? 10 : 1;\n }\n //same year next/prev page(s)\n highlightSameYearNextPage(multiple: boolean): void {\n if (!isDefined(this.highlightedYear)) {\n this.highlightedYear = this.displayedYearRangeStart;\n return;\n }\n\n this.setHighlightedYearAdjustPage(this.highlightedYear + (multiple ? 60 : 24));\n }\n highlightSameYearPreviousPage(multiple: boolean): void {\n if (!isDefined(this.highlightedYear)) {\n this.highlightedYear = this.displayedYearRangeStart;\n return;\n }\n\n this.setHighlightedYearAdjustPage(this.highlightedYear - (multiple ? 60 : 24));\n }\n\n //! settings\n protected _firstWeekday: number = 1;\n @Input()\n get firstWeekday(): number {\n return this._firstWeekday;\n }\n set firstWeekday(v: any) {\n this._firstWeekday = coerceNumberProperty(v, 1) % 7;\n\n this._updateCalendarArray();\n this._updateWeekdayArray();\n }\n\n protected _nointeract: boolean = false;\n @Input()\n get nointeract(): boolean {\n return this._nointeract || this.disabled;\n }\n set nointeract(v: any) {\n this._nointeract = coerceBooleanProperty(v);\n }\n\n protected _staticHeight: boolean = false;\n @Input()\n get staticHeight(): boolean {\n return this._staticHeight;\n }\n set staticHeight(v: any) {\n this._staticHeight = coerceBooleanProperty(v);\n }\n\n //! calendar array\n //days view array\n calendarArray!: (number | null)[][];\n\n reserveTopRow!: boolean;\n\n protected _updateCalendarArray(): void {\n const resultObj = getMonthLayout(this._activeDate, this.firstWeekday);\n\n this.reserveTopRow = resultObj.leadingSpaces < 3;\n this.calendarArray = resultObj.array;\n }\n\n //months view array\n readonly monthsArray: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\n //years view array\n private _yearsArrayCache: number[] | null = null;\n private _yearsArrayCacheStartYear: number | null = null;\n getYearsArray(): number[] {\n const year = this.displayedYearRangeStart;\n\n if (this._yearsArrayCacheStartYear == year && isDefined(this._yearsArrayCache)) return this._yearsArrayCache;\n\n const newArray: number[] = [];\n\n for (let i = year; i < year + 24; i++) {\n newArray.push(i);\n }\n\n this._yearsArrayCache = newArray;\n this._yearsArrayCacheStartYear = year;\n return newArray;\n }\n\n //! weekday array\n weekdayArray!: number[];\n\n protected _updateWeekdayArray(): void {\n this.weekdayArray = [0, 1, 2, 3, 4, 5, 6].map(v => (v + this.firstWeekday) % 7);\n }\n\n //! change view functions\n activeView: CalendarView = CalendarView.Days;\n\n @Input()\n set startView(v: CalendarView) {\n this.activeView = v;\n }\n\n openYearsView(): void {\n this.activeView = CalendarView.Years;\n\n this._updateDisplayedYearRangeStart();\n\n this.viewChange.emit(this.activeView);\n }\n openMonthsView(): void {\n this.activeView = CalendarView.Months;\n //bring back old value\n const oldYear = this.activeYear;\n this.activeYear = this.activeYear ?? this.todayDate.getFullYear();\n\n //emit events\n this.viewChange.emit(this.activeView);\n if (oldYear != this.activeYear && this.activeYear == this.todayDate.getFullYear()) this.activeYearChange.emit(this.activeYear);\n }\n openDaysView(): void {\n this.activeView = CalendarView.Days;\n //bring back old values\n const oldYear = this.activeYear;\n this.activeYear = this.activeYear ?? this.todayDate.getFullYear();\n const oldMonth = this.activeMonth;\n this.activeMonth = this.activeMonth ?? this.todayDate.getMonth();\n\n //emit events\n this.viewChange.emit(this.activeView);\n if (oldYear != this.activeYear && this.activeYear == this.todayDate.getFullYear()) this.activeYearChange.emit(this.activeYear);\n if (oldMonth != this.activeMonth && this.activeMonth == this.todayDate.getMonth()) this.activeMonthChange.emit(this.activeMonth);\n }\n\n //! template customization\n //headers\n @ContentChild(ArdYearsViewHeaderTemplateDirective)\n yearsViewHeaderTemplate?: TemplateRef<CalendarYearsViewHeaderContext>;\n @ContentChild(ArdMonthsViewHeaderTemplateDirective)\n monthsViewHeaderTemplate?: TemplateRef<CalendarMonthsViewHeaderContext>;\n @ContentChild(ArdDaysViewHeaderTemplateDirective)\n daysViewHeaderTemplate?: TemplateRef<CalendarDaysViewHeaderContext>;\n //weekday\n @ContentChild(ArdWeekdayTemplateDirective)\n weekdayTemplate?: TemplateRef<CalendarWeekdayContext>;\n //floating month\n @ContentChild(ArdFloatingMonthTemplateDirective)\n floatingMonthTemplate?: TemplateRef<CalendarFloatingMonthContext>;\n //grid elements (year, month, day)\n @ContentChild(ArdYearTemplateDirective)\n yearTemplate?: TemplateRef<CalendarYearContext>;\n @ContentChild(ArdMonthTemplateDirective)\n monthTemplate?: TemplateRef<CalendarMonthContext>;\n @ContentChild(ArdDayTemplateDirective)\n dayTemplate?: TemplateRef<CalendarDayContext>;\n\n //! context getters\n //headers\n getYearsViewHeaderContext(): CalendarYearsViewHeaderContext {\n const yearRangeStart = this.displayedYearRangeStart;\n const yearRangeEnd = yearRangeStart + 23;\n const dateRange: DateRange = {\n low: new Date(yearRangeStart, 0, 1),\n high: new Date(yearRangeEnd, 0, 1),\n };\n return {\n nextPage: () => {\n this.changeYearsViewPage(+1);\n },\n prevPage: () => {\n this.changeYearsViewPage(-1);\n },\n openDaysView: () => {\n this.openDaysView();\n },\n yearRange: {\n low: yearRangeStart,\n high: yearRangeEnd,\n },\n dateRange,\n $implicit: dateRange,\n };\n }\n getMonthsViewHeaderContext(): CalendarMonthsViewHeaderContext {\n return {\n openYearsView: () => {\n this.openYearsView();\n },\n openDaysView: () => {\n this.openDaysView();\n },\n year: this.activeYear,\n date: this.activeDate,\n $implicit: this.activeYear,\n };\n }\n getDaysViewHeaderContext(): CalendarDaysViewHeaderContext {\n return {\n nextMonth: () => {\n this.changeMonth(+1);\n },\n prevMonth: () => {\n this.changeMonth(-1);\n },\n nextYear: () => {\n this.changeYear(+1);\n },\n prevYear: () => {\n this.changeYear(-1);\n },\n openYearsView: () => {\n this.openYearsView();\n },\n openMonthsView: () => {\n this.openMonthsView();\n },\n year: this.activeYear,\n month: this.activeMonth,\n date: this.activeDate,\n $implicit: this.activeDate,\n };\n }\n //weekday\n getWeekdayContext(dayIndex: number): CalendarWeekdayContext {\n const date = new Date(1970, 0, 4 + dayIndex);\n return {\n dayIndex,\n date,\n $implicit: date,\n };\n }\n //floating month\n getFloatingMonthContext(): CalendarFloatingMonthContext {\n return {\n month: this.activeMonth,\n date: this.activeDate,\n $implicit: this.activeDate,\n };\n }\n //grid elements (year, month, day)\n getYearContext(year: number): CalendarYearContext {\n return {\n value: year,\n date: new Date(this.activeYear, 0, 1),\n $implicit: year,\n select: (year: number) => {\n this.selectYear(year);\n },\n };\n }\n getMonthContext(month: number): CalendarMonthContext {\n const date = new Date(this.activeYear, month, 1);\n return {\n month,\n date,\n $implicit: date,\n select: (month: number | Date) => {\n this.selectMonth(month);\n },\n };\n }\n getDayContext(day: number): CalendarDayContext {\n return {\n value: day,\n date: new Date(this.activeYear, this.activeMonth, day),\n $implicit: day,\n select: (day: number | Date) => {\n this.selectDay(day);\n },\n };\n }\n}\n","<div class=\"ard-calendar\" [ngClass]=\"ngClasses\">\r\n <ng-template [ngTemplateOutlet]=\"activeView == 'days' ? daysView : activeView == 'months' ? monthsView : yearsView\"/>\r\n</div>\r\n\r\n<ng-template #yearsView>\r\n <div class=\"ard-calendar-header-container\">\r\n <ng-template #defaultYearsViewHeaderTemplate let-currRange let-nextPage=\"nextPage\" let-prevPage=\"prevPage\" let-openDaysView=\"openDaysView\">\r\n <div class=\"ard-calendar-days-view-header\">\r\n <ard-button\r\n class=\"ard-calendar-header-button\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n [tabIndex]=\"tabIndex\"\r\n (click)=\"openDaysView()\"\r\n >\r\n {{ currRange.low | date: 'YYYY' }}\r\n &mdash;\r\n {{ currRange.high | date: 'YYYY' }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div class=\"ard-calendar-arrows\">\r\n <ard-icon-button size=\"small\" appearance=\"transparent\" color=\"none\" (click)=\"prevPage()\" [tabIndex]=\"tabIndex\">\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button size=\"small\" appearance=\"transparent\" color=\"none\" (click)=\"nextPage()\" [tabIndex]=\"tabIndex\">\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"yearsViewHeaderTemplate || defaultYearsViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"getYearsViewHeaderContext()\"\r\n />\r\n </div>\r\n <div class=\"ard-calendar-main-container\">\r\n <div #focusableElement\r\n class=\"ard-calendar-simple-grid\"\r\n [tabindex]=\"tabIndex\"\r\n [ariaLabel]=\"currentAriaLabel\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onYearGridFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onYearGridBlur()\"\r\n (click)=\"onYearGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n <ng-container *ngFor=\"let year of getYearsArray()\">\r\n <div class=\"ard-calendar-entry\"\r\n [class.ard-calendar-entry-highlighted]=\"highlightedYear == year || activeYear == year\"\r\n [class.ard-calendar-entry-selected]=\"isYearSelected(year)\"\r\n [class.ard-calendar-today]=\"isYearToday(year)\"\r\n (click)=\"onCalendarYearClick(year)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarYearMouseover(year)\"\r\n role=\"gridcell\"\r\n >\r\n <button class=\"ard-calendar-entry-button\" tabindex=\"-1\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template #defaultYearTemplate let-year>\r\n {{ year }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"yearTemplate || defaultYearTemplate\"\r\n [ngTemplateOutletContext]=\"getYearContext(year)\"\r\n ></ng-template>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #monthsView>\r\n <div class=\"ard-calendar-header-container\">\r\n <ng-template #defaultMonthsViewHeaderTemplate let-year let-nextPage=\"nextPage\" let-prevPage=\"prevPage\" let-openDaysView=\"openDaysView\">\r\n <div class=\"ard-calendar-days-view-header\">\r\n <ard-button\r\n class=\"ard-calendar-header-button\"\r\n appearance=\"transparent\"\r\n [color]=\"color\"\r\n [tabIndex]=\"tabIndex\"\r\n (click)=\"openDaysView()\"\r\n >\r\n {{ year }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"monthsViewHeaderTemplate || defaultMonthsViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"getMonthsViewHeaderContext()\"\r\n />\r\n </div>\r\n <div class=\"ard-calendar-main-container\">\r\n <div #focusableElement\r\n class=\"ard-calendar-simple-grid\"\r\n [tabindex]=\"tabIndex\"\r\n [ariaLabel]=\"currentAriaLabel\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onMonthGridFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onMonthGridBlur()\"\r\n (click)=\"onMonthGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n <ng-container *ngFor=\"let month of monthsArray\">\r\n <div class=\"ard-calendar-entry\"\r\n [class.ard-calendar-entry-highlighted]=\"highlightedMonth == month || activeMonth == month\"\r\n [class.ard-calendar-entry-selected]=\"isMonthSelected(month)\"\r\n [class.ard-calendar-today]=\"isMonthToday(month)\"\r\n (click)=\"onCalendarMonthClick(month)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarMonthMouseover(month)\"\r\n role=\"gridcell\"\r\n >\r\n <button class=\"ard-calendar-entry-button\" tabindex=\"-1\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template #defaultMonthTemplate let-month>\r\n {{ month | date: \"MMM\" | uppercase }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"monthTemplate || defaultMonthTemplate\"\r\n [ngTemplateOutletContext]=\"getMonthContext(month)\"\r\n ></ng-template>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #daysView>\r\n <div class=\"ard-calendar-header-container\">\r\n <ng-template #defaultDaysViewHeaderTemplate let-currDate let-nextMonth=\"nextMonth\" let-prevMonth=\"prevMonth\" let-openYearsView=\"openYearsView\">\r\n <div class=\"ard-calendar-days-view-header\">\r\n <ard-button\r\n class=\"ard-calendar-header-button\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n [tabIndex]=\"tabIndex\"\r\n (click)=\"openYearsView()\"\r\n >\r\n {{ currDate | date: 'MMM YYYY' | uppercase }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div class=\"ard-calendar-arrows\">\r\n <ard-icon-button size=\"small\" appearance=\"transparent\" color=\"none\" (click)=\"prevMonth()\" [tabIndex]=\"tabIndex\">\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button size=\"small\" appearance=\"transparent\" color=\"none\" (click)=\"nextMonth()\" [tabIndex]=\"tabIndex\">\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"daysViewHeaderTemplate || defaultDaysViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"getDaysViewHeaderContext()\"\r\n />\r\n </div>\r\n <div class=\"ard-calendar-main-container\">\r\n <div class=\"ard-calendar-day-labels ard-calendar-grid\">\r\n <ng-template #defaultWeekdayTemplate let-date>\r\n <div class=\"ard-calendar-weekday\">{{ date | date: 'EEEEE' }}</div>\r\n </ng-template>\r\n <ng-container *ngFor=\"let weekdayIndex of weekdayArray\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"weekdayTemplate || defaultWeekdayTemplate\"\r\n [ngTemplateOutletContext]=\"getWeekdayContext(weekdayIndex)\"\r\n ></ng-template>\r\n </ng-container>\r\n </div>\r\n <div #focusableElement\r\n class=\"ard-calendar-main-grid ard-calendar-grid\"\r\n [class.ard-reserve-top-row]=\"reserveTopRow\"\r\n [tabindex]=\"tabIndex\"\r\n [ariaLabel]=\"currentAriaLabel\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onDayGridFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onDayGridBlur()\"\r\n (click)=\"onDayGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n <div class=\"ard-calendar-floating-month\">\r\n <ng-template #defaultFloatingMonthTemplate let-date>\r\n {{ date | date: 'LLL' | uppercase }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"floatingMonthTemplate || defaultFloatingMonthTemplate\"\r\n [ngTemplateOutletContext]=\"getFloatingMonthContext()\"\r\n ></ng-template>\r\n </div>\r\n <ng-container *ngFor=\"let week of calendarArray\">\r\n <ng-container *ngFor=\"let day of week\">\r\n <div class=\"ard-calendar-entry\"\r\n [class.ard-calendar-entry-empty]=\"day == null\"\r\n [class.ard-calendar-entry-highlighted]=\"highlightedDay == day\"\r\n [class.ard-calendar-entry-selected]=\"isDaySelected(day)\"\r\n [class.ard-calendar-today]=\"isDayToday(day)\"\r\n (click)=\"onCalendarDayClick(day)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarDayMouseover(day)\"\r\n role=\"gridcell\"\r\n >\r\n <button class=\"ard-calendar-entry-button\"\r\n *ngIf=\"day != null\"\r\n tabindex=\"-1\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template #defaultDayTemplate let-day>\r\n {{ day }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"dayTemplate || defaultDayTemplate\"\r\n [ngTemplateOutletContext]=\"getDayContext(day)\"\r\n ></ng-template>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<!-- <ng-container *ngIf=\"isLoading\">\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate || defaultLoadingSpinnerTemplate\">\r\n </ng-template>\r\n</ng-container> -->","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCalendarComponent } from './calendar.component';\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\nimport { ArdiumFabModule } from '../buttons/fab/fab.module';\nimport { ArdiumIconModule } from './../icon/icon.module';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\n\n@NgModule({\n declarations: [ArdiumCalendarComponent],\n imports: [CommonModule, ArdiumButtonModule, ArdiumIconButtonModule, ArdiumIconModule],\n exports: [ArdiumCalendarComponent],\n})\nexport class ArdiumCalendarModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { keyToString } from 'key-display-names';\n\n@Pipe({\n name: 'kbd',\n})\nexport class ArdiumKbdPipe implements PipeTransform {\n transform(value: string, useShort?: boolean): string {\n return keyToString(value, useShort);\n }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { FormElementAppearance } from './../types/theming.types';\n\n@Component({\n selector: 'ard-kbd',\n templateUrl: './kbd.component.html',\n styleUrls: ['./kbd.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumKbdComponent implements AfterViewInit {\n @ViewChild('contentWrapper') contentWrapper!: ElementRef<HTMLElement>;\n\n ngAfterViewInit(): void {\n if (!this.key && !this.contentWrapper.nativeElement.innerText) console.warn(`Using <ard-kbd> without specifying the [key] field.`);\n }\n\n @Input() key?: string;\n\n private _full: boolean = false;\n @Input()\n get full(): boolean {\n return this._full;\n }\n set full(v: any) {\n this._full = coerceBooleanProperty(v);\n }\n\n //! appearance\n @Input() appearance: FormElementAppearance = FormElementAppearance.Filled;\n\n get ngClasses(): string {\n return [`ard-appearance-${this.appearance}`].join(' ');\n }\n}\n","<kbd class=\"ard-kbd\" [ngClass]=\"ngClasses\">{{ key ?? contentWrapper.innerText | kbd: !full }}</kbd>\r\n\r\n<div #contentWrapper class=\"ard-kbd-content-wrapper\">\r\n <ng-content></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumKbdComponent } from './kbd.component';\nimport { ArdiumKbdPipe } from './kbd.pipe';\n\n@NgModule({\n declarations: [ArdiumKbdComponent, ArdiumKbdPipe],\n imports: [CommonModule],\n exports: [ArdiumKbdComponent, ArdiumKbdPipe],\n})\nexport class ArdiumKbdModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, AfterViewInit, ViewChild, ElementRef, Input } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { FormElementAppearance } from '../types/theming.types';\n\n@Component({\n selector: 'ard-kbd-shortcut',\n templateUrl: './kbd-shortcut.component.html',\n styleUrls: ['./kbd-shortcut.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumKbdShortcutComponent implements AfterViewInit {\n @ViewChild('contentWrapper') contentWrapper!: ElementRef<HTMLElement>;\n\n ngAfterViewInit(): void {\n if (!this.keys && !this.contentWrapper.nativeElement.innerText) console.warn(`Using <ard-kbd-shortcut> without specifying the [keys] field.`);\n }\n\n readonly splitRegex = /[+ ]/;\n\n private _keys?: string[];\n @Input()\n set keys(v: string | string[] | undefined) {\n //assign from string\n if (typeof v == 'string') {\n this._keys = v.split(this.splitRegex);\n return;\n }\n //assign undefined or array\n this._keys = v && [...v];\n }\n get keys(): string[] | undefined {\n return this._keys;\n }\n\n private _full: boolean = false;\n @Input()\n get full(): boolean {\n return this._full;\n }\n set full(v: any) {\n this._full = coerceBooleanProperty(v);\n }\n\n //! appearance\n @Input() appearance: FormElementAppearance = FormElementAppearance.Filled;\n\n get ngClasses(): string {\n return [`ard-appearance-${this.appearance}`].join(' ');\n }\n}\n","<div class=\"ard-kbd-shortcut\" [ngClass]=\"ngClasses\">\r\n <ng-container *ngFor=\"let key of keys ?? contentWrapper.innerText.split(splitRegex); let i = index;\">\r\n <span *ngIf=\"i != 0\">+</span>\r\n <ard-kbd [appearance]=\"appearance\" [full]=\"full\" [key]=\"key\"></ard-kbd>\r\n </ng-container>\r\n</div>\r\n\r\n<div #contentWrapper class=\"ard-kbd-shortcut-content-wrapper\">\r\n <ng-content></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumKbdShortcutComponent } from './kbd-shortcut.component';\nimport { ArdiumKbdModule } from '../kbd/kbd.module';\n\n@NgModule({\n declarations: [ArdiumKbdShortcutComponent],\n imports: [CommonModule, ArdiumKbdModule],\n exports: [ArdiumKbdShortcutComponent],\n})\nexport class ArdiumKbdShortcutModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressCircleValueContext } from './progress-circle.types';\n\n@Directive({ selector: 'ard-progress-circle > ng-template[ard-value-tmp]' })\nexport class ArdProgressCircleValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressCircleValueContext>) {}\n}\n","export type ProgressCircleValueContext = {\n value: number;\n percentValue: number;\n max: number;\n $implicit: number;\n};\n\nexport const ProgressCircleAppearance = {\n Transparent: 'transparent',\n Colorless: 'colorless',\n Colored: 'colored',\n} as const;\nexport type ProgressCircleAppearance = (typeof ProgressCircleAppearance)[keyof typeof ProgressCircleAppearance];\n\nexport const ProgressCircleVariant = {\n Full: 'full',\n Ring: 'ring',\n} as const;\nexport type ProgressCircleVariant = (typeof ProgressCircleVariant)[keyof typeof ProgressCircleVariant];\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { SimpleComponentColor } from '../types/colors.types';\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\nimport { ProgressCircleAppearance, ProgressCircleValueContext, ProgressCircleVariant } from './progress-circle.types';\n\n@Component({\n selector: 'ard-progress-circle',\n templateUrl: './progress-circle.component.html',\n styleUrls: ['./progress-circle.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumProgressCircleComponent {\n private _value: number = 0;\n @Input()\n get value(): number {\n return this._value;\n }\n set value(v: any) {\n this._value = coerceNumberProperty(v, 0);\n }\n\n private _max: number = 100;\n @Input()\n get max(): number {\n return this._max;\n }\n set max(v: any) {\n this._max = coerceNumberProperty(v, 100);\n }\n\n get percentValue(): number {\n return (this.value / this.max) * 100;\n }\n\n //! appearance\n @Input() appearance: ProgressCircleAppearance = ProgressCircleAppearance.Transparent;\n @Input() variant: ProgressCircleVariant = ProgressCircleVariant.Full;\n @Input() color: SimpleComponentColor = SimpleComponentColor.Primary;\n\n private _hideValue: boolean = false;\n @Input()\n get hideValue(): boolean {\n return this._hideValue;\n }\n set hideValue(v: any) {\n this._hideValue = coerceBooleanProperty(v);\n }\n\n private _reverse: boolean = false;\n @Input()\n get reverse(): boolean {\n return this._reverse;\n }\n set reverse(v: any) {\n this._reverse = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [\n `ard-appearance-${this.appearance}`,\n `ard-progress-circle-variant-${this.variant}`,\n `ard-color-${this.color}`,\n this.hideValue ? 'ard-progress-circle-hide-value' : '',\n this.reverse ? 'ard-progress-circle-reversed' : '',\n ].join(' ');\n }\n\n get fillPercentVariable(): string {\n const fillAmount = this.reverse ? 100 - this.percentValue : this.percentValue;\n return `--ard-_progress-circle-fill-amount: ${fillAmount}%`;\n }\n\n //! templates\n @ContentChild(ArdProgressCircleValueTemplateDirective, {\n read: TemplateRef,\n })\n valueTemplate?: TemplateRef<any>;\n\n getValueContext(): ProgressCircleValueContext {\n const percentValue = Math.round(this.percentValue);\n return {\n value: this.value,\n percentValue,\n max: this.max,\n $implicit: percentValue,\n };\n }\n}\n","<div class=\"ard-progress-circle\" [ngClass]=\"ngClasses\">\r\n <div class=\"ard-progress-circle-background\"></div>\r\n <div class=\"ard-progress-circle-overlay\" [style]=\"fillPercentVariable\"></div>\r\n <div class=\"ard-progress-circle-value\">\r\n <ng-template #defaultValueTemplate let-value>\r\n {{ value }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressCircleComponent } from './progress-circle.component';\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\n\n@NgModule({\n declarations: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n})\nexport class ArdiumProgressCircleModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressBarValueContext } from './progress-bar.types';\n\n@Directive({ selector: 'ard-progress-bar > ng-template[ard-value-tmp]' })\nexport class ArdProgressBarValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressBarValueContext>) {}\n}\n","export type ProgressBarValueContext = {\n value: number;\n $implicit: number;\n};\n\nexport const ProgressBarSize = {\n Default: 'default',\n Auto: 'auto',\n} as const;\nexport type ProgressBarSize = (typeof ProgressBarSize)[keyof typeof ProgressBarSize];\n\nexport const ProgressBarAppearance = {\n Colorless: 'colorless',\n Colored: 'colored',\n} as const;\nexport type ProgressBarAppearance = (typeof ProgressBarAppearance)[keyof typeof ProgressBarAppearance];\n\nexport const ProgressBarVariant = {\n Sharp: 'sharp',\n Pill: 'pill',\n} as const;\nexport type ProgressBarVariant = (typeof ProgressBarVariant)[keyof typeof ProgressBarVariant];\n\nexport const ProgressBarMode = {\n Determinate: 'determinate',\n Indeterminate: 'indeterminate',\n Buffer: 'buffer',\n Query: 'query',\n} as const;\nexport type ProgressBarMode = (typeof ProgressBarMode)[keyof typeof ProgressBarMode];\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, OnChanges, SimpleChanges, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { SimpleComponentColor } from '../types/colors.types';\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\nimport { ProgressBarAppearance, ProgressBarMode, ProgressBarSize, ProgressBarValueContext, ProgressBarVariant } from './progress-bar.types';\n\n@Component({\n selector: 'ard-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumProgressBarComponent implements OnChanges {\n private _value: number = 0;\n @Input()\n get value(): number {\n return this._value;\n }\n set value(v: any) {\n this._value = coerceNumberProperty(v);\n }\n\n private _bufferValue: number = 0;\n @Input()\n get bufferValue(): number {\n return this._bufferValue;\n }\n set bufferValue(v: any) {\n this._bufferValue = coerceNumberProperty(v);\n }\n\n //! appearance\n @Input() color: SimpleComponentColor = SimpleComponentColor.Primary;\n @Input() variant: ProgressBarVariant = ProgressBarVariant.Pill;\n @Input() size: ProgressBarSize = ProgressBarSize.Default;\n @Input() mode: ProgressBarMode = ProgressBarMode.Determinate;\n\n private _hideValue: boolean = false;\n @Input()\n get hideValue(): boolean {\n return this._hideValue;\n }\n set hideValue(v: any) {\n this._hideValue = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [\n `ard-variant-${this.variant}`,\n `ard-color-${this.color}`,\n `ard-progress-bar__size-${this.size}`,\n `ard-progress-bar__mode-${this.mode}`,\n this.hideValue ? 'ard-progress-bar__hide-value' : '',\n ].join(' ');\n }\n\n //! error detection\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes['size'] && !changes['mode']) return;\n if ((changes['mode']?.currentValue ?? this.mode) == ProgressBarMode.Buffer && (changes['size']?.currentValue ?? this.size) == ProgressBarSize.Auto) {\n console.error(`Forbidden param combination in <ard-progress-bar>: cannot use 'mode=\"buffer\"' and 'size=\"auto\"' at the same time.`);\n }\n }\n\n //! bar styling\n get cssVariables(): string {\n if (this.mode == ProgressBarMode.Indeterminate || this.mode == ProgressBarMode.Query) {\n return '--ard-_progress-bar-main: 0;';\n }\n const mainVariable = `--ard-_progress-bar-main: ${this.value}%;`;\n if (this.mode == ProgressBarMode.Buffer) {\n return mainVariable + `--ard-_progress-bar-buffer: ${this.bufferValue}%;`;\n }\n return mainVariable;\n }\n\n //! templates\n @ContentChild(ArdProgressBarValueTemplateDirective, { read: TemplateRef })\n valueTemplate?: TemplateRef<any>;\n\n getValueContext(): ProgressBarValueContext {\n return {\n value: this.value,\n $implicit: this.value,\n };\n }\n}\n","<div class=\"ard-progress-bar\" role=\"progressbar\" [style]=\"cssVariables\" [ngClass]=\"ngClasses\">\r\n <div class=\"ard-progress-bar__background\"></div>\r\n <div class=\"ard-progress-bar__overlay-buffer\"></div>\r\n <div class=\"ard-progress-bar__overlay\"></div>\r\n <div class=\"ard-progress-bar__value\">\r\n <ng-template #defaultValueTemplate let-value>\r\n {{ (value * 100) | number: '1.0-0' }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressBarComponent } from './progress-bar.component';\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\n\n@NgModule({\n declarations: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n})\nexport class ArdiumProgressBarModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\n\n@Component({\n selector: 'ard-divider',\n template: '',\n styleUrls: ['./divider.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumDividerComponent {\n private _vertical: boolean = false;\n @Input()\n @HostBinding('class.ard-divider-vertical')\n get vertical(): boolean {\n return this._vertical;\n }\n set vertical(v: any) {\n this._vertical = coerceBooleanProperty(v);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDividerComponent } from './divider.component';\n\n@NgModule({\n declarations: [ArdiumDividerComponent],\n imports: [CommonModule],\n exports: [ArdiumDividerComponent],\n})\nexport class ArdiumDividerModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { PasswordInputRevealButtonContext } from './password-input.types';\n\n@Directive({\n selector: 'ard-password-input > ng-template[ard-placeholder-tmp]',\n})\nexport class ArdPasswordInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-prefix-tmp]' })\nexport class ArdPasswordInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-suffix-tmp]' })\nexport class ArdPasswordInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-reveal-tmp]' })\nexport class ArdPasswordInputRevealButtonTemplateDirective {\n constructor(public template: TemplateRef<PasswordInputRevealButtonContext>) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { isAnyString, isDefined } from 'simple-bool';\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport {\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n} from './password-input.directives';\nimport { PasswordInputRevealButtonContext } from './password-input.types';\n\n@Component({\n selector: 'ard-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumPasswordInputComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumPasswordInputComponent extends _NgModelComponentBase implements ControlValueAccessor, OnInit {\n //! input view\n @ViewChild('textInput', { static: true })\n textInputEl!: ElementRef<HTMLInputElement>;\n ngOnInit(): void {\n this._setInputAttributes();\n }\n\n @Input() placeholder: string = '';\n @Input() inputId?: string;\n\n //! prefix & suffix\n @ContentChild(ArdPasswordInputPrefixTemplateDirective, {\n read: TemplateRef,\n })\n prefixTemplate?: TemplateRef<any>;\n @ContentChild(ArdPasswordInputSuffixTemplateDirective, {\n read: TemplateRef,\n })\n suffixTemplate?: TemplateRef<any>;\n\n //! placeholder\n @ContentChild(ArdPasswordInputPlaceholderTemplateDirective, {\n read: TemplateRef,\n })\n placeholderTemplate?: TemplateRef<any>;\n\n get shouldDisplayPlaceholder(): boolean {\n return Boolean(this.placeholder) && !this.value;\n }\n\n //! revealing\n private _revealable: boolean = true;\n @Input()\n get revealable(): boolean {\n return this._revealable;\n }\n set revealable(v: any) {\n this._revealable = coerceBooleanProperty(v);\n }\n\n private _revealed: boolean = false;\n @Input()\n get revealed(): boolean {\n return this._revealed;\n }\n set revealed(v: any) {\n this._revealed = coerceBooleanProperty(v);\n }\n\n @Output() revealedChange = new EventEmitter<boolean>();\n\n toggleReveal(v?: boolean): void {\n const oldState = this.revealed;\n this.revealed = v ?? !this.revealed;\n\n if (oldState != this.revealed) {\n this.revealedChange.emit(this.revealed);\n }\n }\n\n @ContentChild(ArdPasswordInputRevealButtonTemplateDirective, {\n read: TemplateRef,\n })\n revealTemplate?: TemplateRef<any>;\n\n getRevealButtonContext(): PasswordInputRevealButtonContext {\n return {\n $implicit: this.revealed,\n };\n }\n\n //! appearance\n @Input() appearance: FormElementAppearance = FormElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [\n `ard-appearance-${this.appearance}`,\n `ard-variant-${this.variant}`,\n this.compact ? 'ard-compact' : '',\n this.revealable ? 'ard-revealable' : '',\n ].join(' ');\n }\n\n //! other inputs\n @Input() inputAttrs: { [key: string]: any } = {};\n\n //! number attribute setters/getters\n protected _maxLength?: number;\n @Input()\n get maxLength(): number | undefined {\n return this._maxLength;\n }\n set maxLength(v: any) {\n this._maxLength = coerceNumberProperty(v);\n }\n\n //! control value accessor's write value implementation\n writeValue(v: any) {\n if (!isAnyString(v) && isDefined(v)) {\n console.error(new Error(`Error using <ard-password-input>: Unexpected value type ${typeof v}.`));\n return;\n }\n this._writeValue(v);\n }\n protected _writeValue(v: string | null | undefined): boolean {\n const oldVal = this.value;\n this._value = v;\n return oldVal != v;\n }\n //! value two-way binding\n protected _value?: string | null = null;\n @Input()\n set value(v: string | null) {\n this.writeValue(v);\n }\n get value(): string | null {\n return this._value ?? null;\n }\n @Output() valueChange = new EventEmitter<string | null>();\n\n //! event emitters\n @Output('input') inputEvent = new EventEmitter<string | null>();\n @Output('change') changeEvent = new EventEmitter<string | null>();\n\n //! event handlers\n onInput(newVal: string): void {\n let valueHasChanged = this._writeValue(newVal);\n if (!valueHasChanged) return;\n this._emitInput();\n }\n protected _emitInput(): void {\n const v = this.value;\n this._onChangeRegistered?.(v);\n this.inputEvent.emit(v);\n this.valueChange.emit(v);\n }\n //focus, blur, change\n onChange(event: Event): void {\n event.stopPropagation();\n this._emitChange();\n }\n protected _emitChange(): void {\n this.changeEvent.emit(this.value);\n }\n\n // copy\n onCopy(event: ClipboardEvent): void {\n if (\n this.value &&\n //does the selection cover the entire input\n ((this.textInputEl.nativeElement.selectionStart == 0 &&\n this.textInputEl.nativeElement.selectionEnd == this.textInputEl.nativeElement.value.length) ||\n //or is zero-wide\n this.textInputEl.nativeElement.selectionStart == this.textInputEl.nativeElement.selectionEnd)\n ) {\n event.clipboardData?.setData('text/plain', this.value);\n event.preventDefault();\n }\n }\n //! helpers\n protected _setInputAttributes() {\n const input = this.textInputEl.nativeElement;\n const attributes: { [key: string]: string } = {\n type: 'text',\n autocorrect: 'off',\n autocapitalize: 'off',\n autocomplete: 'off',\n tabindex: String(this.tabIndex),\n ...this.inputAttrs,\n };\n\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, String(attributes[key]));\n }\n }\n}\n","<ard-form-field-frame\r\n [appearance]=\"appearance\"\r\n [variant]=\"variant\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n>\r\n <div class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n \r\n <input #textInput\r\n #focusableElement\r\n [type]=\"!revealable || !revealed ? 'password' : 'text'\"\r\n [attr.id]=\"inputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable && revealed\"\r\n >\r\n </div>\r\n\r\n <button *ngIf=\"revealable\"\r\n class=\"ard-reveal-button\"\r\n (click)=\"toggleReveal()\"\r\n >\r\n <ng-template #defaultRevealTemplate let-revealed>\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"getRevealButtonContext()\"\r\n ></ng-template>\r\n </button>\r\n </div>\r\n</ard-form-field-frame>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumPasswordInputComponent } from './password-input.component';\nimport {\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n} from './password-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n imports: [CommonModule, ArdiumFormFieldFrameModule, ArdiumIconModule],\n exports: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n})\nexport class ArdiumPasswordInputModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\nimport { ComponentColor } from '../../types/colors.types';\n\n@Component({\n selector: 'ard-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumRadioComponent extends _BooleanComponentBase {\n constructor(protected _changeDetector: ChangeDetectorRef) {\n super();\n }\n\n @Input() htmlId: string = crypto.randomUUID();\n\n @Input() value: any;\n\n //! appearance\n @Input() color: ComponentColor = ComponentColor.Primary;\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`, `ard-radio-${this.selected ? 'selected' : 'unselected'}`].join(' ');\n }\n\n //! event handlers\n onMousedown(): void {\n this.focus();\n }\n onMouseup(): void {\n this.focus();\n\n if (this.selected) return;\n this.selected = true;\n\n this._emitChange();\n }\n\n //! radio-group access points\n name: string | null = null;\n\n /**\n * Marks the radio button as needing checking for change detection.\n * This method is exposed because the parent radio group will directly\n * update bound properties of the radio button.\n */\n markForCheck() {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update radio button's status\n this._changeDetector.markForCheck();\n }\n}\n","<button class=\"ard-radio\"\r\n [ngClass]=\"ngClasses\"\r\n #focusableElement\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (mousedown)=\"onMousedown()\"\r\n (mouseup)=\"onMouseup()\"\r\n [tabindex]=\"tabIndex\"\r\n>\r\n <div class=\"ard-radio-circles\">\r\n <div class=\"ard-radio-outer-circle\"></div>\r\n <div class=\"ard-radio-inner-circle\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </div>\r\n <label [for]=\"htmlId\">\r\n <ng-content></ng-content>\r\n </label>\r\n</button>\r\n\r\n<input\r\n class=\"ard-radio-input-element\"\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [id]=\"htmlId\"\r\n [checked]=\"selected\"\r\n #radio\r\n>","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\nimport { ArdiumRadioComponent } from './radio/radio.component';\n\n@Component({\n selector: 'ard-radio-group',\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n role: 'radiogroup',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumRadioGroupComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumRadioGroupComponent extends _NgModelComponentBase implements AfterContentInit, AfterViewInit, OnDestroy {\n @ContentChildren(ArdiumRadioComponent, { descendants: true })\n private _radios!: QueryList<ArdiumRadioComponent>;\n\n @HostBinding('attr.id')\n @Input()\n htmlId?: string;\n\n //! value\n @Input()\n get value(): any {\n return this._selected?.value;\n }\n set value(v: any) {\n this.writeValue(v);\n }\n\n @Output() valueChange = new EventEmitter<any>();\n @Output('change') changeEvent = new EventEmitter<any>();\n\n private _valueBeforeInit: any;\n writeValue(v: any): void {\n if (this.value !== v) {\n if (!this._isContentInit) {\n this._valueBeforeInit = v;\n return;\n }\n\n this._findRadioByValue(v);\n }\n setTimeout(() => {\n this._updateRadiosByValue();\n }, 0);\n }\n\n private _findRadioByValue(v: any): void {\n if (!this._radios) return;\n\n this._selected = this._radios.find(radio => v === radio.value) ?? null;\n }\n\n /** Updates all child radios depending on the currently selected radio. */\n private _updateRadiosByValue(): void {\n if (!this._isContentInit) return;\n\n this._radios.forEach(radio => {\n radio.selected = this.value === radio.value;\n radio.markForCheck();\n });\n }\n\n private _selected: ArdiumRadioComponent | null = null;\n /**\n * The currently selected radio button. If set to a new radio button, the radio group value\n * will be updated to match the new selected button.\n */\n @Input()\n get selected() {\n return this._selected;\n }\n set selected(selected: ArdiumRadioComponent | null) {\n this._selected = selected;\n this._checkSelectedRadioButton();\n }\n\n private _checkSelectedRadioButton() {\n if (this._selected && !this._selected.selected) {\n this._selected.selected = true;\n this._selected.markForCheck();\n }\n }\n\n //! name\n private _name: string = crypto.randomUUID();\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n this._name = value;\n this._updateRadioButtonNames();\n }\n\n private _updateRadioButtonNames(): void {\n if (this._radios) {\n this._radios.forEach(radio => {\n radio.name = this.name;\n radio.markForCheck();\n });\n }\n }\n\n //! update handlers\n private _handleBlurEvents(event: FocusEvent): void {\n this.onBlur(event);\n }\n private _handleFocusEvents(event: FocusEvent): void {\n this.onFocus(event);\n }\n private _handleChangeEvents(selected: ArdiumRadioComponent): void {\n this.selected = selected;\n this.writeValue(selected.value);\n\n this._emitChange();\n }\n\n protected _emitChange(): void {\n const v = this.value;\n this._onChangeRegistered?.(v);\n this.changeEvent.emit(v);\n this.valueChange.emit(v);\n }\n\n //! hooks\n private readonly _subscriptions: Subscription[] = [];\n private _childEventSubs: Subscription[] = [];\n private _isContentInit: boolean = false;\n ngAfterContentInit(): void {\n this._isContentInit = true;\n\n if (this._valueBeforeInit !== undefined) {\n this.writeValue(this._valueBeforeInit);\n }\n\n setTimeout(() => {\n this._updateRadioButtonNames();\n }, 0);\n\n this._radios.forEach(radio => {\n this._childEventSubs.push(\n radio.blurEvent.subscribe(v => {\n this._handleBlurEvents(v);\n })\n );\n this._childEventSubs.push(\n radio.focusEvent.subscribe(v => {\n this._handleFocusEvents(v);\n })\n );\n this._childEventSubs.push(\n radio.selectedChange.subscribe(() => {\n this._handleChangeEvents(radio);\n })\n );\n });\n }\n ngAfterViewInit(): void {\n const sub = (this._radios.changes as Observable<ArdiumRadioComponent[]>).subscribe(radios => {\n setTimeout(() => {\n this._updateRadioButtonNames();\n }, 0);\n\n this._destroyChildSubscriptions();\n\n //sub to child component events\n for (const radio of radios) {\n this._childEventSubs.push(\n radio.blurEvent.subscribe(v => {\n this._handleBlurEvents(v);\n })\n );\n this._childEventSubs.push(\n radio.focusEvent.subscribe(v => {\n this._handleFocusEvents(v);\n })\n );\n this._childEventSubs.push(\n radio.selectedChange.subscribe(() => {\n this._handleChangeEvents(radio);\n })\n );\n }\n });\n\n this._subscriptions.push(sub);\n }\n ngOnDestroy(): void {\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n this._destroyChildSubscriptions();\n }\n private _destroyChildSubscriptions(): void {\n for (const sub of this._childEventSubs) {\n sub.unsubscribe();\n }\n this._childEventSubs = [];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumRadioGroupComponent } from './radio-group.component';\nimport { ArdiumRadioComponent } from './radio/radio.component';\n\n@NgModule({\n declarations: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n imports: [CommonModule],\n exports: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n})\nexport class ArdiumRadioModule {}\n","import { Directive, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, AfterViewInit } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { isDefined } from 'simple-bool';\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\n\n@Directive()\nexport abstract class _FileInputComponentBase extends _NgModelComponentBase implements OnInit, AfterViewInit {\n @ViewChild('fileInput') fileInputEl!: ElementRef<HTMLInputElement>;\n\n @Input() htmlId: string = crypto.randomUUID();\n @Input() name?: string;\n\n ngOnInit(): void {\n if (!(window.File && window.FileReader && window.Blob)) {\n console.error(new Error('Cannot use Ardium UI file features because this browser does not support them!'));\n }\n }\n protected _wasViewInit: boolean = false;\n ngAfterViewInit(): void {\n this._wasViewInit = true;\n\n this._updateElementValue();\n }\n\n //! appearance\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n //! settings\n private _multiple: boolean = false;\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(v: any) {\n this._multiple = coerceBooleanProperty(v);\n }\n\n private _blockAfterUpload: boolean = false;\n @Input()\n get blockAfterUpload(): boolean {\n return this._blockAfterUpload;\n }\n set blockAfterUpload(v: any) {\n this._blockAfterUpload = coerceBooleanProperty(v);\n }\n\n get shouldBeBlocked(): boolean {\n return this.blockAfterUpload && isDefined(this.value);\n }\n\n //! value\n protected _value: File[] | null = null;\n @Input()\n get value(): File[] | null {\n return this._value;\n }\n set value(v: File | File[] | null) {\n this.writeValue(v);\n }\n\n @Output() valueChange = new EventEmitter<File[] | null>();\n @Output('change') changeEvent = new EventEmitter<File[] | null>();\n @Output('dragFiles') dragFilesEvent = new EventEmitter<File[] | null>();\n\n protected _valueBeforeInit: File[] | null = null;\n writeValue(v: File | File[] | null): void {\n this._writeValue(v, false);\n }\n protected _writeValue(v: File | File[] | null, emitEvents: boolean = true): void {\n if (v instanceof File) {\n v = [v];\n }\n\n this.currentViewState = 'uploaded';\n this._value = v;\n\n if (this._wasViewInit) this._updateElementValue();\n\n if (emitEvents) {\n this._emitChange();\n }\n }\n\n protected _emitChange(): void {\n const v = this.value;\n this._onChangeRegistered?.(v);\n this.valueChange.emit(v);\n this.changeEvent.emit(v);\n }\n\n openBrowseDialog(): void {\n this.fileInputEl.nativeElement.click();\n }\n\n //! temporary value\n //for drag event handling\n protected _draggedFiles: number | null = null;\n\n //! view state\n currentViewState: 'idle' | 'dragover' | 'uploaded' = 'idle';\n private _beforeDragoverState: 'idle' | 'uploaded' = 'idle';\n\n //! event handlers\n onDragover(event: DragEvent): void {\n event.preventDefault();\n if (this.shouldBeBlocked) {\n if (!event.dataTransfer) return;\n\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n if (this.currentViewState == 'dragover') return;\n\n this._draggedFiles = this._countDragenterFiles(event.dataTransfer);\n\n if (!this._draggedFiles) return;\n\n this._beforeDragoverState = this.currentViewState;\n this.currentViewState = 'dragover';\n }\n onDragleave(): void {\n if (this.shouldBeBlocked) return;\n if (this.currentViewState != 'dragover') return;\n\n this.currentViewState = this._beforeDragoverState;\n }\n onDrop(event: DragEvent): void {\n event.preventDefault();\n\n if (this.shouldBeBlocked) return;\n\n const filelist = event.dataTransfer?.files;\n if (!filelist) {\n this.currentViewState = 'idle';\n return;\n }\n const files = Array.from(filelist);\n if (!files) {\n this.currentViewState = 'idle';\n return;\n }\n\n this.currentViewState = 'uploaded';\n this._writeValue(files);\n }\n onInputChange(): void {\n const files = Array.from(this.fileInputEl.nativeElement.files ?? []);\n if (files.length == 0) {\n this._writeValue(null);\n this.currentViewState = 'idle';\n return;\n }\n this._writeValue(files);\n this.currentViewState = 'uploaded';\n }\n\n //! helpers\n protected _countDragenterFiles(data: DataTransfer | null): number | null {\n if (!data) return null;\n\n return Array.from(data.items).filter(item => item.kind == 'file').length;\n }\n\n protected _updateElementValue(): void {\n const v = this.value;\n\n if (!v) {\n this.fileInputEl.nativeElement.files = null;\n return;\n }\n\n const dataTransfer = new DataTransfer();\n for (const file of v) {\n dataTransfer.items.add(file);\n }\n this.fileInputEl.nativeElement.files = dataTransfer.files;\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-idle-content-tmp]',\n})\nexport class ArdiumFileDropAreaIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileDropAreaDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileDropAreaUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, OnInit, TemplateRef, ViewEncapsulation, Input } from '@angular/core';\nimport { ComponentColor } from '../../types/colors.types';\nimport { FormElementVariant } from '../../types/theming.types';\nimport { _FileInputComponentBase } from '../file-input-base';\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\nimport {\n ArdiumFileDropAreaDragoverContentTemplateDirective,\n ArdiumFileDropAreaUploadedContentTemplateDirective,\n ArdiumFileDropAreaIdleContentTemplateDirective,\n} from './file-drop-area.directives';\n\n@Component({\n selector: 'ard-file-drop-area',\n templateUrl: './file-drop-area.component.html',\n styleUrls: ['./file-drop-area.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumFileDropAreaComponent extends _FileInputComponentBase implements OnInit {\n //! appearance\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n @Input() color: ComponentColor = ComponentColor.Primary;\n\n get ngClasses(): string {\n return [`ard-variant-${this.variant}`, `ard-color-${this.color}`, this.compact ? 'ard-compact' : ''].join(' ');\n }\n\n //! triggering file dialog\n protected _wasMousedownOnElement: true | null = null;\n onMousedown(): void {\n this._wasMousedownOnElement = true;\n }\n onMouseup(): void {\n if (!this._wasMousedownOnElement) return;\n this._wasMousedownOnElement = null;\n\n this.openBrowseDialog();\n }\n\n //! templates\n @ContentChild(ArdiumFileDropAreaIdleContentTemplateDirective, {\n read: TemplateRef,\n })\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\n @ContentChild(ArdiumFileDropAreaDragoverContentTemplateDirective, {\n read: TemplateRef,\n })\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\n @ContentChild(ArdiumFileDropAreaUploadedContentTemplateDirective, {\n read: TemplateRef,\n })\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\n\n getIdleContext(): FileInputBrowseContext {\n return {\n browse: () => {\n this.openBrowseDialog();\n },\n };\n }\n getDragoverContext(): FileInputFileAmountContext {\n return {\n amount: this._draggedFiles!,\n };\n }\n getUploadedContext(): FileInputFilesContext {\n const files = this.value!;\n return {\n $implicit: files,\n amount: files.length,\n files,\n };\n }\n}\n","<div class=\"ard-file-drop-area\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-file-drop-area-outline\">\r\n <div class=\"ard-file-drop-area-content\">\r\n <ng-template *ngIf=\"currentViewState == 'idle'\"\r\n [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n ></ng-template>\r\n <ng-template *ngIf=\"currentViewState == 'dragover'\"\r\n [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n ></ng-template>\r\n <ng-template *ngIf=\"currentViewState == 'uploaded'\"\r\n [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n<input #fileInput\r\n class=\"ard-file-drop-area-input-element\"\r\n type=\"file\"\r\n [name]=\"name\"\r\n [multiple]=\"multiple\"\r\n [id]=\"htmlId\"\r\n (change)=\"onInputChange()\"\r\n>\r\n\r\n<ng-template #defaultIdleTemplate let-browse=\"browse\">\r\n <ard-icon class=\"ard-file-drop-area-icon\">upload</ard-icon>\r\n <strong class=\"ard-file-drop-area-drop-text\">\r\n <span *ngIf=\"!multiple\">Drag & Drop a file</span>\r\n <span *ngIf=\"multiple\">Drag & Drop files</span>\r\n here\r\n </strong>\r\n <span class=\"ard-file-drop-area-or-text\">or</span>\r\n <ard-button\r\n class=\"ard-file-drop-area-browse-button\"\r\n appearance=\"transparent\"\r\n [compact]=\"compact\"\r\n [variant]=\"variant\"\r\n [color]=\"color\"\r\n (click)=\"browse()\"\r\n >Browse files</ard-button>\r\n</ng-template>\r\n\r\n<ng-template #defaultDragoverTemplate let-amount=\"amount\">\r\n <span class=\"ard-file-drop-area-dragover-text\">Drop </span>\r\n <span class=\"ard-file-drop-area-dragover-amount\">\r\n {{ amount }} \r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container></span>\r\n <span class=\"ard-file-drop-area-dragover-text\">\r\n here to upload.\r\n </span>\r\n <strong *ngIf=\"amount > 1 && !multiple\" class=\"ard-file-drop-area-dragover-warning\">\r\n Only the first file will be uploaded!\r\n </strong>\r\n</ng-template>\r\n\r\n<ng-template #defaultUploadedTemplate let-amount=\"amount\" let-files=\"files\">\r\n <div class=\"ard-file-drop-area-uploaded-container\">\r\n <div class=\"ard-file-drop-area-uploaded-message\">\r\n <span class=\"ard-file-drop-area-uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-uploaded-text\"> uploaded.</span>\r\n </div>\r\n <div class=\"ard-file-drop-area-uploaded-files\">\r\n <div class=\"ard-file-drop-area-file\" *ngFor=\"let file of files\">\r\n <ard-icon>draft</ard-icon>\r\n <div class=\"ard-file-drop-area-file-info\">\r\n <span class=\"ard-file-drop-area-filename\">\r\n <span class=\"ard-file-drop-area-filename-name\">{{ file | filename }}</span>\r\n <span class=\"ard-file-drop-area-filename-ext\">{{ file | fileext: true }}</span>\r\n </span>\r\n <span class=\"ard-file-drop-area-filesize\">{{ file.size | filesize }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumClickOutsideEventModule, ArdiumFileextPipeModule, ArdiumFilenamePipeModule, ArdiumFilesizePipeModule } from '@ardium-ui/devkit';\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\nimport { ArdiumFileDropAreaComponent } from './file-drop-area.component';\nimport {\n ArdiumFileDropAreaDragoverContentTemplateDirective,\n ArdiumFileDropAreaIdleContentTemplateDirective,\n ArdiumFileDropAreaUploadedContentTemplateDirective,\n} from './file-drop-area.directives';\n\n@NgModule({\n declarations: [\n ArdiumFileDropAreaComponent,\n ArdiumFileDropAreaIdleContentTemplateDirective,\n ArdiumFileDropAreaDragoverContentTemplateDirective,\n ArdiumFileDropAreaUploadedContentTemplateDirective,\n ],\n imports: [\n CommonModule,\n ArdiumButtonModule,\n ArdiumIconModule,\n ArdiumFilesizePipeModule,\n ArdiumFilenamePipeModule,\n ArdiumFileextPipeModule,\n ArdiumClickOutsideEventModule,\n ],\n exports: [\n ArdiumFileDropAreaComponent,\n ArdiumFileDropAreaIdleContentTemplateDirective,\n ArdiumFileDropAreaDragoverContentTemplateDirective,\n ArdiumFileDropAreaUploadedContentTemplateDirective,\n ],\n})\nexport class ArdiumFileDropAreaModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdFileInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-prefix-tmp]' })\nexport class ArdFileInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-suffix-tmp]' })\nexport class ArdFileInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-idle-content-tmp]' })\nexport class ArdiumFileInputIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileInputDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileInputUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, Input, ContentChild, TemplateRef, forwardRef, Output, EventEmitter } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ArdColorInputPlaceholderTemplateDirective } from '../../inputs/color-input/color-input.directives';\nimport { ComponentColor } from '../../types/colors.types';\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport { _FileInputComponentBase } from '../file-input-base';\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\nimport {\n ArdFileInputPrefixTemplateDirective,\n ArdFileInputSuffixTemplateDirective,\n ArdiumFileInputDragoverContentTemplateDirective,\n ArdiumFileInputIdleContentTemplateDirective,\n ArdiumFileInputUploadedContentTemplateDirective,\n} from './file-input.directives';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\n\n@Component({\n selector: 'ard-file-input',\n templateUrl: './file-input.component.html',\n styleUrls: ['./file-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumFileInputComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumFileInputComponent extends _FileInputComponentBase {\n readonly DEFAULTS = {\n clearButtonTitle: 'Clear',\n };\n\n //! appearance\n //all handled in ard-form-field-frame component\n @Input() appearance: FormElementAppearance = FormElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n @Input() color: ComponentColor = ComponentColor.Primary;\n\n //! other inputs\n @Input() inputAttrs: { [key: string]: any } = {};\n\n //! placeholder\n @Input() placeholder: string = '';\n\n @ContentChild(ArdColorInputPlaceholderTemplateDirective, {\n read: TemplateRef,\n })\n placeholderTemplate?: TemplateRef<any>;\n\n get shouldDisplayPlaceholder(): boolean {\n return Boolean(this.placeholder) && !this.value;\n }\n\n //! clear button\n private _clearable: boolean = true;\n @Input()\n get clearable(): boolean {\n return this._clearable;\n }\n set clearable(v: any) {\n this._clearable = coerceBooleanProperty(v);\n }\n\n @Input() clearButtonTitle: string = this.DEFAULTS.clearButtonTitle;\n\n get shouldShowClearButton(): boolean {\n return this._clearable && !this.disabled && Boolean(this.value);\n }\n onClearButtonClick(event: MouseEvent): void {\n event.stopPropagation();\n this.clear();\n this.focus();\n }\n\n //! clear function\n clear(): void {\n if (!this.clearable) return;\n\n this.writeValue(null);\n this._emitChange();\n this.clearEvent.emit();\n }\n\n @Output('clear') clearEvent = new EventEmitter<any>();\n\n //! state\n private _touched: boolean = false;\n get touched(): boolean {\n return this._touched;\n }\n private set touched(state: boolean) {\n this._touched = state;\n }\n\n //! prefix & suffix\n @ContentChild(ArdFileInputPrefixTemplateDirective, { read: TemplateRef })\n prefixTemplate?: TemplateRef<any>;\n @ContentChild(ArdFileInputSuffixTemplateDirective, { read: TemplateRef })\n suffixTemplate?: TemplateRef<any>;\n //! templates\n @ContentChild(ArdiumFileInputIdleContentTemplateDirective, {\n read: TemplateRef,\n })\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\n @ContentChild(ArdiumFileInputDragoverContentTemplateDirective, {\n read: TemplateRef,\n })\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\n @ContentChild(ArdiumFileInputUploadedContentTemplateDirective, {\n read: TemplateRef,\n })\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\n\n getIdleContext(): FileInputBrowseContext {\n return {\n browse: () => {\n this.openBrowseDialog();\n },\n };\n }\n getDragoverContext(): FileInputFileAmountContext {\n return {\n amount: this._draggedFiles!,\n };\n }\n getUploadedContext(): FileInputFilesContext {\n const files = this.value!;\n return {\n $implicit: files,\n amount: files.length,\n files,\n };\n }\n}\n","<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance\"\r\n [variant]=\"variant\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div class=\"ard-file-input\"\r\n [class.ard-has-value]=\"value\"\r\n >\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n\r\n <div class=\"ard-file-input__value\">\r\n <ng-template *ngIf=\"currentViewState == 'idle'\" [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"></ng-template>\r\n <ng-template *ngIf=\"currentViewState == 'dragover'\" [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"></ng-template>\r\n <ng-template *ngIf=\"currentViewState == 'uploaded'\" [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"></ng-template>\r\n </div>\r\n </div>\r\n\r\n <ard-_clear-button\r\n *ngIf=\"shouldShowClearButton\"\r\n #focusableElement\r\n [title]=\"clearButtonTitle\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n ></ard-_clear-button>\r\n\r\n <button\r\n *ngIf=\"!shouldBeBlocked\"\r\n class=\"ard-browse-button\"\r\n #focusableElement\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-icon>folder</ard-icon>\r\n </button>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [name]=\"name\"\r\n [multiple]=\"multiple\"\r\n [attr.id]=\"htmlId\"\r\n (change)=\"onInputChange()\"\r\n>\r\n\r\n<ng-template #defaultIdleTemplate let-browse=\"browse\">\r\n <span class=\"ard-file-input__idle\">\r\n <span *ngIf=\"!multiple\">Upload a file</span>\r\n <span *ngIf=\"multiple\">Upload files</span>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #defaultDragoverTemplate let-amount=\"amount\">\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n <span class=\"ard-file-input__dragover-amount\" *ngIf=\"multiple\">\r\n {{ amount }} \r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__dragover-amount\" *ngIf=\"!multiple\">\r\n a file\r\n </span>\r\n <span class=\"ard-file-input__dragover-text\">\r\n here to upload\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #defaultUploadedTemplate let-amount=\"amount\">\r\n <div class=\"ard-file-input__uploaded\">\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n </div>\r\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFileInputComponent } from './file-input.component';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumFileInputComponent],\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule, ArdiumIconModule],\n exports: [ArdiumFileInputComponent],\n})\nexport class ArdiumFileInputModule {}\n","import { PaginationCurrentItemsContext } from '../_internal/models/pagination.model';\n\nexport const PaginationAlign = {\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Split: 'split',\n} as const;\nexport type PaginationAlign = (typeof PaginationAlign)[keyof typeof PaginationAlign];\n\nexport type CurrentItemsFormatFn = (context: PaginationCurrentItemsContext) => string;\n","import { TemplateRef } from '@angular/core';\nimport { ComponentColor } from '../types/colors.types';\nimport { NonEmptyArray } from '../types/utility.types';\nimport { CheckboxState } from '../checkbox/checkbox.types';\n\nexport type DataSource = string | { type: 'checkbox' | 'autocount' };\n\nexport interface _GenericColumn {\n header: string | { template: string | TemplateRef<unknown> };\n cellClass?: string;\n}\n\nexport interface TableDataColumn extends _GenericColumn {\n dataSource: DataSource;\n template?: string | TemplateRef<unknown>;\n sortable?: boolean;\n sortFn?: (columnAData: any, columnBData: any) => number;\n highlight?: boolean | ComponentColor;\n width?: string | number;\n minWidth?: string | number;\n isRowHeader?: boolean;\n}\nexport interface TableSubheader extends _GenericColumn {\n children: NonEmptyArray<TableSubheader | TableDataColumn>;\n}\n\nexport const SortType = {\n Ascending: 'ascending',\n Descending: 'descending',\n} as const;\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\n//! contexts\nexport interface TableSubheaderContext {\n $implicit: string;\n header: string;\n}\nexport interface TableHeaderContext extends TableSubheaderContext {\n sortable: boolean;\n sortType: SortType | null;\n onTriggerSort: (event?: MouseEvent) => void;\n onTriggerResetSort: (event?: MouseEvent) => void;\n}\nexport interface TableCheckboxContext {\n $implicit: boolean;\n selected: boolean;\n disabled: boolean;\n onChange: (event: MouseEvent) => void;\n}\nexport interface TableHeaderCheckboxContext {\n $implicit: CheckboxState;\n state: CheckboxState;\n onChange: () => void;\n}\nexport interface TableCaptionContext {\n $implicit: string;\n}\n\n//! appearance-related\nexport const TableAppearance = {\n Strong: 'strong',\n Light: 'light',\n Colorless: 'colorless',\n} as const;\nexport type TableAppearance = (typeof TableAppearance)[keyof typeof TableAppearance];\n\nexport const TableVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type TableVariant = (typeof TableVariant)[keyof typeof TableVariant];\n\nexport const TablePaginationStrategy = {\n Noop: 'noop',\n Slice: 'slice',\n} as const;\nexport type TablePaginationStrategy = (typeof TablePaginationStrategy)[keyof typeof TablePaginationStrategy];\n\nexport const TableAlignType = {\n TopLeft: 'top-left',\n TopCenter: 'top-center',\n TopRight: 'top-right',\n CenterLeft: 'center-left',\n Center: 'center-center',\n CenterRight: 'center-right',\n BottomLeft: 'bottom-left',\n BottomCenter: 'bottom-center',\n BottomRight: 'bottom-right',\n} as const;\nexport type TableAlignType = (typeof TableAlignType)[keyof typeof TableAlignType];\n","import { TableDataColumn, TableSubheader } from './table.types';\n\nexport function isTableSubheader(v: TableDataColumn | TableSubheader): v is TableSubheader {\n return 'children' in v;\n}\n\nexport function areAllDataColumns(cols: (TableDataColumn | TableSubheader)[]): boolean {\n return cols.every(col => !isTableSubheader(col));\n}\n\nexport function merge2dArrays<T>(destArr: T[][], arr: T[][]): void {\n const diff = arr.length - destArr.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n destArr.push([]);\n }\n }\n for (let row = 0; row < arr.length; row++) {\n destArr[row] = [...destArr[row], ...arr[row]];\n }\n}\n","import resolvePath from 'resolve-object-path';\nimport { evaluate, isDefined, isNull } from 'simple-bool';\nimport { CompareWithFn } from '../types/item-storage.types';\nimport { SortType, TableDataColumn, TablePaginationStrategy, TableSubheader } from './table.types';\nimport { areAllDataColumns, isTableSubheader, merge2dArrays } from './utils';\n\nexport interface ArdTableRow {\n readonly itemData: any;\n readonly index: number;\n readonly isEmpty?: boolean;\n data: any[];\n dataColumns: TableDataColumn[];\n class?: string;\n disabled?: boolean;\n bold?: boolean;\n selected?: boolean;\n highlighted?: boolean;\n}\nexport interface TableItemStorageHostDefaults {\n rowDisabledFrom: string;\n rowBoldFrom: string;\n}\nexport interface TableItemStorageHost {\n rowDisabledFrom?: string;\n rowBoldFrom?: string;\n invertRowDisabled?: boolean;\n invertRowBold?: boolean;\n data?: any[];\n readonly DEFAULTS: TableItemStorageHostDefaults;\n maxSelectedItems?: number;\n treatDataSourceAsString?: boolean;\n\n paginated: boolean;\n paginationStrategy: TablePaginationStrategy;\n itemsPerPage: number;\n page: number;\n}\nexport class HeaderCell {\n colspan!: number;\n rowspan!: number;\n cell!: TableDataColumn | TableSubheader;\n\n get width(): string | null {\n if (isTableSubheader(this.cell)) return null;\n return this._getWidth(this.cell.width);\n }\n get minWidth(): string | null {\n if (isTableSubheader(this.cell)) return null;\n return this._getWidth(this.cell.minWidth);\n }\n private _getWidth(width: string | number | undefined): string | null {\n if (!width) return null;\n if (typeof width == 'number') return `${width}px`;\n return width;\n }\n\n constructor(cell: TableDataColumn | TableSubheader, colspan: number = 1, rowspan: number = 1) {\n this.cell = cell;\n this.colspan = colspan;\n this.rowspan = rowspan;\n }\n}\n\nexport class TableItemStorage {\n private _items: ArdTableRow[] = [];\n private _sortedItems: ArdTableRow[] = [];\n private _highlightedItems: ArdTableRow[] = [];\n private _selectedItems: ArdTableRow[] = [];\n\n private _dataColumns: TableDataColumn[] = [];\n private _headerCells: HeaderCell[][] = [];\n\n constructor(private _ardParentComp: TableItemStorageHost) {}\n\n /**\n * Gets all items.\n */\n get items(): ArdTableRow[] {\n return this._items;\n }\n get sortedItems(): ArdTableRow[] {\n return this._sortedItems;\n }\n /**\n * Gets items based on the current pagination state.\n */\n get paginatedItems(): ArdTableRow[] {\n //prettier-ignore\n if (\n !this._ardParentComp.paginated\n || this._ardParentComp.paginationStrategy == TablePaginationStrategy.Noop\n ) {\n return this.sortedItems;\n }\n const page = this._ardParentComp.page;\n const IPP = this._ardParentComp.itemsPerPage;\n const itemsStart = (page - 1) * IPP;\n const itemsEnd = page * IPP;\n return this.sortedItems.slice(itemsStart, itemsEnd);\n }\n /**\n * Gets all currently selected items.\n */\n get selectedItems(): ArdTableRow[] {\n return this._selectedItems;\n }\n /**\n * Gets all currently highlighted items.\n */\n get highlightedItems(): ArdTableRow[] {\n return this._highlightedItems;\n }\n /**\n * Gets the values of the currently selected items.\n */\n get value(): any[] {\n return this._itemsToValue(this.selectedItems);\n }\n /**\n * Maps an array of items into their values.\n * @param items The items to convert to value.\n * @returns An array of item values.\n */\n private _itemsToValue(items: ArdTableRow[]): any[] {\n return items.map(item => item.itemData);\n }\n\n /**\n * Returns true if at least one item is highlighted, otherwise false.\n */\n get isAnyItemHighlighted(): boolean {\n return this._highlightedItems.length > 0;\n }\n /**\n * Checks if any item in the table is selected.\n * @returns A boolean value indicating if any item is selected.\n */\n get isAnyItemSelected(): boolean {\n return this._selectedItems.length > 0;\n }\n /**\n * Checks if all items in the table are selected.\n * @returns A boolean value indicating if all items are selected.\n */\n get areAllSelected(): boolean {\n return this._selectedItems.length == this._items.filter(item => !item.disabled).length;\n }\n /**\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\n *\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\n */\n get isItemLimitReached(): boolean {\n if (!isDefined(this._ardParentComp.maxSelectedItems)) {\n return false;\n }\n return this._ardParentComp.maxSelectedItems <= this.selectedItems.length;\n }\n\n /**\n * Gets the header cells of the table.\n * @returns a 2D array of header cells.\n */\n get headerCells(): HeaderCell[][] {\n return this._headerCells;\n }\n /**\n * Checks if the table has defined columns.\n * @returns a boolean value indicating if the table has defined columns.\n */\n get hasDefinedColumns(): boolean {\n return this._dataColumns.length > 0;\n }\n\n //! setting columns\n /**\n * Sets the columns of the table.\n * @param cols an array of table data columns or table subheaders.\n */\n setColumns(cols: (TableDataColumn | TableSubheader)[]): void {\n const maxNestingLevel = this._getHeaderMaxNesting(cols);\n const headerCells = this._mapColumnsToArray(cols, maxNestingLevel, 0);\n this._headerCells = this._filterHeaderCells(headerCells);\n this._dataColumns = this._extractDataSources(cols);\n }\n /**\n * Filters out null values from the header cells array.\n * @param cells a 2D array of header cells or null values.\n * @returns a 2D array of header cells without null values and empty arrays.\n */\n private _filterHeaderCells(cells: (HeaderCell | null)[][]): HeaderCell[][] {\n for (let i = 0; i < cells.length; i++) {\n cells[i] = cells[i].filter(v => v != null);\n }\n return cells.filter(row => row.length) as HeaderCell[][];\n }\n /**\n * Extracts the data sources from the columns array.\n * @param cols an array of table data columns or table subheaders.\n * @returns an array of table data columns.\n */\n private _extractDataSources(cols: (TableDataColumn | TableSubheader)[]): TableDataColumn[] {\n let dataColumns: TableDataColumn[] = [];\n\n for (const col of cols) {\n if (!isTableSubheader(col)) {\n dataColumns.push(col);\n continue;\n }\n dataColumns.push(...this._extractDataSources(col.children));\n }\n\n return dataColumns;\n }\n /**\n * Gets the maximum nesting level of the columns array.\n * @param cols an array of table data columns or table subheaders.\n * @returns the maximum nesting level as a number.\n */\n private _getHeaderMaxNesting(cols: (TableDataColumn | TableSubheader)[]): number {\n if (areAllDataColumns(cols)) return 1;\n let max = 1;\n for (const col of cols.filter(v => isTableSubheader(v)) as TableSubheader[]) {\n const height = 1 + this._getHeaderMaxNesting(col.children);\n if (height > max) max = height;\n }\n return max;\n }\n /**\n * Maps the columns tree to a 2D array of header cells or null values.\n * @param cols an array of table data columns or table subheaders.\n * @param maxNesting the maximum nesting level of the columns array.\n * @param currentNesting the current nesting level of the columns array.\n * @returns a 2D array of header cells or null values.\n */\n private _mapColumnsToArray(cols: (TableDataColumn | TableSubheader)[], maxNesting: number, currentNesting: number): (HeaderCell | null)[][] {\n if (areAllDataColumns(cols)) {\n return [cols.map(col => new HeaderCell(col, 1, maxNesting - currentNesting))];\n }\n const headerCells: (HeaderCell | null)[][] = [[]];\n for (const col of cols) {\n if (!isTableSubheader(col)) {\n headerCells[0].push(new HeaderCell(col, 1, maxNesting - currentNesting));\n continue;\n }\n const childCells: (HeaderCell | null)[][] = [[], ...this._mapColumnsToArray(col.children, maxNesting, currentNesting + 1)];\n const height = childCells.length - 1;\n const width = childCells[1].length;\n for (let i = 0; i < height; i++) {\n headerCells.push([null]);\n }\n headerCells[0].push(new HeaderCell(col, width, 1));\n for (let i = 0; i < width - 1; i++) {\n headerCells[0].push(null);\n }\n merge2dArrays(headerCells, childCells);\n }\n return headerCells;\n }\n\n //! setting items\n /**\n * Sets the component's items. Takes into account the values defined by the parent component for `rowDisabledFrom`, `rowBoldFrom`, and `rowHighlightedFrom`.\n * @param items An array of items to be set as the component's items.\n */\n setItems(items: any[]): void {\n if (!this.hasDefinedColumns) return;\n\n this._items = items.map((item, index) => {\n return this._setItemsMapFn(item, index);\n });\n this._sortedItems = this._items;\n }\n /**\n * Maps raw item data to an {@link ArdTableRow} object.\n *\n * @param {any} rawItemData - The raw data of the item.\n * @param {number} index - The index of the item.\n * @returns {ArdTableRow} Returns an ArdTableRow object with mapped properties.\n * @private\n */\n private _setItemsMapFn(rawItemData: any, index: number): ArdTableRow {\n //get data\n const [data, dataColumns] = this._getRowData(rawItemData, index);\n\n //get bold\n const rowBoldFromPath = this._ardParentComp.rowBoldFrom ?? this._ardParentComp.DEFAULTS.rowBoldFrom;\n let bold = resolvePath(rawItemData, rowBoldFromPath);\n if (this._ardParentComp.invertRowBold) {\n bold = !bold;\n }\n\n //get disabled\n const disabledPath = this._ardParentComp.rowDisabledFrom ?? this._ardParentComp.DEFAULTS.rowDisabledFrom;\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\n if (this._ardParentComp.invertRowDisabled) {\n disabled = !disabled;\n }\n\n //return\n return {\n itemData: rawItemData,\n index,\n data,\n dataColumns,\n disabled,\n bold,\n };\n }\n /**\n * Retrieves data for a row based on data columns configuration.\n *\n * @param {any} rawItemData - The raw data of the item.\n * @param {number} index - The index of the item.\n * @returns {any[]} Returns an array containing the row data.\n * @private\n */\n private _getRowData(rawItemData: any, index: number): [any[], TableDataColumn[]] {\n let data: any[] = [];\n for (const dataColumn of this._dataColumns) {\n const sourcePath = dataColumn.dataSource;\n\n if (typeof sourcePath == 'string') {\n if (this._ardParentComp.treatDataSourceAsString) {\n data.push(rawItemData[sourcePath]);\n continue;\n }\n data.push(resolvePath(rawItemData, sourcePath));\n continue;\n }\n if (sourcePath.type == 'autocount') {\n data.push(index + 1);\n continue;\n }\n if (sourcePath.type == 'checkbox') {\n data.push({ _ardCheckbox: true, index });\n continue;\n }\n const sourceString = typeof sourcePath == 'object' ? JSON.stringify(sourcePath) : sourcePath;\n console.error(new Error(`Unexpected data source \"${sourceString}\".`));\n }\n return [data, this._dataColumns];\n }\n /**\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\n * @param indexes The value of the ngModel to set.\n */\n writeValue(indexes: number[]): void {\n this._forceUnselectAll();\n this.selectItem(...indexes);\n }\n\n //! selecting items\n /**\n * Checks if an item with the given index is selected.\n *\n * @param {number} index The index of the item to check.\n * @returns {boolean} _true_ if the item is selected, otherwise _false_.\n */\n isItemSelected(index: number): boolean {\n return this._selectedItems.some(item => item.index == index);\n }\n /**\n * Selects all items.\n *\n * Accounts for the limit of concurrently selected items defined by the parent component.\n * @returns a tuple containing two arrays:\n * * An array of items selected.\n * * An array of items failed to select.\n */\n selectAll(): [any[], any[]] {\n return this.selectItem(...this._items.map(v => v.index));\n }\n /**\n * Unselects all selected items.\n *\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\n * @returns An array of items cleared, mapped to only their values.\n */\n unselectAll(): any[] {\n for (const item of this._selectedItems) {\n item.selected = false;\n }\n\n const ret = this._itemsToValue(this._selectedItems);\n\n this._selectedItems = [];\n\n return ret;\n }\n /**\n * Unselects all selected items, no matter what the component settings are.\n * @returns An array of items cleared, mapped to only their values.\n */\n private _forceUnselectAll(): any[] {\n for (const item of this._selectedItems) {\n item.selected = false;\n }\n\n const ret = this._itemsToValue(this._selectedItems);\n\n this._selectedItems = [];\n\n return ret;\n }\n /**\n * Selects one or multiple items.\n *\n * Accounts for the limit of concurrently selected items defined by the parent component.\n *\n * @param indexes A rest operator array of item indexes to be selected.\n * @returns a tuple containing two arrays:\n * * An array of items selected.\n * * An array of items failed to select.\n */\n selectItem(...indexes: number[]): [any[], any[]] {\n const itemsToBeSelected = this._items.filter(item => !item.disabled && indexes.includes(item.index));\n if (this.isItemLimitReached) {\n return [[], this._itemsToValue(itemsToBeSelected)];\n }\n\n let itemsSelectedCount = 0;\n const itemsSelected = [];\n for (const item of itemsToBeSelected) {\n itemsSelectedCount++;\n if (item.selected) continue;\n if (this.isItemLimitReached) {\n break;\n }\n item.selected = true;\n this._selectedItems.push(item);\n itemsSelected.push(item);\n }\n\n const itemsFailedToSelect = itemsToBeSelected.slice(itemsSelectedCount - 1);\n return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsFailedToSelect)];\n }\n /**\n * Unselects one or multiple items.\n * @param items A rest operator array of item indexes to be unselected.\n * @returns An array of items unselected, mapped to only their values.\n */\n unselectItem(...indexes: number[]): any[] {\n const itemsToBeSelected = this._items.filter(item => indexes.includes(item.index));\n for (const item of itemsToBeSelected) {\n item.selected = false;\n }\n this._selectedItems = this._selectedItems.filter(v => v.selected);\n\n return this._itemsToValue(itemsToBeSelected);\n }\n\n //! highlighting items\n /**\n * Unhighlights all currently highlighted items.\n */\n unhighlightAll(): void {\n for (const item of this._highlightedItems) {\n item.highlighted = false;\n }\n this._highlightedItems = [];\n }\n /**\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\n * @param item The index of the item to be highlighted.\n * @returns The highlighted item.\n */\n highlightSingleItem(index: number): ArdTableRow | null {\n this.unhighlightAll();\n return this.highlightItem(index);\n }\n /**\n * Highlights all given items.\n * @param items A rest operator array of item indexes to be highlighted.\n * @returns The last highlighted item.\n */\n highlightItem(...indexes: number[]): ArdTableRow {\n const items = this._items.filter(item => indexes.includes(item.index));\n for (const item of items) {\n item.highlighted = true;\n }\n this._highlightedItems.push(...items);\n return items.last();\n }\n /**\n * Unhighlights all given items.\n * @param items A rest operator array of item indexes to be unhighlighted.\n */\n unhighlightItem(...indexes: number[]): void {\n const items = this._items.filter(item => indexes.includes(item.index));\n for (const item of items) {\n if (!item || !item.highlighted) return;\n\n item.highlighted = false;\n }\n this._highlightedItems = this._highlightedItems.filter(v => v.highlighted);\n }\n /**\n * Highlights the first item out of all items.\n * @returns The highlighted item.\n */\n highlightFirstItem(): ArdTableRow | null {\n this.unhighlightAll();\n\n let itemToHighlight = this._getHiglightableItems().first().index;\n return this.highlightItem(itemToHighlight);\n }\n /**\n * Highlights the last item out of all items.\n * @returns The highlighted item.\n */\n highlightLastItem(): ArdTableRow | null {\n this.unhighlightAll();\n\n let itemToHighlight = this._getHiglightableItems().last().index;\n return this.highlightItem(itemToHighlight);\n }\n /**\n * Highlights all non-disabled items.\n */\n highlightAllItems(): void {\n let itemsToHighlight = this._getHiglightableItems().map(v => v.index);\n\n this.highlightItem(...itemsToHighlight);\n }\n /**\n * Highlights the next non-disabled item defined by the offset amount.\n *\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\n * @param offset The amount of items to offset the highlight by.\n * @param hasShift Whether the user has the shift key pressed.\n * @returns The item highlighted.\n */\n highlightNextItem(offset: number, hasShift?: boolean): ArdTableRow | null {\n if (!this.isAnyItemHighlighted) {\n return this.highlightFirstItem();\n }\n const currentItem = this.highlightedItems.last();\n const itemsWithoutDisabled = this._items.filter(item => !item.disabled && (!this.isItemLimitReached || item.selected));\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index == currentItem.index);\n\n let nextItemIndex = currentIndexInItems + offset;\n if (nextItemIndex >= itemsWithoutDisabled.length) {\n nextItemIndex -= itemsWithoutDisabled.length;\n }\n if (nextItemIndex < 0) {\n nextItemIndex += itemsWithoutDisabled.length;\n }\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\n\n if (hasShift) {\n if (itemToHighlight.highlighted) {\n this.unhighlightItem(nextItemIndex);\n }\n return this.highlightItem(nextItemIndex);\n }\n return this.highlightSingleItem(nextItemIndex);\n }\n /**\n * Finds all highlightable items. An item is considered highlightable if it is **not** disabled.\n * @returns An array of all highlightable items.\n */\n private _getHiglightableItems(): ArdTableRow[] {\n return this._items.filter(item => !item.disabled);\n }\n\n //! sorting\n private _currentSortColumn: number | null = null;\n private _currentSortType: SortType | null = null;\n\n toggleCurrentSortColumn(column: number): void {\n if (this._currentSortColumn == column) {\n if (this._currentSortType == SortType.Ascending) {\n this._currentSortType = SortType.Descending;\n } else {\n this._currentSortType = SortType.Ascending;\n }\n this._generateSortedRows(true);\n return;\n }\n this._currentSortColumn = column;\n this._currentSortType = SortType.Ascending;\n this._generateSortedRows();\n }\n resetSort(): void {\n this._currentSortColumn = null;\n this._currentSortType = null;\n this._sortedItems = [...this.items];\n }\n getColumnSortType(column: number): SortType | null {\n if (this._currentSortColumn == column) {\n return this._currentSortType;\n }\n return null;\n }\n private _generateSortedRows(justReverse?: boolean): void {\n if (justReverse) {\n this._sortedItems.reverse();\n return;\n }\n const sortColumnIndex = this._currentSortColumn;\n if (isNull(sortColumnIndex) || !this._currentSortType) {\n this._sortedItems = this.items;\n return;\n }\n const sortColumn = this._dataColumns[sortColumnIndex];\n if (!sortColumn) {\n throw new Error(\n `Encountered an issue in <ard-table>: could not find the column with index ${sortColumnIndex}. This is most likely an Ardium bug, please report it on GitHub.`\n );\n }\n\n const direction = this._currentSortType == SortType.Ascending ? 1 : -1;\n const sortFn =\n sortColumn.sortFn ??\n ((a, b) => {\n if (a > b) return direction;\n if (a < b) return -1 * direction;\n return 0;\n });\n\n this._sortedItems = [...this.items].sort((a, b) => sortFn(a.data[sortColumnIndex], b.data[sortColumnIndex]));\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { TableCaptionContext, TableCheckboxContext } from './table.types';\nimport { PaginationContext } from '../_internal/models/pagination.model';\n\n@Directive({ selector: 'ard-table > ng-template[ard-table-tmp]' })\nexport class ArdiumTableTemplateDirective {\n @Input('ard-table-tmp') name?: string;\n\n constructor(public template: TemplateRef<any>) {}\n}\n\n@Directive({ selector: 'ard-table > ng-template[ard-table-checkbox-tmp]' })\nexport class ArdiumTableCheckboxTemplateDirective {\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\n}\n\n@Directive({\n selector: 'ard-table > ng-template[ard-table-header-checkbox-tmp]',\n})\nexport class ArdiumTableHeaderCheckboxTemplateDirective {\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\n}\n\n@Directive({ selector: 'ard-table > ng-template[ard-table-caption-tmp]' })\nexport class ArdiumTableCaptionTemplateDirective {\n constructor(public template: TemplateRef<TableCaptionContext>) {}\n}\n\n//! paginations\n@Directive({ selector: 'ard-table > ng-template[ard-table-pagination-tmp]' })\nexport class ArdiumTablePaginationTemplateDirective {\n constructor(public template: TemplateRef<PaginationContext>) {}\n}\n","import { isDefined } from 'simple-bool';\n\nexport interface PaginationCurrentItemsContext {\n currentItemsFirst: number;\n currentItemsLast: number;\n totalItems: number;\n totalPages: number;\n page: number;\n}\n\nexport interface PaginationContext extends PaginationCurrentItemsContext {\n itemsPerPageOptions: number[] | { value: number; label: string }[];\n itemsPerPage: number;\n onItemsPerPageChange: (newValue: number) => void;\n firstPageDisabled: boolean;\n prevPageDisabled: boolean;\n nextPageDisabled: boolean;\n lastPageDisabled: boolean;\n onPageChange: (newPage: number) => void;\n}\n\nexport class PaginationModel {\n private _totalItems?: number;\n private _itemsPerPageOptions: number[] | { value: number; label: string }[] = [10, 25, 50];\n private _itemsPerPage: number = 50;\n private _page: number = 1;\n\n //! total items\n setTotalItems(v: number): void {\n this._totalItems = v;\n this._lastPageNumMemo = null;\n this._itemsOnCurrentPageMemo = null;\n }\n get isTotalItemsDefined(): boolean {\n return isDefined(this._totalItems);\n }\n\n //! items per page\n setItemsPerPageOptions(v: number[] | { value: number; label: string }[]): void {\n this._itemsPerPageOptions = v;\n }\n getItemsPerPageOptions(): number[] | { value: number; label: string }[] {\n return this._itemsPerPageOptions;\n }\n setItemsPerPage(v: number): void {\n this._itemsPerPage = v;\n this._lastPageNumMemo = null;\n this._itemsOnCurrentPageMemo = null;\n this.setPage(1);\n }\n getItemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n private _itemsOnCurrentPageMemo: [number, number] | null = null;\n get itemsOnCurrentPage(): [number, number] | null {\n if (!isDefined(this._totalItems)) return null;\n if (!isDefined(this._itemsOnCurrentPageMemo))\n [\n (this._itemsOnCurrentPageMemo = [\n Math.min(this._totalItems, (this._page - 1) * this._itemsPerPage + 1),\n Math.min(this._totalItems, this._page * this._itemsPerPage),\n ]),\n ];\n return this._itemsOnCurrentPageMemo;\n }\n\n //! action disabled states\n get firstPageDisabled(): boolean {\n return !isDefined(this._totalItems) || this._page == 1;\n }\n get lastPageDisabled(): boolean {\n return !isDefined(this._totalItems) || this._page == this.lastPageNum;\n }\n\n //! current page\n private _lastPageNumMemo: number | null = null;\n get lastPageNum(): number | null {\n if (!isDefined(this._totalItems)) return null;\n if (!isDefined(this._lastPageNumMemo)) {\n this._lastPageNumMemo = Math.ceil(this._totalItems / this._itemsPerPage);\n }\n return this._lastPageNumMemo;\n }\n get isLastPage(): boolean {\n if (!isDefined(this._totalItems)) return true;\n return this.lastPageNum === this._page;\n }\n setPage(v: number): void {\n this._page = v;\n this._itemsOnCurrentPageMemo = null;\n }\n getPage(): number {\n return this._page;\n }\n firstPage(): number | null {\n if (this.firstPageDisabled) return null;\n this.setPage(1);\n return 1;\n }\n prevPage(): number | null {\n if (this.firstPageDisabled) return null;\n this.setPage(this._page - 1);\n return this._page;\n }\n nextPage(): number | null {\n if (this.lastPageDisabled) return null;\n this.setPage(this._page + 1);\n return this._page;\n }\n lastPage(): number | null {\n if (this.lastPageDisabled) return null;\n this.setPage(this.lastPageNum!);\n return this._page;\n }\n\n //! context\n getCurrentItemsContext(): PaginationCurrentItemsContext {\n if (!isDefined(this._totalItems)) throw new Error('Cannot use pagination model without defining total items first.');\n\n const pageItems = this.itemsOnCurrentPage!;\n return {\n totalPages: this.lastPageNum!,\n totalItems: this._totalItems,\n page: this._page,\n currentItemsFirst: pageItems[0],\n currentItemsLast: pageItems[1],\n };\n }\n getPartialContext(): Omit<PaginationContext, 'onItemsPerPageChange' | 'onPageChange'> {\n return {\n ...this.getCurrentItemsContext(),\n itemsPerPageOptions: this._itemsPerPageOptions,\n itemsPerPage: this._itemsPerPage,\n firstPageDisabled: this.firstPageDisabled,\n prevPageDisabled: this.firstPageDisabled,\n nextPageDisabled: this.lastPageDisabled,\n lastPageDisabled: this.lastPageDisabled,\n };\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\nimport { PaginationModel } from '../_internal/models/pagination.model';\nimport { ComponentColor } from '../types/colors.types';\nimport { CurrentItemsFormatFn, PaginationAlign } from './table-pagination.types';\n\n@Component({\n selector: 'ard-table-pagination',\n templateUrl: './table-pagination.component.html',\n styleUrls: ['./table-pagination.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumTablePaginationComponent extends _FocusableComponentBase implements OnInit {\n private readonly _pagination = new PaginationModel();\n\n //! main settings\n @Input()\n set options(v: number[] | { value: number; label: string }[]) {\n this._pagination.setItemsPerPageOptions(v);\n }\n get options(): number[] | { value: number; label: string }[] {\n return this._pagination.getItemsPerPageOptions();\n }\n @Input()\n set itemsPerPage(v: any) {\n const num = coerceNumberProperty(v);\n this._pagination.setItemsPerPage(num);\n }\n get itemsPerPage(): number {\n return this._pagination.getItemsPerPage();\n }\n @Input()\n set page(v: any) {\n const num = coerceNumberProperty(v);\n this._pagination.setPage(num);\n }\n get page(): number {\n return this._pagination.getPage();\n }\n @Input()\n set totalItems(v: any) {\n const num = coerceNumberProperty(v);\n this._pagination.setTotalItems(num);\n }\n\n @Output('itemsPerPageChange') itemsPerPageChangeEvent = new EventEmitter<number>();\n @Output('pageChange') pageChangeEvent = new EventEmitter<number>();\n\n ngOnInit(): void {\n if (this._pagination.isTotalItemsDefined) return;\n throw new Error('Table pagination requires [totalItems] to be defined');\n }\n\n //! appearance\n @Input() color: ComponentColor = ComponentColor.Primary;\n @Input() align: PaginationAlign = PaginationAlign.Split;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`, `ard-align-${this.align}`, this.compact ? 'ard-compact' : ''].join(' ');\n }\n\n //! miscellaneous\n private _useFirstLastButtons: boolean = false;\n @Input()\n get useFirstLastButtons(): boolean {\n return this._useFirstLastButtons;\n }\n set useFirstLastButtons(v: any) {\n this._useFirstLastButtons = coerceBooleanProperty(v);\n }\n\n @Input() isLoading?: boolean;\n\n @Input() itemsPerPageText: string = 'Items per page:';\n @Input() currentItemsFormatFn: CurrentItemsFormatFn = ({ currentItemsFirst, currentItemsLast, totalItems }) => {\n return `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`;\n };\n\n //! contexts\n getCurrentItemsContext() {\n return this._pagination.getCurrentItemsContext();\n }\n\n get firstPageDisabled(): boolean {\n return this._pagination.firstPageDisabled;\n }\n get lastPageDisabled(): boolean {\n return this._pagination.lastPageDisabled;\n }\n\n //! methods\n onItemsPerPageChange(newValue: number): void {\n if (this.isLoading) return;\n if (newValue == this.itemsPerPage) return;\n this._pagination.setItemsPerPage(newValue);\n this.itemsPerPageChangeEvent.emit(this.itemsPerPage);\n this._emitPageEvent();\n }\n\n private _emitPageEvent(): void {\n this.pageChangeEvent.emit(this.page);\n }\n onPageChange(newPage: number): void {\n if (this.isLoading) return;\n if (newPage == this.page) return;\n this._pagination.setPage(newPage);\n this._emitPageEvent();\n }\n onFirstPage(): void {\n if (this.isLoading) return;\n const newPage = this._pagination.firstPage();\n if (!newPage) return;\n this._emitPageEvent();\n }\n onPrevPage(): void {\n if (this.isLoading) return;\n const newPage = this._pagination.prevPage();\n if (!newPage) return;\n this._emitPageEvent();\n }\n onNextPage(): void {\n if (this.isLoading) return;\n const newPage = this._pagination.nextPage();\n if (!newPage) return;\n this._emitPageEvent();\n }\n onLastPage(): void {\n if (this.isLoading) return;\n const newPage = this._pagination.lastPage();\n if (!newPage) return;\n this._emitPageEvent();\n }\n}\n","<div class=\"ard-pagination\" [ngClass]=\"ngClasses\">\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText }}</div>\r\n <ard-select\r\n [items]=\"options\"\r\n [compact]=\"compact\"\r\n [value]=\"itemsPerPage\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n <ard-icon-button\r\n *ngIf=\"useFirstLastButtons\"\r\n [color]=\"color\"\r\n [compact]=\"compact\"\r\n [disabled]=\"disabled || firstPageDisabled\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color\"\r\n [compact]=\"compact\"\r\n [disabled]=\"disabled || firstPageDisabled\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color\"\r\n [compact]=\"compact\"\r\n [disabled]=\"disabled || lastPageDisabled\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n *ngIf=\"useFirstLastButtons\"\r\n [color]=\"color\"\r\n [compact]=\"compact\"\r\n [disabled]=\"disabled || lastPageDisabled\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n </div>\r\n </div>\r\n</div>","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\nimport { isDefined } from 'simple-bool';\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\nimport { CheckboxState } from '../checkbox/checkbox.types';\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\nimport { ComponentColor, SimpleComponentColor } from '../types/colors.types';\nimport { ArdTableRow, HeaderCell, TableItemStorage, TableItemStorageHost } from './table-item-storage';\nimport {\n ArdiumTableCaptionTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableTemplateDirective,\n} from './table.directives';\nimport {\n SortType,\n TableAlignType,\n TableAppearance,\n TableCaptionContext,\n TableCheckboxContext,\n TableDataColumn,\n TableHeaderCheckboxContext,\n TableHeaderContext,\n TablePaginationStrategy,\n TableSubheader,\n TableVariant,\n TableSubheaderContext,\n} from './table.types';\nimport { isTableSubheader } from './utils';\n\n@Component({\n selector: 'ard-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumTableComponent extends _FocusableComponentBase implements TableItemStorageHost, AfterContentInit {\n private readonly _itemStorage = new TableItemStorage(this);\n\n readonly DEFAULTS = {\n rowDisabledFrom: 'disabled',\n rowBoldFrom: 'bold',\n };\n\n @Input() rowDisabledFrom?: string;\n @Input() rowBoldFrom?: string;\n\n private _invertRowDisabled: boolean = false;\n @Input()\n get invertRowDisabled(): boolean {\n return this._invertRowDisabled;\n }\n set invertRowDisabled(v: any) {\n this._invertRowDisabled = coerceBooleanProperty(v);\n }\n\n private _invertRowBold: boolean = false;\n @Input()\n get invertRowBold(): boolean {\n return this._invertRowBold;\n }\n set invertRowBold(v: any) {\n this._invertRowBold = coerceBooleanProperty(v);\n }\n\n private _selectableRows: boolean = false;\n @Input()\n get selectableRows(): boolean {\n return this._selectableRows;\n }\n set selectableRows(v: any) {\n this._selectableRows = coerceBooleanProperty(v);\n }\n\n @Input() caption?: string;\n\n @Input() isLoading?: boolean;\n @Input() loadingProgress?: number; //TODO add progress bar\n\n //! appearance\n @Input() appearance: TableAppearance = TableAppearance.Strong;\n @Input() variant: TableVariant = TableVariant.Rounded;\n @Input() color: ComponentColor = ComponentColor.Primary;\n @Input() align: TableAlignType = TableAlignType.CenterLeft;\n @Input() headerAlign: TableAlignType = TableAlignType.CenterLeft;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n private _zebra: boolean = false;\n @Input()\n get zebra(): boolean {\n return this._zebra;\n }\n set zebra(v: any) {\n this._zebra = coerceBooleanProperty(v);\n }\n\n private _stickyHeader: boolean = false;\n @Input()\n get stickyHeader(): boolean {\n return this._stickyHeader;\n }\n set stickyHeader(v: any) {\n this._stickyHeader = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [\n `ard-appearance-${this.appearance}`,\n `ard-variant-${this.variant}`,\n `ard-color-${this.color}`,\n `ard-align-${this.align}`,\n `ard-header-align-${this.headerAlign}`,\n this.compact ? 'ard-compact' : '',\n this.zebra ? 'ard-zebra-table' : '',\n this.selectableRows ? 'ard-selectable-rows' : '',\n this.stickyHeader ? 'ard-sticky-header' : '',\n this.isLoading ? 'ard-table-loading' : '',\n ].join(' ');\n }\n\n //! pagination\n private _paginated: boolean = false;\n @Input()\n get paginated(): boolean {\n return this._paginated;\n }\n set paginated(v: any) {\n this._paginated = coerceBooleanProperty(v);\n }\n\n @Input() paginationStrategy: TablePaginationStrategy = TablePaginationStrategy.Noop;\n\n @Input() paginationOptions: number[] | { value: number; label: string }[] = [10, 25, 50];\n @Input() totalItems?: number;\n @Input() paginationColor: ComponentColor = ComponentColor.None;\n @Input() paginationAlign: PaginationAlign = PaginationAlign.Split;\n @Input() itemsPerPageText: string = 'Items per page:';\n @Input() currentItemsFormatFn: CurrentItemsFormatFn = ({ currentItemsFirst, currentItemsLast, totalItems }) => {\n return `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`;\n };\n\n private _pageFillRemaining: boolean = false;\n @Input()\n get pageFillRemaining(): boolean {\n return this._pageFillRemaining;\n }\n set pageFillRemaining(v: any) {\n this._pageFillRemaining = coerceBooleanProperty(v);\n }\n\n private _paginationDisabled: boolean = false;\n @Input()\n get paginationDisabled(): boolean {\n return this._paginationDisabled;\n }\n set paginationDisabled(v: any) {\n this._paginationDisabled = coerceBooleanProperty(v);\n }\n\n private _useFirstLastButtons: boolean = false;\n @Input()\n get useFirstLastButtons(): boolean {\n return this._useFirstLastButtons;\n }\n set useFirstLastButtons(v: any) {\n this._useFirstLastButtons = coerceBooleanProperty(v);\n }\n\n private _itemsPerPage: number = 50;\n @Input()\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n set itemsPerPage(v: any) {\n this._itemsPerPage = coerceNumberProperty(v);\n }\n @Output() itemsPerPageChange = new EventEmitter<number>();\n\n private _page: number = 1;\n @Input()\n get page(): number {\n return this._page;\n }\n set page(v: any) {\n this._page = coerceNumberProperty(v);\n }\n @Output() pageChange = new EventEmitter<number>();\n\n get isDefinedTotalItems(): boolean {\n return (\n (this.paginationStrategy == TablePaginationStrategy.Noop && isDefined(this.totalItems)) || this.paginationStrategy != TablePaginationStrategy.Noop\n );\n }\n get canDisplayPagination(): boolean {\n //prettier-ignore\n return this.paginated && this.isDefinedTotalItems;\n }\n\n //! item storage getters\n get headerCells(): HeaderCell[][] {\n return this._itemStorage.headerCells;\n }\n get dataRows(): ArdTableRow[] {\n const items: ArdTableRow[] = this._itemStorage.paginatedItems;\n\n if (!this.pageFillRemaining) return items;\n if (!this.isDefinedTotalItems) {\n throw new Error('<ard-table> requires [totalItems] to be defined.');\n }\n if (this.page == 1) return items;\n for (let i = items.length; i < this.itemsPerPage; i++) {\n items.push({\n itemData: null,\n index: i,\n data: [],\n dataColumns: [],\n isEmpty: true,\n });\n }\n return items;\n }\n\n //! columns/data setters\n @Input()\n set columns(v: (TableDataColumn | TableSubheader)[]) {\n this._itemStorage.setColumns(v);\n }\n private _data: any[] = [];\n @Input()\n set data(v: any[]) {\n this._data = v;\n this._itemStorage.setItems(v);\n }\n get data(): any[] {\n return this._data;\n }\n\n private _treatDataSourceAsString: boolean = false;\n @Input()\n get treatDataSourceAsString(): boolean {\n return this._treatDataSourceAsString;\n }\n set treatDataSourceAsString(v: any) {\n this._treatDataSourceAsString = coerceBooleanProperty(v);\n }\n\n //! templates\n @ContentChild(ArdiumTableCheckboxTemplateDirective, { read: TemplateRef })\n checkboxTemplate?: TemplateRef<TableCheckboxContext>;\n @ContentChild(ArdiumTableHeaderCheckboxTemplateDirective, {\n read: TemplateRef,\n })\n headerCheckboxTemplate?: TemplateRef<TableHeaderCheckboxContext>;\n @ContentChild(ArdiumTableCaptionTemplateDirective, { read: TemplateRef })\n captionTemplate?: TemplateRef<TableCaptionContext>;\n\n private _itemTemplates: { [key: string]: TemplateRef<any> } = {};\n @ContentChildren(ArdiumTableTemplateDirective)\n templateChildren!: QueryList<ArdiumTableTemplateDirective>;\n\n ngAfterContentInit(): void {\n const templates = Array.from(this.templateChildren);\n for (const instance of templates) {\n if (!instance.name) {\n console.error(new Error('[ard-table-tmp] requires a value to be specified.'));\n continue;\n }\n this._itemTemplates[instance.name] = instance.template;\n }\n }\n\n getHeaderTemplate(tmp: string | { template: string | TemplateRef<any> }): TemplateRef<any> | undefined {\n if (typeof tmp == 'string') return undefined;\n return this.getCellTemplate(tmp.template);\n }\n getHeaderCheckboxColor(): SimpleComponentColor {\n if (this.appearance == TableAppearance.Strong) return SimpleComponentColor.CurrentColor;\n return this.color;\n }\n getCellTemplate(tmp?: string | TemplateRef<any>): TemplateRef<any> | undefined {\n //return undefined\n if (!tmp) return undefined;\n //return template, if it is one\n if (tmp instanceof TemplateRef) return tmp;\n //check if the name can be found\n if (!(tmp in this._itemTemplates)) {\n console.error(new Error(`<ard-table> error: cannot find template named \"${tmp}\"`));\n return undefined;\n }\n //return the template\n return this._itemTemplates[tmp];\n }\n getCellStyle(cell: TableDataColumn | TableSubheader): string {\n if (isTableSubheader(cell)) return 'width:unset;min-width:unset';\n const width = typeof cell.width == 'number' ? `${cell.width}px` : cell.width;\n const minWidth = typeof cell.minWidth == 'number' ? `${cell.minWidth}px` : cell.minWidth;\n return [`width:${width ?? 'unset'}`, `min-width:${minWidth ?? 'unset'}`].join(';');\n }\n\n //! click & hover handlers\n onCheckboxClick(index: number): void {\n this.toggleRowSelected(index);\n }\n onRowClick(index: number, event: MouseEvent): void {\n if (!this.selectableRows) return;\n event.stopPropagation();\n this.toggleRowSelected(index);\n }\n onRowMouseOver(event: MouseEvent): void {\n event.stopPropagation();\n }\n onRowMouseEnter(index: number, event: MouseEvent): void {\n if (!this.selectableRows) return;\n event.stopPropagation();\n this._itemStorage.highlightSingleItem(index);\n }\n onRowMouseLeave(index: number, event: MouseEvent): void {\n if (!this.selectableRows) return;\n event.stopPropagation();\n this._itemStorage.unhighlightItem(index);\n }\n\n //! select handlers\n /**\n * Toggles the selection state of a row in the table.\n * @param selected a boolean value indicating if the row is currently selected.\n * @param index the index of the row in the table.\n */\n toggleRowSelected(index: number): void {\n if (this._itemStorage.isItemSelected(index)) {\n const unselected = this._itemStorage.unselectItem(index);\n this.unselectRowEvent.emit(unselected);\n } else {\n const [selected, failed] = this._itemStorage.selectItem(index);\n this.selectRowEvent.emit(selected);\n this.failedSelectRowEvent.emit(failed);\n }\n this._emitSelect();\n }\n /**\n * Toggles the selection state of all rows in the table.\n */\n toggleAllRowsSelected(): void {\n if (this._itemStorage.areAllSelected) {\n const unselected = this._itemStorage.unselectAll();\n this.unselectRowEvent.emit(unselected);\n } else {\n const [selected, failed] = this._itemStorage.selectAll();\n this.selectRowEvent.emit(selected);\n this.failedSelectRowEvent.emit(failed);\n }\n this._emitSelect();\n }\n private _emitSelect(): void {\n const v = this._itemStorage.value;\n this.selectedRowsChangeEvent.emit(v);\n }\n isCellCheckbox(cell: any): boolean {\n return typeof cell == 'object' && '_ardCheckbox' in cell && 'index' in cell;\n }\n isHeaderCellCheckbox(cell: HeaderCell): boolean {\n const dataCell = cell.cell;\n if (isTableSubheader(dataCell)) return false;\n if (typeof dataCell.dataSource == 'string') return false;\n return dataCell.dataSource.type == 'checkbox';\n }\n isHeaderCellSortable(cell: HeaderCell): boolean {\n const dataCell = cell.cell;\n if (isTableSubheader(dataCell)) return false;\n return dataCell.sortable ?? false;\n }\n\n @Output('selectedRowsChange') selectedRowsChangeEvent = new EventEmitter<any[]>();\n @Output('failedSelectRow') failedSelectRowEvent = new EventEmitter<any[]>();\n @Output('selectRow') selectRowEvent = new EventEmitter<any[]>();\n @Output('unselectRow') unselectRowEvent = new EventEmitter<any[]>();\n\n //! contexts\n getHeaderContext(cell: TableDataColumn, index: number): TableHeaderContext | null;\n getHeaderContext(cell: TableSubheader, index: number): TableSubheaderContext | null;\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null;\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null {\n if (typeof cell.header != 'string') return null;\n if (isTableSubheader(cell))\n return {\n $implicit: cell.header,\n header: cell.header,\n };\n return {\n $implicit: cell.header,\n header: cell.header,\n sortable: cell.sortable ?? false,\n sortType: this._itemStorage.getColumnSortType(index),\n onTriggerSort: (event?: Event) => this._itemStorage.toggleCurrentSortColumn(index),\n onTriggerResetSort: (event?: Event) => {\n this._itemStorage.resetSort();\n event?.preventDefault();\n event?.stopPropagation();\n },\n };\n }\n getHeaderCheckboxContext(): TableHeaderCheckboxContext {\n let state: CheckboxState = CheckboxState.Unselected;\n if (this._itemStorage.isAnyItemSelected) {\n state = CheckboxState.Indeterminate;\n if (this._itemStorage.areAllSelected) {\n state = CheckboxState.Selected;\n }\n }\n return {\n $implicit: state,\n state,\n onChange: () => {\n this.toggleAllRowsSelected();\n },\n };\n }\n getCheckboxContext(index: number): TableCheckboxContext {\n const item = this._itemStorage.items.find(v => v.index == index)!;\n const selected = item.selected ?? false;\n const disabled = item.disabled ?? false;\n return {\n $implicit: selected,\n selected,\n disabled,\n onChange: () => {\n this.onCheckboxClick(index);\n },\n };\n }\n}\n","<table class=\"ard-table\" [ngClass]=\"ngClasses\">\r\n <caption\r\n *ngIf=\"caption\"\r\n class=\"ard-table__caption\"\r\n >\r\n <div class=\"ard-table__caption-container\">\r\n <ng-template #defaultCaptionTemplate let-captionText>\r\n {{ captionText }}\r\n </ng-template>\r\n \r\n <ng-template\r\n [ngTemplateOutlet]=\"captionTemplate ?? defaultCaptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: caption }\"\r\n />\r\n </div>\r\n </caption>\r\n <thead class=\"ard-table__header\">\r\n <tr class=\"ard-table__header-row\" *ngFor=\"let row of headerCells\">\r\n <th\r\n *ngFor=\"let cell of row; let index = index\"\r\n class=\"ard-table__header-cell\"\r\n [ngClass]=\"cell.cell.cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isHeaderCellCheckbox(cell)\"\r\n [attr.colspan]=\"cell.colspan\"\r\n [attr.rowspan]=\"cell.rowspan\"\r\n [scope]=\"cell.colspan > 1 ? 'colgroup' : 'col'\"\r\n >\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [class.ard-table__sortable]=\"isHeaderCellSortable(cell)\"\r\n [style.width]=\"cell.width\"\r\n [style.minWidth]=\"cell.minWidth\"\r\n >\r\n <ng-container *ngIf=\"isHeaderCellCheckbox(cell)\">\r\n <ng-template #defaultHeaderCheckboxTemplate let-state let-onChange=\"onChange\">\r\n <ard-checkbox [tabIndex]=\"isLoading ? -1 : tabIndex\" [state]=\"state\" [color]=\"getHeaderCheckboxColor()\" unselectedColor=\"currentColor\" (change)=\"onChange()\" />\r\n </ng-template>\r\n \r\n <ng-template\r\n [ngTemplateOutlet]=\"headerCheckboxTemplate ?? defaultHeaderCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderCheckboxContext()\"\r\n />\r\n </ng-container>\r\n <ng-container *ngIf=\"!isHeaderCellCheckbox(cell)\">\r\n <ng-template\r\n #defaultHeaderCellTemplate\r\n let-content\r\n let-sortable=\"sortable\"\r\n let-sortType=\"sortType\"\r\n let-onTriggerSort=\"onTriggerSort\"\r\n let-onTriggerResetSort=\"onTriggerResetSort\"\r\n >\r\n <div\r\n class=\"ard-table__header-template-container\"\r\n [class.ard-sortable]=\"sortable\"\r\n [class.ard-nonsortable]=\"!sortable\"\r\n >\r\n <button\r\n class=\"ard-table__header-content-container\"\r\n *ngIf=\"sortable\"\r\n (click)=\"onTriggerSort($event)\"\r\n [tabindex]=\"tabIndex\"\r\n (keydown.Esc)=\"onTriggerResetSort($event)\"\r\n >\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n <div class=\"ard-table__header-sort-icon\" *ngIf=\"sortType != null\">\r\n <ard-icon *ngIf=\"sortType == 'ascending'\">south</ard-icon>\r\n <ard-icon *ngIf=\"sortType == 'descending'\">north</ard-icon>\r\n </div>\r\n </button>\r\n <div\r\n class=\"ard-table__header-content-container\"\r\n *ngIf=\"!sortable\"\r\n >\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n <ng-template \r\n [ngTemplateOutlet]=\"getHeaderTemplate(cell.cell.header) ?? defaultHeaderCellTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderContext(cell.cell, index)\"\r\n />\r\n </ng-container>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"ard-table__body\">\r\n <ng-container *ngFor=\"let row of dataRows; let rowIndex = index;\">\r\n <tr *ngIf=\"row.isEmpty\" class=\"ard-table__empty-row\">\r\n <td class=\"ard-table__empty-cell\" colspan=\"9999\"></td>\r\n </tr>\r\n <tr\r\n *ngIf=\"!row.isEmpty\"\r\n class=\"ard-table__body-row\"\r\n [class.ard-table__selected-row]=\"row.selected\"\r\n [class.ard-table__highlighted-row]=\"row.highlighted\"\r\n [class.ard-table__disabled-row]=\"row.disabled\"\r\n [class.ard-table__bold-row]=\"row.bold\"\r\n (click)=\"onRowClick(rowIndex, $event)\"\r\n (mouseover)=\"onRowMouseOver($event)\"\r\n (mouseenter)=\"onRowMouseEnter(rowIndex, $event)\"\r\n (mouseleave)=\"onRowMouseLeave(rowIndex, $event)\"\r\n >\r\n <ng-container *ngFor=\"let cell of row.data; let cellIndex = index\">\r\n <ng-template #cellTmp>\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [style]=\"getCellStyle(row.dataColumns[cellIndex])\"\r\n >\r\n <ng-container *ngIf=\"isCellCheckbox(cell)\">\r\n <ng-template #defaultCheckboxTemplate let-isChecked let-onChange=\"onChange\" let-disabled=\"disabled\">\r\n <ard-checkbox [tabIndex]=\"isLoading ? -1 : tabIndex\" [selected]=\"isChecked\" [color]=\"color\" [disabled]=\"disabled\" (change)=\"onChange()\" (click)=\"$event.stopPropagation()\" />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"checkboxTemplate ?? defaultCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getCheckboxContext(rowIndex)\"\r\n />\r\n </ng-container>\r\n <ng-container *ngIf=\"!isCellCheckbox(cell)\">\r\n <ng-template #defaultCellTemplate let-content>\r\n {{ content }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getCellTemplate(row.dataColumns[cellIndex].template) ?? defaultCellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: cell }\"\r\n />\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n <td\r\n *ngIf=\"!row.dataColumns[cellIndex].isRowHeader\"\r\n class=\"ard-table__body-cell\"\r\n [ngClass]=\"row.dataColumns[cellIndex].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </td>\r\n <th\r\n *ngIf=\"row.dataColumns[cellIndex].isRowHeader\"\r\n class=\"ard-table__body-cell ard-table__row-header\"\r\n scope=\"row\"\r\n [ngClass]=\"row.dataColumns[cellIndex].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n <tfoot class=\"ard-table__foot\" *ngIf=\"canDisplayPagination\">\r\n <tr class=\"ard-table__foot-row\">\r\n <td class=\"ard-table__pagination-cell\" colspan=\"9999\">\r\n <ard-table-pagination\r\n [options]=\"paginationOptions\"\r\n [(page)]=\"page\"\r\n [totalItems]=\"totalItems\"\r\n [disabled]=\"paginationDisabled\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [align]=\"paginationAlign\"\r\n [isLoading]=\"isLoading\"\r\n [itemsPerPageText]=\"itemsPerPageText\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn\"\r\n (itemsPerPageChange)=\"itemsPerPageChange.emit($event)\"\r\n (pageChange)=\"pageChange.emit($event)\"\r\n ></ard-table-pagination>\r\n </td>\r\n </tr>\r\n </tfoot>\r\n</table>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumSelectModule } from '../select/select.module';\nimport { ArdiumTablePaginationComponent } from './table-pagination.component';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumTablePaginationComponent],\n imports: [CommonModule, ArdiumSelectModule, ArdiumIconButtonModule, ArdiumIconModule],\n exports: [ArdiumTablePaginationComponent],\n})\nexport class ArdiumTablePaginationModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableComponent } from './table.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\nimport { ArdiumTablePaginationModule } from '../table-pagination/table-pagination.module';\nimport {\n ArdiumTableCaptionTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ArdiumTableTemplateDirective,\n} from './table.directives';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n imports: [CommonModule, ArdiumCheckboxModule, ArdiumTablePaginationModule, ArdiumIconModule],\n exports: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n})\nexport class ArdiumTableModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, Input, AfterContentInit } from '@angular/core';\nimport { TableDataColumn } from '../table/table.types';\nimport { NonEmptyArray } from '../types/utility.types';\n\n@Component({\n selector: 'ard-table-from-csv',\n templateUrl: './table-from-csv.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumTableFromCsvComponent implements AfterContentInit {\n @Input() separator: string = ',';\n\n private _isDataOkay: boolean = false;\n @Input()\n set data(v: string) {\n this._isDataOkay = false;\n if (!this._isCsvValid(v)) return;\n const lines = v.split('\\n');\n const headers = this._convertCsvToHeaders(lines.shift()!);\n const dataRows = this._convertCsvToArray(lines, headers);\n\n this._isDataOkay = true;\n this.headers = headers;\n this.dataRows = dataRows;\n }\n\n headers: TableDataColumn[] = [];\n dataRows: any[] = [];\n\n ngAfterContentInit(): void {\n if (!this._isDataOkay) {\n console.error(new Error('<ard-table-from-csv> error: must provide non-empty data'));\n }\n }\n\n private _isCsvValid(csv: string): boolean {\n return csv.length > 1;\n }\n private _convertCsvToHeaders(line: string): TableDataColumn[] {\n const headers = line.split(this.separator);\n return headers.map(header => {\n header = header.trim();\n return {\n header,\n dataSource: header,\n };\n });\n }\n private _convertCsvToArray(lines: string[], headers: TableDataColumn[]): any[] {\n const dataRows: { [key: string]: any }[] = [];\n\n for (const line of lines) {\n const lineArr = line.split(this.separator);\n\n const obj: { [key: string]: any } = {};\n for (let i = 0; i < headers.length; i++) {\n const source = headers[i].dataSource as string;\n obj[source] = lineArr[i]?.trim() ?? '';\n }\n dataRows.push(obj);\n }\n return dataRows;\n }\n}\n","<ard-table\r\n treatDataSourceAsString\r\n [columns]=\"headers\"\r\n [data]=\"dataRows\"\r\n></ard-table>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableFromCsvComponent } from './table-from-csv.component';\nimport { ArdiumTableModule } from './../table/table.module';\n\n@NgModule({\n declarations: [ArdiumTableFromCsvComponent],\n imports: [CommonModule, ArdiumTableModule],\n exports: [ArdiumTableFromCsvComponent],\n})\nexport class ArdiumTableFromCsvModule {}\n","export const BadgeSize = {\n Small: 'small',\n Medium: 'medium',\n Large: 'large',\n} as const;\nexport type BadgeSize = (typeof BadgeSize)[keyof typeof BadgeSize];\n\nexport const BadgePosition = {\n AboveBefore: 'above-before',\n AboveAfter: 'above-after',\n BelowBefore: 'below-before',\n BelowAfter: 'below-after',\n Before: 'before',\n After: 'after',\n Above: 'above',\n Below: 'below',\n} as const;\nexport type BadgePosition = (typeof BadgePosition)[keyof typeof BadgePosition];\n","import { ComponentRef, Directive, ElementRef, Input, OnChanges, OnDestroy, AfterViewInit, Renderer2, TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { ComponentColor } from '../types/colors.types';\nimport { BadgePosition, BadgeSize } from './badge.types';\nimport { FormElementVariant } from '../types/theming.types';\n\n@Directive({\n selector: '[ardBadge]',\n})\nexport class ArdiumBadgeDirective implements OnChanges, AfterViewInit, OnDestroy {\n constructor(\n private _el: ElementRef,\n private _renderer: Renderer2\n ) {}\n\n @Input('ardBadge') text?: string;\n\n @Input('ardBadgeColor') color: ComponentColor = ComponentColor.Primary;\n @Input('ardBadgeVariant') variant: FormElementVariant = FormElementVariant.Pill;\n @Input('ardBadgeSize') size: BadgeSize = BadgeSize.Medium;\n\n private _position: BadgePosition = BadgePosition.AboveAfter;\n @Input('ardBadgePosition')\n get position(): BadgePosition {\n return this._position;\n }\n set position(v: BadgePosition) {\n switch (v) {\n case BadgePosition.Before:\n this._position = BadgePosition.AboveBefore;\n return;\n case BadgePosition.After:\n case BadgePosition.Above:\n this._position = BadgePosition.AboveAfter;\n return;\n case BadgePosition.Below:\n this._position = BadgePosition.BelowAfter;\n return;\n\n default:\n this._position = v;\n return;\n }\n }\n\n @Input('ardBadgeAriaLabel') ariaLabel?: string;\n\n private _hidden: boolean = false;\n @Input('ardBadgeHidden')\n get hidden(): boolean {\n return this._hidden;\n }\n set hidden(v: any) {\n this._hidden = coerceBooleanProperty(v);\n }\n\n private _overlap: boolean = true;\n @Input('ardBadgeOverlap')\n get overlap(): boolean {\n return this._overlap;\n }\n set overlap(v: any) {\n this._overlap = coerceBooleanProperty(v);\n }\n\n private _createBadgeElement(): HTMLElement {\n const R = this._renderer;\n const elementClasses = [\n 'ard-badge',\n `ard-color-${this.color}`,\n `ard-variant-${this.variant}`,\n `ard-badge-size-${this.size}`,\n `ard-badge-position-${this.position}`,\n this.hidden ? 'ard-badge-hidden' : '',\n this.overlap ? 'ard-badge-overlap' : 'ard-badge-no-overlap',\n ].join(' ');\n const element = R.createElement('div') as HTMLDivElement;\n R.setAttribute(element, 'class', elementClasses);\n R.setAttribute(element, 'aria-label', this.ariaLabel ?? '');\n\n if (this.text) {\n const textHost = R.createElement('div') as HTMLDivElement;\n R.addClass(textHost, 'ard-badge-content');\n\n const text = R.createText(this.text ?? '');\n R.appendChild(textHost, text);\n R.appendChild(element, textHost);\n }\n\n return element;\n }\n\n private _badgeElement?: HTMLElement;\n ngOnChanges(): void {\n if (this._badgeElement) {\n this._renderer.removeChild(this._el.nativeElement, this._badgeElement);\n }\n const element = this._createBadgeElement();\n this._badgeElement = element;\n this._renderer.appendChild(this._el.nativeElement, this._badgeElement);\n }\n\n ngAfterViewInit(): void {\n this._renderer.addClass(this._el.nativeElement, 'ard-badge-host');\n }\n ngOnDestroy(): void {\n if (this._badgeElement) {\n this._renderer.removeChild(this._el.nativeElement, this._badgeElement);\n }\n this._renderer.removeClass(this._el.nativeElement, 'ard-badge-host');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumBadgeDirective } from './badge.directive';\n\n@NgModule({\n declarations: [ArdiumBadgeDirective],\n imports: [CommonModule],\n exports: [ArdiumBadgeDirective],\n})\nexport class ArdiumBadgeModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SimpleComponentColor } from '../types/colors.types';\n\n@Component({\n selector: 'ard-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumSpinnerComponent {\n //! appearance\n @Input() color: SimpleComponentColor = SimpleComponentColor.Primary;\n\n get ngClasses(): string {\n return [`ard-color-${this.color}`].join(' ');\n }\n}\n","<svg class=\"ard-spinner\" [ngClass]=\"ngClasses\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle class=\"ard-spinner-circle\" cx=\"50\" cy=\"50\" r=\"20\"></circle>\r\n</svg>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSpinnerComponent } from './spinner.component';\n\n@NgModule({\n declarations: [ArdiumSpinnerComponent],\n imports: [CommonModule],\n exports: [ArdiumSpinnerComponent],\n})\nexport class ArdiumSpinnerModule {}\n","import { ElementRef, QueryList } from '@angular/core';\n\nexport type DigitInputConfigData = {\n type: DigitInputConfigDataType;\n char?: string;\n index?: number;\n readonly?: boolean;\n};\nexport interface DigitInputModelHost {\n inputs: QueryList<ElementRef<HTMLInputElement>>;\n configArrayData: DigitInputConfigData[];\n}\n\nexport const DigitInputConfigDataType = {\n Input: 'input',\n Static: 'static',\n} as const;\nexport type DigitInputConfigDataType = (typeof DigitInputConfigDataType)[keyof typeof DigitInputConfigDataType];\n\nexport function _sanitizeRegExpString(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","export const DigitInputShape = {\n Square: 'square',\n Rectangle: 'rectangle',\n} as const;\nexport type DigitInputShape = (typeof DigitInputShape)[keyof typeof DigitInputShape];\n\nexport const TransformType = {\n Uppercase: 'uppercase',\n Lowercase: 'lowercase',\n} as const;\nexport type TransformType = (typeof TransformType)[keyof typeof TransformType];\n\nexport const DigitInputPrimitiveOption = {\n Number: 'number',\n Letter: 'letter',\n Alphanumeric: 'alphanumeric',\n Special: 'special',\n} as const;\nexport type DigitInputPrimitiveOption = (typeof DigitInputPrimitiveOption)[keyof typeof DigitInputPrimitiveOption];\n\nexport type DigitInputAcceptObject = {\n accept: string | RegExp | ((char: string, charsBefore: string) => boolean);\n transform?: TransformType | null;\n readonly?: boolean;\n};\nexport type DigitInputStaticObject = { static: string };\n\nexport type DigitInputOption = DigitInputAcceptObject | DigitInputStaticObject;\n\nexport type DigitInputConfig = (DigitInputPrimitiveOption | DigitInputOption)[] | string | number;\n","import { ElementRef, QueryList } from '@angular/core';\nimport { coerceArrayProperty } from '@ardium-ui/devkit';\nimport { isAnyString, isArray, isDefined, isFunction, isNull, isNumber, isRegExp } from 'simple-bool';\nimport { DigitInputConfigDataType, DigitInputModelHost, _sanitizeRegExpString } from './digit-input.utils';\nimport { DigitInputAcceptObject, DigitInputConfig, DigitInputOption, DigitInputPrimitiveOption, TransformType } from './digit-input.types';\n\nexport class DigitInputModel {\n constructor(private _ardHost: DigitInputModelHost) {}\n\n private _configArray: DigitInputOption[] = [];\n private set configArray(arr: DigitInputOption[]) {\n this._configArray = arr;\n this._configArrayNoStatics = arr.filter(v => !('static' in v)) as DigitInputAcceptObject[];\n this.setConfigArrayData();\n }\n private _configArrayNoStatics: DigitInputAcceptObject[] = [];\n\n setConfigArrayData() {\n let inputIndex = 0;\n this._ardHost.configArrayData = this._configArray.map(v => {\n if ('static' in v) {\n return {\n type: DigitInputConfigDataType.Static,\n char: v.static,\n };\n }\n return {\n type: DigitInputConfigDataType.Input,\n index: inputIndex++,\n };\n });\n }\n get isConfigDefined(): boolean {\n return this._configArray.length > 0;\n }\n\n private _value: (string | null)[] | null = null;\n private set value(v: (string | null)[] | null) {\n this._value = v;\n this._stringValueMemo = null;\n }\n get value(): (string | null)[] | null {\n return this._value;\n }\n\n private _stringValueMemo: string | null = null;\n get stringValue(): string {\n if (isNull(this._stringValueMemo)) {\n const v =\n this.value\n ?.map(v => v ?? ' ')\n .join('')\n .trimEnd() ?? '';\n this._stringValueMemo = v;\n }\n return this._stringValueMemo;\n }\n\n get isValueFull(): boolean {\n return isDefined(this.value) && this.value.length === this._configArrayNoStatics.length;\n }\n\n isDefinedAtIndex(index: number): boolean {\n return Boolean(this.value?.[index]);\n }\n\n writeValue(v: any): boolean {\n if (!isArray(v) && !isAnyString(v) && !isNull(v)) {\n //warn when using non-string/non-null value\n console.warn(new Error(`ARD-WA041: Trying to set <ard-digit-input>'s value to ${typeof v}, expected string or array strings.`));\n //normalize the value\n v = v?.toString?.() ?? String(v);\n }\n const vArray = coerceArrayProperty(v);\n const problemIndex = vArray.findIndex(el => !isAnyString(el) || el.length > 1);\n if (problemIndex != -1) {\n throw new Error(\n `ARD-FT042: Array passed to <ard-digit-input>'s value must only contain strings of length 1 or 0. Element at index ${problemIndex} does not match those requirements.`\n );\n }\n return this._writeValue(vArray);\n }\n private _writeValue(v: string[] | null): boolean {\n let oldVal = this.value;\n this.value = v && v.map(el => el || null);\n this.validateValueAndUpdate();\n this._updateInputElements();\n return oldVal !== v;\n }\n\n private _updateInputElements() {\n const value = this.value ?? [];\n let i = 0;\n for (const inputEl of this._ardHost.inputs) {\n inputEl.nativeElement.value = value[i] ?? '';\n i++;\n }\n }\n\n //! setting config\n setConfig(config: DigitInputConfig): void {\n this._setConfig(config);\n this.validateValueAndUpdate();\n }\n private _setConfig(config: DigitInputConfig): void {\n //map a number to ready objects\n let configAsNumber = isAnyString(config) ? Number(config) : null;\n if (isNumber(config) || isNumber(configAsNumber)) {\n configAsNumber = isNumber(config) ? config : configAsNumber!;\n this.configArray = 'a'\n .repeat(configAsNumber)\n .split('')\n .map(() => ({ accept: str => /[0-9]/.test(str) }));\n return;\n }\n //map a string to an array\n let configArr: string[] | Exclude<DigitInputConfig, number | string>;\n if (isAnyString(config)) {\n configArr = coerceArrayProperty(config);\n } else {\n configArr = config;\n }\n //map array to ready objects\n this.configArray = configArr.map((v, i) => {\n if (!isAnyString(v)) {\n if ('accept' in v && !isFunction(v.accept)) {\n const regExp = isRegExp(v.accept) ? v.accept : new RegExp(`[${_sanitizeRegExpString(v.accept)}]`);\n v.accept = str => regExp.test(str);\n }\n return v;\n }\n\n switch (v) {\n case DigitInputPrimitiveOption.Number:\n return { accept: str => /[0-9]/.test(str) };\n case DigitInputPrimitiveOption.Letter:\n return { accept: str => /[a-zA-Z]/.test(str) };\n case DigitInputPrimitiveOption.Alphanumeric:\n return { accept: str => /[0-9a-zA-Z]/.test(str) };\n case DigitInputPrimitiveOption.Special:\n return { accept: str => /[!@#$%^&*-_=+/\\\\.,]/.test(str) };\n\n default:\n if (configArr.length == 1) {\n throw new Error(`ARD-NF043S: <ard-digit-input>'s config is invalid. Expected number or array, got \"${v}\"`);\n }\n throw new Error(`ARD-NF043B: Found invalid string in <ard-digit-input>'s config: \"${v}\" at index ${i}`);\n }\n });\n }\n\n //! validate against the config\n validateInputAndSetValue(input: string, index: number): false | [boolean, string | null] {\n if (index < 0 || index > this._configArrayNoStatics.length) return false;\n\n //prepare the value array if does not exist\n if (!this.value) {\n this.value = [];\n }\n //prepare the characters before the current one (to be used in validation)\n const before = this.value\n .slice(0, index)\n .map(v => v ?? ' ')\n .join('');\n\n //remove the old character from the input element\n const oldVal = this.value[index];\n if (oldVal && input.length > 1 && input.match(oldVal)) {\n input = input.replace(oldVal, '');\n }\n //use only the first character (error safety)\n input = input.charAt(0);\n\n //validate and transform, if necessary\n const inputChar = this._validateSingleChar(input, before, this._configArrayNoStatics[index]);\n\n //get the corresponding HTML input element\n const inputEl = this._ardHost.inputs.get(index);\n if (!inputEl) {\n throw new Error(\n \"ARD-IS048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.\"\n );\n }\n //update the input element and value array\n const newVal = inputChar ?? oldVal;\n inputEl.nativeElement.value = newVal ?? '';\n this.value[index] = newVal;\n\n //return changes marker and validated value\n return [newVal !== oldVal, inputChar];\n }\n validateValueAndUpdate(): void {\n const v = this.value;\n if (!v) return;\n\n let before = '';\n const newValue: (string | null)[] = [];\n for (let i = 0; i < Math.min(this._configArrayNoStatics.length, v.length); i++) {\n const char = v[i];\n before += char ?? ' ';\n\n if (!char) {\n newValue.push(char);\n continue;\n }\n const config = this._configArrayNoStatics[i];\n\n const newChar = this._validateSingleChar(char, before, config);\n newValue.push(newChar);\n }\n this.value = newValue;\n }\n private _validateSingleChar(char: string | null, before: string, config: DigitInputAcceptObject): string | null {\n if (config.readonly) {\n throw new Error(\n `ARD-IS049R: trying to set value of a digit-input's readonly field. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.`\n );\n }\n if (!isFunction(config.accept)) {\n const regExp = isRegExp(config.accept) ? config.accept : new RegExp(`[${_sanitizeRegExpString(config.accept)}]`);\n config.accept = str => regExp.test(str);\n console.warn(\n `ARD-IS049A: digit-input's value validator encountered an unexpected value of the config's \"accept\" property. Ardium UI was able to handle this issue, but please report it to the creators.`\n );\n }\n if (!char) return char;\n\n const canAccept = config.accept(char, before);\n if (!canAccept) return null;\n\n if (config.transform) {\n if (config.transform == TransformType.Lowercase) {\n return char.toLowerCase();\n }\n if (config.transform == TransformType.Uppercase) {\n return char.toUpperCase();\n }\n console.warn(\n `ARD-IS049T: digit-input's value validator encountered an unexpected value of the config's \"transform\" property. Ardium UI was able to handle this issue, but please report it to the creators.`\n );\n }\n return char;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n forwardRef,\n Output,\n EventEmitter,\n Input,\n ViewChildren,\n QueryList,\n AfterViewInit,\n AfterContentInit,\n ElementRef,\n} from '@angular/core';\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\nimport { DigitInputModel } from './digit-input.model';\nimport { DigitInputConfigData, DigitInputModelHost } from './digit-input.utils';\nimport { DigitInputConfig, DigitInputShape } from './digit-input.types';\n\n@Component({\n selector: 'ard-digit-input',\n templateUrl: './digit-input.component.html',\n styleUrls: ['./digit-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ArdiumDigitInputComponent),\n multi: true,\n },\n ],\n})\nexport class ArdiumDigitInputComponent extends _NgModelComponentBase implements ControlValueAccessor, DigitInputModelHost, AfterContentInit {\n private readonly model = new DigitInputModel(this);\n\n //! appearance\n @Input() appearance: FormElementAppearance = FormElementAppearance.Outlined;\n @Input() variant: FormElementVariant = FormElementVariant.Rounded;\n @Input() shape: DigitInputShape = DigitInputShape.Square;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [`ard-appearance-${this.appearance}`, `ard-variant-${this.variant}`, `ard-shape-${this.shape}`, this.compact ? 'ard-compact' : ''].join(' ');\n }\n\n //! model access points\n @Input()\n set config(v: DigitInputConfig) {\n this.model.setConfig(v);\n }\n configArrayData: DigitInputConfigData[] = [];\n\n get isConfigDefined(): boolean {\n return this.model.isConfigDefined;\n }\n\n isInputEmpty(index: number): boolean {\n return !this.model.isDefinedAtIndex(index);\n }\n\n //! control value accessor's write value implementation\n writeValue(v: any): void {\n this._writeValue(v);\n }\n private _writeValue(v: any): boolean {\n return this.model.writeValue(v);\n }\n\n //! value two-way binding\n private _outputAsString: boolean = false;\n @Input()\n get outputAsString(): boolean {\n return this._outputAsString;\n }\n set outputAsString(v: any) {\n this._outputAsString = coerceBooleanProperty(v);\n }\n\n @Input()\n set value(v: string | (string | null)[] | null) {\n this.writeValue(v);\n }\n get value(): (string | null)[] | null {\n return this.model.value;\n }\n @Output() valueChange = new EventEmitter<string | (string | null)[] | null>();\n\n get stringValue(): string {\n return this.model.stringValue;\n }\n\n get emittableValue(): string | (string | null)[] | null {\n if (this.outputAsString) return this.model.stringValue;\n return this.value;\n }\n\n //! event emitters\n @Output('input') inputEvent = new EventEmitter<string | (string | null)[] | null>();\n @Output('change') changeEvent = new EventEmitter<string | (string | null)[] | null>();\n @Output() finishedValue = new EventEmitter<string | (string | null)[] | null>();\n\n @Output('focusIndex') focusIndexEvent = new EventEmitter<number>();\n @Output('blurIndex') blurIndexEvent = new EventEmitter<number>();\n\n //! event handlers\n onPaste(event: ClipboardEvent, index: number): void {\n const value = event.clipboardData?.getData('text');\n event.stopPropagation();\n event.preventDefault();\n if (!value) return;\n\n const maxLength = this.inputs.length - index;\n value\n .slice(0, maxLength)\n .split('')\n .forEach((char, i) => {\n this.model.validateInputAndSetValue(char, index + i);\n });\n this.focusByIndex(index - 1 + Math.min(value.length, maxLength));\n }\n onInput(event: Event, index: number): void {\n this._updateSingleInputValue((event.target as HTMLInputElement).value, index);\n }\n private _updateSingleInputValue(value: string, index: number): void {\n const valueChanged = this.model.validateInputAndSetValue(value, index);\n if (!valueChanged || !valueChanged[0]) return;\n\n if (valueChanged[1]) {\n this.focusByIndex(index + 1);\n }\n this._emitInput();\n }\n focusByIndex(index: number): boolean;\n focusByIndex(index: number, tryFocusingNext: boolean, direction: 1 | -1): boolean;\n focusByIndex(index: number, tryFocusingNext?: boolean, direction?: 1 | -1): boolean {\n if (index < 0 || index >= this.inputs.length) return false;\n const nextEl = this.inputs.get(index)?.nativeElement;\n if (!nextEl) return false;\n\n nextEl.focus();\n if (tryFocusingNext && direction && document.activeElement != nextEl) {\n return this.focusByIndex(index + direction);\n }\n return document.activeElement == nextEl;\n }\n private _emitInput(): void {\n this._onChangeRegistered?.(this.value);\n this.inputEvent.emit(this.emittableValue);\n this.valueChange.emit(this.emittableValue);\n if (this.model.isValueFull) {\n this.finishedValue.emit(this.emittableValue);\n }\n }\n //focus, blur, change\n onFocusMaster(event: FocusEvent, index: number): void {\n this.focusIndexEvent.emit(index);\n this.onFocus(event);\n }\n onBlurMaster(event: FocusEvent, index: number): void {\n this._emitChange();\n this.blurIndexEvent.emit(index);\n this.onBlur(event);\n }\n protected _emitChange(): void {\n this.changeEvent.emit(this.emittableValue);\n }\n onKeydown(event: KeyboardEvent, index: number): void {\n switch (event.key) {\n case 'ArrowLeft':\n this.focusByIndex(index - 1, true, -1);\n break;\n case 'ArrowRight':\n this.focusByIndex(index + 1, true, +1);\n break;\n case 'Home':\n this.focusByIndex(0, true, 1);\n break;\n case 'End':\n this.focusByIndex(this.inputs.length - 1, true, -1);\n break;\n case 'Backspace':\n case 'Delete':\n this._updateSingleInputValue('', index);\n this.focusByIndex(index - 1, true, -1);\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n //! inputs ref\n @ViewChildren('input') inputs!: QueryList<ElementRef<HTMLInputElement>>;\n\n ngAfterContentInit(): void {\n if (!this.isConfigDefined) {\n throw new Error(`ARD-FT040: <ard-digit-input>'s [config] field has to be defined.`);\n }\n }\n}\n","<div class=\"ard-digit-input\" [ngClass]=\"ngClasses\">\r\n <div class=\"ard-digit-input__item\" *ngFor=\"let data of configArrayData\">\r\n <input\r\n #input\r\n #focusableElement\r\n *ngIf=\"data.type == 'input'\"\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n <div\r\n *ngIf=\"data.type == 'static'\"\r\n class=\"ard-digit-input__static\"\r\n >\r\n {{ data.char }}\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDigitInputComponent } from './digit-input.component';\n\n@NgModule({\n declarations: [ArdiumDigitInputComponent],\n imports: [CommonModule],\n exports: [ArdiumDigitInputComponent],\n})\nexport class ArdiumDigitInputModule {}\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n effect,\n signal,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\n\n@Component({\n selector: 'ard-modal',\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumModalComponent {\n constructor(\n private overlay: Overlay,\n private scrollStrategyOpts: ScrollStrategyOptions,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n //! appearance\n @Input() appearance: PanelAppearance = PanelAppearance.Raised;\n @Input() variant: PanelVariant = PanelVariant.Rounded;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n get ngClasses(): string {\n return [`ard-appearance-${this.appearance}`, `ard-variant-${this.variant}`, this.compact ? 'ard-compact' : ''].join(' ');\n }\n\n //! heading\n @Input() heading?: string;\n\n readonly noCloseButton = signal<boolean>(false);\n @Input('noCloseButton')\n set _noCloseButton(v: any) {\n this.noCloseButton.set(coerceBooleanProperty(v));\n }\n\n //! options\n readonly noBackdrop = signal<boolean>(false);\n @Input('noBackdrop')\n set _noBackdrop(v: any) {\n this.noBackdrop.set(coerceBooleanProperty(v));\n }\n\n readonly disableBackdropClose = signal<boolean>(false);\n @Input('disableBackdropClose')\n set _disableBackdropClose(v: any) {\n this.disableBackdropClose.set(coerceBooleanProperty(v));\n }\n\n //! open state handling\n private _open: boolean = false;\n @Input()\n get open(): boolean {\n return this._open;\n }\n set open(v: any) {\n this._open = coerceBooleanProperty(v);\n if (this._open) this._openOverlay();\n else this._destroyOverlay();\n }\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output('close') closeEvent = new EventEmitter<null>();\n\n //! overlay handling\n @ViewChild('modalTemplate', { read: TemplateRef })\n modalTemplate!: TemplateRef<any>;\n\n private modalOverlay?: OverlayRef;\n\n private _openOverlay(): void {\n const strategy = this.overlay.position().global();\n\n const config = new OverlayConfig({\n positionStrategy: strategy,\n scrollStrategy: this.scrollStrategyOpts.block(),\n hasBackdrop: false,\n });\n\n this.modalOverlay = this.overlay.create(config);\n\n const portal = new TemplatePortal(this.modalTemplate, this.viewContainerRef);\n this.modalOverlay.attach(portal);\n }\n private _destroyOverlay(): void {\n if (!this.modalOverlay) return;\n\n this.openChange.emit(false);\n this.closeEvent.emit();\n this.modalOverlay.dispose();\n delete this.modalOverlay;\n }\n\n //! events\n onBackdropClick(event: MouseEvent): void {\n if (this.disableBackdropClose()) return;\n this._destroyOverlay();\n }\n onCloseButtonClick(event: MouseEvent): void {\n this._destroyOverlay();\n }\n}\n","<ng-template #modalTemplate>\r\n @if (noBackdrop()) {\r\n <div class=\"ard-modal\" [ngClass]=\"ngClasses\" (click)=\"onBackdropClick($event)\">\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n } @else {\r\n <div class=\"ard-modal ard-modal-backdrop\" [ngClass]=\"ngClasses\" (click)=\"onBackdropClick($event)\">\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #_modalInsidePanel>\r\n <div\r\n class=\"ard-modal-panel\"\r\n [class.ard-modal-no-heading-text]=\"!heading\"\r\n [class.ard-modal-has-close-button]=\"!this.noCloseButton()\"\r\n (click)=\"$event.stopPropagation()\"\r\n cdkTrapFocus\r\n >\r\n <div class=\"ard-modal-heading\">\r\n <div class=\"ard-modal-heading-text\">{{heading}}</div>\r\n @if (!noCloseButton()) {\r\n <ard-icon-button class=\"ard-modal-close-button\" color=\"none\" [compact]=\"compact\" (click)=\"onCloseButtonClick($event)\">\r\n <ard-icon>close</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <div class=\"ard-modal-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumModalComponent } from './modal.component';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumIconModule } from '../icon/icon.module';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n declarations: [ArdiumModalComponent],\n imports: [CommonModule, ArdiumIconButtonModule, ArdiumIconModule, A11yModule],\n exports: [ArdiumModalComponent],\n})\nexport class ArdiumModalModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { DialogButtonsContext } from './dialog.types';\n\n@Directive({ selector: 'ard-dialog > ng-template[ard-buttons-tmp]' })\nexport class ArdDialogButtonsTemplateDirective {\n constructor(public template: TemplateRef<DialogButtonsContext>) {}\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewEncapsulation, signal } from '@angular/core';\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\nimport { ComponentColor } from '../types/colors.types';\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\nimport { DialogButtonsContext, DialogResult } from './dialog.types';\nimport { ButtonAppearance } from '../buttons/general-button.types';\n\n@Component({\n selector: 'ard-dialog',\n templateUrl: './dialog.component.html',\n styleUrl: './dialog.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArdiumDialogComponent {\n //! appearance\n //all handled by modal component\n @Input() appearance: PanelAppearance = PanelAppearance.Raised;\n @Input() variant: PanelVariant = PanelVariant.Rounded;\n\n private _compact: boolean = false;\n @Input()\n get compact(): boolean {\n return this._compact;\n }\n set compact(v: any) {\n this._compact = coerceBooleanProperty(v);\n }\n\n //! heading\n //all handled by modal component\n @Input() heading?: string;\n\n readonly noCloseButton = signal<boolean>(false);\n @Input('noCloseButton')\n set _noCloseButton(v: any) {\n this.noCloseButton.set(coerceBooleanProperty(v));\n }\n\n //! options\n //all handled by modal component\n readonly noBackdrop = signal<boolean>(false);\n @Input('noBackdrop')\n set _noBackdrop(v: any) {\n this.noBackdrop.set(coerceBooleanProperty(v));\n }\n\n readonly disableBackdropClose = signal<boolean>(false);\n @Input('disableBackdropClose')\n set _disableBackdropClose(v: any) {\n this.disableBackdropClose.set(coerceBooleanProperty(v));\n }\n\n //! open state handling\n //all handled by modal component\n private _open: boolean = false;\n @Input()\n get open(): boolean {\n return this._open;\n }\n set open(v: any) {\n this._open = coerceBooleanProperty(v);\n }\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output('close') closeEvent = new EventEmitter<DialogResult>();\n @Output('confirm') confirmEvent = new EventEmitter<null>();\n @Output('reject') rejectEvent = new EventEmitter<null>();\n\n //! button settings\n @Input() confirmButtonText: string = 'Confirm';\n @Input() confirmButtonColor: ComponentColor = ComponentColor.Primary;\n @Input() confirmButtonAppearance: ButtonAppearance = ButtonAppearance.RaisedStrong;\n @Input() rejectButtonText: string = 'Cancel';\n @Input() rejectButtonColor: ComponentColor = ComponentColor.Primary;\n @Input() rejectButtonAppearance: ButtonAppearance = ButtonAppearance.Transparent;\n\n readonly noRejectButton = signal<boolean>(false);\n @Input('noRejectButton')\n set _noRejectButton(v: any) {\n this.noRejectButton.set(coerceBooleanProperty(v));\n }\n\n readonly canConfirm = signal<boolean>(true);\n @Input('canConfirm')\n set _canConfirm(v: any) {\n this.canConfirm.set(coerceBooleanProperty(v));\n }\n\n onConfirmClick() {\n if (!this.canConfirm()) return;\n\n this._open = false;\n setTimeout(() => {\n this.openChange.emit(false);\n this.closeEvent.emit('confirm');\n this.confirmEvent.emit();\n }, 0);\n }\n onRejectClick() {\n this._open = false;\n setTimeout(() => {\n this.openChange.emit(false);\n this.closeEvent.emit('reject');\n this.rejectEvent.emit();\n }, 0);\n }\n onModalClose() {\n this.closeEvent.emit('close');\n }\n\n //! templates\n @ContentChild(ArdDialogButtonsTemplateDirective)\n buttonsTemplate?: TemplateRef<DialogButtonsContext>;\n\n getButtonsContext(): DialogButtonsContext {\n return {\n confirmButton: {\n text: this.confirmButtonText,\n color: this.confirmButtonColor,\n appearance: this.confirmButtonAppearance,\n },\n rejectButton: {\n enabled: !this.noRejectButton(),\n text: this.rejectButtonText,\n color: this.rejectButtonColor,\n appearance: this.rejectButtonAppearance,\n },\n canConfirm: this.canConfirm(),\n onConfirm: () => this.onConfirmClick(),\n onReject: () => this.onRejectClick(),\n dialogAppearance: this.appearance,\n dialogVariant: this.variant,\n dialogCompact: this.compact,\n };\n }\n}\n","<ard-modal\r\n [appearance]=\"appearance\"\r\n [variant]=\"variant\"\r\n [compact]=\"compact\"\r\n [heading]=\"heading\"\r\n [noCloseButton]=\"noCloseButton()\"\r\n [noBackdrop]=\"noBackdrop()\"\r\n [disableBackdropClose]=\"disableBackdropClose()\"\r\n [(open)]=\"open\"\r\n (openChange)=\"openChange.emit($event)\"\r\n (close)=\"onModalClose()\"\r\n>\r\n <div class=\"ard-dialog-container\">\r\n <div class=\"ard-dialog-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ard-dialog-buttons\">\r\n <ng-template #defaultButtonsTemplate\r\n let-confirmButton=\"confirmButton\"\r\n let-rejectButton=\"rejectButton\"\r\n let-canConfirm=\"canConfirm\"\r\n let-onConfirm=\"onConfirm\"\r\n let-onReject=\"onReject\"\r\n let-dialogVariant=\"dialogVariant\"\r\n let-dialogCompact=\"dialogCompact\"\r\n >\r\n <div class=\"ard-dialog-buttons-container\">\r\n @if (rejectButton.enabled) {<ard-button\r\n [color]=\"rejectButton.color\"\r\n [appearance]=\"rejectButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onReject()\"\r\n >\r\n {{ rejectButton.text }}\r\n </ard-button>}\r\n <ard-button\r\n [color]=\"confirmButton.color\"\r\n [appearance]=\"confirmButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onConfirm()\"\r\n [disabled]=\"!canConfirm\"\r\n >\r\n {{ confirmButton.text }}\r\n </ard-button>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"buttonsTemplate ?? defaultButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"getButtonsContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</ard-modal>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDialogComponent } from './dialog.component';\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\nimport { ArdiumModalModule } from '../modal/modal.module';\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\n\n@NgModule({\n declarations: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n imports: [CommonModule, ArdiumButtonModule, ArdiumModalModule],\n exports: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n})\nexport class ArdiumDialogModule {}\n","import { ButtonAppearance } from '../buttons/general-button.types';\nimport { ComponentColor } from '../types/colors.types';\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\n\nexport const DialogResult = {\n Confirm: 'confirm',\n Reject: 'reject',\n Close: 'close',\n} as const;\nexport type DialogResult = (typeof DialogResult)[keyof typeof DialogResult];\n\nexport type DialogButtonsContext = {\n confirmButton: {\n text: string;\n color: ComponentColor;\n appearance: ButtonAppearance;\n };\n rejectButton: {\n enabled: boolean;\n text: string;\n color: ComponentColor;\n appearance: ButtonAppearance;\n };\n canConfirm: boolean;\n onConfirm: () => void;\n onReject: () => void;\n dialogAppearance: PanelAppearance;\n dialogVariant: PanelVariant;\n dialogCompact: boolean;\n};\n","interface IQueue {\n readonly length: number;\n}\n\nexport class Queue<T = unknown> implements IQueue {\n private head?: QueueItem<T>;\n private tail?: QueueItem<T>;\n\n push(item: T): void {\n if (!this.tail) return this.pushFront(item);\n this.tail!.next = new QueueItem(item);\n this.tail = this.tail!.next!;\n }\n pushFront(item: T): void {\n this.head = new QueueItem(item, this.head);\n if (!this.tail) this.tail = this.head;\n }\n pop(): T | undefined {\n const head = this.head;\n if (!head) return;\n //replace head with the next item\n this.head = head.next;\n //delete the tail if there are no next items\n if (!this.head) this.tail = undefined;\n\n return head.value;\n }\n peek(): T | undefined {\n return this.head?.value;\n }\n clear(): void {\n this.head = undefined;\n this.tail = undefined;\n }\n get length(): number {\n let length = 0;\n let currentNode = this.head;\n while (currentNode) {\n length++;\n currentNode = currentNode.next;\n }\n return length;\n }\n isEmpty(): boolean {\n return !this.head;\n }\n toArray(): T[] {\n const array: T[] = [];\n let currentNode = this.head;\n while (currentNode) {\n array.push(currentNode.value);\n currentNode = currentNode.next;\n }\n return array;\n }\n}\n\nexport class QueueItem<T> {\n constructor(\n public value: T,\n public next?: QueueItem<T>\n ) {}\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { InjectionToken } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { ArdSnackbarData, ArdSnackbarOptions, ArdSnackbarType } from './snackbar.types';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentColor } from '../types/colors.types';\n\nexport const ARD_SNACKBAR_DATA = new InjectionToken<ArdSnackbarData>('ArdSnackbarData');\nexport const ARD_SNACKBAR_COLOR = new InjectionToken<ComponentColor>('ArdSnackbarColor');\nexport const ARD_SNACKBAR_TYPE = new InjectionToken<ArdSnackbarType>('ArdSnackbarType');\n\nexport class _ArdSnackbarRefInternal<T> {\n constructor(\n public component: ComponentType<T>,\n public options: Required<ArdSnackbarOptions>,\n dismiss: (withAction?: boolean) => void\n ) {\n this.publicRef = new ArdSnackbarRef(dismiss, this._onOpen, this._onCloseStart);\n }\n\n readonly publicRef!: ArdSnackbarRef<T>;\n\n timeout!: NodeJS.Timeout;\n overlay!: OverlayRef;\n\n private readonly _onOpen = new Subject<void>();\n private readonly _onCloseStart = new BehaviorSubject<boolean>(false);\n\n markAsOpened() {\n this._onOpen.next();\n this._onOpen.complete();\n }\n markAsStartingToClose() {\n this._onCloseStart.next(true);\n this._onCloseStart.complete();\n }\n}\nexport class ArdSnackbarRef<T = unknown> {\n constructor(\n private readonly dismiss: (withAction?: boolean) => void,\n private readonly _onOpen: Subject<void>,\n private readonly _onCloseStart: BehaviorSubject<boolean>\n ) {}\n\n private readonly _onClose = new Subject<boolean>();\n public readonly onOpen = this._onOpen.asObservable();\n public readonly onClose = this._onClose.asObservable();\n public readonly onCloseStart = this._onCloseStart.asObservable();\n\n public instance!: T;\n\n close(withAction: boolean = false): void {\n if (this.isClosed) return;\n this.dismiss(withAction);\n this.markAsClosed();\n }\n\n markAsClosed(withAction: boolean = false): void {\n if (this.isClosed) return;\n this._onClose.next(withAction);\n this._onClose.complete();\n this._isClosed = true;\n }\n\n private _isClosed = false;\n public get isClosed(): boolean {\n return this._isClosed;\n }\n}\n","import { ComponentRef, ElementRef } from '@angular/core';\nimport { ComponentColor } from '../types/colors.types';\n\nexport const ArdSnackbarAlignment = {\n TopLeft: 'top-left',\n TopCenter: 'top-center',\n TopRight: 'top-right',\n BottomLeft: 'bottom-left',\n BottomCenter: 'bottom-center',\n BottomRight: 'bottom-right',\n} as const;\nexport type ArdSnackbarAlignment = (typeof ArdSnackbarAlignment)[keyof typeof ArdSnackbarAlignment];\n\nexport const ArdSnackbarOriginRelation = {\n Inside: 'inside',\n Outside: 'outside',\n} as const;\nexport type ArdSnackbarOriginRelation = (typeof ArdSnackbarOriginRelation)[keyof typeof ArdSnackbarOriginRelation];\n\nexport const ArdSnackbarQueueHandling = {\n Default: 'default',\n Skip: 'skip',\n Overwrite: 'overwrite',\n} as const;\nexport type ArdSnackbarQueueHandling = (typeof ArdSnackbarQueueHandling)[keyof typeof ArdSnackbarQueueHandling];\n\nexport type ArdSnackbarOrigin<T = any> = HTMLElement | ElementRef<T>;\n\nexport const ArdSnackbarType = {\n None: 'none',\n Danger: 'danger',\n Warning: 'warn',\n Success: 'success',\n Info: 'info',\n} as const;\nexport type ArdSnackbarType = (typeof ArdSnackbarType)[keyof typeof ArdSnackbarType];\n\nexport type ArdSnackbarData = { message: string; action?: string };\n\nexport type ArdSnackbarOptions = {\n data?: ArdSnackbarData;\n placement?: {\n align?: ArdSnackbarAlignment;\n origin?: ArdSnackbarOrigin;\n originRelation?: ArdSnackbarOriginRelation;\n };\n duration?: number;\n color?: ComponentColor;\n type?: ArdSnackbarType;\n queueHandling?: ArdSnackbarQueueHandling;\n panelClass?: string | string[];\n};\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { isDefined } from 'simple-bool';\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\nimport { ARD_SNACKBAR_COLOR, ARD_SNACKBAR_DATA, ARD_SNACKBAR_TYPE, ArdSnackbarRef } from './snackbar-ref';\nimport { AsyncPipe } from '@angular/common';\nimport { ArdSnackbarType } from './snackbar.types';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@Component({\n selector: '_ard-simple-snackbar',\n templateUrl: './snackbar.component.html',\n styles: ``,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ArdiumButtonModule, AsyncPipe, ArdiumIconModule],\n standalone: true,\n})\nexport class _ArdSimpleSnackbar {\n public readonly snackbarRef = inject(ArdSnackbarRef);\n public readonly data = inject(ARD_SNACKBAR_DATA);\n public readonly color = inject(ARD_SNACKBAR_COLOR);\n public readonly type = inject(ARD_SNACKBAR_TYPE);\n\n public readonly typeIcon = this._getTypeIcon();\n\n closeWithAction(): void {\n this.snackbarRef.close(true);\n }\n\n get hasAction(): boolean {\n return isDefined(this.data.action);\n }\n\n private _getTypeIcon(): string | null {\n switch (this.type) {\n case ArdSnackbarType.Danger:\n return 'error';\n case ArdSnackbarType.Warning:\n return 'warning';\n case ArdSnackbarType.Success:\n return 'check_circle';\n case ArdSnackbarType.Info:\n return 'info';\n }\n return null;\n }\n\n get colorClass(): string {\n return `ard-color-${this.color}`;\n }\n}\n","<div class=\"ard-snackbar\" [class.ard-snackbar-closing]=\"snackbarRef.onCloseStart | async\" [class]=\"colorClass\">\r\n <div class=\"ard-snackbar-content\">\r\n @if (typeIcon) {\r\n <ard-icon filled>{{ typeIcon }}</ard-icon>\r\n }\r\n <div class=\"ard-snackbar-message\">{{ data.message }}</div>\r\n </div>\r\n @if (data.action) {\r\n <ard-button class=\"ard-snackbar-action\" appearance=\"transparent\" lightColoring [color]=\"color\" (click)=\"closeWithAction()\">{{ data.action }}</ard-button>\r\n }\r\n</div>","import { InjectionToken } from '@angular/core';\nimport { ArdSnackbarAlignment, ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling } from './snackbar.types';\n\nexport const _DEFAULT_OPTIONS_STATIC = {\n placement: {\n align: ArdSnackbarAlignment.BottomCenter,\n origin: document.body,\n originRelation: ArdSnackbarOriginRelation.Inside,\n },\n duration: 5000,\n queueHandling: ArdSnackbarQueueHandling.Default,\n panelClass: [],\n data: { message: null },\n} as unknown as Required<ArdSnackbarOptions>;\n\nexport const ARD_SNACKBAR_DEFAULT_OPTIONS = new InjectionToken<Required<ArdSnackbarOptions>>('ard-snackbar-default-options', {\n factory: () => ({ ..._DEFAULT_OPTIONS_STATIC }),\n});\n\nexport const ARD_SNACKBAR_ANIMATION_LENGTH = new InjectionToken<number>('ard-snackbar-animation-length', {\n factory: () => 150,\n});\n","import { ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector, OnDestroy, inject } from '@angular/core';\nimport { isArray, isDefined } from 'simple-bool';\nimport { Queue } from '../_internal/queue';\nimport { ARD_SNACKBAR_COLOR, ARD_SNACKBAR_DATA, ARD_SNACKBAR_TYPE, ArdSnackbarRef, _ArdSnackbarRefInternal } from './snackbar-ref';\nimport { _ArdSimpleSnackbar } from './snackbar.component';\nimport { ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DEFAULT_OPTIONS, _DEFAULT_OPTIONS_STATIC } from './snackbar.token';\nimport { ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling, ArdSnackbarType } from './snackbar.types';\nimport { ComponentColor } from '../types/colors.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ArdiumSnackbarService implements OnDestroy {\n private readonly _snackbarQueue = new Queue<_ArdSnackbarRefInternal<unknown>>();\n private _openedSnackbar?: _ArdSnackbarRefInternal<unknown>;\n\n private readonly _defaultOptionsStatic = _DEFAULT_OPTIONS_STATIC;\n private readonly _defaultOptions = inject(ARD_SNACKBAR_DEFAULT_OPTIONS);\n private readonly _animationLength = inject(ARD_SNACKBAR_ANIMATION_LENGTH);\n private readonly _overlay = inject(Overlay);\n private readonly _injector = inject(Injector);\n\n //! public methods for creating new snackbars\n open(message: string, action?: string, options: ArdSnackbarOptions = {}): ArdSnackbarRef<_ArdSimpleSnackbar> {\n options.data = {\n message,\n action: action ?? options.data?.action,\n };\n const mergedOptions = this._mergeOptions(options);\n\n if (typeof mergedOptions.data === 'object' && !isArray(mergedOptions.data)) {\n mergedOptions.data.message = message;\n mergedOptions.data.action = action;\n }\n\n const internalRef = new _ArdSnackbarRefInternal(_ArdSimpleSnackbar, mergedOptions, (withAction?: boolean) => this.dismissCurrent(withAction));\n\n this._handleQueue(mergedOptions.queueHandling!, internalRef);\n return internalRef.publicRef;\n }\n openFromComponent<T>(component: ComponentType<T>, options: ArdSnackbarOptions): ArdSnackbarRef<T> {\n const mergedOptions = this._mergeOptions(options);\n\n const internalRef = new _ArdSnackbarRefInternal(component, mergedOptions, (withAction?: boolean) => this.dismissCurrent(withAction));\n\n this._handleQueue(options.queueHandling!, internalRef);\n return internalRef.publicRef;\n }\n //! handling adding new snackbars to queue\n private _handleQueue<T>(handling: ArdSnackbarQueueHandling, ref: _ArdSnackbarRefInternal<T>) {\n const isNotOpen = !isDefined(this._openedSnackbar);\n if (handling === ArdSnackbarQueueHandling.Default) {\n const wasEmpty = this._snackbarQueue.isEmpty();\n this._snackbarQueue.push(ref);\n if (wasEmpty && isNotOpen) {\n this._openNext();\n }\n } else if (handling === ArdSnackbarQueueHandling.Skip || handling === ArdSnackbarQueueHandling.Overwrite) {\n const wasEmpty = this._snackbarQueue.isEmpty();\n if (!wasEmpty && handling === ArdSnackbarQueueHandling.Overwrite) this._snackbarQueue.clear();\n this._snackbarQueue.pushFront(ref);\n if (wasEmpty && isNotOpen) {\n this._openNext();\n } else {\n this.dismissCurrent(false);\n //it is opened automatically within the dismiss method\n }\n }\n }\n private _mergeOptions(options: ArdSnackbarOptions): Required<ArdSnackbarOptions> {\n // merge placement\n if (options.placement) {\n options.placement = {\n ...this._defaultOptionsStatic.placement,\n ...this._defaultOptions.placement,\n ...options.placement,\n };\n } else {\n options.placement = this._defaultOptions.placement ?? this._defaultOptionsStatic.placement;\n }\n // merge data\n if (options.data) {\n options.data = {\n ...this._defaultOptionsStatic.data,\n ...this._defaultOptions.data,\n ...options.data,\n };\n } else {\n options.data = this._defaultOptions.data ?? this._defaultOptionsStatic.data;\n }\n return {\n ...this._defaultOptionsStatic,\n ...this._defaultOptions,\n ...options,\n } as Required<ArdSnackbarOptions>;\n }\n //! opening snackbars\n private _openNext() {\n const sb = this._snackbarQueue.pop();\n if (!sb) return;\n this._openedSnackbar = sb;\n const overlay = this._createOverlay(sb.options);\n sb.overlay = overlay;\n\n const injector = this._createInjector(sb.options, sb.publicRef);\n const portal = new ComponentPortal(sb.component, undefined, injector);\n const componentRef = overlay.attach(portal);\n sb.publicRef.instance = componentRef.instance;\n sb.markAsOpened();\n\n this._openedSnackbar = sb;\n\n const duration =\n sb.options.duration === Infinity || sb.options.duration <= 0\n ? 2_147_483_647 //maximum duration for setTimeout\n : sb.options.duration;\n\n sb.timeout = setTimeout(() => {\n this.dismissCurrent(false);\n }, duration);\n }\n private _createOverlay(options: ArdSnackbarOptions): OverlayRef {\n let x!: 'start' | 'center' | 'end';\n let originY!: 'top' | 'center' | 'bottom';\n let overlayY!: 'top' | 'center' | 'bottom';\n let overlayY2!: 'top' | 'center' | 'bottom';\n\n //horizontal alignments\n if (options.placement?.align?.match('left')) {\n x = 'start';\n } else if (options.placement?.align?.match('right')) {\n x = 'end';\n } else {\n x = 'center';\n }\n // vertical alignments\n if (options.placement?.align?.match('bottom')) {\n originY = 'bottom';\n overlayY = 'bottom';\n overlayY2 = 'top';\n } else {\n originY = 'top';\n overlayY = 'top';\n overlayY2 = 'bottom';\n }\n\n const origin = options.placement!.origin;\n if (!origin) {\n throw new Error(`ARD-NF8011: trying to open a snackbar, but the origin is undefined. Using \"document.body\" instead.`);\n }\n\n const isInside = options.placement?.originRelation === ArdSnackbarOriginRelation.Inside;\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(options.placement!.origin!)\n .withPositions([\n {\n originX: x,\n originY,\n overlayX: x,\n overlayY: isInside ? overlayY : overlayY2,\n },\n {\n originX: x,\n originY,\n overlayX: x,\n overlayY: !isInside ? overlayY : overlayY2,\n },\n ]);\n\n const config = new OverlayConfig({\n positionStrategy: strategy,\n hasBackdrop: false,\n panelClass: options.panelClass,\n });\n\n return this._overlay.create(config);\n }\n\n //! public actions\n dismissCurrent(withAction?: boolean) {\n const sb = this._openedSnackbar;\n if (!sb) {\n console.warn(new Error(`ARD-WA8010: trying to dismiss the current snackbar, but no snackbar is currently opened.`));\n return;\n }\n\n sb.markAsStartingToClose();\n\n setTimeout(() => {\n sb.overlay?.dispose();\n this._openedSnackbar = undefined;\n sb.publicRef.markAsClosed(withAction);\n clearTimeout(sb.timeout);\n\n this._openNext();\n }, this._animationLength);\n }\n\n //! public queue methods\n getQueue(): ArdSnackbarRef<unknown>[] {\n return this._snackbarQueue.toArray().map(v => v.publicRef);\n }\n clearQueue(): void {\n this._snackbarQueue.clear();\n }\n\n /**\n * @deprecated Internal implementation detail, do not use directly.\n */\n ngOnDestroy(): void {\n this._snackbarQueue.clear();\n this.dismissCurrent(false);\n }\n\n private _createInjector<T>(options: ArdSnackbarOptions, snackbarRef: ArdSnackbarRef<T>): Injector {\n return Injector.create({\n parent: this._injector,\n providers: [\n { provide: ArdSnackbarRef, useValue: snackbarRef },\n { provide: ARD_SNACKBAR_DATA, useValue: options.data },\n {\n provide: ARD_SNACKBAR_TYPE,\n useValue: options.type ?? ArdSnackbarType.None,\n },\n {\n provide: ARD_SNACKBAR_COLOR,\n useValue: options.color ?? (options.type !== ArdSnackbarType.None ? options.type : null) ?? ComponentColor.Secondary,\n },\n ],\n });\n }\n}\n","/*\n * Public API Surface of ui\n */\nimport 'first-last';\n\n//button\nexport * from './lib/buttons/general-button.types';\nexport * from './lib/buttons/button/button.module';\nexport * from './lib/buttons/button/button.component';\n//fab\nexport * from './lib/buttons/fab/fab.module';\nexport * from './lib/buttons/fab/fab.component';\n//fab\nexport * from './lib/buttons/icon-button/icon-button.module';\nexport * from './lib/buttons/icon-button/icon-button.component';\n//checkbox\nexport * from './lib/checkbox/checkbox.module';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/checkbox/checkbox.types';\n//checkbox-list\nexport * from './lib/checkbox-list/checkbox-list.module';\nexport * from './lib/checkbox-list/checkbox-list.component';\nexport * from './lib/checkbox-list/checkbox-list.types';\n//chips\nexport * from './lib/chip/chip.module';\nexport * from './lib/chip/chip.component';\nexport * from './lib/chip/deletable-chip/deletable-chip.component';\nexport * from './lib/chip/selectable-chip/selectable-chip.component';\n//dropdown-panel\nexport * from './lib/dropdown-panel/dropdown-panel.module';\nexport * from './lib/dropdown-panel/dropdown-panel.component';\nexport * from './lib/dropdown-panel/dropdown-panel.types';\n//form-field-frame\nexport * from './lib/form-field-frame/form-field-frame.module';\nexport * from './lib/form-field-frame/form-field-frame.component';\nexport * from './lib/form-field-frame/form-field-frame.directives';\n//input\nexport * from './lib/inputs/input/input.module';\nexport * from './lib/inputs/input/input.component';\nexport * from './lib/inputs/input/input.directives';\n//simple-input\nexport * from './lib/inputs/simple-input/simple-input.module';\nexport * from './lib/inputs/simple-input/simple-input.component';\nexport * from './lib/inputs/simple-input/simple-input.directives';\n//number-input\nexport * from './lib/inputs/number-input/number-input.module';\nexport * from './lib/inputs/number-input/number-input.component';\nexport * from './lib/inputs/number-input/number-input.directives';\n//hex input\nexport * from './lib/inputs/hex-input/hex-input.module';\nexport * from './lib/inputs/hex-input/hex-input.component';\nexport * from './lib/inputs/hex-input/hex-input.directives';\n//select\nexport * from './lib/select/select.module';\nexport * from './lib/select/select.component';\nexport * from './lib/select/select.directive';\nexport * from './lib/select/select.types';\n//option\nexport * from './lib/option/option.module';\nexport * from './lib/option/option.component';\n//slide-toggle\nexport * from './lib/slide-toggle/slide-toggle.module';\nexport * from './lib/slide-toggle/slide-toggle.component';\n//sliders\nexport * from './lib/slider/slider.module';\nexport * from './lib/slider/slider.component';\nexport * from './lib/slider/slider.directive';\nexport * from './lib/slider/slider.types';\nexport * from './lib/slider/range-slider/range-slider.module';\nexport * from './lib/slider/range-slider/range-slider.component';\n//star\nexport * from './lib/star/star.module';\nexport * from './lib/star/star.component';\nexport * from './lib/star/star.types';\nexport * from './lib/star/star-button/star-button.module';\nexport * from './lib/star/star-button/star-button.component';\nexport * from './lib/star/star-display/star-display.module';\nexport * from './lib/star/star-display/star-display.component';\nexport * from './lib/star/star-input/star-input.module';\nexport * from './lib/star/star-input/star-input.component';\n//statebox\nexport * from './lib/statebox/statebox.module';\nexport * from './lib/statebox/statebox.component';\nexport * from './lib/statebox/statebox.types';\n//segment\nexport * from './lib/segment/segment.module';\nexport * from './lib/segment/segment.component';\nexport * from './lib/segment/segment.directives';\nexport * from './lib/segment/segment.types';\n//icon\nexport * from './lib/icon/icon.module';\nexport * from './lib/icon/icon.component';\nexport * from './lib/icon/icon.pipe';\n//color-display\nexport * from './lib/color/color-display/color-display.module';\nexport * from './lib/color/color-display/color-display.component';\nexport * from './lib/color/color-display/color-display.types';\n//color-picker\nexport * from './lib/color/color-picker/color-picker.module';\nexport * from './lib/color/color-picker/color-picker.component';\nexport * from './lib/color/color-picker/color-picker.directives';\nexport * from './lib/color/color-picker/color-picker.types';\n//color-input\nexport * from './lib/inputs/color-input/color-input.module';\nexport * from './lib/inputs/color-input/color-input.component';\nexport * from './lib/inputs/color-input/color-input.directives';\nexport * from './lib/inputs/color-input/color-input.types';\n//calendar\nexport * from './lib/calendar/calendar.module';\nexport * from './lib/calendar/calendar.component';\nexport * from './lib/calendar/calendar.types';\n//kbd\nexport * from './lib/kbd/kbd.module';\nexport * from './lib/kbd/kbd.component';\nexport * from './lib/kbd/kbd.pipe';\n//kbd-shortcut\nexport * from './lib/kbd-shortcut/kbd-shortcut.module';\nexport * from './lib/kbd-shortcut/kbd-shortcut.component';\n//progress-circle\nexport * from './lib/progress-circle/progress-circle.module';\nexport * from './lib/progress-circle/progress-circle.component';\nexport * from './lib/progress-circle/progress-circle.types';\nexport * from './lib/progress-circle/progress-circle.directive';\n//progress-bar\nexport * from './lib/progress-bar/progress-bar.module';\nexport * from './lib/progress-bar/progress-bar.component';\nexport * from './lib/progress-bar/progress-bar.types';\nexport * from './lib/progress-bar/progress-bar.directive';\n//card\nexport * from './lib/card/card.module';\nexport * from './lib/card/card.component';\nexport * from './lib/card/card.types';\nexport * from './lib/card/card.children';\n//divider\nexport * from './lib/divider/divider.module';\nexport * from './lib/divider/divider.component';\n//password-input\nexport * from './lib/inputs/password-input/password-input.module';\nexport * from './lib/inputs/password-input/password-input.component';\nexport * from './lib/inputs/password-input/password-input.directives';\nexport * from './lib/inputs/password-input/password-input.types';\n//radio-group and radio\nexport * from './lib/radio/radio/radio.component';\nexport * from './lib/radio/radio.module';\nexport * from './lib/radio/radio-group.component';\n//file-drop-area\nexport * from './lib/file-inputs/file-drop-area/file-drop-area.module';\nexport * from './lib/file-inputs/file-drop-area/file-drop-area.component';\nexport * from './lib/file-inputs/file-drop-area/file-drop-area.directives';\n//file-input\nexport * from './lib/file-inputs/file-input/file-input.module';\nexport * from './lib/file-inputs/file-input/file-input.component';\nexport * from './lib/file-inputs/file-input/file-input.directives';\n//table\nexport * from './lib/table/table.module';\nexport * from './lib/table/table.component';\nexport * from './lib/table/table.directives';\nexport * from './lib/table/table.types';\n//table-pagination\nexport * from './lib/table-pagination/table-pagination.module';\nexport * from './lib/table-pagination/table-pagination.component';\nexport * from './lib/table-pagination/table-pagination.types';\n//table-from-csv\nexport * from './lib/table-from-csv/table-from-csv.module';\nexport * from './lib/table-from-csv/table-from-csv.component';\n//badge\nexport * from './lib/badge/badge.module';\nexport * from './lib/badge/badge.directive';\nexport * from './lib/badge/badge.types';\n//spinner\nexport * from './lib/spinner/spinner.module';\nexport * from './lib/spinner/spinner.component';\n//digit-input\nexport * from './lib/inputs/digit-input/digit-input.module';\nexport * from './lib/inputs/digit-input/digit-input.component';\nexport * from './lib/inputs/digit-input/digit-input.types';\n//modal\nexport * from './lib/modal/modal.module';\nexport * from './lib/modal/modal.component';\n//dialog\nexport * from './lib/dialog/dialog.module';\nexport * from './lib/dialog/dialog.component';\nexport * from './lib/dialog/dialog.types';\nexport * from './lib/dialog/dialog.directives';\n//snackbar\nexport * from './lib/snackbar';\n\n//! types\nexport * from './lib/types/alignment.types';\nexport * from './lib/types/colors.types';\nexport * from './lib/types/theming.types';\nexport * from './lib/types/utility.types';\nexport * from './lib/types/item-storage.types';\n//! miscellaneous\nexport { searchInString, searchFunctions as ArdSearchFunction } from './lib/search-functions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ArdiumCheckboxComponent","i2._ClearButtonComponent","i3.ArdiumFormFieldFrameComponent","i1","i2","i4._ClearButtonComponent","i5.ArdiumDropdownPanelComponent","i6","i3.ArdiumButtonComponent","i2.ArdiumFormFieldFrameComponent","i3._ClearButtonComponent","i4.ArdiumDropdownPanelComponent","i5.ArdiumDeletableChipComponent","i7._ClearButtonComponent","i2.ArdiumStarComponent","i2.ArdiumStarButtonComponent","i1.ArdiumIconPipe","i2.ArdiumSelectComponent","i3.ArdiumNumberInputComponent","i4.ArdiumHexInputComponent","i5.ArdiumColorPickerComponent","i6.ArdiumColorDisplayComponent","i7.ArdiumCardComponent","i8.ArdiumCardActionButtonsDirective","i9","i10.ArdiumButtonComponent","i2.ArdiumButtonComponent","i3.ArdiumIconButtonComponent","i4.ArdiumIconComponent","i2.ArdiumKbdPipe","i2.ArdiumKbdComponent","i3.ArdiumIconComponent","i3.ArdiumTablePaginationComponent","i1.ArdiumTableComponent","i3.ArdiumModalComponent","i1.ArdiumButtonComponent","i2.ArdiumIconComponent"],"mappings":"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"}