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

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 (382) hide show
  1. package/fesm2022/3ddv-software-division-components-generic-carousel.mjs +354 -0
  2. package/fesm2022/3ddv-software-division-components-generic-carousel.mjs.map +1 -0
  3. package/package.json +47 -67
  4. package/styles.css +2 -46
  5. package/types/3ddv-software-division-components-generic-carousel.d.ts +53 -0
  6. package/.postcssrc.json +0 -5
  7. package/.storybook/main.ts +0 -78
  8. package/.storybook/manager-head.html +0 -1
  9. package/.storybook/preview.ts +0 -30
  10. package/.storybook/tsconfig.json +0 -25
  11. package/.storybook/typings.d.ts +0 -4
  12. package/CHANGELOG.md +0 -8
  13. package/LICENSE.md +0 -21
  14. package/backoffice/checkbox/checkbox.component.css +0 -193
  15. package/backoffice/checkbox/checkbox.component.html +0 -23
  16. package/backoffice/checkbox/checkbox.component.ts +0 -252
  17. package/backoffice/checkbox/index.ts +0 -1
  18. package/backoffice/checkbox/ng-package.json +0 -1
  19. package/backoffice/checkbox/public-api.ts +0 -1
  20. package/backoffice/checkbox/story/checkbox.stories.ts +0 -304
  21. package/backoffice/datepicker/datepicker.component.css +0 -262
  22. package/backoffice/datepicker/datepicker.component.html +0 -40
  23. package/backoffice/datepicker/datepicker.component.ts +0 -366
  24. package/backoffice/datepicker/index.ts +0 -1
  25. package/backoffice/datepicker/ng-package.json +0 -1
  26. package/backoffice/datepicker/public-api.ts +0 -2
  27. package/backoffice/datepicker/story/datepicker.stories.ts +0 -32
  28. package/backoffice/datepicker/ui/ui-calendar-helm/src/index.ts +0 -14
  29. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.ts +0 -183
  30. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.ts +0 -171
  31. package/backoffice/datepicker/ui/ui-date-picker-helm/src/index.ts +0 -16
  32. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.ts +0 -43
  33. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.ts +0 -177
  34. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.ts +0 -43
  35. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.ts +0 -167
  36. package/backoffice/datepicker/ui/ui-icon-helm/src/index.ts +0 -11
  37. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +0 -20
  38. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.ts +0 -35
  39. package/backoffice/datepicker/ui/ui-popover-helm/src/index.ts +0 -15
  40. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.ts +0 -19
  41. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.ts +0 -30
  42. package/backoffice/index.ts +0 -1
  43. package/backoffice/input/index.ts +0 -1
  44. package/backoffice/input/input.component.css +0 -319
  45. package/backoffice/input/input.component.html +0 -51
  46. package/backoffice/input/input.component.ts +0 -497
  47. package/backoffice/input/ng-package.json +0 -1
  48. package/backoffice/input/public-api.ts +0 -2
  49. package/backoffice/input/story/input.stories.ts +0 -243
  50. package/backoffice/radio/index.ts +0 -1
  51. package/backoffice/radio/ng-package.json +0 -1
  52. package/backoffice/radio/public-api.ts +0 -1
  53. package/backoffice/radio/radio.component.css +0 -143
  54. package/backoffice/radio/radio.component.html +0 -15
  55. package/backoffice/radio/radio.component.ts +0 -154
  56. package/backoffice/radio/story/radio.stories.ts +0 -287
  57. package/backoffice/table/_components/pagination/pagination.component.css +0 -117
  58. package/backoffice/table/_components/pagination/pagination.component.html +0 -55
  59. package/backoffice/table/_components/pagination/pagination.component.ts +0 -79
  60. package/backoffice/table/_components/selection-table-head/selection-table-head.component.css +0 -0
  61. package/backoffice/table/_components/selection-table-head/selection-table-head.component.html +0 -6
  62. package/backoffice/table/_components/selection-table-head/selection-table-head.component.ts +0 -36
  63. package/backoffice/table/_components/selection-table-row/selection-table-row.component.css +0 -0
  64. package/backoffice/table/_components/selection-table-row/selection-table-row.component.html +0 -5
  65. package/backoffice/table/_components/selection-table-row/selection-table-row.component.ts +0 -12
  66. package/backoffice/table/_components/sort-header-button/sort-header-button.component.css +0 -14
  67. package/backoffice/table/_components/sort-header-button/sort-header-button.component.html +0 -11
  68. package/backoffice/table/_components/sort-header-button/sort-header-button.component.ts +0 -55
  69. package/backoffice/table/index.ts +0 -1
  70. package/backoffice/table/ng-package.json +0 -1
  71. package/backoffice/table/public-api.ts +0 -6
  72. package/backoffice/table/story/table.stories.ts +0 -364
  73. package/backoffice/table/table.component.css +0 -172
  74. package/backoffice/table/table.component.html +0 -53
  75. package/backoffice/table/table.component.ts +0 -347
  76. package/backoffice/table/ui/ui-icon-helm/src/index.ts +0 -11
  77. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +0 -20
  78. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.ts +0 -35
  79. package/backoffice/table/ui/ui-table-helm/src/index.ts +0 -13
  80. package/backoffice/table/ui/ui-table-helm/src/lib/hlm-table.ts +0 -220
  81. package/components.json +0 -3
  82. package/dist/styles.css +0 -2
  83. package/documentation.json +0 -30473
  84. package/dvm/cart/cart.component.css +0 -103
  85. package/dvm/cart/cart.component.html +0 -31
  86. package/dvm/cart/cart.component.ts +0 -49
  87. package/dvm/cart/cart.stories.ts +0 -370
  88. package/dvm/cart/cart.types.ts +0 -8
  89. package/dvm/cart/index.ts +0 -2
  90. package/dvm/cart/ng-package.json +0 -1
  91. package/dvm/cart/public-api.ts +0 -8
  92. package/dvm/cart/seat-list.component.css +0 -281
  93. package/dvm/cart/seat-list.component.html +0 -85
  94. package/dvm/cart/seat-list.component.ts +0 -76
  95. package/dvm/cart/seat-list.stories.ts +0 -337
  96. package/dvm/cart-item/cart-item.component.html +0 -1
  97. package/dvm/cart-item/cart-item.component.ts +0 -8
  98. package/dvm/cart-item/cart-item.service.ts +0 -8
  99. package/dvm/cart-item/cart.stories.ts +0 -31
  100. package/dvm/cart-item/index.ts +0 -1
  101. package/dvm/cart-item/ng-package.json +0 -1
  102. package/dvm/cart-item/public-api.ts +0 -6
  103. package/dvm/index.ts +0 -1
  104. package/dvm/legend/index.ts +0 -1
  105. package/dvm/legend/legend.component.css +0 -49
  106. package/dvm/legend/legend.component.html +0 -8
  107. package/dvm/legend/legend.component.ts +0 -41
  108. package/dvm/legend/legend.stories.ts +0 -16
  109. package/dvm/legend/ng-package.json +0 -1
  110. package/dvm/legend/public-api.ts +0 -7
  111. package/dvm/legend/types.ts +0 -6
  112. package/dvm/legend/ui/legend-elements/index.ts +0 -1
  113. package/dvm/legend/ui/legend-elements/legend-elements.component.css +0 -49
  114. package/dvm/legend/ui/legend-elements/legend-elements.component.html +0 -8
  115. package/dvm/legend/ui/legend-elements/legend-elements.component.ts +0 -41
  116. package/dvm/loader/index.ts +0 -1
  117. package/dvm/loader/loader.component.html +0 -1
  118. package/dvm/loader/loader.component.ts +0 -8
  119. package/dvm/loader/loader.service.ts +0 -8
  120. package/dvm/loader/loader.stories.ts +0 -31
  121. package/dvm/loader/ng-package.json +0 -1
  122. package/dvm/loader/public-api.ts +0 -6
  123. package/dvm/map-loader/index.ts +0 -1
  124. package/dvm/map-loader/map-loader.component.css +0 -91
  125. package/dvm/map-loader/map-loader.component.html +0 -23
  126. package/dvm/map-loader/map-loader.component.ts +0 -187
  127. package/dvm/map-loader/map-loader.stories.ts +0 -16
  128. package/dvm/map-loader/ng-package.json +0 -1
  129. package/dvm/map-loader/public-api.ts +0 -5
  130. package/dvm/neighbors/index.ts +0 -1
  131. package/dvm/neighbors/neighbors.component.css +0 -158
  132. package/dvm/neighbors/neighbors.component.html +0 -45
  133. package/dvm/neighbors/neighbors.component.ts +0 -218
  134. package/dvm/neighbors/ng-package.json +0 -1
  135. package/dvm/neighbors/public-api.ts +0 -2
  136. package/dvm/neighbors/story/arrow-left-black-icon.svg +0 -3
  137. package/dvm/neighbors/story/mock-data.ts +0 -15
  138. package/dvm/neighbors/story/neighbours.stories.css +0 -12
  139. package/dvm/neighbors/story/neighbours.stories.ts +0 -117
  140. package/dvm/neighbors/types.ts +0 -14
  141. package/dvm/popover/base-popover.component.ts +0 -70
  142. package/dvm/popover/index.ts +0 -1
  143. package/dvm/popover/ng-package.json +0 -1
  144. package/dvm/popover/popover.component.css +0 -227
  145. package/dvm/popover/popover.component.html +0 -27
  146. package/dvm/popover/popover.component.ts +0 -236
  147. package/dvm/popover/popover.config.ts +0 -30
  148. package/dvm/popover/popover.service.ts +0 -627
  149. package/dvm/popover/popover.stories.ts +0 -873
  150. package/dvm/popover/public-api.ts +0 -14
  151. package/dvm/popover/seat-popover/seat-popover.component.css +0 -89
  152. package/dvm/popover/seat-popover/seat-popover.component.html +0 -40
  153. package/dvm/popover/seat-popover/seat-popover.component.ts +0 -74
  154. package/dvm/popover/section-popover/section-popover.component.css +0 -157
  155. package/dvm/popover/section-popover/section-popover.component.html +0 -58
  156. package/dvm/popover/section-popover/section-popover.component.ts +0 -106
  157. package/dvm/popover/services/dvm-popover-positioner.service.ts +0 -73
  158. package/dvm/popover/services/popover-manager.service.ts +0 -88
  159. package/dvm/popover/transformers/base-popover-data-transformer.ts +0 -36
  160. package/dvm/popover/types.ts +0 -104
  161. package/dvm/stepper/index.ts +0 -1
  162. package/dvm/stepper/ng-package.json +0 -1
  163. package/dvm/stepper/public-api.ts +0 -5
  164. package/dvm/stepper/stepper.component.css +0 -142
  165. package/dvm/stepper/stepper.component.html +0 -9
  166. package/dvm/stepper/stepper.component.ts +0 -101
  167. package/dvm/stepper/types.ts +0 -6
  168. package/dvm/ticket-info-item/index.ts +0 -1
  169. package/dvm/ticket-info-item/ng-package.json +0 -1
  170. package/dvm/ticket-info-item/public-api.ts +0 -6
  171. package/dvm/ticket-info-item/ticket-info-item.component.html +0 -1
  172. package/dvm/ticket-info-item/ticket-info-item.component.ts +0 -8
  173. package/dvm/ticket-info-item/ticket-info-item.service.ts +0 -8
  174. package/dvm/ticket-info-item/ticket-info-item.stories.ts +0 -31
  175. package/generic/add-digital-wallet/add-digital-wallet.component.css +0 -76
  176. package/generic/add-digital-wallet/add-digital-wallet.component.html +0 -46
  177. package/generic/add-digital-wallet/add-digital-wallet.component.ts +0 -44
  178. package/generic/add-digital-wallet/index.ts +0 -1
  179. package/generic/add-digital-wallet/ng-package.json +0 -1
  180. package/generic/add-digital-wallet/public-api.ts +0 -1
  181. package/generic/braintree/braintree.component.css +0 -7
  182. package/generic/braintree/braintree.component.ts +0 -134
  183. package/generic/braintree/index.ts +0 -1
  184. package/generic/braintree/ng-package.json +0 -1
  185. package/generic/braintree/public-api.ts +0 -6
  186. package/generic/braintree/story/braintree.stories.css +0 -3
  187. package/generic/braintree/story/braintree.stories.ts +0 -27
  188. package/generic/braintree/types.ts +0 -28
  189. package/generic/button/button.component.css +0 -305
  190. package/generic/button/button.component.html +0 -10
  191. package/generic/button/button.component.ts +0 -353
  192. package/generic/button/index.ts +0 -1
  193. package/generic/button/ng-package.json +0 -1
  194. package/generic/button/public-api.ts +0 -6
  195. package/generic/button/story/button.stories.ts +0 -384
  196. package/generic/button/ui/ui-button-helm/src/index.ts +0 -10
  197. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.token.ts +0 -22
  198. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.ts +0 -62
  199. package/generic/carousel/carousel-item.component.ts +0 -15
  200. package/generic/carousel/carousel-item.directive.ts +0 -14
  201. package/generic/carousel/carousel.component.css +0 -90
  202. package/generic/carousel/carousel.component.html +0 -13
  203. package/generic/carousel/carousel.component.ts +0 -44
  204. package/generic/carousel/index.ts +0 -1
  205. package/generic/carousel/public-api.ts +0 -2
  206. package/generic/carousel/ui/ui-carousel-helm/src/index.ts +0 -29
  207. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.ts +0 -23
  208. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.ts +0 -25
  209. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.ts +0 -58
  210. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.ts +0 -61
  211. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.ts +0 -36
  212. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.ts +0 -105
  213. package/generic/dialog/dialog.component.css +0 -5
  214. package/generic/dialog/dialog.component.html +0 -3
  215. package/generic/dialog/dialog.component.ts +0 -20
  216. package/generic/dialog/dialog.stories.ts +0 -14
  217. package/generic/dialog/index.ts +0 -1
  218. package/generic/dialog/libs/ui-dialog-helm/src/index.ts +0 -37
  219. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.ts +0 -20
  220. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.ts +0 -56
  221. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.ts +0 -17
  222. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.ts +0 -19
  223. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.ts +0 -19
  224. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.ts +0 -23
  225. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.ts +0 -19
  226. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.ts +0 -59
  227. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.ts +0 -31
  228. package/generic/dialog/ng-package.json +0 -1
  229. package/generic/dialog/public-api.ts +0 -7
  230. package/generic/dialog/tsconfig.json +0 -7
  231. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.css +0 -0
  232. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.html +0 -1
  233. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.ts +0 -17
  234. package/generic/dialog/ui/dialog-footer/dialog-footer.component.css +0 -0
  235. package/generic/dialog/ui/dialog-footer/dialog-footer.component.html +0 -3
  236. package/generic/dialog/ui/dialog-footer/dialog-footer.component.ts +0 -11
  237. package/generic/dialog/ui/dialog-header/dialog-header.component.css +0 -0
  238. package/generic/dialog/ui/dialog-header/dialog-header.component.html +0 -8
  239. package/generic/dialog/ui/dialog-header/dialog-header.component.ts +0 -18
  240. package/generic/drawer/drawer.component.html +0 -1
  241. package/generic/drawer/drawer.component.ts +0 -8
  242. package/generic/drawer/drawer.service.ts +0 -8
  243. package/generic/drawer/drawer.stories.ts +0 -31
  244. package/generic/drawer/index.ts +0 -1
  245. package/generic/drawer/ng-package.json +0 -1
  246. package/generic/drawer/public-api.ts +0 -6
  247. package/generic/icon/icon.component.css +0 -7
  248. package/generic/icon/icon.component.html +0 -3
  249. package/generic/icon/icon.component.ts +0 -86
  250. package/generic/icon/icon.stories.ts +0 -16
  251. package/generic/icon/index.ts +0 -1
  252. package/generic/icon/lib/ui-icon-helm/src/index.ts +0 -11
  253. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.ts +0 -20
  254. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.ts +0 -36
  255. package/generic/icon/ng-package.json +0 -1
  256. package/generic/icon/public-api.ts +0 -6
  257. package/generic/icon/tsconfig.json +0 -7
  258. package/generic/index.ts +0 -1
  259. package/generic/select/index.ts +0 -1
  260. package/generic/select/lib/hlm-select-content.ts +0 -29
  261. package/generic/select/lib/hlm-select-group.ts +0 -17
  262. package/generic/select/lib/hlm-select-label.ts +0 -26
  263. package/generic/select/lib/hlm-select-option.ts +0 -37
  264. package/generic/select/lib/hlm-select-scroll-down.ts +0 -24
  265. package/generic/select/lib/hlm-select-scroll-up.ts +0 -23
  266. package/generic/select/lib/hlm-select-trigger.ts +0 -53
  267. package/generic/select/lib/hlm-select-value.ts +0 -17
  268. package/generic/select/lib/hlm-select.ts +0 -15
  269. package/generic/select/lib/index.ts +0 -38
  270. package/generic/select/ng-package.json +0 -1
  271. package/generic/select/public-api.ts +0 -3
  272. package/generic/select/select.component.css +0 -65
  273. package/generic/select/select.component.html +0 -19
  274. package/generic/select/select.component.ts +0 -25
  275. package/generic/select/types.ts +0 -4
  276. package/ng-package.json +0 -10
  277. package/public/3ddv-logo.jpg +0 -0
  278. package/public/neighbours-after.png +0 -0
  279. package/public/neighbours-before.png +0 -0
  280. package/shared/apply-theme-variables/apply-theme-variables.ts +0 -35
  281. package/shared/apply-theme-variables/index.ts +0 -1
  282. package/shared/format-value.pipe.ts +0 -23
  283. package/shared/index.ts +0 -1
  284. package/shared/lib-provider/config-token.ts +0 -4
  285. package/shared/lib-provider/index.ts +0 -1
  286. package/shared/lib-provider/provide-sdc.ts +0 -24
  287. package/shared/lib-provider/public-api.ts +0 -1
  288. package/shared/ng-package.json +0 -1
  289. package/shared/public-api.ts +0 -6
  290. package/shared/screen-observer/index.ts +0 -2
  291. package/shared/screen-observer/provide-screen-observer.ts +0 -17
  292. package/shared/screen-observer/screen-observer.ts +0 -56
  293. package/shared/screen-observer/sizable-base.ts +0 -70
  294. package/shared/theme-provider/generic-theme.ts +0 -1
  295. package/shared/theme-provider/index.ts +0 -1
  296. package/shared/theme-provider/public-api.ts +0 -1
  297. package/shared/theme-provider/theme-provider.directive.ts +0 -17
  298. package/shared/themes/sdc.css +0 -153
  299. package/shared/types.ts +0 -18
  300. package/src/private-exports.ts +0 -1
  301. package/src/public-api.ts +0 -20
  302. package/tsconfig.json +0 -50
  303. package/tsconfig.lib.prod.json +0 -6
  304. package/tsconfig.spec.json +0 -15
  305. package/tsconfig.temp.json +0 -1
  306. package/utils/index.ts +0 -1
  307. package/utils/ng-package.json +0 -1
  308. package/utils/public-api.ts +0 -1
  309. package/utils/validate-styles-for-component.ts +0 -39
  310. /package/{dist/README.md → README.md} +0 -0
  311. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-checkbox.mjs +0 -0
  312. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-checkbox.mjs.map +0 -0
  313. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-datepicker.mjs +0 -0
  314. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-datepicker.mjs.map +0 -0
  315. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-input.mjs +0 -0
  316. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-input.mjs.map +0 -0
  317. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-radio.mjs +0 -0
  318. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-radio.mjs.map +0 -0
  319. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-table.mjs +0 -0
  320. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-backoffice-table.mjs.map +0 -0
  321. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart-item.mjs +0 -0
  322. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart-item.mjs.map +0 -0
  323. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart.mjs +0 -0
  324. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-cart.mjs.map +0 -0
  325. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-legend.mjs +0 -0
  326. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-legend.mjs.map +0 -0
  327. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-loader.mjs +0 -0
  328. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-loader.mjs.map +0 -0
  329. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-map-loader.mjs +0 -0
  330. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-map-loader.mjs.map +0 -0
  331. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-neighbors.mjs +0 -0
  332. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-neighbors.mjs.map +0 -0
  333. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-popover.mjs +0 -0
  334. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-popover.mjs.map +0 -0
  335. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-stepper.mjs +0 -0
  336. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-stepper.mjs.map +0 -0
  337. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-ticket-info-item.mjs +0 -0
  338. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-dvm-ticket-info-item.mjs.map +0 -0
  339. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-add-digital-wallet.mjs +0 -0
  340. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-add-digital-wallet.mjs.map +0 -0
  341. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-braintree.mjs +0 -0
  342. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-braintree.mjs.map +0 -0
  343. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-button.mjs +0 -0
  344. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-button.mjs.map +0 -0
  345. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-dialog.mjs +0 -0
  346. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-dialog.mjs.map +0 -0
  347. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-drawer.mjs +0 -0
  348. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-drawer.mjs.map +0 -0
  349. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-icon.mjs +0 -0
  350. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-icon.mjs.map +0 -0
  351. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-select.mjs +0 -0
  352. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-generic-select.mjs.map +0 -0
  353. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-shared.mjs +0 -0
  354. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-shared.mjs.map +0 -0
  355. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-utils.mjs +0 -0
  356. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components-utils.mjs.map +0 -0
  357. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components.mjs +0 -0
  358. /package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components.mjs.map +0 -0
  359. /package/{dist/types → types}/3ddv-software-division-components-backoffice-checkbox.d.ts +0 -0
  360. /package/{dist/types → types}/3ddv-software-division-components-backoffice-datepicker.d.ts +0 -0
  361. /package/{dist/types → types}/3ddv-software-division-components-backoffice-input.d.ts +0 -0
  362. /package/{dist/types → types}/3ddv-software-division-components-backoffice-radio.d.ts +0 -0
  363. /package/{dist/types → types}/3ddv-software-division-components-backoffice-table.d.ts +0 -0
  364. /package/{dist/types → types}/3ddv-software-division-components-dvm-cart-item.d.ts +0 -0
  365. /package/{dist/types → types}/3ddv-software-division-components-dvm-cart.d.ts +0 -0
  366. /package/{dist/types → types}/3ddv-software-division-components-dvm-legend.d.ts +0 -0
  367. /package/{dist/types → types}/3ddv-software-division-components-dvm-loader.d.ts +0 -0
  368. /package/{dist/types → types}/3ddv-software-division-components-dvm-map-loader.d.ts +0 -0
  369. /package/{dist/types → types}/3ddv-software-division-components-dvm-neighbors.d.ts +0 -0
  370. /package/{dist/types → types}/3ddv-software-division-components-dvm-popover.d.ts +0 -0
  371. /package/{dist/types → types}/3ddv-software-division-components-dvm-stepper.d.ts +0 -0
  372. /package/{dist/types → types}/3ddv-software-division-components-dvm-ticket-info-item.d.ts +0 -0
  373. /package/{dist/types → types}/3ddv-software-division-components-generic-add-digital-wallet.d.ts +0 -0
  374. /package/{dist/types → types}/3ddv-software-division-components-generic-braintree.d.ts +0 -0
  375. /package/{dist/types → types}/3ddv-software-division-components-generic-button.d.ts +0 -0
  376. /package/{dist/types → types}/3ddv-software-division-components-generic-dialog.d.ts +0 -0
  377. /package/{dist/types → types}/3ddv-software-division-components-generic-drawer.d.ts +0 -0
  378. /package/{dist/types → types}/3ddv-software-division-components-generic-icon.d.ts +0 -0
  379. /package/{dist/types → types}/3ddv-software-division-components-generic-select.d.ts +0 -0
  380. /package/{dist/types → types}/3ddv-software-division-components-shared.d.ts +0 -0
  381. /package/{dist/types → types}/3ddv-software-division-components-utils.d.ts +0 -0
  382. /package/{dist/types → types}/3ddv-software-division-components.d.ts +0 -0
