@3ddv/software-division-components 2.0.0 → 2.0.1

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 (379) hide show
  1. package/package.json +43 -67
  2. package/styles.css +2 -46
  3. package/.postcssrc.json +0 -5
  4. package/.storybook/main.ts +0 -78
  5. package/.storybook/manager-head.html +0 -1
  6. package/.storybook/preview.ts +0 -30
  7. package/.storybook/tsconfig.json +0 -25
  8. package/.storybook/typings.d.ts +0 -4
  9. package/CHANGELOG.md +0 -8
  10. package/LICENSE.md +0 -21
  11. package/backoffice/checkbox/checkbox.component.css +0 -193
  12. package/backoffice/checkbox/checkbox.component.html +0 -23
  13. package/backoffice/checkbox/checkbox.component.ts +0 -252
  14. package/backoffice/checkbox/index.ts +0 -1
  15. package/backoffice/checkbox/ng-package.json +0 -1
  16. package/backoffice/checkbox/public-api.ts +0 -1
  17. package/backoffice/checkbox/story/checkbox.stories.ts +0 -304
  18. package/backoffice/datepicker/datepicker.component.css +0 -262
  19. package/backoffice/datepicker/datepicker.component.html +0 -40
  20. package/backoffice/datepicker/datepicker.component.ts +0 -366
  21. package/backoffice/datepicker/index.ts +0 -1
  22. package/backoffice/datepicker/ng-package.json +0 -1
  23. package/backoffice/datepicker/public-api.ts +0 -2
  24. package/backoffice/datepicker/story/datepicker.stories.ts +0 -32
  25. package/backoffice/datepicker/ui/ui-calendar-helm/src/index.ts +0 -14
  26. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.ts +0 -183
  27. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.ts +0 -171
  28. package/backoffice/datepicker/ui/ui-date-picker-helm/src/index.ts +0 -16
  29. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.ts +0 -43
  30. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.ts +0 -177
  31. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.ts +0 -43
  32. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.ts +0 -167
  33. package/backoffice/datepicker/ui/ui-icon-helm/src/index.ts +0 -11
  34. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +0 -20
  35. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.ts +0 -35
  36. package/backoffice/datepicker/ui/ui-popover-helm/src/index.ts +0 -15
  37. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.ts +0 -19
  38. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.ts +0 -30
  39. package/backoffice/index.ts +0 -1
  40. package/backoffice/input/index.ts +0 -1
  41. package/backoffice/input/input.component.css +0 -319
  42. package/backoffice/input/input.component.html +0 -51
  43. package/backoffice/input/input.component.ts +0 -497
  44. package/backoffice/input/ng-package.json +0 -1
  45. package/backoffice/input/public-api.ts +0 -2
  46. package/backoffice/input/story/input.stories.ts +0 -243
  47. package/backoffice/radio/index.ts +0 -1
  48. package/backoffice/radio/ng-package.json +0 -1
  49. package/backoffice/radio/public-api.ts +0 -1
  50. package/backoffice/radio/radio.component.css +0 -143
  51. package/backoffice/radio/radio.component.html +0 -15
  52. package/backoffice/radio/radio.component.ts +0 -154
  53. package/backoffice/radio/story/radio.stories.ts +0 -287
  54. package/backoffice/table/_components/pagination/pagination.component.css +0 -117
  55. package/backoffice/table/_components/pagination/pagination.component.html +0 -55
  56. package/backoffice/table/_components/pagination/pagination.component.ts +0 -79
  57. package/backoffice/table/_components/selection-table-head/selection-table-head.component.css +0 -0
  58. package/backoffice/table/_components/selection-table-head/selection-table-head.component.html +0 -6
  59. package/backoffice/table/_components/selection-table-head/selection-table-head.component.ts +0 -36
  60. package/backoffice/table/_components/selection-table-row/selection-table-row.component.css +0 -0
  61. package/backoffice/table/_components/selection-table-row/selection-table-row.component.html +0 -5
  62. package/backoffice/table/_components/selection-table-row/selection-table-row.component.ts +0 -12
  63. package/backoffice/table/_components/sort-header-button/sort-header-button.component.css +0 -14
  64. package/backoffice/table/_components/sort-header-button/sort-header-button.component.html +0 -11
  65. package/backoffice/table/_components/sort-header-button/sort-header-button.component.ts +0 -55
  66. package/backoffice/table/index.ts +0 -1
  67. package/backoffice/table/ng-package.json +0 -1
  68. package/backoffice/table/public-api.ts +0 -6
  69. package/backoffice/table/story/table.stories.ts +0 -364
  70. package/backoffice/table/table.component.css +0 -172
  71. package/backoffice/table/table.component.html +0 -53
  72. package/backoffice/table/table.component.ts +0 -347
  73. package/backoffice/table/ui/ui-icon-helm/src/index.ts +0 -11
  74. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +0 -20
  75. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.ts +0 -35
  76. package/backoffice/table/ui/ui-table-helm/src/index.ts +0 -13
  77. package/backoffice/table/ui/ui-table-helm/src/lib/hlm-table.ts +0 -220
  78. package/components.json +0 -3
  79. package/dist/styles.css +0 -2
  80. package/documentation.json +0 -30473
  81. package/dvm/cart/cart.component.css +0 -103
  82. package/dvm/cart/cart.component.html +0 -31
  83. package/dvm/cart/cart.component.ts +0 -49
  84. package/dvm/cart/cart.stories.ts +0 -370
  85. package/dvm/cart/cart.types.ts +0 -8
  86. package/dvm/cart/index.ts +0 -2
  87. package/dvm/cart/ng-package.json +0 -1
  88. package/dvm/cart/public-api.ts +0 -8
  89. package/dvm/cart/seat-list.component.css +0 -281
  90. package/dvm/cart/seat-list.component.html +0 -85
  91. package/dvm/cart/seat-list.component.ts +0 -76
  92. package/dvm/cart/seat-list.stories.ts +0 -337
  93. package/dvm/cart-item/cart-item.component.html +0 -1
  94. package/dvm/cart-item/cart-item.component.ts +0 -8
  95. package/dvm/cart-item/cart-item.service.ts +0 -8
  96. package/dvm/cart-item/cart.stories.ts +0 -31
  97. package/dvm/cart-item/index.ts +0 -1
  98. package/dvm/cart-item/ng-package.json +0 -1
  99. package/dvm/cart-item/public-api.ts +0 -6
  100. package/dvm/index.ts +0 -1
  101. package/dvm/legend/index.ts +0 -1
  102. package/dvm/legend/legend.component.css +0 -49
  103. package/dvm/legend/legend.component.html +0 -8
  104. package/dvm/legend/legend.component.ts +0 -41
  105. package/dvm/legend/legend.stories.ts +0 -16
  106. package/dvm/legend/ng-package.json +0 -1
  107. package/dvm/legend/public-api.ts +0 -7
  108. package/dvm/legend/types.ts +0 -6
  109. package/dvm/legend/ui/legend-elements/index.ts +0 -1
  110. package/dvm/legend/ui/legend-elements/legend-elements.component.css +0 -49
  111. package/dvm/legend/ui/legend-elements/legend-elements.component.html +0 -8
  112. package/dvm/legend/ui/legend-elements/legend-elements.component.ts +0 -41
  113. package/dvm/loader/index.ts +0 -1
  114. package/dvm/loader/loader.component.html +0 -1
  115. package/dvm/loader/loader.component.ts +0 -8
  116. package/dvm/loader/loader.service.ts +0 -8
  117. package/dvm/loader/loader.stories.ts +0 -31
  118. package/dvm/loader/ng-package.json +0 -1
  119. package/dvm/loader/public-api.ts +0 -6
  120. package/dvm/map-loader/index.ts +0 -1
  121. package/dvm/map-loader/map-loader.component.css +0 -91
  122. package/dvm/map-loader/map-loader.component.html +0 -23
  123. package/dvm/map-loader/map-loader.component.ts +0 -187
  124. package/dvm/map-loader/map-loader.stories.ts +0 -16
  125. package/dvm/map-loader/ng-package.json +0 -1
  126. package/dvm/map-loader/public-api.ts +0 -5
  127. package/dvm/neighbors/index.ts +0 -1
  128. package/dvm/neighbors/neighbors.component.css +0 -158
  129. package/dvm/neighbors/neighbors.component.html +0 -45
  130. package/dvm/neighbors/neighbors.component.ts +0 -218
  131. package/dvm/neighbors/ng-package.json +0 -1
  132. package/dvm/neighbors/public-api.ts +0 -2
  133. package/dvm/neighbors/story/arrow-left-black-icon.svg +0 -3
  134. package/dvm/neighbors/story/mock-data.ts +0 -15
  135. package/dvm/neighbors/story/neighbours.stories.css +0 -12
  136. package/dvm/neighbors/story/neighbours.stories.ts +0 -117
  137. package/dvm/neighbors/types.ts +0 -14
  138. package/dvm/popover/base-popover.component.ts +0 -70
  139. package/dvm/popover/index.ts +0 -1
  140. package/dvm/popover/ng-package.json +0 -1
  141. package/dvm/popover/popover.component.css +0 -227
  142. package/dvm/popover/popover.component.html +0 -27
  143. package/dvm/popover/popover.component.ts +0 -236
  144. package/dvm/popover/popover.config.ts +0 -30
  145. package/dvm/popover/popover.service.ts +0 -627
  146. package/dvm/popover/popover.stories.ts +0 -873
  147. package/dvm/popover/public-api.ts +0 -14
  148. package/dvm/popover/seat-popover/seat-popover.component.css +0 -89
  149. package/dvm/popover/seat-popover/seat-popover.component.html +0 -40
  150. package/dvm/popover/seat-popover/seat-popover.component.ts +0 -74
  151. package/dvm/popover/section-popover/section-popover.component.css +0 -157
  152. package/dvm/popover/section-popover/section-popover.component.html +0 -58
  153. package/dvm/popover/section-popover/section-popover.component.ts +0 -106
  154. package/dvm/popover/services/dvm-popover-positioner.service.ts +0 -73
  155. package/dvm/popover/services/popover-manager.service.ts +0 -88
  156. package/dvm/popover/transformers/base-popover-data-transformer.ts +0 -36
  157. package/dvm/popover/types.ts +0 -104
  158. package/dvm/stepper/index.ts +0 -1
  159. package/dvm/stepper/ng-package.json +0 -1
  160. package/dvm/stepper/public-api.ts +0 -5
  161. package/dvm/stepper/stepper.component.css +0 -142
  162. package/dvm/stepper/stepper.component.html +0 -9
  163. package/dvm/stepper/stepper.component.ts +0 -101
  164. package/dvm/stepper/types.ts +0 -6
  165. package/dvm/ticket-info-item/index.ts +0 -1
  166. package/dvm/ticket-info-item/ng-package.json +0 -1
  167. package/dvm/ticket-info-item/public-api.ts +0 -6
  168. package/dvm/ticket-info-item/ticket-info-item.component.html +0 -1
  169. package/dvm/ticket-info-item/ticket-info-item.component.ts +0 -8
  170. package/dvm/ticket-info-item/ticket-info-item.service.ts +0 -8
  171. package/dvm/ticket-info-item/ticket-info-item.stories.ts +0 -31
  172. package/generic/add-digital-wallet/add-digital-wallet.component.css +0 -76
  173. package/generic/add-digital-wallet/add-digital-wallet.component.html +0 -46
  174. package/generic/add-digital-wallet/add-digital-wallet.component.ts +0 -44
  175. package/generic/add-digital-wallet/index.ts +0 -1
  176. package/generic/add-digital-wallet/ng-package.json +0 -1
  177. package/generic/add-digital-wallet/public-api.ts +0 -1
  178. package/generic/braintree/braintree.component.css +0 -7
  179. package/generic/braintree/braintree.component.ts +0 -134
  180. package/generic/braintree/index.ts +0 -1
  181. package/generic/braintree/ng-package.json +0 -1
  182. package/generic/braintree/public-api.ts +0 -6
  183. package/generic/braintree/story/braintree.stories.css +0 -3
  184. package/generic/braintree/story/braintree.stories.ts +0 -27
  185. package/generic/braintree/types.ts +0 -28
  186. package/generic/button/button.component.css +0 -305
  187. package/generic/button/button.component.html +0 -10
  188. package/generic/button/button.component.ts +0 -353
  189. package/generic/button/index.ts +0 -1
  190. package/generic/button/ng-package.json +0 -1
  191. package/generic/button/public-api.ts +0 -6
  192. package/generic/button/story/button.stories.ts +0 -384
  193. package/generic/button/ui/ui-button-helm/src/index.ts +0 -10
  194. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.token.ts +0 -22
  195. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.ts +0 -62
  196. package/generic/carousel/carousel-item.component.ts +0 -15
  197. package/generic/carousel/carousel-item.directive.ts +0 -14
  198. package/generic/carousel/carousel.component.css +0 -90
  199. package/generic/carousel/carousel.component.html +0 -13
  200. package/generic/carousel/carousel.component.ts +0 -44
  201. package/generic/carousel/index.ts +0 -1
  202. package/generic/carousel/public-api.ts +0 -2
  203. package/generic/carousel/ui/ui-carousel-helm/src/index.ts +0 -29
  204. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.ts +0 -23
  205. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.ts +0 -25
  206. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.ts +0 -58
  207. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.ts +0 -61
  208. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.ts +0 -36
  209. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.ts +0 -105
  210. package/generic/dialog/dialog.component.css +0 -5
  211. package/generic/dialog/dialog.component.html +0 -3
  212. package/generic/dialog/dialog.component.ts +0 -20
  213. package/generic/dialog/dialog.stories.ts +0 -14
  214. package/generic/dialog/index.ts +0 -1
  215. package/generic/dialog/libs/ui-dialog-helm/src/index.ts +0 -37
  216. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.ts +0 -20
  217. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.ts +0 -56
  218. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.ts +0 -17
  219. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.ts +0 -19
  220. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.ts +0 -19
  221. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.ts +0 -23
  222. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.ts +0 -19
  223. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.ts +0 -59
  224. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.ts +0 -31
  225. package/generic/dialog/ng-package.json +0 -1
  226. package/generic/dialog/public-api.ts +0 -7
  227. package/generic/dialog/tsconfig.json +0 -7
  228. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.css +0 -0
  229. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.html +0 -1
  230. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.ts +0 -17
  231. package/generic/dialog/ui/dialog-footer/dialog-footer.component.css +0 -0
  232. package/generic/dialog/ui/dialog-footer/dialog-footer.component.html +0 -3
  233. package/generic/dialog/ui/dialog-footer/dialog-footer.component.ts +0 -11
  234. package/generic/dialog/ui/dialog-header/dialog-header.component.css +0 -0
  235. package/generic/dialog/ui/dialog-header/dialog-header.component.html +0 -8
  236. package/generic/dialog/ui/dialog-header/dialog-header.component.ts +0 -18
  237. package/generic/drawer/drawer.component.html +0 -1
  238. package/generic/drawer/drawer.component.ts +0 -8
  239. package/generic/drawer/drawer.service.ts +0 -8
  240. package/generic/drawer/drawer.stories.ts +0 -31
  241. package/generic/drawer/index.ts +0 -1
  242. package/generic/drawer/ng-package.json +0 -1
  243. package/generic/drawer/public-api.ts +0 -6
  244. package/generic/icon/icon.component.css +0 -7
  245. package/generic/icon/icon.component.html +0 -3
  246. package/generic/icon/icon.component.ts +0 -86
  247. package/generic/icon/icon.stories.ts +0 -16
  248. package/generic/icon/index.ts +0 -1
  249. package/generic/icon/lib/ui-icon-helm/src/index.ts +0 -11
  250. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.ts +0 -20
  251. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.ts +0 -36
  252. package/generic/icon/ng-package.json +0 -1
  253. package/generic/icon/public-api.ts +0 -6
  254. package/generic/icon/tsconfig.json +0 -7
  255. package/generic/index.ts +0 -1
  256. package/generic/select/index.ts +0 -1
  257. package/generic/select/lib/hlm-select-content.ts +0 -29
  258. package/generic/select/lib/hlm-select-group.ts +0 -17
  259. package/generic/select/lib/hlm-select-label.ts +0 -26
  260. package/generic/select/lib/hlm-select-option.ts +0 -37
  261. package/generic/select/lib/hlm-select-scroll-down.ts +0 -24
  262. package/generic/select/lib/hlm-select-scroll-up.ts +0 -23
  263. package/generic/select/lib/hlm-select-trigger.ts +0 -53
  264. package/generic/select/lib/hlm-select-value.ts +0 -17
  265. package/generic/select/lib/hlm-select.ts +0 -15
  266. package/generic/select/lib/index.ts +0 -38
  267. package/generic/select/ng-package.json +0 -1
  268. package/generic/select/public-api.ts +0 -3
  269. package/generic/select/select.component.css +0 -65
  270. package/generic/select/select.component.html +0 -19
  271. package/generic/select/select.component.ts +0 -25
  272. package/generic/select/types.ts +0 -4
  273. package/ng-package.json +0 -10
  274. package/public/3ddv-logo.jpg +0 -0
  275. package/public/neighbours-after.png +0 -0
  276. package/public/neighbours-before.png +0 -0
  277. package/shared/apply-theme-variables/apply-theme-variables.ts +0 -35
  278. package/shared/apply-theme-variables/index.ts +0 -1
  279. package/shared/format-value.pipe.ts +0 -23
  280. package/shared/index.ts +0 -1
  281. package/shared/lib-provider/config-token.ts +0 -4
  282. package/shared/lib-provider/index.ts +0 -1
  283. package/shared/lib-provider/provide-sdc.ts +0 -24
  284. package/shared/lib-provider/public-api.ts +0 -1
  285. package/shared/ng-package.json +0 -1
  286. package/shared/public-api.ts +0 -6
  287. package/shared/screen-observer/index.ts +0 -2
  288. package/shared/screen-observer/provide-screen-observer.ts +0 -17
  289. package/shared/screen-observer/screen-observer.ts +0 -56
  290. package/shared/screen-observer/sizable-base.ts +0 -70
  291. package/shared/theme-provider/generic-theme.ts +0 -1
  292. package/shared/theme-provider/index.ts +0 -1
  293. package/shared/theme-provider/public-api.ts +0 -1
  294. package/shared/theme-provider/theme-provider.directive.ts +0 -17
  295. package/shared/themes/sdc.css +0 -153
  296. package/shared/types.ts +0 -18
  297. package/src/private-exports.ts +0 -1
  298. package/src/public-api.ts +0 -20
  299. package/tsconfig.json +0 -50
  300. package/tsconfig.lib.prod.json +0 -6
  301. package/tsconfig.spec.json +0 -15
  302. package/tsconfig.temp.json +0 -1
  303. package/utils/index.ts +0 -1
  304. package/utils/ng-package.json +0 -1
  305. package/utils/public-api.ts +0 -1
  306. package/utils/validate-styles-for-component.ts +0 -39
  307. /package/{dist/README.md → README.md} +0 -0
  308. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-checkbox.mjs +0 -0
  309. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-checkbox.mjs.map +0 -0
  310. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-datepicker.mjs +0 -0
  311. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-datepicker.mjs.map +0 -0
  312. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-input.mjs +0 -0
  313. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-input.mjs.map +0 -0
  314. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-radio.mjs +0 -0
  315. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-radio.mjs.map +0 -0
  316. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-table.mjs +0 -0
  317. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-table.mjs.map +0 -0
  318. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart-item.mjs +0 -0
  319. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart-item.mjs.map +0 -0
  320. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart.mjs +0 -0
  321. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart.mjs.map +0 -0
  322. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-legend.mjs +0 -0
  323. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-legend.mjs.map +0 -0
  324. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-loader.mjs +0 -0
  325. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-loader.mjs.map +0 -0
  326. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-map-loader.mjs +0 -0
  327. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-map-loader.mjs.map +0 -0
  328. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-neighbors.mjs +0 -0
  329. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-neighbors.mjs.map +0 -0
  330. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-popover.mjs +0 -0
  331. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-popover.mjs.map +0 -0
  332. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-stepper.mjs +0 -0
  333. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-stepper.mjs.map +0 -0
  334. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-ticket-info-item.mjs +0 -0
  335. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-ticket-info-item.mjs.map +0 -0
  336. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-add-digital-wallet.mjs +0 -0
  337. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-add-digital-wallet.mjs.map +0 -0
  338. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-braintree.mjs +0 -0
  339. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-braintree.mjs.map +0 -0
  340. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-button.mjs +0 -0
  341. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-button.mjs.map +0 -0
  342. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-dialog.mjs +0 -0
  343. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-dialog.mjs.map +0 -0
  344. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-drawer.mjs +0 -0
  345. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-drawer.mjs.map +0 -0
  346. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-icon.mjs +0 -0
  347. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-icon.mjs.map +0 -0
  348. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-select.mjs +0 -0
  349. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-select.mjs.map +0 -0
  350. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-shared.mjs +0 -0
  351. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-shared.mjs.map +0 -0
  352. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-utils.mjs +0 -0
  353. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-utils.mjs.map +0 -0
  354. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components.mjs +0 -0
  355. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components.mjs.map +0 -0
  356. /package/{dist/types → types}/3ddv-software-division-components-backoffice-checkbox.d.ts +0 -0
  357. /package/{dist/types → types}/3ddv-software-division-components-backoffice-datepicker.d.ts +0 -0
  358. /package/{dist/types → types}/3ddv-software-division-components-backoffice-input.d.ts +0 -0
  359. /package/{dist/types → types}/3ddv-software-division-components-backoffice-radio.d.ts +0 -0
  360. /package/{dist/types → types}/3ddv-software-division-components-backoffice-table.d.ts +0 -0
  361. /package/{dist/types → types}/3ddv-software-division-components-dvm-cart-item.d.ts +0 -0
  362. /package/{dist/types → types}/3ddv-software-division-components-dvm-cart.d.ts +0 -0
  363. /package/{dist/types → types}/3ddv-software-division-components-dvm-legend.d.ts +0 -0
  364. /package/{dist/types → types}/3ddv-software-division-components-dvm-loader.d.ts +0 -0
  365. /package/{dist/types → types}/3ddv-software-division-components-dvm-map-loader.d.ts +0 -0
  366. /package/{dist/types → types}/3ddv-software-division-components-dvm-neighbors.d.ts +0 -0
  367. /package/{dist/types → types}/3ddv-software-division-components-dvm-popover.d.ts +0 -0
  368. /package/{dist/types → types}/3ddv-software-division-components-dvm-stepper.d.ts +0 -0
  369. /package/{dist/types → types}/3ddv-software-division-components-dvm-ticket-info-item.d.ts +0 -0
  370. /package/{dist/types → types}/3ddv-software-division-components-generic-add-digital-wallet.d.ts +0 -0
  371. /package/{dist/types → types}/3ddv-software-division-components-generic-braintree.d.ts +0 -0
  372. /package/{dist/types → types}/3ddv-software-division-components-generic-button.d.ts +0 -0
  373. /package/{dist/types → types}/3ddv-software-division-components-generic-dialog.d.ts +0 -0
  374. /package/{dist/types → types}/3ddv-software-division-components-generic-drawer.d.ts +0 -0
  375. /package/{dist/types → types}/3ddv-software-division-components-generic-icon.d.ts +0 -0
  376. /package/{dist/types → types}/3ddv-software-division-components-generic-select.d.ts +0 -0
  377. /package/{dist/types → types}/3ddv-software-division-components-shared.d.ts +0 -0
  378. /package/{dist/types → types}/3ddv-software-division-components-utils.d.ts +0 -0
  379. /package/{dist/types → types}/3ddv-software-division-components.d.ts +0 -0
