@spartan-ng/cli 0.0.1-alpha.707 → 0.0.1-alpha.708

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 (406) hide show
  1. package/package.json +8 -8
  2. package/src/generators/base/generator.js +39 -43
  3. package/src/generators/base/generator.js.map +1 -1
  4. package/src/generators/base/lib/build-dependency-array.js +10 -14
  5. package/src/generators/base/lib/build-dependency-array.js.map +1 -1
  6. package/src/generators/base/lib/deleteFiles.js +3 -6
  7. package/src/generators/base/lib/deleteFiles.js.map +1 -1
  8. package/src/generators/base/lib/generate-as.js +1 -4
  9. package/src/generators/base/lib/generate-as.js.map +1 -1
  10. package/src/generators/base/lib/get-target-library-directory.js +5 -9
  11. package/src/generators/base/lib/get-target-library-directory.js.map +1 -1
  12. package/src/generators/base/lib/initialize-angular-library.js +24 -30
  13. package/src/generators/base/lib/initialize-angular-library.js.map +1 -1
  14. package/src/generators/base/lib/single-lib-name.js +1 -4
  15. package/src/generators/base/lib/single-lib-name.js.map +1 -1
  16. package/src/generators/base/lib/styles/create-style-map.js +8 -13
  17. package/src/generators/base/lib/styles/create-style-map.js.map +1 -1
  18. package/src/generators/base/lib/styles/index.js +3 -6
  19. package/src/generators/base/lib/styles/index.js.map +1 -1
  20. package/src/generators/base/lib/styles/transform-style-map.js +23 -27
  21. package/src/generators/base/lib/styles/transform-style-map.js.map +1 -1
  22. package/src/generators/base/lib/styles/transform.js +5 -8
  23. package/src/generators/base/lib/styles/transform.js.map +1 -1
  24. package/src/generators/base/lib/supported-libs.js +0 -2
  25. package/src/generators/base/versions.js +6 -9
  26. package/src/generators/base/versions.js.map +1 -1
  27. package/src/generators/healthcheck/compat.js +3 -5
  28. package/src/generators/healthcheck/compat.js.map +1 -1
  29. package/src/generators/healthcheck/generator.js +72 -75
  30. package/src/generators/healthcheck/generator.js.map +1 -1
  31. package/src/generators/healthcheck/healthchecks/brain-imports.js +9 -13
  32. package/src/generators/healthcheck/healthchecks/brain-imports.js.map +1 -1
  33. package/src/generators/healthcheck/healthchecks/brn-accordion-trigger.js +20 -24
  34. package/src/generators/healthcheck/healthchecks/brn-accordion-trigger.js.map +1 -1
  35. package/src/generators/healthcheck/healthchecks/brn-checkbox-changed-event-rename.js +7 -11
  36. package/src/generators/healthcheck/healthchecks/brn-checkbox-changed-event-rename.js.map +1 -1
  37. package/src/generators/healthcheck/healthchecks/brn-collapsible.js +7 -10
  38. package/src/generators/healthcheck/healthchecks/brn-collapsible.js.map +1 -1
  39. package/src/generators/healthcheck/healthchecks/brn-radio.js +7 -10
  40. package/src/generators/healthcheck/healthchecks/brn-radio.js.map +1 -1
  41. package/src/generators/healthcheck/healthchecks/brn-select.js +7 -11
  42. package/src/generators/healthcheck/healthchecks/brn-select.js.map +1 -1
  43. package/src/generators/healthcheck/healthchecks/brn-separator.js +7 -10
  44. package/src/generators/healthcheck/healthchecks/brn-separator.js.map +1 -1
  45. package/src/generators/healthcheck/healthchecks/brn-switch-changed-event-rename.js +7 -11
  46. package/src/generators/healthcheck/healthchecks/brn-switch-changed-event-rename.js.map +1 -1
  47. package/src/generators/healthcheck/healthchecks/brn-toggle-group-2.js +7 -11
  48. package/src/generators/healthcheck/healthchecks/brn-toggle-group-2.js.map +1 -1
  49. package/src/generators/healthcheck/healthchecks/brn-toggle-group.js +7 -10
  50. package/src/generators/healthcheck/healthchecks/brn-toggle-group.js.map +1 -1
  51. package/src/generators/healthcheck/healthchecks/brn-toggle.js +7 -11
  52. package/src/generators/healthcheck/healthchecks/brn-toggle.js.map +1 -1
  53. package/src/generators/healthcheck/healthchecks/core-imports.js +7 -10
  54. package/src/generators/healthcheck/healthchecks/core-imports.js.map +1 -1
  55. package/src/generators/healthcheck/healthchecks/helm-imports.js +9 -13
  56. package/src/generators/healthcheck/healthchecks/helm-imports.js.map +1 -1
  57. package/src/generators/healthcheck/healthchecks/hlm-date-picker.js +7 -11
  58. package/src/generators/healthcheck/healthchecks/hlm-date-picker.js.map +1 -1
  59. package/src/generators/healthcheck/healthchecks/hlm-dialog-portal.js +7 -11
  60. package/src/generators/healthcheck/healthchecks/hlm-dialog-portal.js.map +1 -1
  61. package/src/generators/healthcheck/healthchecks/hlm-dialog.js +8 -12
  62. package/src/generators/healthcheck/healthchecks/hlm-dialog.js.map +1 -1
  63. package/src/generators/healthcheck/healthchecks/hlm-form-field.js +7 -11
  64. package/src/generators/healthcheck/healthchecks/hlm-form-field.js.map +1 -1
  65. package/src/generators/healthcheck/healthchecks/hlm-icon.js +7 -10
  66. package/src/generators/healthcheck/healthchecks/hlm-icon.js.map +1 -1
  67. package/src/generators/healthcheck/healthchecks/hlm-input-id.js +7 -11
  68. package/src/generators/healthcheck/healthchecks/hlm-input-id.js.map +1 -1
  69. package/src/generators/healthcheck/healthchecks/hlm-menu.js +8 -12
  70. package/src/generators/healthcheck/healthchecks/hlm-menu.js.map +1 -1
  71. package/src/generators/healthcheck/healthchecks/hlm-progress.js +7 -11
  72. package/src/generators/healthcheck/healthchecks/hlm-progress.js.map +1 -1
  73. package/src/generators/healthcheck/healthchecks/hlm-scroll-area.js +7 -10
  74. package/src/generators/healthcheck/healthchecks/hlm-scroll-area.js.map +1 -1
  75. package/src/generators/healthcheck/healthchecks/hlm-select.js +10 -14
  76. package/src/generators/healthcheck/healthchecks/hlm-select.js.map +1 -1
  77. package/src/generators/healthcheck/healthchecks/hlm.js +7 -11
  78. package/src/generators/healthcheck/healthchecks/hlm.js.map +1 -1
  79. package/src/generators/healthcheck/healthchecks/module-imports.js +9 -13
  80. package/src/generators/healthcheck/healthchecks/module-imports.js.map +1 -1
  81. package/src/generators/healthcheck/healthchecks/naming-conventions.js +9 -13
  82. package/src/generators/healthcheck/healthchecks/naming-conventions.js.map +1 -1
  83. package/src/generators/healthcheck/healthchecks/sonner.js +7 -11
  84. package/src/generators/healthcheck/healthchecks/sonner.js.map +1 -1
  85. package/src/generators/healthcheck/healthchecks/version.js +9 -13
  86. package/src/generators/healthcheck/healthchecks/version.js.map +1 -1
  87. package/src/generators/healthcheck/healthchecks.js +5 -9
  88. package/src/generators/healthcheck/healthchecks.js.map +1 -1
  89. package/src/generators/healthcheck/utils/prompt.js +1 -4
  90. package/src/generators/healthcheck/utils/prompt.js.map +1 -1
  91. package/src/generators/healthcheck/utils/reporter.js +19 -23
  92. package/src/generators/healthcheck/utils/reporter.js.map +1 -1
  93. package/src/generators/healthcheck/utils/runner.js +6 -9
  94. package/src/generators/healthcheck/utils/runner.js.map +1 -1
  95. package/src/generators/info/compat.js +3 -5
  96. package/src/generators/info/compat.js.map +1 -1
  97. package/src/generators/info/generator.js +8 -44
  98. package/src/generators/info/generator.js.map +1 -1
  99. package/src/generators/info/lib/collect-info.js +7 -10
  100. package/src/generators/info/lib/collect-info.js.map +1 -1
  101. package/src/generators/init/compat.js +3 -5
  102. package/src/generators/init/compat.js.map +1 -1
  103. package/src/generators/init/generator.js +14 -18
  104. package/src/generators/init/generator.js.map +1 -1
  105. package/src/generators/migrate-brain-accordion-trigger/compat.js +3 -6
  106. package/src/generators/migrate-brain-accordion-trigger/compat.js.map +1 -1
  107. package/src/generators/migrate-brain-accordion-trigger/generator.js +18 -21
  108. package/src/generators/migrate-brain-accordion-trigger/generator.js.map +1 -1
  109. package/src/generators/migrate-brain-accordion-trigger/utils/html-utils.js +10 -20
  110. package/src/generators/migrate-brain-accordion-trigger/utils/html-utils.js.map +1 -1
  111. package/src/generators/migrate-brain-accordion-trigger/utils/shared-utils.js +17 -24
  112. package/src/generators/migrate-brain-accordion-trigger/utils/shared-utils.js.map +1 -1
  113. package/src/generators/migrate-brain-imports/compat.js +3 -5
  114. package/src/generators/migrate-brain-imports/compat.js.map +1 -1
  115. package/src/generators/migrate-brain-imports/generator.js +21 -26
  116. package/src/generators/migrate-brain-imports/generator.js.map +1 -1
  117. package/src/generators/migrate-brain-imports/import-map.js +1 -3
  118. package/src/generators/migrate-brain-imports/import-map.js.map +1 -1
  119. package/src/generators/migrate-brain-imports/utils/binary-extensions.js +3 -6
  120. package/src/generators/migrate-brain-imports/utils/binary-extensions.js.map +1 -1
  121. package/src/generators/migrate-brn-checkbox-changed-event/compat.js +3 -6
  122. package/src/generators/migrate-brn-checkbox-changed-event/compat.js.map +1 -1
  123. package/src/generators/migrate-brn-checkbox-changed-event/generator.js +6 -9
  124. package/src/generators/migrate-brn-checkbox-changed-event/generator.js.map +1 -1
  125. package/src/generators/migrate-brn-select/compat.js +3 -5
  126. package/src/generators/migrate-brn-select/compat.js.map +1 -1
  127. package/src/generators/migrate-brn-select/generator.js +7 -10
  128. package/src/generators/migrate-brn-select/generator.js.map +1 -1
  129. package/src/generators/migrate-brn-switch-changed-event/compat.js +3 -6
  130. package/src/generators/migrate-brn-switch-changed-event/compat.js.map +1 -1
  131. package/src/generators/migrate-brn-switch-changed-event/generator.js +6 -9
  132. package/src/generators/migrate-brn-switch-changed-event/generator.js.map +1 -1
  133. package/src/generators/migrate-brn-toggle-group/compat.js +3 -6
  134. package/src/generators/migrate-brn-toggle-group/compat.js.map +1 -1
  135. package/src/generators/migrate-brn-toggle-group/generator.js +7 -10
  136. package/src/generators/migrate-brn-toggle-group/generator.js.map +1 -1
  137. package/src/generators/migrate-collapsible/compat.js +3 -6
  138. package/src/generators/migrate-collapsible/compat.js.map +1 -1
  139. package/src/generators/migrate-collapsible/generator.js +7 -10
  140. package/src/generators/migrate-collapsible/generator.js.map +1 -1
  141. package/src/generators/migrate-core/compat.js +3 -5
  142. package/src/generators/migrate-core/compat.js.map +1 -1
  143. package/src/generators/migrate-core/generator.js +7 -10
  144. package/src/generators/migrate-core/generator.js.map +1 -1
  145. package/src/generators/migrate-date-picker/compat.js +3 -6
  146. package/src/generators/migrate-date-picker/compat.js.map +1 -1
  147. package/src/generators/migrate-date-picker/generator.js +6 -9
  148. package/src/generators/migrate-date-picker/generator.js.map +1 -1
  149. package/src/generators/migrate-dialog/compat.js +3 -5
  150. package/src/generators/migrate-dialog/compat.js.map +1 -1
  151. package/src/generators/migrate-dialog/generator.js +8 -12
  152. package/src/generators/migrate-dialog/generator.js.map +1 -1
  153. package/src/generators/migrate-dialog-portal/compat.js +3 -5
  154. package/src/generators/migrate-dialog-portal/compat.js.map +1 -1
  155. package/src/generators/migrate-dialog-portal/generator.js +9 -12
  156. package/src/generators/migrate-dialog-portal/generator.js.map +1 -1
  157. package/src/generators/migrate-form-field/compat.js +3 -5
  158. package/src/generators/migrate-form-field/compat.js.map +1 -1
  159. package/src/generators/migrate-form-field/generator.js +10 -13
  160. package/src/generators/migrate-form-field/generator.js.map +1 -1
  161. package/src/generators/migrate-helm-imports/compat.js +3 -5
  162. package/src/generators/migrate-helm-imports/compat.js.map +1 -1
  163. package/src/generators/migrate-helm-imports/generator.js +13 -17
  164. package/src/generators/migrate-helm-imports/generator.js.map +1 -1
  165. package/src/generators/migrate-helm-imports/import-map.js +1 -3
  166. package/src/generators/migrate-helm-imports/import-map.js.map +1 -1
  167. package/src/generators/migrate-helm-libraries/compat.js +3 -6
  168. package/src/generators/migrate-helm-libraries/compat.js.map +1 -1
  169. package/src/generators/migrate-helm-libraries/generator.js +31 -67
  170. package/src/generators/migrate-helm-libraries/generator.js.map +1 -1
  171. package/src/generators/migrate-hlm/compat.js +3 -6
  172. package/src/generators/migrate-hlm/compat.js.map +1 -1
  173. package/src/generators/migrate-hlm/generator.js +11 -47
  174. package/src/generators/migrate-hlm/generator.js.map +1 -1
  175. package/src/generators/migrate-icon/compat.js +3 -5
  176. package/src/generators/migrate-icon/compat.js.map +1 -1
  177. package/src/generators/migrate-icon/generator.js +34 -38
  178. package/src/generators/migrate-icon/generator.js.map +1 -1
  179. package/src/generators/migrate-input-id/compat.js +3 -6
  180. package/src/generators/migrate-input-id/compat.js.map +1 -1
  181. package/src/generators/migrate-input-id/generator.js +6 -9
  182. package/src/generators/migrate-input-id/generator.js.map +1 -1
  183. package/src/generators/migrate-menu/compat.js +3 -5
  184. package/src/generators/migrate-menu/compat.js.map +1 -1
  185. package/src/generators/migrate-menu/generator.js +14 -18
  186. package/src/generators/migrate-menu/generator.js.map +1 -1
  187. package/src/generators/migrate-module-imports/compat.js +3 -5
  188. package/src/generators/migrate-module-imports/compat.js.map +1 -1
  189. package/src/generators/migrate-module-imports/generator.js +15 -19
  190. package/src/generators/migrate-module-imports/generator.js.map +1 -1
  191. package/src/generators/migrate-module-imports/import-map.js +1 -3
  192. package/src/generators/migrate-module-imports/import-map.js.map +1 -1
  193. package/src/generators/migrate-naming-convention/__snapshots__/generator.spec.ts.snap +1 -1
  194. package/src/generators/migrate-naming-convention/compat.js +3 -6
  195. package/src/generators/migrate-naming-convention/compat.js.map +1 -1
  196. package/src/generators/migrate-naming-convention/generator.js +12 -15
  197. package/src/generators/migrate-naming-convention/generator.js.map +1 -1
  198. package/src/generators/migrate-progress/compat.js +3 -5
  199. package/src/generators/migrate-progress/compat.js.map +1 -1
  200. package/src/generators/migrate-progress/generator.js +5 -8
  201. package/src/generators/migrate-progress/generator.js.map +1 -1
  202. package/src/generators/migrate-radio/compat.js +3 -6
  203. package/src/generators/migrate-radio/compat.js.map +1 -1
  204. package/src/generators/migrate-radio/generator.js +7 -10
  205. package/src/generators/migrate-radio/generator.js.map +1 -1
  206. package/src/generators/migrate-scroll-area/compat.js +3 -5
  207. package/src/generators/migrate-scroll-area/compat.js.map +1 -1
  208. package/src/generators/migrate-scroll-area/generator.js +20 -24
  209. package/src/generators/migrate-scroll-area/generator.js.map +1 -1
  210. package/src/generators/migrate-select/compat.js +3 -6
  211. package/src/generators/migrate-select/compat.js.map +1 -1
  212. package/src/generators/migrate-select/generator.js +9 -12
  213. package/src/generators/migrate-select/generator.js.map +1 -1
  214. package/src/generators/migrate-separator/compat.js +3 -6
  215. package/src/generators/migrate-separator/compat.js.map +1 -1
  216. package/src/generators/migrate-separator/generator.js +7 -10
  217. package/src/generators/migrate-separator/generator.js.map +1 -1
  218. package/src/generators/migrate-sonner/compat.js +3 -5
  219. package/src/generators/migrate-sonner/compat.js.map +1 -1
  220. package/src/generators/migrate-sonner/generator.js +6 -9
  221. package/src/generators/migrate-sonner/generator.js.map +1 -1
  222. package/src/generators/migrate-toggle/compat.js +3 -6
  223. package/src/generators/migrate-toggle/compat.js.map +1 -1
  224. package/src/generators/migrate-toggle/generator.js +7 -10
  225. package/src/generators/migrate-toggle/generator.js.map +1 -1
  226. package/src/generators/migrate-toggle-group/compat.js +3 -6
  227. package/src/generators/migrate-toggle-group/compat.js.map +1 -1
  228. package/src/generators/migrate-toggle-group/generator.js +8 -11
  229. package/src/generators/migrate-toggle-group/generator.js.map +1 -1
  230. package/src/generators/theme/__snapshots__/generator.spec.ts.snap +1 -1
  231. package/src/generators/theme/compat.js +3 -6
  232. package/src/generators/theme/compat.js.map +1 -1
  233. package/src/generators/theme/generator.js +10 -13
  234. package/src/generators/theme/generator.js.map +1 -1
  235. package/src/generators/theme/libs/add-theme-to-application-styles.js +14 -17
  236. package/src/generators/theme/libs/add-theme-to-application-styles.js.map +1 -1
  237. package/src/generators/theme/libs/colors.js +3 -6
  238. package/src/generators/theme/libs/colors.js.map +1 -1
  239. package/src/generators/ui/add-dependent-primitive.js +5 -9
  240. package/src/generators/ui/add-dependent-primitive.js.map +1 -1
  241. package/src/generators/ui/compat.js +3 -6
  242. package/src/generators/ui/compat.js.map +1 -1
  243. package/src/generators/ui/generator.js +17 -54
  244. package/src/generators/ui/generator.js.map +1 -1
  245. package/src/generators/ui/libs/accordion/generator.js +3 -7
  246. package/src/generators/ui/libs/accordion/generator.js.map +1 -1
  247. package/src/generators/ui/libs/alert/generator.js +3 -7
  248. package/src/generators/ui/libs/alert/generator.js.map +1 -1
  249. package/src/generators/ui/libs/alert-dialog/generator.js +3 -7
  250. package/src/generators/ui/libs/alert-dialog/generator.js.map +1 -1
  251. package/src/generators/ui/libs/aspect-ratio/generator.js +3 -7
  252. package/src/generators/ui/libs/aspect-ratio/generator.js.map +1 -1
  253. package/src/generators/ui/libs/autocomplete/generator.js +3 -7
  254. package/src/generators/ui/libs/autocomplete/generator.js.map +1 -1
  255. package/src/generators/ui/libs/avatar/generator.js +3 -7
  256. package/src/generators/ui/libs/avatar/generator.js.map +1 -1
  257. package/src/generators/ui/libs/badge/generator.js +3 -7
  258. package/src/generators/ui/libs/badge/generator.js.map +1 -1
  259. package/src/generators/ui/libs/breadcrumb/generator.js +3 -7
  260. package/src/generators/ui/libs/breadcrumb/generator.js.map +1 -1
  261. package/src/generators/ui/libs/button/generator.js +3 -7
  262. package/src/generators/ui/libs/button/generator.js.map +1 -1
  263. package/src/generators/ui/libs/button-group/generator.js +3 -7
  264. package/src/generators/ui/libs/button-group/generator.js.map +1 -1
  265. package/src/generators/ui/libs/calendar/generator.js +3 -7
  266. package/src/generators/ui/libs/calendar/generator.js.map +1 -1
  267. package/src/generators/ui/libs/card/files/lib/hlm-card-action.ts.template +1 -3
  268. package/src/generators/ui/libs/card/files/lib/hlm-card-content.ts.template +1 -3
  269. package/src/generators/ui/libs/card/files/lib/hlm-card-description.ts.template +1 -3
  270. package/src/generators/ui/libs/card/files/lib/hlm-card-footer.ts.template +1 -3
  271. package/src/generators/ui/libs/card/files/lib/hlm-card-header.ts.template +2 -4
  272. package/src/generators/ui/libs/card/files/lib/hlm-card-title.ts.template +1 -3
  273. package/src/generators/ui/libs/card/generator.js +3 -7
  274. package/src/generators/ui/libs/card/generator.js.map +1 -1
  275. package/src/generators/ui/libs/carousel/generator.js +3 -7
  276. package/src/generators/ui/libs/carousel/generator.js.map +1 -1
  277. package/src/generators/ui/libs/checkbox/generator.js +3 -7
  278. package/src/generators/ui/libs/checkbox/generator.js.map +1 -1
  279. package/src/generators/ui/libs/collapsible/generator.js +3 -7
  280. package/src/generators/ui/libs/collapsible/generator.js.map +1 -1
  281. package/src/generators/ui/libs/combobox/generator.js +3 -7
  282. package/src/generators/ui/libs/combobox/generator.js.map +1 -1
  283. package/src/generators/ui/libs/command/generator.js +3 -7
  284. package/src/generators/ui/libs/command/generator.js.map +1 -1
  285. package/src/generators/ui/libs/context-menu/generator.js +3 -7
  286. package/src/generators/ui/libs/context-menu/generator.js.map +1 -1
  287. package/src/generators/ui/libs/date-picker/files/index.ts.template +17 -4
  288. package/src/generators/ui/libs/date-picker/files/lib/hlm-date-picker-anchor.ts.template +28 -0
  289. package/src/generators/ui/libs/date-picker/files/lib/hlm-date-picker-input.ts.template +175 -0
  290. package/src/generators/ui/libs/date-picker/files/lib/hlm-date-picker-multi.ts.template +34 -72
  291. package/src/generators/ui/libs/date-picker/files/lib/hlm-date-picker-trigger.token.ts.template +11 -0
  292. package/src/generators/ui/libs/date-picker/files/lib/hlm-date-picker-trigger.ts.template +87 -0
  293. package/src/generators/ui/libs/date-picker/files/lib/hlm-date-picker.token.ts.template +45 -1
  294. package/src/generators/ui/libs/date-picker/files/lib/hlm-date-picker.ts.template +61 -80
  295. package/src/generators/ui/libs/date-picker/files/lib/hlm-date-range-picker.ts.template +38 -74
  296. package/src/generators/ui/libs/date-picker/generator.js +3 -7
  297. package/src/generators/ui/libs/date-picker/generator.js.map +1 -1
  298. package/src/generators/ui/libs/dialog/generator.js +3 -7
  299. package/src/generators/ui/libs/dialog/generator.js.map +1 -1
  300. package/src/generators/ui/libs/dropdown-menu/generator.js +3 -7
  301. package/src/generators/ui/libs/dropdown-menu/generator.js.map +1 -1
  302. package/src/generators/ui/libs/empty/generator.js +3 -7
  303. package/src/generators/ui/libs/empty/generator.js.map +1 -1
  304. package/src/generators/ui/libs/field/files/lib/hlm-field-error.ts.template +1 -1
  305. package/src/generators/ui/libs/field/generator.js +3 -7
  306. package/src/generators/ui/libs/field/generator.js.map +1 -1
  307. package/src/generators/ui/libs/hover-card/generator.js +3 -7
  308. package/src/generators/ui/libs/hover-card/generator.js.map +1 -1
  309. package/src/generators/ui/libs/icon/generator.js +3 -7
  310. package/src/generators/ui/libs/icon/generator.js.map +1 -1
  311. package/src/generators/ui/libs/input/generator.js +3 -7
  312. package/src/generators/ui/libs/input/generator.js.map +1 -1
  313. package/src/generators/ui/libs/input-group/generator.js +3 -7
  314. package/src/generators/ui/libs/input-group/generator.js.map +1 -1
  315. package/src/generators/ui/libs/input-otp/generator.js +3 -7
  316. package/src/generators/ui/libs/input-otp/generator.js.map +1 -1
  317. package/src/generators/ui/libs/item/generator.js +3 -7
  318. package/src/generators/ui/libs/item/generator.js.map +1 -1
  319. package/src/generators/ui/libs/kbd/generator.js +3 -7
  320. package/src/generators/ui/libs/kbd/generator.js.map +1 -1
  321. package/src/generators/ui/libs/label/generator.js +3 -7
  322. package/src/generators/ui/libs/label/generator.js.map +1 -1
  323. package/src/generators/ui/libs/menubar/generator.js +3 -7
  324. package/src/generators/ui/libs/menubar/generator.js.map +1 -1
  325. package/src/generators/ui/libs/native-select/generator.js +3 -7
  326. package/src/generators/ui/libs/native-select/generator.js.map +1 -1
  327. package/src/generators/ui/libs/navigation-menu/generator.js +3 -7
  328. package/src/generators/ui/libs/navigation-menu/generator.js.map +1 -1
  329. package/src/generators/ui/libs/pagination/generator.js +3 -7
  330. package/src/generators/ui/libs/pagination/generator.js.map +1 -1
  331. package/src/generators/ui/libs/popover/generator.js +3 -7
  332. package/src/generators/ui/libs/popover/generator.js.map +1 -1
  333. package/src/generators/ui/libs/progress/generator.js +3 -7
  334. package/src/generators/ui/libs/progress/generator.js.map +1 -1
  335. package/src/generators/ui/libs/radio-group/generator.js +3 -7
  336. package/src/generators/ui/libs/radio-group/generator.js.map +1 -1
  337. package/src/generators/ui/libs/resizable/generator.js +3 -7
  338. package/src/generators/ui/libs/resizable/generator.js.map +1 -1
  339. package/src/generators/ui/libs/scroll-area/generator.js +3 -7
  340. package/src/generators/ui/libs/scroll-area/generator.js.map +1 -1
  341. package/src/generators/ui/libs/select/generator.js +3 -7
  342. package/src/generators/ui/libs/select/generator.js.map +1 -1
  343. package/src/generators/ui/libs/separator/generator.js +3 -7
  344. package/src/generators/ui/libs/separator/generator.js.map +1 -1
  345. package/src/generators/ui/libs/sheet/generator.js +3 -7
  346. package/src/generators/ui/libs/sheet/generator.js.map +1 -1
  347. package/src/generators/ui/libs/sidebar/generator.js +3 -7
  348. package/src/generators/ui/libs/sidebar/generator.js.map +1 -1
  349. package/src/generators/ui/libs/skeleton/generator.js +3 -7
  350. package/src/generators/ui/libs/skeleton/generator.js.map +1 -1
  351. package/src/generators/ui/libs/slider/generator.js +3 -7
  352. package/src/generators/ui/libs/slider/generator.js.map +1 -1
  353. package/src/generators/ui/libs/sonner/generator.js +3 -7
  354. package/src/generators/ui/libs/sonner/generator.js.map +1 -1
  355. package/src/generators/ui/libs/spinner/generator.js +3 -7
  356. package/src/generators/ui/libs/spinner/generator.js.map +1 -1
  357. package/src/generators/ui/libs/switch/generator.js +3 -7
  358. package/src/generators/ui/libs/switch/generator.js.map +1 -1
  359. package/src/generators/ui/libs/table/generator.js +3 -7
  360. package/src/generators/ui/libs/table/generator.js.map +1 -1
  361. package/src/generators/ui/libs/tabs/generator.js +3 -7
  362. package/src/generators/ui/libs/tabs/generator.js.map +1 -1
  363. package/src/generators/ui/libs/textarea/generator.js +3 -7
  364. package/src/generators/ui/libs/textarea/generator.js.map +1 -1
  365. package/src/generators/ui/libs/toggle/generator.js +3 -7
  366. package/src/generators/ui/libs/toggle/generator.js.map +1 -1
  367. package/src/generators/ui/libs/toggle-group/generator.js +3 -7
  368. package/src/generators/ui/libs/toggle-group/generator.js.map +1 -1
  369. package/src/generators/ui/libs/tooltip/generator.js +3 -7
  370. package/src/generators/ui/libs/tooltip/generator.js.map +1 -1
  371. package/src/generators/ui/libs/typography/generator.js +3 -7
  372. package/src/generators/ui/libs/typography/generator.js.map +1 -1
  373. package/src/generators/ui/libs/utils/generator.js +3 -7
  374. package/src/generators/ui/libs/utils/generator.js.map +1 -1
  375. package/src/generators/ui/primitive-deps.js +4 -8
  376. package/src/generators/ui/primitive-deps.js.map +1 -1
  377. package/src/generators/ui/primitives.js +0 -2
  378. package/src/generators/ui/style-luma.css +9 -4
  379. package/src/generators/ui/style-lyra.css +10 -5
  380. package/src/generators/ui/style-maia.css +10 -5
  381. package/src/generators/ui/style-mira.css +10 -5
  382. package/src/generators/ui/style-nova.css +10 -5
  383. package/src/generators/ui/style-vega.css +10 -5
  384. package/src/generators/ui/supported-ui-libraries.json +140 -140
  385. package/src/index.js +5 -11
  386. package/src/index.js.map +1 -1
  387. package/src/registry/index.js +1 -4
  388. package/src/registry/index.js.map +1 -1
  389. package/src/registry/schema.js +117 -120
  390. package/src/registry/schema.js.map +1 -1
  391. package/src/utils/config.js +19 -25
  392. package/src/utils/config.js.map +1 -1
  393. package/src/utils/get-project-names.js +3 -7
  394. package/src/utils/get-project-names.js.map +1 -1
  395. package/src/utils/get-tailwind-version.js +4 -9
  396. package/src/utils/get-tailwind-version.js.map +1 -1
  397. package/src/utils/hlm-class.js +9 -13
  398. package/src/utils/hlm-class.js.map +1 -1
  399. package/src/utils/import-alias.js +1 -4
  400. package/src/utils/import-alias.js.map +1 -1
  401. package/src/utils/tsconfig.js +5 -8
  402. package/src/utils/tsconfig.js.map +1 -1
  403. package/src/utils/version-utils.js +6 -9
  404. package/src/utils/version-utils.js.map +1 -1
  405. package/src/utils/visit-files.js +3 -6
  406. package/src/utils/visit-files.js.map +1 -1