@@ -1,32 +0,0 @@
1
- import { FormControl, Validators } from '@angular/forms';
2
- import type { Meta, StoryObj } from '@storybook/angular';
3
- import { DatePickerComponent } from '../datepicker.component';
4
-
5
- const meta: Meta<DatePickerComponent> = {
6
- title: 'Backoffice/DatePicker',
7
- component: DatePickerComponent,
8
- parameters: {
9
- layout: 'centered',
10
- },
11
- tags: ['autodocs'],
12
- };
13
-
14
- export default meta;
15
- type Story = StoryObj<DatePickerComponent>;
16
-
17
- // Basic input with default settings
18
- export const Default: Story = {
19
- render: () => ({
20
- props: {
21
- formControl: new FormControl('', [Validators.required, Validators.email]),
22
- },
23
- template: `
24
- <sdc-datepicker
25
- label="Email Address"
26
- placeholder="Enter your email address"
27
- type="email"
28
- [formControl]="formControl"
29
- />
30
- `,
31
- }),
32
- };
@@ -1,14 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { HlmCalendar } from './lib/hlm-calendar';
3
- import { HlmCalendarMulti } from './lib/hlm-calendar-multi';
4
-
5
- export * from './lib/hlm-calendar';
6
- export * from './lib/hlm-calendar-multi';
7
-
8
- export const HlmCalendarImports = [HlmCalendar, HlmCalendarMulti] as const;
9
-
10
- @NgModule({
11
- imports: [...HlmCalendarImports],
12
- exports: [...HlmCalendarImports],
13
- })
14
- export class HlmCalendarModule {}
@@ -1,183 +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
- BrnCalendarCell,
18
- BrnCalendarCellButton,
19
- BrnCalendarGrid,
20
- BrnCalendarHeader,
21
- BrnCalendarMulti,
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-multi',
35
- imports: [
36
- BrnCalendarMulti,
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
- brnCalendarMulti
52
- [min]="min()"
53
- [max]="max()"
54
- [minSelection]="minSelection()"
55
- [maxSelection]="maxSelection()"
56
- [disabled]="disabled()"
57
- [(date)]="date"
58
- [dateDisabled]="dateDisabled()"
59
- [weekStartsOn]="weekStartsOn()"
60
- [defaultFocusedDate]="defaultFocusedDate()"
61
- [class]="_computedCalenderClass()">
62
- <div class="inline-flex flex-col space-y-4">
63
- <!-- Header -->
64
- <div class="space-y-4">
65
- <div class="relative flex items-center justify-center pt-1">
66
- <div brnCalendarHeader class="text-sm font-medium">
67
- {{ _heading() }}
68
- </div>
69
-
70
- <div class="flex items-center space-x-1">
71
- <button
72
- brnCalendarPreviousButton
73
- class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute left-1 inline-flex h-7 w-7 items-center justify-center whitespace-nowrap rounded-md border bg-transparent p-0 text-sm font-medium opacity-50 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">
74
- <ng-icon hlm name="lucideChevronLeft" size="sm" />
75
- </button>
76
-
77
- <button
78
- brnCalendarNextButton
79
- class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute right-1 inline-flex h-7 w-7 items-center justify-center whitespace-nowrap rounded-md border bg-transparent p-0 text-sm font-medium opacity-50 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">
80
- <ng-icon hlm name="lucideChevronRight" size="sm" />
81
- </button>
82
- </div>
83
- </div>
84
- </div>
85
-
86
- <table class="w-full border-collapse space-y-1" brnCalendarGrid>
87
- <thead>
88
- <tr class="flex">
89
- <th
90
- *brnCalendarWeekday="let weekday"
91
- scope="col"
92
- class="text-muted-foreground w-8 rounded-md text-[0.8rem] font-normal"
93
- [attr.aria-label]="_i18n.labelWeekday(weekday)">
94
- {{ _i18n.formatWeekdayName(weekday) }}
95
- </th>
96
- </tr>
97
- </thead>
98
-
99
- <tbody role="rowgroup">
100
- <tr *brnCalendarWeek="let week" class="mt-2 flex w-full">
101
- @for (date of week; track _dateAdapter.getTime(date)) {
102
- <td
103
- brnCalendarCell
104
- class="data-[selected]:data-[outside]:bg-accent/50 data-[selected]:bg-accent relative h-8 w-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">
105
- <button brnCalendarCellButton [date]="date" [class]="_btnClass">
106
- {{ _dateAdapter.getDate(date) }}
107
- </button>
108
- </td>
109
- }
110
- </tr>
111
- </tbody>
112
- </table>
113
- </div>
114
- </div>
115
- `,
116
- changeDetection: ChangeDetectionStrategy.OnPush,
117
- })
118
- export class HlmCalendarMulti<T> {
119
- public readonly calendarClass = input<ClassValue>('');
120
-
121
- protected readonly _computedCalenderClass = computed(() => hlm('rounded-md border p-3', this.calendarClass()));
122
-
123
- /** Access the calendar i18n */
124
- protected readonly _i18n = injectBrnCalendarI18n();
125
-
126
- /** Access the date time adapter */
127
- protected readonly _dateAdapter = injectDateAdapter<T>();
128
-
129
- /** The minimum date that can be selected.*/
130
- public readonly min = input<T>();
131
-
132
- /** The maximum date that can be selected. */
133
- public readonly max = input<T>();
134
-
135
- /** The minimum selectable dates. */
136
- public readonly minSelection = input<number, NumberInput>(undefined, {
137
- transform: numberAttribute,
138
- });
139
-
140
- /** The maximum selectable dates. */
141
- public readonly maxSelection = input<number, NumberInput>(undefined, {
142
- transform: numberAttribute,
143
- });
144
-
145
- /** Determine if the date picker is disabled. */
146
- public readonly disabled = input<boolean, BooleanInput>(false, {
147
- transform: booleanAttribute,
148
- });
149
-
150
- /** The selected value. */
151
- public readonly date = model<T[]>();
152
-
153
- /** Whether a specific date is disabled. */
154
- public readonly dateDisabled = input<(date: T) => boolean>(() => false);
155
-
156
- /** The day the week starts on */
157
- public readonly weekStartsOn = input<Weekday, NumberInput>(0, {
158
- transform: (v: unknown) => numberAttribute(v) as Weekday,
159
- });
160
-
161
- /** The default focused date. */
162
- public readonly defaultFocusedDate = input<T>();
163
-
164
- /** Access the calendar directive */
165
- private readonly _calendar = viewChild.required(BrnCalendarMulti);
166
-
167
- /** Get the heading for the current month and year */
168
- protected readonly _heading = computed(() =>
169
- this._i18n.formatHeader(
170
- this._dateAdapter.getMonth(this._calendar().focusedDate()),
171
- this._dateAdapter.getYear(this._calendar().focusedDate())
172
- )
173
- );
174
-
175
- protected readonly _btnClass = hlm(
176
- buttonVariants({ variant: 'ghost' }),
177
- 'size-8 p-0 font-normal aria-selected:opacity-100',
178
- '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',
179
- 'data-[today]:bg-accent data-[today]:text-accent-foreground',
180
- 'data-[selected]:bg-primary data-[selected]:text-primary-foreground data-[selected]:hover:bg-primary data-[selected]:hover:text-primary-foreground data-[selected]:focus:bg-primary data-[selected]:focus:text-primary-foreground',
181
- 'data-[disabled]:text-muted-foreground data-[disabled]:opacity-50'
182
- );
183
- }
@@ -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
- }