@@ -1,171 +0,0 @@
1
- import { buttonVariants } from '@3ddv/software-division-components/generic/button';
2
- import { HlmIcon } from '@3ddv/software-division-components/generic/icon';
3
- import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
4
- import {
5
- ChangeDetectionStrategy,
6
- Component,
7
- booleanAttribute,
8
- computed,
9
- input,
10
- model,
11
- numberAttribute,
12
- viewChild,
13
- } from '@angular/core';
14
- import { NgIcon, provideIcons } from '@ng-icons/core';
15
- import { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';
16
- import {
17
- BrnCalendar,
18
- BrnCalendarCell,
19
- BrnCalendarCellButton,
20
- BrnCalendarGrid,
21
- BrnCalendarHeader,
22
- BrnCalendarNextButton,
23
- BrnCalendarPreviousButton,
24
- BrnCalendarWeek,
25
- BrnCalendarWeekday,
26
- Weekday,
27
- injectBrnCalendarI18n,
28
- } from '@spartan-ng/brain/calendar';
29
- import { hlm } from '@spartan-ng/brain/core';
30
- import { injectDateAdapter } from '@spartan-ng/brain/date-time';
31
- import type { ClassValue } from 'clsx';
32
-
33
- @Component({
34
- selector: 'hlm-calendar',
35
- imports: [
36
- BrnCalendar,
37
- BrnCalendarHeader,
38
- BrnCalendarNextButton,
39
- BrnCalendarPreviousButton,
40
- BrnCalendarWeekday,
41
- BrnCalendarWeek,
42
- BrnCalendarCellButton,
43
- BrnCalendarCell,
44
- BrnCalendarGrid,
45
- NgIcon,
46
- HlmIcon,
47
- ],
48
- viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],
49
- template: `
50
- <div
51
- brnCalendar
52
- [min]="min()"
53
- [max]="max()"
54
- [disabled]="disabled()"
55
- [(date)]="date"
56
- [dateDisabled]="dateDisabled()"
57
- [weekStartsOn]="weekStartsOn()"
58
- [defaultFocusedDate]="defaultFocusedDate()"
59
- [class]="_computedCalenderClass()">
60
- <div class="inline-flex flex-col space-y-4">
61
- <!-- Header -->
62
- <div class="space-y-4">
63
- <div class="relative flex items-center justify-center pt-1">
64
- <div brnCalendarHeader class="text-sm font-medium">
65
- {{ _heading() }}
66
- </div>
67
-
68
- <div class="flex items-center space-x-1">
69
- <button
70
- brnCalendarPreviousButton
71
- class="focus-visible:ring-ring hover:bg-accent hover:text-accent-foreground text-popover-foreground absolute left-1 inline-flex size-8 items-center justify-center whitespace-nowrap rounded-md bg-transparent p-0 text-sm font-medium transition-colors hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50">
72
- <ng-icon hlm name="lucideChevronLeft" size="sm" />
73
- </button>
74
-
75
- <button
76
- brnCalendarNextButton
77
- class="focus-visible:ring-ring hover:bg-accent hover:text-accent-foreground text-popover-foreground absolute right-1 inline-flex size-8 items-center justify-center whitespace-nowrap rounded-md bg-transparent p-0 text-sm font-medium transition-colors hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50">
78
- <ng-icon hlm name="lucideChevronRight" size="sm" />
79
- </button>
80
- </div>
81
- </div>
82
- </div>
83
-
84
- <table class="w-full border-collapse space-y-1" brnCalendarGrid>
85
- <thead>
86
- <tr class="flex">
87
- <th
88
- *brnCalendarWeekday="let weekday"
89
- scope="col"
90
- class="text-muted-foreground w-8 rounded-md text-[0.8rem] font-normal"
91
- [attr.aria-label]="_i18n.labelWeekday(weekday)">
92
- {{ _i18n.formatWeekdayName(weekday) }}
93
- </th>
94
- </tr>
95
- </thead>
96
-
97
- <tbody role="rowgroup">
98
- <tr *brnCalendarWeek="let week" class="mt-2 flex w-full">
99
- @for (date of week; track _dateAdapter.getTime(date)) {
100
- <td
101
- brnCalendarCell
102
- class="data-[selected]:data-[outside]:bg-accent/50 data-[selected]:bg-accent relative size-8 p-0 text-center text-sm focus-within:relative focus-within:z-20 first:data-[selected]:rounded-l-md last:data-[selected]:rounded-r-md [&:has([aria-selected].day-range-end)]:rounded-r-md">
103
- <button brnCalendarCellButton [date]="date" [class]="_btnClass">
104
- {{ _dateAdapter.getDate(date) }}
105
- </button>
106
- </td>
107
- }
108
- </tr>
109
- </tbody>
110
- </table>
111
- </div>
112
- </div>
113
- `,
114
- changeDetection: ChangeDetectionStrategy.OnPush,
115
- })
116
- export class HlmCalendar<T> {
117
- public readonly calendarClass = input<ClassValue>('');
118
-
119
- protected readonly _computedCalenderClass = computed(() => hlm('rounded-md border p-3', this.calendarClass()));
120
-
121
- /** Access the calendar i18n */
122
- protected readonly _i18n = injectBrnCalendarI18n();
123
-
124
- /** Access the date time adapter */
125
- protected readonly _dateAdapter = injectDateAdapter<T>();
126
-
127
- /** The minimum date that can be selected.*/
128
- public readonly min = input<T>();
129
-
130
- /** The maximum date that can be selected. */
131
- public readonly max = input<T>();
132
-
133
- /** Determine if the date picker is disabled. */
134
- public readonly disabled = input<boolean, BooleanInput>(false, {
135
- transform: booleanAttribute,
136
- });
137
-
138
- /** The selected value. */
139
- public readonly date = model<T>();
140
-
141
- /** Whether a specific date is disabled. */
142
- public readonly dateDisabled = input<(date: T) => boolean>(() => false);
143
-
144
- /** The day the week starts on */
145
- public readonly weekStartsOn = input<Weekday, NumberInput>(0, {
146
- transform: (v: unknown) => numberAttribute(v) as Weekday,
147
- });
148
-
149
- /** The default focused date. */
150
- public readonly defaultFocusedDate = input<T>();
151
-
152
- /** Access the calendar directive */
153
- private readonly _calendar = viewChild.required(BrnCalendar);
154
-
155
- /** Get the heading for the current month and year */
156
- protected readonly _heading = computed(() =>
157
- this._i18n.formatHeader(
158
- this._dateAdapter.getMonth(this._calendar().focusedDate()),
159
- this._dateAdapter.getYear(this._calendar().focusedDate())
160
- )
161
- );
162
-
163
- protected readonly _btnClass = hlm(
164
- buttonVariants({ variant: 'ghost' }),
165
- 'size-8 p-0 font-normal aria-selected:opacity-100',
166
- 'data-[outside]:text-muted-foreground data-[outside]:opacity-50 data-[outside]:aria-selected:bg-accent/50 data-[outside]:aria-selected:text-muted-foreground data-[outside]:aria-selected:opacity-30',
167
- 'data-[today]:bg-accent data-[today]:text-accent-foreground',
168
- 'data-[selected]:bg-primary data-[selected]:text-primary-foreground data-[selected]:hover:bg-primary dark:hover:text-accent-foreground data-[selected]:focus:bg-primary data-[selected]:focus:text-primary-foreground',
169
- 'data-[disabled]:text-muted-foreground data-[disabled]:opacity-50'
170
- );
171
- }
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { HlmDatePicker } from './lib/hlm-date-picker';
3
- import { HlmDatePickerMulti } from './lib/hlm-date-picker-multi';
4
-
5
- export * from './lib/hlm-date-picker.token';
6
-
7
- export * from './lib/hlm-date-picker';
8
- export * from './lib/hlm-date-picker-multi';
9
-
10
- export const HlmDatePickerImports = [HlmDatePicker, HlmDatePickerMulti] as const;
11
-
12
- @NgModule({
13
- imports: [...HlmDatePickerImports],
14
- exports: [...HlmDatePickerImports],
15
- })
16
- export class HlmDatePickerModule {}
@@ -1,43 +0,0 @@
1
- import { inject, InjectionToken, ValueProvider } from '@angular/core';
2
-
3
- export interface HlmDatePickerMultiConfig<T> {
4
- /**
5
- * If true, the date picker will close when the max selection of dates is reached.
6
- */
7
- autoCloseOnMaxSelection: boolean;
8
-
9
- /**
10
- * Defines how the date should be displayed in the UI.
11
- *
12
- * @param dates
13
- * @returns formatted date
14
- */
15
- formatDates: (dates: T[]) => string;
16
-
17
- /**
18
- * Defines how the date should be transformed before saving to model/form.
19
- *
20
- * @param dates
21
- * @returns transformed date
22
- */
23
- transformDates: (dates: T[]) => T[];
24
- }
25
-
26
- function getDefaultConfig<T>(): HlmDatePickerMultiConfig<T> {
27
- return {
28
- formatDates: (dates) => dates.map((date) => (date instanceof Date ? date.toDateString() : `${date}`)).join(', '),
29
- transformDates: (dates) => dates,
30
- autoCloseOnMaxSelection: false,
31
- };
32
- }
33
-
34
- const HlmDatePickerMultiConfigToken = new InjectionToken<HlmDatePickerMultiConfig<unknown>>('HlmDatePickerMultiConfig');
35
-
36
- export function provideHlmDatePickerConfig<T>(config: Partial<HlmDatePickerMultiConfig<T>>): ValueProvider {
37
- return { provide: HlmDatePickerMultiConfigToken, useValue: { ...getDefaultConfig(), ...config } };
38
- }
39
-
40
- export function injectHlmDatePickerMultiConfig<T>(): HlmDatePickerMultiConfig<T> {
41
- const injectedConfig = inject(HlmDatePickerMultiConfigToken, { optional: true });
42
- return injectedConfig ? (injectedConfig as HlmDatePickerMultiConfig<T>) : getDefaultConfig();
43
- }
@@ -1,177 +0,0 @@
1
- import { HlmIcon } from '@3ddv/software-division-components/generic/icon';
2
- import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
3
- import {
4
- ChangeDetectionStrategy,
5
- Component,
6
- booleanAttribute,
7
- computed,
8
- forwardRef,
9
- input,
10
- model,
11
- numberAttribute,
12
- output,
13
- signal,
14
- } from '@angular/core';
15
- import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
16
- import { NgIcon, provideIcons } from '@ng-icons/core';
17
- import { lucideCalendar } from '@ng-icons/lucide';
18
- import { hlm } from '@spartan-ng/brain/core';
19
- import { BrnDialogState } from '@spartan-ng/brain/dialog';
20
- import { type ChangeFn, type TouchFn } from '@spartan-ng/brain/forms';
21
- import { BrnPopover, BrnPopoverContent, BrnPopoverTrigger } from '@spartan-ng/brain/popover';
22
- import type { ClassValue } from 'clsx';
23
- import { HlmCalendarMulti } from '../../../ui-calendar-helm/src';
24
- import { HlmPopoverContent } from '../../../ui-popover-helm/src';
25
- import { injectHlmDatePickerMultiConfig } from './hlm-date-picker-multi.token';
26
-
27
- export const HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR = {
28
- provide: NG_VALUE_ACCESSOR,
29
- useExisting: forwardRef(() => HlmDatePickerMulti),
30
- multi: true,
31
- };
32
-
33
- @Component({
34
- selector: 'hlm-date-picker-multi',
35
- imports: [NgIcon, HlmIcon, BrnPopover, BrnPopoverTrigger, BrnPopoverContent, HlmPopoverContent, HlmCalendarMulti],
36
- providers: [HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR, provideIcons({ lucideCalendar })],
37
- template: `
38
- <brn-popover sideOffset="5" [state]="_popoverState()" (stateChanged)="_popoverState.set($event)">
39
- <button type="button" [class]="_computedClass()" [disabled]="_state().disabled()" brnPopoverTrigger>
40
- <ng-icon hlm size="sm" name="lucideCalendar" />
41
-
42
- <span class="truncate">
43
- @if (_formattedDate(); as formattedDate) {
44
- {{ formattedDate }}
45
- } @else {
46
- <ng-content />
47
- }
48
- </span>
49
- </button>
50
-
51
- <div hlmPopoverContent class="w-auto p-0" *brnPopoverContent="let ctx">
52
- <hlm-calendar-multi
53
- calendarClass="border-0 rounded-none"
54
- [date]="date()"
55
- [min]="min()"
56
- [max]="max()"
57
- [minSelection]="minSelection()"
58
- [maxSelection]="maxSelection()"
59
- [disabled]="_state().disabled()"
60
- (dateChange)="_handleChange($event)" />
61
- </div>
62
- </brn-popover>
63
- `,
64
- host: {
65
- class: 'block',
66
- },
67
- changeDetection: ChangeDetectionStrategy.OnPush,
68
- })
69
- export class HlmDatePickerMulti<T> implements ControlValueAccessor {
70
- private readonly _config = injectHlmDatePickerMultiConfig<T>();
71
-
72
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
73
- protected readonly _computedClass = computed(() =>
74
- hlm(
75
- 'inline-flex items-center gap-2 whitespace-nowrap rounded-md text-sm ring-offset-background transition-colors border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 w-[280px] justify-start text-left font-normal',
76
- 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
77
- 'disabled:pointer-events-none disabled:opacity-50',
78
- '[&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
79
- !this.date() ? 'text-muted-foreground' : '',
80
- this.userClass()
81
- )
82
- );
83
-
84
- /** The minimum date that can be selected.*/
85
- public readonly min = input<T>();
86
-
87
- /** The maximum date that can be selected. */
88
- public readonly max = input<T>();
89
-
90
- /** The minimum selectable dates. */
91
- public readonly minSelection = input<number, NumberInput>(undefined, {
92
- transform: numberAttribute,
93
- });
94
-
95
- /** The maximum selectable dates. */
96
- public readonly maxSelection = input<number, NumberInput>(undefined, {
97
- transform: numberAttribute,
98
- });
99
-
100
- /** Determine if the date picker is disabled. */
101
- public readonly disabled = input<boolean, BooleanInput>(false, {
102
- transform: booleanAttribute,
103
- });
104
-
105
- /** The selected value. */
106
- public readonly date = model<T[]>();
107
-
108
- /** If true, the date picker will close when the max selection of dates is reached.. */
109
- public readonly autoCloseOnMaxSelection = input<boolean, BooleanInput>(this._config.autoCloseOnMaxSelection, {
110
- transform: booleanAttribute,
111
- });
112
-
113
- /** Defines how the date should be displayed in the UI. */
114
- public readonly formatDates = input<(date: T[]) => string>(this._config.formatDates);
115
-
116
- /** Defines how the date should be transformed before saving to model/form. */
117
- public readonly transformDates = input<(date: T[]) => T[]>(this._config.transformDates);
118
-
119
- protected readonly _popoverState = signal<BrnDialogState | null>(null);
120
-
121
- protected readonly _state = computed(() => ({
122
- disabled: signal(this.disabled()),
123
- }));
124
-
125
- protected readonly _formattedDate = computed(() => {
126
- const dates = this.date();
127
- return dates ? this.formatDates()(dates) : undefined;
128
- });
129
-
130
- public readonly changed = output<T[]>();
131
-
132
- protected _onChange?: ChangeFn<T[]>;
133
- protected _onTouched?: TouchFn;
134
-
135
- protected _handleChange(value: T[] | undefined) {
136
- if (value === undefined) return;
137
-
138
- if (this._state().disabled()) return;
139
- const transformedDate = this.transformDates()(value);
140
-
141
- this.date.set(transformedDate);
142
- this._onChange?.(transformedDate);
143
- this.changed.emit(transformedDate);
144
-
145
- if (this.autoCloseOnMaxSelection() && this.date()?.length === this.maxSelection()) {
146
- this._popoverState.set('closed');
147
- }
148
- }
149
-
150
- /** CONROL VALUE ACCESSOR */
151
- writeValue(value: T[] | null): void {
152
- // optional FormControl is initialized with null value
153
- if (value === null) return;
154
-
155
- this.date.set(this.transformDates()(value));
156
- }
157
-
158
- registerOnChange(fn: ChangeFn<T[]>): void {
159
- this._onChange = fn;
160
- }
161
-
162
- registerOnTouched(fn: TouchFn): void {
163
- this._onTouched = fn;
164
- }
165
-
166
- setDisabledState(isDisabled: boolean): void {
167
- this._state().disabled.set(isDisabled);
168
- }
169
-
170
- open() {
171
- this._popoverState.set('open');
172
- }
173
-
174
- close() {
175
- this._popoverState.set('closed');
176
- }
177
- }
@@ -1,43 +0,0 @@
1
- import { inject, InjectionToken, ValueProvider } from '@angular/core';
2
-
3
- export interface HlmDatePickerConfig<T> {
4
- /**
5
- * If true, the date picker will close when a date is selected.
6
- */
7
- autoCloseOnSelect: boolean;
8
-
9
- /**
10
- * Defines how the date should be displayed in the UI.
11
- *
12
- * @param date
13
- * @returns formatted date
14
- */
15
- formatDate: (date: T) => string;
16
-
17
- /**
18
- * Defines how the date should be transformed before saving to model/form.
19
- *
20
- * @param date
21
- * @returns transformed date
22
- */
23
- transformDate: (date: T) => T;
24
- }
25
-
26
- function getDefaultConfig<T>(): HlmDatePickerConfig<T> {
27
- return {
28
- formatDate: (date) => (date instanceof Date ? date.toDateString() : `${date}`),
29
- transformDate: (date) => date,
30
- autoCloseOnSelect: false,
31
- };
32
- }
33
-
34
- const HlmDatePickerConfigToken = new InjectionToken<HlmDatePickerConfig<unknown>>('HlmDatePickerConfig');
35
-
36
- export function provideHlmDatePickerConfig<T>(config: Partial<HlmDatePickerConfig<T>>): ValueProvider {
37
- return { provide: HlmDatePickerConfigToken, useValue: { ...getDefaultConfig(), ...config } };
38
- }
39
-
40
- export function injectHlmDatePickerConfig<T>(): HlmDatePickerConfig<T> {
41
- const injectedConfig = inject(HlmDatePickerConfigToken, { optional: true });
42
- return injectedConfig ? (injectedConfig as HlmDatePickerConfig<T>) : getDefaultConfig();
43
- }
@@ -1,167 +0,0 @@
1
- import { HlmIcon } from '@3ddv/software-division-components/generic/icon';
2
- import { BooleanInput } from '@angular/cdk/coercion';
3
- import {
4
- booleanAttribute,
5
- ChangeDetectionStrategy,
6
- Component,
7
- computed,
8
- forwardRef,
9
- input,
10
- model,
11
- output,
12
- signal,
13
- } from '@angular/core';
14
- import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
15
- import { NgIcon, provideIcons } from '@ng-icons/core';
16
- import { lucideCalendar } from '@ng-icons/lucide';
17
- import { hlm } from '@spartan-ng/brain/core';
18
- import { BrnDialogState } from '@spartan-ng/brain/dialog';
19
- import { type ChangeFn, type TouchFn } from '@spartan-ng/brain/forms';
20
- import { BrnPopover, BrnPopoverContent, BrnPopoverTrigger } from '@spartan-ng/brain/popover';
21
- import type { ClassValue } from 'clsx';
22
- import { HlmCalendar } from '../../../ui-calendar-helm/src';
23
- import { HlmPopoverContent } from '../../../ui-popover-helm/src';
24
- import { injectHlmDatePickerConfig } from './hlm-date-picker.token';
25
-
26
- export const HLM_DATE_PICKER_VALUE_ACCESSOR = {
27
- provide: NG_VALUE_ACCESSOR,
28
- useExisting: forwardRef(() => HlmDatePicker),
29
- multi: true,
30
- };
31
-
32
- @Component({
33
- selector: 'hlm-date-picker',
34
- imports: [NgIcon, HlmIcon, BrnPopover, BrnPopoverTrigger, BrnPopoverContent, HlmPopoverContent, HlmCalendar],
35
- providers: [HLM_DATE_PICKER_VALUE_ACCESSOR, provideIcons({ lucideCalendar })],
36
- template: `
37
- <brn-popover sideOffset="5" [state]="_popoverState()" (stateChanged)="_popoverState.set($event)">
38
- <button type="button" [class]="_computedClass()" [disabled]="_state().disabled()" brnPopoverTrigger>
39
- <span class="truncate">
40
- @if (_formattedDate(); as formattedDate) {
41
- {{ formattedDate }}
42
- } @else {
43
- <ng-content />
44
- }
45
- </span>
46
-
47
- <ng-icon hlm size="sm" name="lucideCalendar" />
48
- </button>
49
-
50
- <div hlmPopoverContent [class]="styleClass()" class="w-auto p-0" *brnPopoverContent="let ctx">
51
- <hlm-calendar
52
- calendarClass="border-0 rounded-none"
53
- [date]="date()"
54
- [min]="min()"
55
- [max]="max()"
56
- [disabled]="_state().disabled()"
57
- (dateChange)="_handleChange($event)" />
58
- </div>
59
- </brn-popover>
60
- `,
61
- host: {
62
- class: 'block',
63
- },
64
- changeDetection: ChangeDetectionStrategy.OnPush,
65
- })
66
- export class HlmDatePicker<T> implements ControlValueAccessor {
67
- private readonly _config = injectHlmDatePickerConfig<T>();
68
-
69
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
70
- protected readonly _computedClass = computed(() =>
71
- hlm(
72
- 'inline-flex items-center gap-2 whitespace-nowrap rounded-md text-sm transition-all disabled:pointer-events-none disabled:opacity-50 ring-offset-background transition-colors border border-input bg-background hover:bg-accent dark:bg-input/30 dark:hover:bg-input/50 hover:text-accent-foreground w-[280px] justify-start text-left font-normal cursor-default justify-between',
73
- 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
74
- 'disabled:pointer-events-none disabled:opacity-50',
75
- '[&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
76
- !this.date() ? 'text-muted-foreground' : '',
77
- this.userClass()
78
- )
79
- );
80
-
81
- /**
82
- * This is used to apply the theme-sdc class to the datepicker's dialog.
83
- */
84
- public readonly styleClass = input<string>('');
85
-
86
- /** The minimum date that can be selected.*/
87
- public readonly min = input<T>();
88
-
89
- /** The maximum date that can be selected. */
90
- public readonly max = input<T>();
91
-
92
- /** Determine if the date picker is disabled. */
93
- public readonly disabled = input<boolean, BooleanInput>(false, {
94
- transform: booleanAttribute,
95
- });
96
-
97
- /** The selected value. */
98
- public readonly date = model<T>();
99
-
100
- /** If true, the date picker will close when a date is selected. */
101
- public readonly autoCloseOnSelect = input<boolean, BooleanInput>(this._config.autoCloseOnSelect, {
102
- transform: booleanAttribute,
103
- });
104
-
105
- /** Defines how the date should be displayed in the UI. */
106
- public readonly formatDate = input<(date: T) => string>(this._config.formatDate);
107
-
108
- /** Defines how the date should be transformed before saving to model/form. */
109
- public readonly transformDate = input<(date: T) => T>(this._config.transformDate);
110
-
111
- protected readonly _popoverState = signal<BrnDialogState | null>(null);
112
-
113
- protected readonly _state = computed(() => ({
114
- disabled: signal(this.disabled()),
115
- }));
116
-
117
- protected readonly _formattedDate = computed(() => {
118
- const date = this.date();
119
- return date ? this.formatDate()(date) : undefined;
120
- });
121
-
122
- public readonly changed = output<T>();
123
-
124
- protected _onChange?: ChangeFn<T>;
125
- protected _onTouched?: TouchFn;
126
-
127
- protected _handleChange(value: T) {
128
- if (this._state().disabled()) return;
129
- const transformedDate = this.transformDate()(value);
130
-
131
- this.date.set(transformedDate);
132
- this._onChange?.(transformedDate);
133
- this.changed.emit(transformedDate);
134
-
135
- if (this.autoCloseOnSelect()) {
136
- this._popoverState.set('closed');
137
- }
138
- }
139
-
140
- /** CONROL VALUE ACCESSOR */
141
- writeValue(value: T | null): void {
142
- // optional FormControl is initialized with null value
143
- if (value === null) return;
144
-
145
- this.date.set(this.transformDate()(value));
146
- }
147
-
148
- registerOnChange(fn: ChangeFn<T>): void {
149
- this._onChange = fn;
150
- }
151
-
152
- registerOnTouched(fn: TouchFn): void {
153
- this._onTouched = fn;
154
- }
155
-
156
- setDisabledState(isDisabled: boolean): void {
157
- this._state().disabled.set(isDisabled);
158
- }
159
-
160
- open() {
161
- this._popoverState.set('open');
162
- }
163
-
164
- close() {
165
- this._popoverState.set('closed');
166
- }
167
- }
@@ -1,11 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { HlmIcon } from './lib/hlm-icon';
3
-
4
- export * from './lib/hlm-icon';
5
- export * from './lib/hlm-icon.token';
6
-
7
- @NgModule({
8
- imports: [HlmIcon],
9
- exports: [HlmIcon],
10
- })
11
- export class HlmIconModule {}
@@ -1,20 +0,0 @@
1
- import { InjectionToken, ValueProvider, inject } from '@angular/core';
2
- import type { IconSize } from './hlm-icon';
3
-
4
- export interface HlmIconConfig {
5
- size: IconSize;
6
- }
7
-
8
- const defaultConfig: HlmIconConfig = {
9
- size: 'base',
10
- };
11
-
12
- const HlmIconConfigToken = new InjectionToken<HlmIconConfig>('HlmIconConfig');
13
-
14
- export function provideHlmIconConfig(config: Partial<HlmIconConfig>): ValueProvider {
15
- return { provide: HlmIconConfigToken, useValue: { ...defaultConfig, ...config } };
16
- }
17
-
18
- export function injectHlmIconConfig(): HlmIconConfig {
19
- return inject(HlmIconConfigToken, { optional: true }) ?? defaultConfig;
20
- }
@@ -1,35 +0,0 @@
1
- import { Directive, computed, input } from '@angular/core';
2
- import { injectHlmIconConfig } from './hlm-icon.token';
3
-
4
- export type IconSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | 'none' | (Record<never, never> & string);
5
-
6
- @Directive({
7
- selector: 'ng-icon[hlm]',
8
- host: {
9
- '[style.--ng-icon__size]': '_computedSize()',
10
- },
11
- })
12
- export class HlmIcon {
13
- private readonly _config = injectHlmIconConfig();
14
- public readonly size = input<IconSize>(this._config.size);
15
-
16
- protected readonly _computedSize = computed(() => {
17
- const size = this.size();
18
-
19
- switch (size) {
20
- case 'xs':
21
- return '12px';
22
- case 'sm':
23
- return '16px';
24
- case 'base':
25
- return '24px';
26
- case 'lg':
27
- return '32px';
28
- case 'xl':
29
- return '48px';
30
- default: {
31
- return size;
32
- }
33
- }
34
- });
35
- }