@@ -3,9 +3,7 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmCardContent]',
6
- host: {
7
- 'data-slot': 'card-content',
8
- },
6
+ host: { 'data-slot': 'card-content' },
9
7
  })
10
8
  export class HlmCardContent {
11
9
  constructor() {
@@ -3,9 +3,7 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmCardDescription]',
6
- host: {
7
- 'data-slot': 'card-description',
8
- },
6
+ host: { 'data-slot': 'card-description' },
9
7
  })
10
8
  export class HlmCardDescription {
11
9
  constructor() {
@@ -3,9 +3,7 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmCardFooter],hlm-card-footer',
6
- host: {
7
- 'data-slot': 'card-footer',
8
- },
6
+ host: { 'data-slot': 'card-footer' },
9
7
  })
10
8
  export class HlmCardFooter {
11
9
  constructor() {
@@ -3,15 +3,13 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmCardHeader],hlm-card-header',
6
- host: {
7
- 'data-slot': 'card-header',
8
- },
6
+ host: { 'data-slot': 'card-header' },
9
7
  })
10
8
  export class HlmCardHeader {
11
9
  constructor() {
12
10
  classes(
13
11
  () =>
14
- `spartan-card-header group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]`,
12
+ 'spartan-card-header group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]',
15
13
  );
16
14
  }
17
15
  }
@@ -3,9 +3,7 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmCardTitle]',
6
- host: {
7
- 'data-slot': 'card-title',
8
- },
6
+ host: { 'data-slot': 'card-title' },
9
7
  })
10
8
  export class HlmCardTitle {
11
9
  constructor() {
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generator = generator;
4
- const tslib_1 = require("tslib");
5
- const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
- async function generator(tree, options) {
7
- return await (0, generator_1.default)(tree, { ...options, name: 'card' });
1
+ import hlmBaseGenerator from '../../../base/generator';
2
+ export async function generator(tree, options) {
3
+ return await hlmBaseGenerator(tree, { ...options, name: 'card' });
8
4
  }
9
5
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/card/generator.ts"],"names":[],"mappings":";;AAIA,8BAEC;;AALD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/card/generator.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAGvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACnE,CAAC"}
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generator = generator;
4
- const tslib_1 = require("tslib");
5
- const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
- async function generator(tree, options) {
7
- return await (0, generator_1.default)(tree, { ...options, name: 'carousel' });
1
+ import hlmBaseGenerator from '../../../base/generator';
2
+ export async function generator(tree, options) {
3
+ return await hlmBaseGenerator(tree, { ...options, name: 'carousel' });
8
4
  }
9
5
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/carousel/generator.ts"],"names":[],"mappings":";;AAIA,8BAEC;;AALD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/carousel/generator.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAGvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACvE,CAAC"}
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generator = generator;
4
- const tslib_1 = require("tslib");
5
- const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
- async function generator(tree, options) {
7
- return await (0, generator_1.default)(tree, { ...options, name: 'checkbox' });
1
+ import hlmBaseGenerator from '../../../base/generator';
2
+ export async function generator(tree, options) {
3
+ return await hlmBaseGenerator(tree, { ...options, name: 'checkbox' });
8
4
  }
9
5
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/checkbox/generator.ts"],"names":[],"mappings":";;AAIA,8BAEC;;AALD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/checkbox/generator.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAGvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACvE,CAAC"}
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generator = generator;
4
- const tslib_1 = require("tslib");
5
- const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
- async function generator(tree, options) {
7
- return await (0, generator_1.default)(tree, { ...options, name: 'collapsible' });
1
+ import hlmBaseGenerator from '../../../base/generator';
2
+ export async function generator(tree, options) {
3
+ return await hlmBaseGenerator(tree, { ...options, name: 'collapsible' });
8
4
  }
9
5
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/collapsible/generator.ts"],"names":[],"mappings":";;AAIA,8BAEC;;AALD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/collapsible/generator.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAGvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AAC1E,CAAC"}
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generator = generator;
4
- const tslib_1 = require("tslib");
5
- const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
- async function generator(tree, options) {
7
- return await (0, generator_1.default)(tree, { ...options, name: 'combobox' });
1
+ import hlmBaseGenerator from '../../../base/generator';
2
+ export async function generator(tree, options) {
3
+ return await hlmBaseGenerator(tree, { ...options, name: 'combobox' });
8
4
  }
9
5
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/combobox/generator.ts"],"names":[],"mappings":";;AAIA,8BAEC;;AALD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/combobox/generator.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAGvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACvE,CAAC"}
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generator = generator;
4
- const tslib_1 = require("tslib");
5
- const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
- async function generator(tree, options) {
7
- return await (0, generator_1.default)(tree, { ...options, name: 'command' });
1
+ import hlmBaseGenerator from '../../../base/generator';
2
+ export async function generator(tree, options) {
3
+ return await hlmBaseGenerator(tree, { ...options, name: 'command' });
8
4
  }
9
5
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/command/generator.ts"],"names":[],"mappings":";;AAIA,8BAEC;;AALD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/command/generator.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAGvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AACtE,CAAC"}
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generator = generator;
4
- const tslib_1 = require("tslib");
5
- const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
- async function generator(tree, options) {
7
- return await (0, generator_1.default)(tree, { ...options, name: 'context-menu' });
1
+ import hlmBaseGenerator from '../../../base/generator';
2
+ export async function generator(tree, options) {
3
+ return await hlmBaseGenerator(tree, { ...options, name: 'context-menu' });
8
4
  }
9
5
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/context-menu/generator.ts"],"names":[],"mappings":";;AAIA,8BAEC;;AALD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/context-menu/generator.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAGvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AAC3E,CAAC"}
@@ -1,13 +1,26 @@
1
1
  import { HlmDatePicker } from './lib/hlm-date-picker';
2
+ import { HlmDatePickerAnchor } from './lib/hlm-date-picker-anchor';
3
+ import { HlmDatePickerInput } from './lib/hlm-date-picker-input';
2
4
  import { HlmDatePickerMulti } from './lib/hlm-date-picker-multi';
5
+ import { HlmDatePickerTrigger } from './lib/hlm-date-picker-trigger';
3
6
  import { HlmDateRangePicker } from './lib/hlm-date-range-picker';
4
7
 
5
- export * from './lib/hlm-date-picker-multi.token';
6
- export * from './lib/hlm-date-picker.token';
7
-
8
8
  export * from './lib/hlm-date-picker';
9
+ export * from './lib/hlm-date-picker-anchor';
10
+ export * from './lib/hlm-date-picker-input';
9
11
  export * from './lib/hlm-date-picker-multi';
12
+ export * from './lib/hlm-date-picker-multi.token';
13
+ export * from './lib/hlm-date-picker-trigger';
14
+ export * from './lib/hlm-date-picker-trigger.token';
15
+ export * from './lib/hlm-date-picker.token';
10
16
  export * from './lib/hlm-date-range-picker';
11
17
  export * from './lib/hlm-date-range-picker.token';
12
18
 
13
- export const HlmDatePickerImports = [HlmDatePicker, HlmDatePickerMulti, HlmDateRangePicker] as const;
19
+ export const HlmDatePickerImports = [
20
+ HlmDatePicker,
21
+ HlmDatePickerAnchor,
22
+ HlmDatePickerInput,
23
+ HlmDatePickerMulti,
24
+ HlmDateRangePicker,
25
+ HlmDatePickerTrigger,
26
+ ] as const;
@@ -0,0 +1,28 @@
1
+ import { Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';
2
+ import { BrnDialog } from '@spartan-ng/brain/dialog';
3
+ import { BrnPopover } from '@spartan-ng/brain/popover';
4
+
5
+ @Directive({ selector: '[hlmDatePickerAnchor]' })
6
+ export class HlmDatePickerAnchor {
7
+ private readonly _host = inject(ElementRef, { host: true });
8
+ private readonly _brnDialog = inject(BrnDialog, { optional: true });
9
+
10
+ public readonly hlmDatePickerAnchorFor = input<BrnPopover | undefined>(undefined, {
11
+ alias: 'hlmDatePickerAnchorFor',
12
+ });
13
+
14
+ constructor() {
15
+ effect(() => {
16
+ const brnDialog = this.hlmDatePickerAnchorFor();
17
+ untracked(() => {
18
+ if (!brnDialog) return;
19
+ brnDialog.mutableAttachTo.set(this._host.nativeElement);
20
+ brnDialog.mutableCloseOnOutsidePointerEvents.set(true);
21
+ });
22
+ });
23
+
24
+ if (!this._brnDialog) return;
25
+ this._brnDialog.mutableAttachTo.set(this._host.nativeElement);
26
+ this._brnDialog.mutableCloseOnOutsidePointerEvents.set(true);
27
+ }
28
+ }
@@ -0,0 +1,175 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, linkedSignal } from '@angular/core';
3
+ import { NgIcon, provideIcons } from '@ng-icons/core';
4
+ import { lucideCalendar, lucideX } from '@ng-icons/lucide';
5
+ import { HlmButtonImports } from '<%- importAlias %>/button';
6
+ import { HlmInputGroupImports } from '<%- importAlias %>/input-group';
7
+ import { HlmDatePickerAnchor } from './hlm-date-picker-anchor';
8
+ import { HlmDatePickerTriggerBase, provideHlmDatePickerTrigger } from './hlm-date-picker-trigger.token';
9
+ import { injectHlmDatePicker, injectHlmDatePickerConfig } from './hlm-date-picker.token';
10
+
11
+ @Component({
12
+ selector: 'hlm-date-picker-input',
13
+ imports: [HlmInputGroupImports, HlmButtonImports, HlmDatePickerAnchor, NgIcon],
14
+ providers: [provideIcons({ lucideCalendar, lucideX }), provideHlmDatePickerTrigger(HlmDatePickerInput)],
15
+ changeDetection: ChangeDetectionStrategy.OnPush,
16
+ template: `
17
+ <hlm-input-group hlmDatePickerAnchor [hlmDatePickerAnchorFor]="_popover()">
18
+ <input
19
+ hlmInputGroupInput
20
+ [value]="_inputValue()"
21
+ [id]="inputId()"
22
+ [placeholder]="placeholder()"
23
+ [disabled]="_disabled()"
24
+ [forceInvalid]="forceInvalid()"
25
+ (click)="_handleClick()"
26
+ (keydown.arrowDown)="_open()"
27
+ (keydown.enter)="_handleEnter($event)"
28
+ (input)="_handleInputChange($event)"
29
+ (blur)="_commitDate()"
30
+ />
31
+ <hlm-input-group-addon align="inline-end">
32
+ @if (_showClearButton()) {
33
+ <button
34
+ hlmInputGroupButton
35
+ size="icon-xs"
36
+ variant="ghost"
37
+ [attr.aria-label]="clearAriaLabel()"
38
+ (click)="_clear()"
39
+ [disabled]="_disabled()"
40
+ >
41
+ <ng-icon name="lucideX" />
42
+ </button>
43
+ }
44
+ <button
45
+ hlmInputGroupButton
46
+ size="icon-xs"
47
+ [attr.aria-label]="calendarAriaLabel()"
48
+ (click)="_popover().open()"
49
+ [disabled]="_disabled()"
50
+ >
51
+ <ng-icon name="lucideCalendar" />
52
+ </button>
53
+ </hlm-input-group-addon>
54
+ </hlm-input-group>
55
+ `,
56
+ })
57
+ export class HlmDatePickerInput<T> implements HlmDatePickerTriggerBase {
58
+ private static _nextId = 0;
59
+ private readonly _datePicker = injectHlmDatePicker<T>();
60
+ private readonly _config = injectHlmDatePickerConfig<T>();
61
+
62
+ protected readonly _popover = this._datePicker.popover;
63
+ protected readonly _disabled = this._datePicker.disabledState;
64
+
65
+ public readonly inputId = input(`hlm-date-picker-input-${HlmDatePickerInput._nextId++}`);
66
+
67
+ public readonly placeholder = input('');
68
+
69
+ public readonly inputValue = input<string>('');
70
+
71
+ /**
72
+ * Parses input text into a date value. Return `undefined` for invalid
73
+ * input - the picker's date is cleared while the text is preserved so
74
+ * the user can fix it.
75
+ *
76
+ * Defaults to `parseDate` from `HlmDatePickerConfig`.
77
+ */
78
+ public readonly parseDate = input<(value: string) => T | undefined>(this._config.parseDate);
79
+
80
+ public readonly forceInvalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });
81
+
82
+ /** Show a clear button that resets the input and picker date. Hidden when empty. */
83
+ public readonly showClear = input<boolean, BooleanInput>(true, { transform: booleanAttribute });
84
+
85
+ /** Open the popover on input click. */
86
+ public readonly openOnClick = input<boolean, BooleanInput>(false, { transform: booleanAttribute });
87
+
88
+ /** Accessible label for the clear button. */
89
+ public readonly clearAriaLabel = input<string>('Clear date');
90
+
91
+ /** Accessible label for the calendar trigger button. */
92
+ public readonly calendarAriaLabel = input<string>('Open calendar');
93
+
94
+ /** @internal Id used by the trigger contract for labeling. */
95
+ public readonly triggerId = this.inputId;
96
+
97
+ /**
98
+ * Text shown in the input. Mirrors the picker's `formattedDate` and the
99
+ * parent's `inputValue`, and accepts user writes via `_handleInputChange`.
100
+ * Commits only happen on blur / Enter, so in-progress text isn't clobbered.
101
+ */
102
+ protected readonly _inputValue = linkedSignal<{ formatted: string | undefined; inputValue: string }, string>({
103
+ source: () => ({
104
+ formatted: this._datePicker.formattedDate(),
105
+ inputValue: this.inputValue(),
106
+ }),
107
+ computation: (source, previous) => {
108
+ // First render: prefer formatted, fall back to inputValue.
109
+ if (previous === undefined) {
110
+ return source.formatted ?? source.inputValue;
111
+ }
112
+
113
+ // Picker's formatted date changed - snap to canonical format.
114
+ if (source.formatted !== previous.source.formatted) {
115
+ if (source.formatted !== undefined) {
116
+ return source.formatted;
117
+ }
118
+ // Cleared externally vs. user has invalid text in flight: only
119
+ // mirror the clear when the displayed text was in sync.
120
+ return previous.value === previous.source.formatted ? '' : previous.value;
121
+ }
122
+
123
+ // Parent updated inputValue - reflect it.
124
+ if (source.inputValue !== previous.source.inputValue) {
125
+ return source.inputValue;
126
+ }
127
+
128
+ return previous.value;
129
+ },
130
+ });
131
+
132
+ protected _handleInputChange(event: Event) {
133
+ const text = (event.target as HTMLInputElement).value;
134
+ this._inputValue.set(text);
135
+ }
136
+
137
+ protected readonly _showClearButton = computed(() => this.showClear() && this._inputValue().length > 0);
138
+
139
+ protected _clear() {
140
+ this._inputValue.set('');
141
+ this._datePicker.updateDate?.(undefined);
142
+ this._datePicker.touched?.();
143
+ }
144
+
145
+ protected _handleEnter(event: Event) {
146
+ event.preventDefault();
147
+ this._commitDate();
148
+ this._popover().close();
149
+ }
150
+
151
+ protected _commitDate() {
152
+ const value = this._inputValue();
153
+
154
+ if (!value) {
155
+ this._datePicker.updateDate?.(undefined);
156
+ this._datePicker.touched?.();
157
+ return;
158
+ }
159
+
160
+ // Invalid parse: clear the picker date, keep the text so the user can fix it.
161
+ const parsed = this.parseDate()(value);
162
+ this._datePicker.updateDate?.(parsed ?? undefined);
163
+ this._datePicker.touched?.();
164
+ }
165
+
166
+ protected _open() {
167
+ this._popover().open();
168
+ }
169
+
170
+ protected _handleClick() {
171
+ if (this.openOnClick()) {
172
+ this._open();
173
+ }
174
+ }
175
+ }
@@ -4,26 +4,25 @@ import {
4
4
  ChangeDetectionStrategy,
5
5
  Component,
6
6
  computed,
7
+ contentChild,
7
8
  forwardRef,
8
- inject,
9
9
  input,
10
10
  linkedSignal,
11
11
  numberAttribute,
12
12
  output,
13
13
  signal,
14
+ viewChild,
14
15
  } from '@angular/core';
15
16
  import { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
16
- import { provideIcons } from '@ng-icons/core';
17
- import { lucideChevronDown } from '@ng-icons/lucide';
18
17
  import type { BrnDialogState } from '@spartan-ng/brain/dialog';
19
- import { BrnFieldControl, BrnFieldControlDescribedBy, provideBrnLabelable } from '@spartan-ng/brain/field';
18
+ import { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';
20
19
  import type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';
20
+ import { BrnPopover } from '@spartan-ng/brain/popover';
21
21
  import { HlmCalendarMulti } from '<%- importAlias %>/calendar';
22
- import { HlmIconImports } from '<%- importAlias %>/icon';
23
22
  import { HlmPopoverImports } from '<%- importAlias %>/popover';
24
- import { hlm } from '<%- importAlias %>/utils';
25
- import type { ClassValue } from 'clsx';
26
23
  import { injectHlmDatePickerMultiConfig } from './hlm-date-picker-multi.token';
24
+ import { HlmDatePickerTriggerToken } from './hlm-date-picker-trigger.token';
25
+ import { HlmDatePickerBase, provideHlmDatePicker } from './hlm-date-picker.token';
27
26
 
28
27
  export const HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR = {
29
28
  provide: NG_VALUE_ACCESSOR,
@@ -31,21 +30,17 @@ export const HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR = {
31
30
  multi: true,
32
31
  };
33
32
 
34
- let nextId = 0;
35
-
36
33
  @Component({
37
34
  selector: 'hlm-date-picker-multi',
38
- imports: [HlmIconImports, HlmPopoverImports, HlmCalendarMulti, BrnFieldControlDescribedBy],
35
+ imports: [HlmPopoverImports, HlmCalendarMulti],
39
36
  providers: [
40
37
  HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR,
41
- provideIcons({ lucideChevronDown }),
38
+ provideHlmDatePicker(HlmDatePickerMulti),
42
39
  provideBrnLabelable(HlmDatePickerMulti),
43
40
  ],
44
41
  changeDetection: ChangeDetectionStrategy.OnPush,
45
42
  hostDirectives: [BrnFieldControl],
46
- host: {
47
- class: 'block',
48
- },
43
+ host: { class: 'block' },
49
44
  template: `
50
45
  <hlm-popover
51
46
  sideOffset="5"
@@ -53,31 +48,10 @@ let nextId = 0;
53
48
  (stateChanged)="_popoverState.set($event)"
54
49
  (closed)="_onTouched?.()"
55
50
  >
56
- <button
57
- [id]="buttonId()"
58
- type="button"
59
- [class]="_computedClass()"
60
- [disabled]="_mutableDisabled()"
61
- [attr.aria-invalid]="_ariaInvalid()"
62
- [attr.data-invalid]="_ariaInvalid()"
63
- [attr.data-dirty]="_dirty?.() ? 'true' : null"
64
- [attr.data-touched]="_touched?.() ? 'true' : null"
65
- [attr.data-matches-spartan-invalid]="_spartanInvalid?.() ? 'true' : null"
66
- hlmPopoverTrigger
67
- brnFieldControlDescribedBy
68
- >
69
- <span class="truncate">
70
- @if (_formattedDate(); as formattedDate) {
71
- {{ formattedDate }}
72
- } @else {
73
- <ng-content />
74
- }
75
- </span>
76
-
77
- <ng-icon hlm size="sm" name="lucideChevronDown" />
78
- </button>
51
+ <ng-content />
79
52
 
80
53
  <hlm-popover-content class="w-fit p-0" *hlmPopoverPortal="let ctx">
54
+ <ng-content select="[hlmDatePickerHeader]" />
81
55
  <hlm-calendar-multi
82
56
  calendarClass="border-0 rounded-none"
83
57
  [date]="_mutableDate()"
@@ -86,43 +60,20 @@ let nextId = 0;
86
60
  [max]="max()"
87
61
  [minSelection]="minSelection()"
88
62
  [maxSelection]="maxSelection()"
89
- [disabled]="_mutableDisabled()"
63
+ [disabled]="_disabled()"
90
64
  (dateChange)="_handleChange($event)"
91
65
  />
66
+ <ng-content select="[hlmDatePickerFooter]" />
92
67
  </hlm-popover-content>
93
68
  </hlm-popover>
94
69
  `,
95
70
  })
96
- export class HlmDatePickerMulti<T> implements ControlValueAccessor {
71
+ export class HlmDatePickerMulti<T> implements HlmDatePickerBase<T>, ControlValueAccessor {
97
72
  private readonly _config = injectHlmDatePickerMultiConfig<T>();
98
- private readonly _fieldControl = inject(BrnFieldControl, { optional: true });
99
-
100
- protected readonly _spartanInvalid = this._fieldControl?.spartanInvalid;
101
- protected readonly _dirty = this._fieldControl?.dirty;
102
- protected readonly _touched = this._fieldControl?.touched;
103
- private readonly _invalid = this._fieldControl?.invalid;
104
-
105
- protected readonly _errorStateClass = computed(() =>
106
- this._spartanInvalid?.()
107
- ? 'border-destructive focus-visible:border-destructive focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40'
108
- : '',
109
- );
110
- protected readonly _ariaInvalid = computed(() => (this._invalid?.() ? 'true' : null));
111
-
112
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
113
- protected readonly _computedClass = computed(() =>
114
- hlm(
115
- 'ring-offset-background border-input bg-background hover:bg-accent dark:bg-input/30 dark:hover:bg-input/50 inline-flex h-9 w-[280px] cursor-default items-center justify-between gap-2 rounded-md border px-3 py-2 text-left text-sm font-normal whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50',
116
- 'focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',
117
- 'disabled:pointer-events-none disabled:opacity-50',
118
- '[&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
119
- this._errorStateClass(),
120
- this.userClass(),
121
- ),
122
- );
123
-
124
- /** The id of the button that opens the date picker. */
125
- public readonly buttonId = input<string>(`hlm-date-picker-multi-${++nextId}`);
73
+
74
+ public readonly popover = viewChild.required(BrnPopover);
75
+
76
+ private readonly _trigger = contentChild(HlmDatePickerTriggerToken);
126
77
 
127
78
  /** Show dropdowns to navigate between months or years. */
128
79
  public readonly captionLayout = input<'dropdown' | 'label' | 'dropdown-months' | 'dropdown-years'>('label');
@@ -166,16 +117,21 @@ export class HlmDatePickerMulti<T> implements ControlValueAccessor {
166
117
 
167
118
  protected readonly _popoverState = signal<BrnDialogState | null>(null);
168
119
 
169
- protected readonly _mutableDisabled = linkedSignal(this.disabled);
120
+ protected readonly _disabled = linkedSignal(this.disabled);
121
+
122
+ /** @internal The disabled state as a readonly signal */
123
+ public readonly disabledState = this._disabled.asReadonly();
170
124
 
171
- protected readonly _formattedDate = computed(() => {
125
+ public readonly formattedDate = computed(() => {
172
126
  const dates = this._mutableDate();
173
127
  return dates ? this.formatDates()(dates) : undefined;
174
128
  });
175
129
 
176
130
  public readonly dateChange = output<T[]>();
177
131
 
178
- public readonly labelableId = this.buttonId;
132
+ public readonly labelableId = computed(() => this._trigger()?.triggerId());
133
+
134
+ public readonly hasDate = computed(() => !!this._mutableDate()?.length);
179
135
 
180
136
  protected _onChange?: ChangeFn<T[]>;
181
137
  protected _onTouched?: TouchFn;
@@ -183,7 +139,7 @@ export class HlmDatePickerMulti<T> implements ControlValueAccessor {
183
139
  protected _handleChange(value: T[] | undefined) {
184
140
  if (value === undefined) return;
185
141
 
186
- if (this._mutableDisabled()) return;
142
+ if (this._disabled()) return;
187
143
  const transformedDate = value !== undefined ? this.transformDates()(value) : value;
188
144
 
189
145
  this._mutableDate.set(transformedDate);
@@ -209,7 +165,7 @@ export class HlmDatePickerMulti<T> implements ControlValueAccessor {
209
165
  }
210
166
 
211
167
  public setDisabledState(isDisabled: boolean): void {
212
- this._mutableDisabled.set(isDisabled);
168
+ this._disabled.set(isDisabled);
213
169
  }
214
170
 
215
171
  public open() {
@@ -219,4 +175,10 @@ export class HlmDatePickerMulti<T> implements ControlValueAccessor {
219
175
  public close() {
220
176
  this._popoverState.set('closed');
221
177
  }
178
+
179
+ public reset() {
180
+ this._mutableDate.set(undefined);
181
+ this._onChange?.([]);
182
+ this.dateChange.emit([]);
183
+ }
222
184
  }
@@ -0,0 +1,11 @@
1
+ import { type ExistingProvider, InjectionToken, type Signal, type Type } from '@angular/core';
2
+
3
+ export interface HlmDatePickerTriggerBase {
4
+ triggerId: Signal<string>;
5
+ }
6
+
7
+ export const HlmDatePickerTriggerToken = new InjectionToken<HlmDatePickerTriggerBase>('HlmDatePickerTriggerToken');
8
+
9
+ export function provideHlmDatePickerTrigger(instance: Type<HlmDatePickerTriggerBase>): ExistingProvider {
10
+ return { provide: HlmDatePickerTriggerToken, useExisting: instance };
11
+ }