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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (704) hide show
  1. package/.postcssrc.json +5 -0
  2. package/.storybook/main.ts +78 -0
  3. package/.storybook/manager-head.html +1 -0
  4. package/.storybook/preview.ts +30 -0
  5. package/.storybook/tsconfig.json +25 -0
  6. package/.storybook/typings.d.ts +4 -0
  7. package/CHANGELOG.md +8 -0
  8. package/LICENSE.md +21 -0
  9. package/backoffice/checkbox/checkbox.component.css +193 -0
  10. package/backoffice/checkbox/checkbox.component.html +23 -0
  11. package/backoffice/checkbox/checkbox.component.ts +252 -0
  12. package/backoffice/checkbox/index.ts +1 -0
  13. package/backoffice/checkbox/ng-package.json +1 -0
  14. package/backoffice/checkbox/public-api.ts +1 -0
  15. package/backoffice/checkbox/story/checkbox.stories.ts +304 -0
  16. package/backoffice/datepicker/datepicker.component.css +262 -0
  17. package/backoffice/datepicker/datepicker.component.html +40 -0
  18. package/backoffice/datepicker/datepicker.component.ts +366 -0
  19. package/backoffice/datepicker/index.ts +1 -0
  20. package/backoffice/datepicker/ng-package.json +1 -0
  21. package/backoffice/datepicker/{public-api.d.ts → public-api.ts} +1 -1
  22. package/backoffice/datepicker/story/datepicker.stories.ts +32 -0
  23. package/backoffice/datepicker/ui/ui-calendar-helm/src/index.ts +14 -0
  24. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.ts +183 -0
  25. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.ts +171 -0
  26. package/backoffice/datepicker/ui/ui-date-picker-helm/src/index.ts +16 -0
  27. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.ts +43 -0
  28. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.ts +177 -0
  29. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.ts +43 -0
  30. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.ts +167 -0
  31. package/backoffice/datepicker/ui/ui-icon-helm/src/index.ts +11 -0
  32. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +20 -0
  33. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.ts +35 -0
  34. package/backoffice/datepicker/ui/ui-popover-helm/src/index.ts +15 -0
  35. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.ts +19 -0
  36. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.ts +30 -0
  37. package/backoffice/index.ts +1 -0
  38. package/backoffice/input/index.ts +1 -0
  39. package/backoffice/input/input.component.css +319 -0
  40. package/backoffice/input/input.component.html +51 -0
  41. package/backoffice/input/input.component.ts +497 -0
  42. package/backoffice/input/ng-package.json +1 -0
  43. package/backoffice/input/public-api.ts +2 -0
  44. package/backoffice/input/story/input.stories.ts +243 -0
  45. package/backoffice/radio/index.ts +1 -0
  46. package/backoffice/radio/ng-package.json +1 -0
  47. package/backoffice/radio/public-api.ts +1 -0
  48. package/backoffice/radio/radio.component.css +143 -0
  49. package/backoffice/radio/radio.component.html +15 -0
  50. package/backoffice/radio/radio.component.ts +154 -0
  51. package/backoffice/radio/story/radio.stories.ts +287 -0
  52. package/backoffice/table/_components/pagination/pagination.component.css +117 -0
  53. package/backoffice/table/_components/pagination/pagination.component.html +55 -0
  54. package/backoffice/table/_components/pagination/pagination.component.ts +79 -0
  55. package/backoffice/table/_components/selection-table-head/selection-table-head.component.css +0 -0
  56. package/backoffice/table/_components/selection-table-head/selection-table-head.component.html +6 -0
  57. package/backoffice/table/_components/selection-table-head/selection-table-head.component.ts +36 -0
  58. package/backoffice/table/_components/selection-table-row/selection-table-row.component.css +0 -0
  59. package/backoffice/table/_components/selection-table-row/selection-table-row.component.html +5 -0
  60. package/backoffice/table/_components/selection-table-row/selection-table-row.component.ts +12 -0
  61. package/backoffice/table/_components/sort-header-button/sort-header-button.component.css +14 -0
  62. package/backoffice/table/_components/sort-header-button/sort-header-button.component.html +11 -0
  63. package/backoffice/table/_components/sort-header-button/sort-header-button.component.ts +55 -0
  64. package/backoffice/table/index.ts +1 -0
  65. package/backoffice/table/ng-package.json +1 -0
  66. package/backoffice/table/public-api.ts +6 -0
  67. package/backoffice/table/story/table.stories.ts +364 -0
  68. package/backoffice/table/table.component.css +172 -0
  69. package/backoffice/table/table.component.html +53 -0
  70. package/backoffice/table/table.component.ts +347 -0
  71. package/backoffice/table/ui/ui-icon-helm/src/index.ts +11 -0
  72. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +20 -0
  73. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.ts +35 -0
  74. package/backoffice/table/ui/ui-table-helm/src/index.ts +13 -0
  75. package/backoffice/table/ui/ui-table-helm/src/lib/hlm-table.ts +220 -0
  76. package/components.json +3 -0
  77. package/{README.md → dist/README.md} +11 -7
  78. package/dist/fesm2022/3ddv-software-division-components-backoffice-checkbox.mjs +208 -0
  79. package/dist/fesm2022/3ddv-software-division-components-backoffice-checkbox.mjs.map +1 -0
  80. package/dist/fesm2022/3ddv-software-division-components-backoffice-datepicker.mjs +1061 -0
  81. package/dist/fesm2022/3ddv-software-division-components-backoffice-datepicker.mjs.map +1 -0
  82. package/dist/fesm2022/3ddv-software-division-components-backoffice-input.mjs +411 -0
  83. package/dist/fesm2022/3ddv-software-division-components-backoffice-input.mjs.map +1 -0
  84. package/dist/fesm2022/3ddv-software-division-components-backoffice-radio.mjs +128 -0
  85. package/dist/fesm2022/3ddv-software-division-components-backoffice-radio.mjs.map +1 -0
  86. package/dist/fesm2022/3ddv-software-division-components-backoffice-table.mjs +658 -0
  87. package/dist/fesm2022/3ddv-software-division-components-backoffice-table.mjs.map +1 -0
  88. package/dist/fesm2022/3ddv-software-division-components-dvm-cart-item.mjs +34 -0
  89. package/dist/fesm2022/3ddv-software-division-components-dvm-cart-item.mjs.map +1 -0
  90. package/dist/fesm2022/3ddv-software-division-components-dvm-cart.mjs +101 -0
  91. package/dist/fesm2022/3ddv-software-division-components-dvm-cart.mjs.map +1 -0
  92. package/dist/fesm2022/3ddv-software-division-components-dvm-legend.mjs +77 -0
  93. package/dist/fesm2022/3ddv-software-division-components-dvm-legend.mjs.map +1 -0
  94. package/dist/fesm2022/3ddv-software-division-components-dvm-loader.mjs +34 -0
  95. package/dist/fesm2022/3ddv-software-division-components-dvm-loader.mjs.map +1 -0
  96. package/dist/fesm2022/3ddv-software-division-components-dvm-map-loader.mjs +161 -0
  97. package/dist/fesm2022/3ddv-software-division-components-dvm-map-loader.mjs.map +1 -0
  98. package/dist/fesm2022/3ddv-software-division-components-dvm-neighbors.mjs +204 -0
  99. package/dist/fesm2022/3ddv-software-division-components-dvm-neighbors.mjs.map +1 -0
  100. package/dist/fesm2022/3ddv-software-division-components-dvm-popover.mjs +1080 -0
  101. package/dist/fesm2022/3ddv-software-division-components-dvm-popover.mjs.map +1 -0
  102. package/dist/fesm2022/3ddv-software-division-components-dvm-stepper.mjs +94 -0
  103. package/dist/fesm2022/3ddv-software-division-components-dvm-stepper.mjs.map +1 -0
  104. package/dist/fesm2022/3ddv-software-division-components-dvm-ticket-info-item.mjs +34 -0
  105. package/dist/fesm2022/3ddv-software-division-components-dvm-ticket-info-item.mjs.map +1 -0
  106. package/dist/fesm2022/3ddv-software-division-components-generic-add-digital-wallet.mjs +46 -0
  107. package/dist/fesm2022/3ddv-software-division-components-generic-add-digital-wallet.mjs.map +1 -0
  108. package/dist/fesm2022/3ddv-software-division-components-generic-braintree.mjs +127 -0
  109. package/dist/fesm2022/3ddv-software-division-components-generic-braintree.mjs.map +1 -0
  110. package/dist/fesm2022/3ddv-software-division-components-generic-button.mjs +373 -0
  111. package/dist/fesm2022/3ddv-software-division-components-generic-button.mjs.map +1 -0
  112. package/dist/fesm2022/3ddv-software-division-components-generic-dialog.mjs +309 -0
  113. package/dist/fesm2022/3ddv-software-division-components-generic-dialog.mjs.map +1 -0
  114. package/dist/fesm2022/3ddv-software-division-components-generic-drawer.mjs +34 -0
  115. package/dist/fesm2022/3ddv-software-division-components-generic-drawer.mjs.map +1 -0
  116. package/dist/fesm2022/3ddv-software-division-components-generic-icon.mjs +130 -0
  117. package/dist/fesm2022/3ddv-software-division-components-generic-icon.mjs.map +1 -0
  118. package/dist/fesm2022/3ddv-software-division-components-generic-select.mjs +295 -0
  119. package/dist/fesm2022/3ddv-software-division-components-generic-select.mjs.map +1 -0
  120. package/dist/fesm2022/3ddv-software-division-components-shared.mjs +171 -0
  121. package/dist/fesm2022/3ddv-software-division-components-shared.mjs.map +1 -0
  122. package/dist/fesm2022/3ddv-software-division-components-utils.mjs +39 -0
  123. package/dist/fesm2022/3ddv-software-division-components-utils.mjs.map +1 -0
  124. package/dist/fesm2022/3ddv-software-division-components.mjs +18 -0
  125. package/dist/fesm2022/3ddv-software-division-components.mjs.map +1 -0
  126. package/dist/styles.css +2 -0
  127. package/dist/types/3ddv-software-division-components-backoffice-checkbox.d.ts +106 -0
  128. package/dist/types/3ddv-software-division-components-backoffice-datepicker.d.ts +153 -0
  129. package/dist/types/3ddv-software-division-components-backoffice-input.d.ts +203 -0
  130. package/dist/types/3ddv-software-division-components-backoffice-radio.d.ts +76 -0
  131. package/dist/types/3ddv-software-division-components-backoffice-table.d.ts +130 -0
  132. package/dist/types/3ddv-software-division-components-dvm-cart-item.d.ts +14 -0
  133. package/dist/types/3ddv-software-division-components-dvm-cart.d.ts +76 -0
  134. package/dist/types/3ddv-software-division-components-dvm-legend.d.ts +38 -0
  135. package/dist/types/3ddv-software-division-components-dvm-loader.d.ts +14 -0
  136. package/{dvm/map-loader/map-loader.component.d.ts → dist/types/3ddv-software-division-components-dvm-map-loader.d.ts} +16 -14
  137. package/dist/types/3ddv-software-division-components-dvm-neighbors.d.ts +57 -0
  138. package/dist/types/3ddv-software-division-components-dvm-popover.d.ts +456 -0
  139. package/dist/types/3ddv-software-division-components-dvm-stepper.d.ts +34 -0
  140. package/dist/types/3ddv-software-division-components-dvm-ticket-info-item.d.ts +14 -0
  141. package/dist/types/3ddv-software-division-components-generic-add-digital-wallet.d.ts +23 -0
  142. package/dist/types/3ddv-software-division-components-generic-braintree.d.ts +62 -0
  143. package/dist/types/3ddv-software-division-components-generic-button.d.ts +186 -0
  144. package/dist/types/3ddv-software-division-components-generic-dialog.d.ts +104 -0
  145. package/dist/types/3ddv-software-division-components-generic-drawer.d.ts +14 -0
  146. package/dist/types/3ddv-software-division-components-generic-icon.d.ts +38 -0
  147. package/dist/types/3ddv-software-division-components-generic-select.d.ts +110 -0
  148. package/dist/types/3ddv-software-division-components-shared.d.ts +69 -0
  149. package/dist/types/3ddv-software-division-components-utils.d.ts +3 -0
  150. package/dist/types/3ddv-software-division-components.d.ts +2 -0
  151. package/documentation.json +30473 -0
  152. package/dvm/cart/cart.component.css +103 -0
  153. package/dvm/cart/cart.component.html +31 -0
  154. package/dvm/cart/cart.component.ts +49 -0
  155. package/dvm/cart/cart.stories.ts +370 -0
  156. package/dvm/cart/cart.types.ts +8 -0
  157. package/dvm/cart/index.ts +2 -0
  158. package/dvm/cart/ng-package.json +1 -0
  159. package/dvm/cart/{public-api.d.ts → public-api.ts} +5 -1
  160. package/dvm/cart/seat-list.component.css +281 -0
  161. package/dvm/cart/seat-list.component.html +85 -0
  162. package/dvm/cart/seat-list.component.ts +76 -0
  163. package/dvm/cart/seat-list.stories.ts +337 -0
  164. package/dvm/cart-item/cart-item.component.html +1 -0
  165. package/dvm/cart-item/cart-item.component.ts +8 -0
  166. package/dvm/cart-item/cart-item.service.ts +8 -0
  167. package/dvm/cart-item/cart.stories.ts +31 -0
  168. package/dvm/cart-item/index.ts +1 -0
  169. package/dvm/cart-item/ng-package.json +1 -0
  170. package/dvm/cart-item/{public-api.d.ts → public-api.ts} +4 -1
  171. package/dvm/index.ts +1 -0
  172. package/dvm/legend/index.ts +1 -0
  173. package/dvm/legend/legend.component.css +49 -0
  174. package/dvm/legend/legend.component.html +8 -0
  175. package/dvm/legend/legend.component.ts +41 -0
  176. package/dvm/legend/legend.stories.ts +16 -0
  177. package/dvm/legend/ng-package.json +1 -0
  178. package/dvm/legend/{public-api.d.ts → public-api.ts} +4 -1
  179. package/dvm/legend/{types.d.ts → types.ts} +3 -3
  180. package/dvm/legend/ui/legend-elements/{index.d.ts → index.ts} +0 -1
  181. package/dvm/legend/ui/legend-elements/legend-elements.component.css +49 -0
  182. package/dvm/legend/ui/legend-elements/legend-elements.component.html +8 -0
  183. package/dvm/legend/ui/legend-elements/legend-elements.component.ts +41 -0
  184. package/dvm/loader/index.ts +1 -0
  185. package/dvm/loader/loader.component.html +1 -0
  186. package/dvm/loader/loader.component.ts +8 -0
  187. package/dvm/loader/loader.service.ts +8 -0
  188. package/dvm/loader/loader.stories.ts +31 -0
  189. package/dvm/loader/ng-package.json +1 -0
  190. package/dvm/loader/{public-api.d.ts → public-api.ts} +4 -1
  191. package/dvm/map-loader/index.ts +1 -0
  192. package/dvm/map-loader/map-loader.component.css +91 -0
  193. package/dvm/map-loader/map-loader.component.html +23 -0
  194. package/dvm/map-loader/map-loader.component.ts +187 -0
  195. package/dvm/map-loader/map-loader.stories.ts +16 -0
  196. package/dvm/map-loader/ng-package.json +1 -0
  197. package/dvm/map-loader/public-api.ts +5 -0
  198. package/dvm/neighbors/index.ts +1 -0
  199. package/dvm/neighbors/neighbors.component.css +158 -0
  200. package/dvm/neighbors/neighbors.component.html +45 -0
  201. package/dvm/neighbors/neighbors.component.ts +218 -0
  202. package/dvm/neighbors/ng-package.json +1 -0
  203. package/dvm/neighbors/public-api.ts +2 -0
  204. package/dvm/neighbors/story/arrow-left-black-icon.svg +3 -0
  205. package/dvm/neighbors/story/mock-data.ts +15 -0
  206. package/dvm/neighbors/story/neighbours.stories.css +12 -0
  207. package/dvm/neighbors/story/neighbours.stories.ts +117 -0
  208. package/dvm/neighbors/{types.d.ts → types.ts} +7 -7
  209. package/dvm/popover/base-popover.component.ts +70 -0
  210. package/dvm/popover/index.ts +1 -0
  211. package/dvm/popover/ng-package.json +1 -0
  212. package/dvm/popover/popover.component.css +227 -0
  213. package/dvm/popover/popover.component.html +27 -0
  214. package/dvm/popover/popover.component.ts +236 -0
  215. package/dvm/popover/popover.config.ts +30 -0
  216. package/dvm/popover/popover.service.ts +627 -0
  217. package/dvm/popover/popover.stories.ts +873 -0
  218. package/dvm/popover/{public-api.d.ts → public-api.ts} +4 -1
  219. package/dvm/popover/seat-popover/seat-popover.component.css +89 -0
  220. package/dvm/popover/seat-popover/seat-popover.component.html +40 -0
  221. package/dvm/popover/seat-popover/seat-popover.component.ts +74 -0
  222. package/dvm/popover/section-popover/section-popover.component.css +157 -0
  223. package/dvm/popover/section-popover/section-popover.component.html +58 -0
  224. package/dvm/popover/section-popover/section-popover.component.ts +106 -0
  225. package/dvm/popover/services/dvm-popover-positioner.service.ts +73 -0
  226. package/dvm/popover/services/popover-manager.service.ts +88 -0
  227. package/dvm/popover/transformers/base-popover-data-transformer.ts +36 -0
  228. package/dvm/popover/types.ts +104 -0
  229. package/dvm/stepper/index.ts +1 -0
  230. package/dvm/stepper/ng-package.json +1 -0
  231. package/dvm/stepper/public-api.ts +5 -0
  232. package/dvm/stepper/stepper.component.css +142 -0
  233. package/dvm/stepper/stepper.component.html +9 -0
  234. package/dvm/stepper/stepper.component.ts +101 -0
  235. package/dvm/stepper/{types.d.ts → types.ts} +3 -6
  236. package/dvm/ticket-info-item/index.ts +1 -0
  237. package/dvm/ticket-info-item/ng-package.json +1 -0
  238. package/dvm/ticket-info-item/{public-api.d.ts → public-api.ts} +4 -1
  239. package/dvm/ticket-info-item/ticket-info-item.component.html +1 -0
  240. package/dvm/ticket-info-item/ticket-info-item.component.ts +8 -0
  241. package/dvm/ticket-info-item/ticket-info-item.service.ts +8 -0
  242. package/dvm/ticket-info-item/ticket-info-item.stories.ts +31 -0
  243. package/generic/add-digital-wallet/add-digital-wallet.component.css +76 -0
  244. package/generic/add-digital-wallet/add-digital-wallet.component.html +46 -0
  245. package/generic/add-digital-wallet/add-digital-wallet.component.ts +44 -0
  246. package/generic/add-digital-wallet/index.ts +1 -0
  247. package/generic/add-digital-wallet/ng-package.json +1 -0
  248. package/generic/add-digital-wallet/{public-api.d.ts → public-api.ts} +0 -1
  249. package/generic/braintree/braintree.component.css +7 -0
  250. package/generic/braintree/braintree.component.ts +134 -0
  251. package/generic/braintree/index.ts +1 -0
  252. package/generic/braintree/ng-package.json +1 -0
  253. package/generic/braintree/{public-api.d.ts → public-api.ts} +4 -1
  254. package/generic/braintree/story/braintree.stories.css +3 -0
  255. package/generic/braintree/story/braintree.stories.ts +27 -0
  256. package/generic/braintree/types.ts +28 -0
  257. package/generic/button/button.component.css +305 -0
  258. package/generic/button/button.component.html +10 -0
  259. package/generic/button/button.component.ts +353 -0
  260. package/generic/button/index.ts +1 -0
  261. package/generic/button/ng-package.json +1 -0
  262. package/generic/button/public-api.ts +6 -0
  263. package/generic/button/story/button.stories.ts +384 -0
  264. package/generic/button/ui/ui-button-helm/src/index.ts +10 -0
  265. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.token.ts +22 -0
  266. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.ts +62 -0
  267. package/generic/carousel/carousel-item.component.ts +15 -0
  268. package/generic/carousel/carousel-item.directive.ts +14 -0
  269. package/generic/carousel/carousel.component.css +90 -0
  270. package/generic/carousel/carousel.component.html +13 -0
  271. package/generic/carousel/carousel.component.ts +44 -0
  272. package/generic/carousel/index.ts +1 -0
  273. package/generic/carousel/{public-api.d.ts → public-api.ts} +0 -1
  274. package/generic/carousel/ui/ui-carousel-helm/src/index.ts +29 -0
  275. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.ts +23 -0
  276. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.ts +25 -0
  277. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.ts +58 -0
  278. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.ts +61 -0
  279. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.ts +36 -0
  280. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.ts +105 -0
  281. package/generic/dialog/dialog.component.css +5 -0
  282. package/generic/dialog/dialog.component.html +3 -0
  283. package/generic/dialog/dialog.component.ts +20 -0
  284. package/generic/dialog/dialog.stories.ts +14 -0
  285. package/generic/dialog/index.ts +1 -0
  286. package/generic/dialog/libs/ui-dialog-helm/src/{index.d.ts → index.ts} +20 -8
  287. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.ts +20 -0
  288. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.ts +56 -0
  289. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.ts +17 -0
  290. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.ts +19 -0
  291. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.ts +19 -0
  292. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.ts +23 -0
  293. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.ts +19 -0
  294. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.ts +59 -0
  295. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.ts +31 -0
  296. package/generic/dialog/ng-package.json +1 -0
  297. package/generic/dialog/{public-api.d.ts → public-api.ts} +5 -1
  298. package/generic/dialog/tsconfig.json +7 -0
  299. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.css +0 -0
  300. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.html +1 -0
  301. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.ts +17 -0
  302. package/generic/dialog/ui/dialog-footer/dialog-footer.component.css +0 -0
  303. package/generic/dialog/ui/dialog-footer/dialog-footer.component.html +3 -0
  304. package/generic/dialog/ui/dialog-footer/dialog-footer.component.ts +11 -0
  305. package/generic/dialog/ui/dialog-header/dialog-header.component.css +0 -0
  306. package/generic/dialog/ui/dialog-header/dialog-header.component.html +8 -0
  307. package/generic/dialog/ui/dialog-header/dialog-header.component.ts +18 -0
  308. package/generic/drawer/drawer.component.html +1 -0
  309. package/generic/drawer/drawer.component.ts +8 -0
  310. package/generic/drawer/drawer.service.ts +8 -0
  311. package/generic/drawer/drawer.stories.ts +31 -0
  312. package/generic/drawer/index.ts +1 -0
  313. package/generic/drawer/ng-package.json +1 -0
  314. package/generic/drawer/{public-api.d.ts → public-api.ts} +4 -1
  315. package/generic/icon/icon.component.css +7 -0
  316. package/generic/icon/icon.component.html +3 -0
  317. package/generic/icon/icon.component.ts +86 -0
  318. package/generic/icon/icon.stories.ts +16 -0
  319. package/generic/icon/index.ts +1 -0
  320. package/generic/icon/lib/ui-icon-helm/src/index.ts +11 -0
  321. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.ts +20 -0
  322. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.ts +36 -0
  323. package/generic/icon/ng-package.json +1 -0
  324. package/generic/icon/public-api.ts +6 -0
  325. package/generic/icon/tsconfig.json +7 -0
  326. package/generic/index.ts +1 -0
  327. package/generic/select/index.ts +1 -0
  328. package/generic/select/lib/hlm-select-content.ts +29 -0
  329. package/generic/select/lib/hlm-select-group.ts +17 -0
  330. package/generic/select/lib/hlm-select-label.ts +26 -0
  331. package/generic/select/lib/hlm-select-option.ts +37 -0
  332. package/generic/select/lib/hlm-select-scroll-down.ts +24 -0
  333. package/generic/select/lib/hlm-select-scroll-up.ts +23 -0
  334. package/generic/select/lib/hlm-select-trigger.ts +53 -0
  335. package/generic/select/lib/hlm-select-value.ts +17 -0
  336. package/generic/select/lib/hlm-select.ts +15 -0
  337. package/generic/select/lib/index.ts +38 -0
  338. package/generic/select/ng-package.json +1 -0
  339. package/generic/select/{public-api.d.ts → public-api.ts} +1 -1
  340. package/generic/select/select.component.css +65 -0
  341. package/generic/select/select.component.html +19 -0
  342. package/generic/select/select.component.ts +25 -0
  343. package/generic/select/types.ts +4 -0
  344. package/ng-package.json +10 -0
  345. package/package.json +114 -100
  346. package/public/3ddv-logo.jpg +0 -0
  347. package/public/neighbours-after.png +0 -0
  348. package/public/neighbours-before.png +0 -0
  349. package/shared/apply-theme-variables/apply-theme-variables.ts +35 -0
  350. package/shared/apply-theme-variables/{index.d.ts → index.ts} +0 -1
  351. package/shared/format-value.pipe.ts +23 -0
  352. package/shared/index.ts +1 -0
  353. package/shared/lib-provider/config-token.ts +4 -0
  354. package/shared/lib-provider/index.ts +1 -0
  355. package/shared/lib-provider/provide-sdc.ts +24 -0
  356. package/shared/lib-provider/{public-api.d.ts → public-api.ts} +0 -1
  357. package/shared/ng-package.json +1 -0
  358. package/shared/public-api.ts +6 -0
  359. package/shared/screen-observer/{index.d.ts → index.ts} +0 -1
  360. package/shared/screen-observer/provide-screen-observer.ts +17 -0
  361. package/shared/screen-observer/screen-observer.ts +56 -0
  362. package/shared/screen-observer/sizable-base.ts +70 -0
  363. package/shared/theme-provider/generic-theme.ts +1 -0
  364. package/shared/theme-provider/index.ts +1 -0
  365. package/shared/theme-provider/public-api.ts +1 -0
  366. package/shared/theme-provider/theme-provider.directive.ts +17 -0
  367. package/shared/themes/sdc.css +153 -0
  368. package/shared/types.ts +18 -0
  369. package/src/private-exports.ts +1 -0
  370. package/src/public-api.ts +20 -0
  371. package/styles.css +46 -2
  372. package/tsconfig.json +50 -0
  373. package/tsconfig.lib.prod.json +6 -0
  374. package/tsconfig.spec.json +15 -0
  375. package/tsconfig.temp.json +1 -0
  376. package/utils/index.ts +1 -0
  377. package/utils/ng-package.json +1 -0
  378. package/utils/public-api.ts +1 -0
  379. package/utils/validate-styles-for-component.ts +39 -0
  380. package/3ddv-software-division-components.d.ts.map +0 -1
  381. package/backoffice/checkbox/checkbox.component.d.ts +0 -103
  382. package/backoffice/checkbox/checkbox.component.d.ts.map +0 -1
  383. package/backoffice/checkbox/index.d.ts +0 -2
  384. package/backoffice/checkbox/index.d.ts.map +0 -1
  385. package/backoffice/checkbox/public-api.d.ts +0 -2
  386. package/backoffice/checkbox/public-api.d.ts.map +0 -1
  387. package/backoffice/datepicker/datepicker.component.d.ts +0 -150
  388. package/backoffice/datepicker/datepicker.component.d.ts.map +0 -1
  389. package/backoffice/datepicker/index.d.ts +0 -2
  390. package/backoffice/datepicker/index.d.ts.map +0 -1
  391. package/backoffice/datepicker/public-api.d.ts.map +0 -1
  392. package/backoffice/datepicker/ui/ui-calendar-helm/src/index.d.ts +0 -14
  393. package/backoffice/datepicker/ui/ui-calendar-helm/src/index.d.ts.map +0 -1
  394. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.d.ts +0 -38
  395. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.d.ts.map +0 -1
  396. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.d.ts +0 -34
  397. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.d.ts.map +0 -1
  398. package/backoffice/datepicker/ui/ui-date-picker-helm/src/index.d.ts +0 -15
  399. package/backoffice/datepicker/ui/ui-date-picker-helm/src/index.d.ts.map +0 -1
  400. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.d.ts +0 -53
  401. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.d.ts.map +0 -1
  402. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.d.ts +0 -24
  403. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.d.ts.map +0 -1
  404. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.d.ts +0 -53
  405. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.d.ts.map +0 -1
  406. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.d.ts +0 -24
  407. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.d.ts.map +0 -1
  408. package/backoffice/datepicker/ui/ui-icon-helm/src/index.d.ts +0 -10
  409. package/backoffice/datepicker/ui/ui-icon-helm/src/index.d.ts.map +0 -1
  410. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.d.ts +0 -10
  411. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.d.ts.map +0 -1
  412. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts +0 -8
  413. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts.map +0 -1
  414. package/backoffice/datepicker/ui/ui-popover-helm/src/index.d.ts +0 -14
  415. package/backoffice/datepicker/ui/ui-popover-helm/src/index.d.ts.map +0 -1
  416. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.d.ts +0 -9
  417. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.d.ts.map +0 -1
  418. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.d.ts +0 -14
  419. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.d.ts.map +0 -1
  420. package/backoffice/index.d.ts +0 -2
  421. package/backoffice/index.d.ts.map +0 -1
  422. package/backoffice/input/index.d.ts +0 -2
  423. package/backoffice/input/index.d.ts.map +0 -1
  424. package/backoffice/input/input.component.d.ts +0 -200
  425. package/backoffice/input/input.component.d.ts.map +0 -1
  426. package/backoffice/input/public-api.d.ts +0 -2
  427. package/backoffice/input/public-api.d.ts.map +0 -1
  428. package/backoffice/public-api.d.ts +0 -6
  429. package/backoffice/public-api.d.ts.map +0 -1
  430. package/backoffice/radio/index.d.ts +0 -2
  431. package/backoffice/radio/index.d.ts.map +0 -1
  432. package/backoffice/radio/public-api.d.ts +0 -2
  433. package/backoffice/radio/public-api.d.ts.map +0 -1
  434. package/backoffice/radio/radio.component.d.ts +0 -73
  435. package/backoffice/radio/radio.component.d.ts.map +0 -1
  436. package/backoffice/table/_components/pagination/pagination.component.d.ts +0 -18
  437. package/backoffice/table/_components/pagination/pagination.component.d.ts.map +0 -1
  438. package/backoffice/table/_components/selection-table-head/selection-table-head.component.d.ts +0 -11
  439. package/backoffice/table/_components/selection-table-head/selection-table-head.component.d.ts.map +0 -1
  440. package/backoffice/table/_components/selection-table-row/selection-table-row.component.d.ts +0 -8
  441. package/backoffice/table/_components/selection-table-row/selection-table-row.component.d.ts.map +0 -1
  442. package/backoffice/table/_components/sort-header-button/sort-header-button.component.d.ts +0 -16
  443. package/backoffice/table/_components/sort-header-button/sort-header-button.component.d.ts.map +0 -1
  444. package/backoffice/table/index.d.ts +0 -2
  445. package/backoffice/table/index.d.ts.map +0 -1
  446. package/backoffice/table/public-api.d.ts +0 -3
  447. package/backoffice/table/public-api.d.ts.map +0 -1
  448. package/backoffice/table/table.component.d.ts +0 -111
  449. package/backoffice/table/table.component.d.ts.map +0 -1
  450. package/backoffice/table/ui/ui-icon-helm/src/index.d.ts +0 -10
  451. package/backoffice/table/ui/ui-icon-helm/src/index.d.ts.map +0 -1
  452. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.d.ts +0 -10
  453. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.d.ts.map +0 -1
  454. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts +0 -8
  455. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts.map +0 -1
  456. package/backoffice/table/ui/ui-table-helm/src/index.d.ts +0 -11
  457. package/backoffice/table/ui/ui-table-helm/src/index.d.ts.map +0 -1
  458. package/backoffice/table/ui/ui-table-helm/src/lib/hlm-table.d.ts +0 -112
  459. package/backoffice/table/ui/ui-table-helm/src/lib/hlm-table.d.ts.map +0 -1
  460. package/dvm/cart/cart.component.d.ts +0 -31
  461. package/dvm/cart/cart.component.d.ts.map +0 -1
  462. package/dvm/cart/cart.types.d.ts +0 -8
  463. package/dvm/cart/cart.types.d.ts.map +0 -1
  464. package/dvm/cart/index.d.ts +0 -2
  465. package/dvm/cart/index.d.ts.map +0 -1
  466. package/dvm/cart/public-api.d.ts.map +0 -1
  467. package/dvm/cart/seat-list.component.d.ts +0 -38
  468. package/dvm/cart/seat-list.component.d.ts.map +0 -1
  469. package/dvm/cart-item/cart-item.component.d.ts +0 -6
  470. package/dvm/cart-item/cart-item.component.d.ts.map +0 -1
  471. package/dvm/cart-item/cart-item.service.d.ts +0 -7
  472. package/dvm/cart-item/cart-item.service.d.ts.map +0 -1
  473. package/dvm/cart-item/index.d.ts +0 -2
  474. package/dvm/cart-item/index.d.ts.map +0 -1
  475. package/dvm/cart-item/public-api.d.ts.map +0 -1
  476. package/dvm/index.d.ts +0 -2
  477. package/dvm/index.d.ts.map +0 -1
  478. package/dvm/legend/index.d.ts +0 -2
  479. package/dvm/legend/index.d.ts.map +0 -1
  480. package/dvm/legend/legend.component.d.ts +0 -17
  481. package/dvm/legend/legend.component.d.ts.map +0 -1
  482. package/dvm/legend/public-api.d.ts.map +0 -1
  483. package/dvm/legend/types.d.ts.map +0 -1
  484. package/dvm/legend/ui/legend-elements/index.d.ts.map +0 -1
  485. package/dvm/legend/ui/legend-elements/legend-elements.component.d.ts +0 -16
  486. package/dvm/legend/ui/legend-elements/legend-elements.component.d.ts.map +0 -1
  487. package/dvm/loader/index.d.ts +0 -2
  488. package/dvm/loader/index.d.ts.map +0 -1
  489. package/dvm/loader/loader.component.d.ts +0 -6
  490. package/dvm/loader/loader.component.d.ts.map +0 -1
  491. package/dvm/loader/loader.service.d.ts +0 -7
  492. package/dvm/loader/loader.service.d.ts.map +0 -1
  493. package/dvm/loader/public-api.d.ts.map +0 -1
  494. package/dvm/map-loader/index.d.ts +0 -2
  495. package/dvm/map-loader/index.d.ts.map +0 -1
  496. package/dvm/map-loader/map-loader.component.d.ts.map +0 -1
  497. package/dvm/map-loader/public-api.d.ts +0 -2
  498. package/dvm/map-loader/public-api.d.ts.map +0 -1
  499. package/dvm/neighbors/index.d.ts +0 -2
  500. package/dvm/neighbors/index.d.ts.map +0 -1
  501. package/dvm/neighbors/neighbors.component.d.ts +0 -41
  502. package/dvm/neighbors/neighbors.component.d.ts.map +0 -1
  503. package/dvm/neighbors/public-api.d.ts +0 -3
  504. package/dvm/neighbors/public-api.d.ts.map +0 -1
  505. package/dvm/neighbors/types.d.ts.map +0 -1
  506. package/dvm/popover/base-popover.component.d.ts +0 -28
  507. package/dvm/popover/base-popover.component.d.ts.map +0 -1
  508. package/dvm/popover/index.d.ts +0 -2
  509. package/dvm/popover/index.d.ts.map +0 -1
  510. package/dvm/popover/popover.component.d.ts +0 -69
  511. package/dvm/popover/popover.component.d.ts.map +0 -1
  512. package/dvm/popover/popover.config.d.ts +0 -25
  513. package/dvm/popover/popover.config.d.ts.map +0 -1
  514. package/dvm/popover/popover.service.d.ts +0 -140
  515. package/dvm/popover/popover.service.d.ts.map +0 -1
  516. package/dvm/popover/public-api.d.ts.map +0 -1
  517. package/dvm/popover/seat-popover/seat-popover.component.d.ts +0 -21
  518. package/dvm/popover/seat-popover/seat-popover.component.d.ts.map +0 -1
  519. package/dvm/popover/section-popover/section-popover.component.d.ts +0 -32
  520. package/dvm/popover/section-popover/section-popover.component.d.ts.map +0 -1
  521. package/dvm/popover/services/dvm-popover-positioner.service.d.ts +0 -30
  522. package/dvm/popover/services/dvm-popover-positioner.service.d.ts.map +0 -1
  523. package/dvm/popover/services/popover-manager.service.d.ts +0 -29
  524. package/dvm/popover/services/popover-manager.service.d.ts.map +0 -1
  525. package/dvm/popover/transformers/base-popover-data-transformer.d.ts +0 -29
  526. package/dvm/popover/transformers/base-popover-data-transformer.d.ts.map +0 -1
  527. package/dvm/popover/types.d.ts +0 -79
  528. package/dvm/popover/types.d.ts.map +0 -1
  529. package/dvm/public-api.d.ts +0 -10
  530. package/dvm/public-api.d.ts.map +0 -1
  531. package/dvm/stepper/index.d.ts +0 -2
  532. package/dvm/stepper/index.d.ts.map +0 -1
  533. package/dvm/stepper/public-api.d.ts +0 -2
  534. package/dvm/stepper/public-api.d.ts.map +0 -1
  535. package/dvm/stepper/stepper.component.d.ts +0 -27
  536. package/dvm/stepper/stepper.component.d.ts.map +0 -1
  537. package/dvm/stepper/types.d.ts.map +0 -1
  538. package/dvm/ticket-info-item/index.d.ts +0 -2
  539. package/dvm/ticket-info-item/index.d.ts.map +0 -1
  540. package/dvm/ticket-info-item/public-api.d.ts.map +0 -1
  541. package/dvm/ticket-info-item/ticket-info-item.component.d.ts +0 -6
  542. package/dvm/ticket-info-item/ticket-info-item.component.d.ts.map +0 -1
  543. package/dvm/ticket-info-item/ticket-info-item.service.d.ts +0 -7
  544. package/dvm/ticket-info-item/ticket-info-item.service.d.ts.map +0 -1
  545. package/fesm2022/3ddv-software-division-components.mjs +0 -6568
  546. package/fesm2022/3ddv-software-division-components.mjs.map +0 -1
  547. package/generic/add-digital-wallet/add-digital-wallet.component.d.ts +0 -21
  548. package/generic/add-digital-wallet/add-digital-wallet.component.d.ts.map +0 -1
  549. package/generic/add-digital-wallet/index.d.ts +0 -2
  550. package/generic/add-digital-wallet/index.d.ts.map +0 -1
  551. package/generic/add-digital-wallet/public-api.d.ts.map +0 -1
  552. package/generic/braintree/braintree.component.d.ts +0 -33
  553. package/generic/braintree/braintree.component.d.ts.map +0 -1
  554. package/generic/braintree/index.d.ts +0 -2
  555. package/generic/braintree/index.d.ts.map +0 -1
  556. package/generic/braintree/public-api.d.ts.map +0 -1
  557. package/generic/braintree/types.d.ts +0 -27
  558. package/generic/braintree/types.d.ts.map +0 -1
  559. package/generic/button/button.component.d.ts +0 -152
  560. package/generic/button/button.component.d.ts.map +0 -1
  561. package/generic/button/index.d.ts +0 -2
  562. package/generic/button/index.d.ts.map +0 -1
  563. package/generic/button/public-api.d.ts +0 -2
  564. package/generic/button/public-api.d.ts.map +0 -1
  565. package/generic/button/ui/ui-button-helm/src/index.d.ts +0 -10
  566. package/generic/button/ui/ui-button-helm/src/index.d.ts.map +0 -1
  567. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.d.ts +0 -20
  568. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.d.ts.map +0 -1
  569. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.token.d.ts +0 -9
  570. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.token.d.ts.map +0 -1
  571. package/generic/carousel/carousel-item.component.d.ts +0 -8
  572. package/generic/carousel/carousel-item.component.d.ts.map +0 -1
  573. package/generic/carousel/carousel.component.d.ts +0 -20
  574. package/generic/carousel/carousel.component.d.ts.map +0 -1
  575. package/generic/carousel/index.d.ts +0 -2
  576. package/generic/carousel/index.d.ts.map +0 -1
  577. package/generic/carousel/public-api.d.ts.map +0 -1
  578. package/generic/carousel/ui/ui-carousel-helm/src/index.d.ts +0 -26
  579. package/generic/carousel/ui/ui-carousel-helm/src/index.d.ts.map +0 -1
  580. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.d.ts +0 -10
  581. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.d.ts.map +0 -1
  582. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.d.ts +0 -10
  583. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.d.ts.map +0 -1
  584. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.d.ts +0 -15
  585. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.d.ts.map +0 -1
  586. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.d.ts +0 -15
  587. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.d.ts.map +0 -1
  588. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.d.ts +0 -16
  589. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.d.ts.map +0 -1
  590. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.d.ts +0 -28
  591. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.d.ts.map +0 -1
  592. package/generic/dialog/dialog.component.d.ts +0 -11
  593. package/generic/dialog/dialog.component.d.ts.map +0 -1
  594. package/generic/dialog/index.d.ts +0 -2
  595. package/generic/dialog/index.d.ts.map +0 -1
  596. package/generic/dialog/libs/ui-dialog-helm/src/index.d.ts.map +0 -1
  597. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.d.ts +0 -9
  598. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.d.ts.map +0 -1
  599. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.d.ts +0 -15
  600. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.d.ts.map +0 -1
  601. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.d.ts +0 -10
  602. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.d.ts.map +0 -1
  603. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.d.ts +0 -9
  604. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.d.ts.map +0 -1
  605. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.d.ts +0 -9
  606. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.d.ts.map +0 -1
  607. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.d.ts +0 -12
  608. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.d.ts.map +0 -1
  609. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.d.ts +0 -10
  610. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.d.ts.map +0 -1
  611. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.d.ts +0 -7
  612. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.d.ts.map +0 -1
  613. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.d.ts +0 -21
  614. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.d.ts.map +0 -1
  615. package/generic/dialog/public-api.d.ts.map +0 -1
  616. package/generic/drawer/drawer.component.d.ts +0 -6
  617. package/generic/drawer/drawer.component.d.ts.map +0 -1
  618. package/generic/drawer/drawer.service.d.ts +0 -7
  619. package/generic/drawer/drawer.service.d.ts.map +0 -1
  620. package/generic/drawer/index.d.ts +0 -2
  621. package/generic/drawer/index.d.ts.map +0 -1
  622. package/generic/drawer/public-api.d.ts.map +0 -1
  623. package/generic/icon/icon.component.d.ts +0 -21
  624. package/generic/icon/icon.component.d.ts.map +0 -1
  625. package/generic/icon/index.d.ts +0 -2
  626. package/generic/icon/index.d.ts.map +0 -1
  627. package/generic/icon/lib/ui-icon-helm/src/index.d.ts +0 -10
  628. package/generic/icon/lib/ui-icon-helm/src/index.d.ts.map +0 -1
  629. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.d.ts +0 -10
  630. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.d.ts.map +0 -1
  631. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.d.ts +0 -8
  632. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.d.ts.map +0 -1
  633. package/generic/icon/public-api.d.ts +0 -2
  634. package/generic/icon/public-api.d.ts.map +0 -1
  635. package/generic/index.d.ts +0 -2
  636. package/generic/index.d.ts.map +0 -1
  637. package/generic/public-api.d.ts +0 -10
  638. package/generic/public-api.d.ts.map +0 -1
  639. package/generic/rich-text-editor/components/editor-toolbar/editor-toolbar.component.d.ts +0 -88
  640. package/generic/rich-text-editor/components/editor-toolbar/editor-toolbar.component.d.ts.map +0 -1
  641. package/generic/rich-text-editor/components/link-modal/link-modal.component.d.ts +0 -43
  642. package/generic/rich-text-editor/components/link-modal/link-modal.component.d.ts.map +0 -1
  643. package/generic/rich-text-editor/index.d.ts +0 -2
  644. package/generic/rich-text-editor/index.d.ts.map +0 -1
  645. package/generic/rich-text-editor/models/editor-config.model.d.ts +0 -46
  646. package/generic/rich-text-editor/models/editor-config.model.d.ts.map +0 -1
  647. package/generic/rich-text-editor/models/index.d.ts +0 -3
  648. package/generic/rich-text-editor/models/index.d.ts.map +0 -1
  649. package/generic/rich-text-editor/models/toolbar-config.model.d.ts +0 -63
  650. package/generic/rich-text-editor/models/toolbar-config.model.d.ts.map +0 -1
  651. package/generic/rich-text-editor/public-api.d.ts +0 -5
  652. package/generic/rich-text-editor/public-api.d.ts.map +0 -1
  653. package/generic/rich-text-editor/rich-text-editor.component.d.ts +0 -113
  654. package/generic/rich-text-editor/rich-text-editor.component.d.ts.map +0 -1
  655. package/generic/select/index.d.ts +0 -2
  656. package/generic/select/index.d.ts.map +0 -1
  657. package/generic/select/lib/hlm-select-content.d.ts +0 -13
  658. package/generic/select/lib/hlm-select-content.d.ts.map +0 -1
  659. package/generic/select/lib/hlm-select-group.d.ts +0 -10
  660. package/generic/select/lib/hlm-select-group.d.ts.map +0 -1
  661. package/generic/select/lib/hlm-select-label.d.ts +0 -12
  662. package/generic/select/lib/hlm-select-label.d.ts.map +0 -1
  663. package/generic/select/lib/hlm-select-option.d.ts +0 -12
  664. package/generic/select/lib/hlm-select-option.d.ts.map +0 -1
  665. package/generic/select/lib/hlm-select-scroll-down.d.ts +0 -9
  666. package/generic/select/lib/hlm-select-scroll-down.d.ts.map +0 -1
  667. package/generic/select/lib/hlm-select-scroll-up.d.ts +0 -9
  668. package/generic/select/lib/hlm-select-scroll-up.d.ts.map +0 -1
  669. package/generic/select/lib/hlm-select-trigger.d.ts +0 -17
  670. package/generic/select/lib/hlm-select-trigger.d.ts.map +0 -1
  671. package/generic/select/lib/hlm-select-value.d.ts +0 -9
  672. package/generic/select/lib/hlm-select-value.d.ts.map +0 -1
  673. package/generic/select/lib/hlm-select.d.ts +0 -9
  674. package/generic/select/lib/hlm-select.d.ts.map +0 -1
  675. package/generic/select/lib/index.d.ts +0 -35
  676. package/generic/select/lib/index.d.ts.map +0 -1
  677. package/generic/select/public-api.d.ts.map +0 -1
  678. package/generic/select/select.component.d.ts +0 -14
  679. package/generic/select/select.component.d.ts.map +0 -1
  680. package/generic/select/types.d.ts +0 -5
  681. package/generic/select/types.d.ts.map +0 -1
  682. package/index.d.ts +0 -6
  683. package/public-api.d.ts +0 -8
  684. package/public-api.d.ts.map +0 -1
  685. package/shared/apply-theme-variables/apply-theme-variables.d.ts +0 -4
  686. package/shared/apply-theme-variables/apply-theme-variables.d.ts.map +0 -1
  687. package/shared/apply-theme-variables/index.d.ts.map +0 -1
  688. package/shared/lib-provider/config-token.d.ts +0 -4
  689. package/shared/lib-provider/config-token.d.ts.map +0 -1
  690. package/shared/lib-provider/index.d.ts +0 -2
  691. package/shared/lib-provider/index.d.ts.map +0 -1
  692. package/shared/lib-provider/provide-sdc.d.ts +0 -10
  693. package/shared/lib-provider/provide-sdc.d.ts.map +0 -1
  694. package/shared/lib-provider/public-api.d.ts.map +0 -1
  695. package/shared/screen-observer/index.d.ts.map +0 -1
  696. package/shared/screen-observer/provide-screen-observer.d.ts +0 -5
  697. package/shared/screen-observer/provide-screen-observer.d.ts.map +0 -1
  698. package/shared/screen-observer/screen-observer.d.ts +0 -15
  699. package/shared/screen-observer/screen-observer.d.ts.map +0 -1
  700. package/shared/types.d.ts +0 -19
  701. package/shared/types.d.ts.map +0 -1
  702. package/tailwind.config.js +0 -19
  703. package/types/sizes.type.d.ts +0 -3
  704. package/types/sizes.type.d.ts.map +0 -1
@@ -0,0 +1,411 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, signal, output, effect, Component } from '@angular/core';
3
+ import { FormSubmittedEvent, ReactiveFormsModule } from '@angular/forms';
4
+ import { Subject } from 'rxjs';
5
+ import { takeUntil } from 'rxjs/operators';
6
+
7
+ /**
8
+ * A customizable input component built on the native input element.
9
+ *
10
+ * This component supports various configurations and exposes all native input functionality.
11
+ * All HTML input attributes and events are automatically forwarded to the inner input element.
12
+ *
13
+ * @since 1.0.0-alpha.1
14
+ */
15
+ class InputComponent {
16
+ allowedVariants = [
17
+ 'variant-primary',
18
+ 'variant-secondary',
19
+ 'variant-alternative',
20
+ 'variant-success',
21
+ 'variant-warning',
22
+ 'variant-danger',
23
+ ];
24
+ allowedSizes = ['size-sm', 'size-md', 'size-lg', 'size-xl'];
25
+ allowedRadius = [
26
+ 'radius-default',
27
+ 'radius-sm',
28
+ 'radius-md',
29
+ 'radius-lg',
30
+ 'radius-xl',
31
+ 'radius-2xl',
32
+ 'radius-full',
33
+ ];
34
+ /**
35
+ * The current theme applied to the component.
36
+ */
37
+ theme = input('theme-sdc', ...(ngDevMode ? [{ debugName: "theme" }] : []));
38
+ /**
39
+ * Predefined styles to apply to the component.
40
+ * Can be a single class or multiple classes from different categories.
41
+ */
42
+ styleClass = input([], ...(ngDevMode ? [{ debugName: "styleClass" }] : []));
43
+ // Computed signal that validates and filters the styleClass input
44
+ _validatedStyleClass = computed(() => {
45
+ const value = this.styleClass();
46
+ if (!Array.isArray(value)) {
47
+ return [];
48
+ }
49
+ const validValues = value.filter(style => {
50
+ return (this.allowedVariants.includes(style) ||
51
+ this.allowedSizes.includes(style) ||
52
+ this.allowedRadius.includes(style));
53
+ });
54
+ const invalidValues = value.filter(style => {
55
+ return (!this.allowedVariants.includes(style) &&
56
+ !this.allowedSizes.includes(style) &&
57
+ !this.allowedRadius.includes(style));
58
+ });
59
+ if (invalidValues.length > 0) {
60
+ throw new Error(`InputComponent: Invalid styleClass values ignored: ${invalidValues.join(', ')}. Allowed values: ${[
61
+ ...this.allowedVariants,
62
+ ...this.allowedSizes,
63
+ ...this.allowedRadius,
64
+ ].join(', ')}`);
65
+ }
66
+ return validValues;
67
+ }, ...(ngDevMode ? [{ debugName: "_validatedStyleClass" }] : []));
68
+ /**
69
+ * Additional CSS classes to apply to the component.
70
+ */
71
+ className = input('', ...(ngDevMode ? [{ debugName: "className" }] : []));
72
+ /**
73
+ * The label text to display above or to the left of the input.
74
+ * Only visible when a value is provided.
75
+ */
76
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
77
+ /**
78
+ * The position of the label relative to the input.
79
+ * 'top' places the label above the input, 'left' places it to the left.
80
+ */
81
+ labelPosition = input('top', ...(ngDevMode ? [{ debugName: "labelPosition" }] : []));
82
+ /**
83
+ * Whether the component is disabled.
84
+ */
85
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
86
+ /**
87
+ * The type of the input element.
88
+ */
89
+ type = input('text', ...(ngDevMode ? [{ debugName: "type" }] : []));
90
+ /**
91
+ * The placeholder text for the input.
92
+ */
93
+ placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
94
+ /**
95
+ * The hint text for the input.
96
+ */
97
+ hint = input('', ...(ngDevMode ? [{ debugName: "hint" }] : []));
98
+ /**
99
+ * The name of the form control.
100
+ */
101
+ name = input('', ...(ngDevMode ? [{ debugName: "name" }] : []));
102
+ /**
103
+ * Whether the input is a textarea.
104
+ */
105
+ isTextarea = input(false, ...(ngDevMode ? [{ debugName: "isTextarea" }] : []));
106
+ /**
107
+ * The number of rows for the textarea.
108
+ */
109
+ textareaRows = input(1, ...(ngDevMode ? [{ debugName: "textareaRows" }] : []));
110
+ /**
111
+ * The number of columns for the textarea.
112
+ */
113
+ textareaCols = input(1, ...(ngDevMode ? [{ debugName: "textareaCols" }] : []));
114
+ /**
115
+ * Whether the textarea is resizable.
116
+ */
117
+ textareaResize = input('vertical', ...(ngDevMode ? [{ debugName: "textareaResize" }] : []));
118
+ /**
119
+ * Custom error message to override the validator's error message.
120
+ */
121
+ errorMessage = input('', ...(ngDevMode ? [{ debugName: "errorMessage" }] : []));
122
+ /**
123
+ * Controls when errors are displayed.
124
+ * - 'after-submit': Show errors only after form submission (default)
125
+ * - 'always': Show errors immediately when validation fails
126
+ */
127
+ errorDisplayMode = input('after-submit', ...(ngDevMode ? [{ debugName: "errorDisplayMode" }] : []));
128
+ /**
129
+ * The FormControl instance to bind to this input.
130
+ * This allows the component to access form state without circular dependencies.
131
+ */
132
+ control = input(null, ...(ngDevMode ? [{ debugName: "control" }] : []));
133
+ /**
134
+ * The state of the form control.
135
+ */
136
+ controlState = signal({ invalid: false, touched: false, dirty: false, errors: null, value: '', isFormSubmitted: false }, ...(ngDevMode ? [{ debugName: "controlState" }] : []));
137
+ /**
138
+ * Event emitted when the component receives focus.
139
+ */
140
+ onFocus = output();
141
+ /**
142
+ * Event emitted when the component loses focus.
143
+ */
144
+ onBlur = output();
145
+ /**
146
+ * Event emitted when the input value changes.
147
+ */
148
+ onInput = output();
149
+ /**
150
+ * Computed class string that combines theme and user classes.
151
+ */
152
+ computedClass = computed(() => {
153
+ const themeClass = this.theme();
154
+ const styleClass = this._validatedStyleClass();
155
+ const className = this.className();
156
+ const errorClass = this.showError() ? 'has-error' : '';
157
+ const textareaResizeClass = this.isTextarea() ? `resize-${this.textareaResize()}` : '';
158
+ return ['sdc-input', themeClass, ...styleClass, className, errorClass, textareaResizeClass]
159
+ .filter(Boolean)
160
+ .join(' ');
161
+ }, ...(ngDevMode ? [{ debugName: "computedClass" }] : []));
162
+ /**
163
+ * Computed class string for the label positioning.
164
+ */
165
+ labelClass = computed(() => {
166
+ const position = this.labelPosition();
167
+ return position === 'left' ? 'sdc-input-label left' : 'sdc-input-label top';
168
+ }, ...(ngDevMode ? [{ debugName: "labelClass" }] : []));
169
+ /**
170
+ * Debounce time in milliseconds. When 0, no debounce is applied.
171
+ * Default value is 0 (no debounce).
172
+ */
173
+ debounce = input(0, ...(ngDevMode ? [{ debugName: "debounce" }] : []));
174
+ /**
175
+ * Event emitted to notify the debounce state.
176
+ * Returns true while the component is debounced, false when not.
177
+ */
178
+ isDebounced = output();
179
+ /**
180
+ * Signal to track the current debounce state of the component.
181
+ */
182
+ debounceState = signal(false, ...(ngDevMode ? [{ debugName: "debounceState" }] : []));
183
+ /**
184
+ * Subject for handling input events with debounce.
185
+ */
186
+ inputSubject = new Subject();
187
+ /**
188
+ * Subject for cleanup.
189
+ */
190
+ destroy$ = new Subject();
191
+ /**
192
+ * Current subscription for debounce.
193
+ */
194
+ debounceSubscription = null;
195
+ /**
196
+ * Current debounce timeout.
197
+ */
198
+ debounceTimeout = null;
199
+ /**
200
+ * Component subscriptions.
201
+ */
202
+ subscriptions = [];
203
+ /**
204
+ * Computed signal to determine if the label should be visible.
205
+ */
206
+ showLabel = computed(() => {
207
+ return this.label() && this.label().trim().length > 0;
208
+ }, ...(ngDevMode ? [{ debugName: "showLabel" }] : []));
209
+ /**
210
+ * Computed signal to get the current error message.
211
+ */
212
+ currentErrorMessage = computed(() => {
213
+ const customMessage = this.errorMessage();
214
+ const hasErrors = Object.keys(this.controlState()?.errors ?? {}).length > 0;
215
+ if (hasErrors && customMessage && customMessage.trim().length > 0) {
216
+ return customMessage;
217
+ }
218
+ // If no custom message, try to get validation error from the form control state
219
+ if (hasErrors) {
220
+ const firstErrorKey = Object.keys(this.controlState()?.errors ?? {})[0];
221
+ const firstErrorValue = this.controlState()?.errors?.[firstErrorKey];
222
+ return this.getValidatorErrorMessage(firstErrorKey, firstErrorValue);
223
+ }
224
+ return '';
225
+ }, ...(ngDevMode ? [{ debugName: "currentErrorMessage" }] : []));
226
+ /**
227
+ * Computed signal to determine if there's an error to display.
228
+ */
229
+ showError = computed(() => {
230
+ const errorMode = this.errorDisplayMode();
231
+ // For validation errors, respect the error display mode
232
+ if (this.controlState()?.invalid) {
233
+ if (errorMode === 'always') {
234
+ // Show errors when component is touched and invalid
235
+ return this.controlState()?.touched || this.controlState()?.dirty || this.controlState()?.isFormSubmitted;
236
+ }
237
+ else if (errorMode === 'after-submit') {
238
+ // Show errors when form is submitted, regardless of touch/focus state
239
+ return this.controlState()?.isFormSubmitted;
240
+ }
241
+ }
242
+ return false;
243
+ }, ...(ngDevMode ? [{ debugName: "showError" }] : []));
244
+ /**
245
+ * References to effects for proper cleanup
246
+ */
247
+ effects = [];
248
+ constructor() {
249
+ // Set up reactive debounce handling within injection context
250
+ const debounceEffect = effect(() => {
251
+ const debounceTime = this.debounce();
252
+ this.setupDebounce(debounceTime);
253
+ }, ...(ngDevMode ? [{ debugName: "debounceEffect" }] : []));
254
+ this.effects.push(debounceEffect);
255
+ }
256
+ ngOnInit() {
257
+ // Validate the name input
258
+ if ((this.control() || this.showLabel()) && !this.name()) {
259
+ throw new Error('InputComponent: name is required when control or label inputs are present');
260
+ }
261
+ const formEventsSubscription = this.control()?.parent?.events.subscribe(event => {
262
+ // We do not reset this signal because it is used to show the errors
263
+ // When a form is submitted at least once, we want to show the errors
264
+ if (event instanceof FormSubmittedEvent) {
265
+ this.controlState.set({ ...this.controlState(), isFormSubmitted: true });
266
+ // We add this because the statusChanges event is not triggered when the form is submitted
267
+ if (event.source.status === 'INVALID') {
268
+ this.controlState.set({ ...this.controlState(), invalid: true });
269
+ }
270
+ }
271
+ this.updateErrors();
272
+ });
273
+ const statusChangesSubscription = this.control()?.statusChanges.subscribe(status => {
274
+ if (status === 'INVALID') {
275
+ this.controlState.set({ ...this.controlState(), invalid: true });
276
+ }
277
+ this.updateErrors();
278
+ });
279
+ this.subscriptions.push(formEventsSubscription, statusChangesSubscription);
280
+ }
281
+ ngOnDestroy() {
282
+ this.destroy$.next();
283
+ this.destroy$.complete();
284
+ this.inputSubject.complete();
285
+ if (this.debounceSubscription) {
286
+ this.debounceSubscription.unsubscribe();
287
+ }
288
+ if (this.debounceTimeout) {
289
+ clearTimeout(this.debounceTimeout);
290
+ }
291
+ this.effects.forEach(effect => effect.destroy());
292
+ this.subscriptions.forEach(subscription => subscription?.unsubscribe());
293
+ }
294
+ updateErrors() {
295
+ // We override the errors except the internal_* errors
296
+ const currentInternalErrors = Object.entries(this.controlState()?.errors || {})?.filter(([key]) => key.startsWith('internal_'));
297
+ const controlStateHasInternalErrors = currentInternalErrors.length > 0;
298
+ const newErrors = this.control()?.errors || controlStateHasInternalErrors
299
+ ? Object.assign(Object.fromEntries(currentInternalErrors), this.control()?.errors ?? {})
300
+ : null;
301
+ this.controlState.set({ ...this.controlState(), errors: newErrors });
302
+ }
303
+ /**
304
+ * Sets up the debounce functionality for input events.
305
+ */
306
+ setupDebounce(debounceTime) {
307
+ // Clear existing subscription
308
+ if (this.debounceSubscription) {
309
+ this.debounceSubscription.unsubscribe();
310
+ }
311
+ // Clear existing timeout
312
+ if (this.debounceTimeout) {
313
+ clearTimeout(this.debounceTimeout);
314
+ this.debounceTimeout = null;
315
+ }
316
+ // Set up new subscription
317
+ this.debounceSubscription = this.inputSubject.pipe(takeUntil(this.destroy$)).subscribe((event) => {
318
+ // Clear existing timeout
319
+ if (this.debounceTimeout) {
320
+ clearTimeout(this.debounceTimeout);
321
+ }
322
+ // Set new timeout
323
+ this.debounceTimeout = setTimeout(() => {
324
+ this.debounceState.set(false);
325
+ this.isDebounced.emit(false);
326
+ this.onInput.emit(event);
327
+ this.debounceTimeout = null;
328
+ }, debounceTime);
329
+ });
330
+ }
331
+ /**
332
+ * Handles input events with debounce functionality.
333
+ */
334
+ handleInput(event) {
335
+ const target = event.target;
336
+ const newValue = target.value;
337
+ // Only allow numbers for input with type number
338
+ if (this.type() === 'number') {
339
+ const isValidNumber = /^[0-9]+$/.test(newValue);
340
+ this.controlState.set({ ...this.controlState(), errors: isValidNumber ? null : { internal_number: true } });
341
+ }
342
+ // Update the form control value
343
+ this.controlState.set({ ...this.controlState(), value: newValue, dirty: true });
344
+ this.control()?.setValue(newValue);
345
+ const debounceTime = this.debounce();
346
+ if (debounceTime > 0) {
347
+ // Apply debounce
348
+ this.debounceState.set(true);
349
+ this.isDebounced.emit(true);
350
+ this.inputSubject.next({ ...event, target: { ...event.target, value: newValue } });
351
+ }
352
+ else {
353
+ // No debounce, emit immediately
354
+ this.onInput.emit({ ...event, target: { ...event.target, value: newValue } });
355
+ }
356
+ }
357
+ /**
358
+ * Handles focus events and emits the onFocus output.
359
+ */
360
+ handleFocus(event) {
361
+ this.controlState.set({ ...this.controlState(), touched: true });
362
+ this.onFocus.emit(event);
363
+ }
364
+ /**
365
+ * Handles blur events and emits the onBlur output.
366
+ */
367
+ handleBlur(event) {
368
+ this.controlState.set({ ...this.controlState(), touched: true });
369
+ this.onBlur.emit(event);
370
+ }
371
+ /**
372
+ * Gets the error message for a specific validator error.
373
+ */
374
+ getValidatorErrorMessage(errorKey, errorValue) {
375
+ switch (errorKey) {
376
+ case 'required':
377
+ return 'This field is required.';
378
+ case 'internal_number':
379
+ return 'Please enter a valid number.';
380
+ case 'email':
381
+ return 'Please enter a valid email address.';
382
+ case 'minlength':
383
+ return `Minimum length is ${errorValue.requiredLength} characters.`;
384
+ case 'maxlength':
385
+ return `Maximum length is ${errorValue.requiredLength} characters.`;
386
+ case 'min':
387
+ return `Minimum value is ${errorValue.min}.`;
388
+ case 'max':
389
+ return `Maximum value is ${errorValue.max}.`;
390
+ case 'pattern':
391
+ return 'Please enter a valid value.';
392
+ default:
393
+ return 'Please enter a valid value.';
394
+ }
395
+ }
396
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
397
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: InputComponent, isStandalone: true, selector: "sdc-input", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, isTextarea: { classPropertyName: "isTextarea", publicName: "isTextarea", isSignal: true, isRequired: false, transformFunction: null }, textareaRows: { classPropertyName: "textareaRows", publicName: "textareaRows", isSignal: true, isRequired: false, transformFunction: null }, textareaCols: { classPropertyName: "textareaCols", publicName: "textareaCols", isSignal: true, isRequired: false, transformFunction: null }, textareaResize: { classPropertyName: "textareaResize", publicName: "textareaResize", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, errorDisplayMode: { classPropertyName: "errorDisplayMode", publicName: "errorDisplayMode", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, debounce: { classPropertyName: "debounce", publicName: "debounce", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onInput: "onInput", isDebounced: "isDebounced" }, ngImport: i0, template: "<div [class]=\"computedClass()\">\n <div class=\"component-container\">\n <!-- Label positioned above or to the left -->\n @if (showLabel()) {\n <label [class]=\"labelClass()\" [for]=\"name()\">\n {{ label() }}\n </label>\n }\n\n <div class=\"input-container\">\n @if (isTextarea()) {\n <textarea\n [rows]=\"textareaRows()\"\n [cols]=\"textareaCols()\"\n [id]=\"name()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (input)=\"handleInput($event)\"\n class=\"sdc-input-field\"></textarea>\n } @else {\n <input\n [id]=\"name()\"\n [name]=\"name()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (input)=\"handleInput($event)\"\n class=\"sdc-input-field\" />\n }\n </div>\n </div>\n\n <!-- Error message -->\n @if (showError()) {\n <div class=\"sdc-input-error\">\n {{ currentErrorMessage() }}\n </div>\n }\n\n <!-- Hint message -->\n @if (hint() && hint().trim().length > 0 && !showError()) {\n <div class=\"sdc-input-hint\">\n {{ hint() }}\n </div>\n }\n</div>\n", styles: [".sdc-input{--sdc-input-label-color: var(--color-neutral-700);--sdc-input-label-size: var(--text-base);--sdc-input-label-weight: var(--font-semibold);--sdc-input-label-gap: var(--space-6);--sdc-input-field-background: var(--color-pure-white);--sdc-input-field-border-color: var(--color-neutral-300);--sdc-input-field-border-width: var(--border-default);--sdc-input-field-border-radius: var(--radius-full);--sdc-input-field-text-color: var(--color-neutral-900);--sdc-input-field-text-size: var(--text-base);--sdc-input-field-placeholder-size: var(--text-sm);--sdc-input-field-placeholder-color: var(--color-neutral-300);--sdc-input-field-placeholder-weight: var(--font-medium);--sdc-input-field-vertical-padding: var(--space-2);--sdc-input-field-horizontal-padding: var(--space-3);--sdc-input-field-height: auto;--sdc-input-field-width: 100%;--sdc-input-focus-ring-width: var(--border-2);--sdc-input-focus-ring-color: var(--color-primary);--sdc-input-focus-ring-offset: var(--border-2);--sdc-input-error-color: var(--color-danger);--sdc-input-error-text-size: var(--text-xs);--sdc-input-hint-color: var(--color-neutral-500);--sdc-input-hint-size: var(--text-xs)}.sdc-input-label{font-weight:var(--sdc-input-label-weight);color:hsl(var(--sdc-input-label-color));font-size:var(--sdc-input-label-size);padding-left:var(--sdc-input-field-horizontal-padding);line-height:1.25rem;display:block}.component-container{display:flex;flex-direction:column;gap:var(--sdc-input-label-gap);width:var(--sdc-input-field-width)}.component-container:has(.sdc-input-label.left){padding-left:0;flex-direction:row;align-items:center}.sdc-input-field{width:var(--sdc-input-field-width);height:var(--sdc-input-field-height);padding:var(--sdc-input-field-vertical-padding) var(--sdc-input-field-horizontal-padding);background:hsl(var(--sdc-input-field-background));border:var(--sdc-input-field-border-width) solid hsl(var(--sdc-input-field-border-color));border-radius:var(--sdc-input-field-border-radius);color:hsl(var(--sdc-input-field-text-color));font-size:var(--sdc-input-field-text-size);transition:all .2s ease-in-out;outline:none}textarea.sdc-input-field{--sdc-input-field-border-radius: var(--radius-xl)}.resize-none textarea.sdc-input-field{resize:none}.resize-both textarea.sdc-input-field{resize:both}.resize-horizontal textarea.sdc-input-field{resize:horizontal}.resize-vertical textarea.sdc-input-field{resize:vertical}.sdc-input-field:focus{border-color:hsl(var(--sdc-input-field-border-color));box-shadow:0 0 0 3px hsl(var(--color-primary) / .1)}.sdc-input-field:disabled{opacity:.6;cursor:not-allowed;background:hsl(var(--color-neutral-100))}.sdc-input-error{color:hsl(var(--sdc-input-error-color));font-size:var(--sdc-input-error-text-size);line-height:1rem;padding:var(--sdc-input-field-vertical-padding) var(--sdc-input-field-horizontal-padding)}.has-error .sdc-input-field{border-color:hsl(var(--sdc-input-error-color))}.size-sm .sdc-input-field{--sdc-input-field-height: var(--space-8);--sdc-input-field-vertical-padding: var(--space-2);--sdc-input-field-horizontal-padding: var(--space-3);--sdc-input-field-text-size: var(--text-sm);--sdc-input-field-placeholder-size: var(--text-xs)}.size-md .sdc-input-field{--sdc-input-field-height: var(--space-10);--sdc-input-field-vertical-padding: var(--space-3);--sdc-input-field-horizontal-padding: var(--space-4);--sdc-input-field-text-size: var(--text-base);--sdc-input-field-placeholder-size: var(--text-sm)}.size-lg .sdc-input-field{--sdc-input-field-height: var(--space-11);--sdc-input-field-vertical-padding: var(--space-4);--sdc-input-field-horizontal-padding: var(--space-5);--sdc-input-field-text-size: var(--text-lg);--sdc-input-field-placeholder-size: var(--text-base)}.size-xl .sdc-input-field{--sdc-input-field-height: var(--space-12);--sdc-input-field-vertical-padding: var(--space-5);--sdc-input-field-horizontal-padding: var(--space-6);--sdc-input-field-text-size: var(--text-xl);--sdc-input-field-placeholder-size: var(--text-lg)}.radius-sm .sdc-input-field{--sdc-input-field-border-radius: var(--radius-sm)}.radius-default .sdc-input-field{--sdc-input-field-border-radius: var(--radius-default)}.radius-md .sdc-input-field{--sdc-input-field-border-radius: var(--radius-md)}.radius-lg .sdc-input-field{--sdc-input-field-border-radius: var(--radius-lg)}.radius-xl .sdc-input-field{--sdc-input-field-border-radius: var(--radius-xl)}.radius-2xl .sdc-input-field{--sdc-input-field-border-radius: var(--radius-2xl)}.radius-full .sdc-input-field{--sdc-input-field-border-radius: var(--radius-full)}.border-0 .sdc-input-field{--sdc-input-field-border-width: var(--border-0)}.border-default .sdc-input-field{--sdc-input-field-border-width: var(--border-default)}.border-2 .sdc-input-field{--sdc-input-field-border-width: var(--border-2)}.border-4 .sdc-input-field{--sdc-input-field-border-width: var(--border-4)}.border-8 .sdc-input-field{--sdc-input-field-border-width: var(--border-8)}.variant-primary .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-primary) / .1)}.variant-secondary .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-secondary) / .1)}.variant-alternative .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-alternative) / .1)}.variant-success .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-success) / .1)}.variant-warning .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-warning) / .1)}.variant-danger .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-danger) / .1)}.sdc-input-field:focus-visible{outline:var(--sdc-input-focus-ring-width) solid hsl(var(--sdc-input-focus-ring-color));outline-offset:var(--sdc-input-focus-ring-offset)}.variant-primary .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-primary)}.variant-secondary .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-secondary)}.variant-alternative .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-alternative)}.variant-success .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-success)}.variant-warning .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-warning)}.variant-danger .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-danger)}.sdc-input-field:hover:not(:disabled){border-color:hsl(var(--color-neutral-400))}.sdc-input-field::placeholder{color:hsl(var(--sdc-input-field-placeholder-color));font-size:var(--sdc-input-field-placeholder-size);font-weight:var(--sdc-input-field-placeholder-weight);opacity:1}.input-container{position:relative;width:100%;flex:1}.sdc-input-hint{color:hsl(var(--sdc-input-hint-color));font-size:var(--sdc-input-hint-size);line-height:1rem;padding-left:var(--sdc-input-field-horizontal-padding)}.info-icon{height:calc(var(--sdc-input-field-height) - (var(--sdc-input-field-height) * .25));position:absolute;top:50%;right:var(--space-3);transform:translateY(-50%);display:flex;align-items:center;justify-content:center;color:hsl(var(--sdc-input-hint-color));pointer-events:none;z-index:1}.size-sm .info-icon{right:var(--space-3)}.size-md .info-icon{right:var(--space-4)}.size-lg .info-icon{right:var(--space-5)}.size-xl .info-icon{right:var(--space-6)}.info-icon-symbol{font-size:16px;font-weight:700;line-height:1}.info-icon-svg{width:16px;height:16px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }] });
398
+ }
399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: InputComponent, decorators: [{
400
+ type: Component,
401
+ args: [{ standalone: true, selector: 'sdc-input', imports: [ReactiveFormsModule], template: "<div [class]=\"computedClass()\">\n <div class=\"component-container\">\n <!-- Label positioned above or to the left -->\n @if (showLabel()) {\n <label [class]=\"labelClass()\" [for]=\"name()\">\n {{ label() }}\n </label>\n }\n\n <div class=\"input-container\">\n @if (isTextarea()) {\n <textarea\n [rows]=\"textareaRows()\"\n [cols]=\"textareaCols()\"\n [id]=\"name()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (input)=\"handleInput($event)\"\n class=\"sdc-input-field\"></textarea>\n } @else {\n <input\n [id]=\"name()\"\n [name]=\"name()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (input)=\"handleInput($event)\"\n class=\"sdc-input-field\" />\n }\n </div>\n </div>\n\n <!-- Error message -->\n @if (showError()) {\n <div class=\"sdc-input-error\">\n {{ currentErrorMessage() }}\n </div>\n }\n\n <!-- Hint message -->\n @if (hint() && hint().trim().length > 0 && !showError()) {\n <div class=\"sdc-input-hint\">\n {{ hint() }}\n </div>\n }\n</div>\n", styles: [".sdc-input{--sdc-input-label-color: var(--color-neutral-700);--sdc-input-label-size: var(--text-base);--sdc-input-label-weight: var(--font-semibold);--sdc-input-label-gap: var(--space-6);--sdc-input-field-background: var(--color-pure-white);--sdc-input-field-border-color: var(--color-neutral-300);--sdc-input-field-border-width: var(--border-default);--sdc-input-field-border-radius: var(--radius-full);--sdc-input-field-text-color: var(--color-neutral-900);--sdc-input-field-text-size: var(--text-base);--sdc-input-field-placeholder-size: var(--text-sm);--sdc-input-field-placeholder-color: var(--color-neutral-300);--sdc-input-field-placeholder-weight: var(--font-medium);--sdc-input-field-vertical-padding: var(--space-2);--sdc-input-field-horizontal-padding: var(--space-3);--sdc-input-field-height: auto;--sdc-input-field-width: 100%;--sdc-input-focus-ring-width: var(--border-2);--sdc-input-focus-ring-color: var(--color-primary);--sdc-input-focus-ring-offset: var(--border-2);--sdc-input-error-color: var(--color-danger);--sdc-input-error-text-size: var(--text-xs);--sdc-input-hint-color: var(--color-neutral-500);--sdc-input-hint-size: var(--text-xs)}.sdc-input-label{font-weight:var(--sdc-input-label-weight);color:hsl(var(--sdc-input-label-color));font-size:var(--sdc-input-label-size);padding-left:var(--sdc-input-field-horizontal-padding);line-height:1.25rem;display:block}.component-container{display:flex;flex-direction:column;gap:var(--sdc-input-label-gap);width:var(--sdc-input-field-width)}.component-container:has(.sdc-input-label.left){padding-left:0;flex-direction:row;align-items:center}.sdc-input-field{width:var(--sdc-input-field-width);height:var(--sdc-input-field-height);padding:var(--sdc-input-field-vertical-padding) var(--sdc-input-field-horizontal-padding);background:hsl(var(--sdc-input-field-background));border:var(--sdc-input-field-border-width) solid hsl(var(--sdc-input-field-border-color));border-radius:var(--sdc-input-field-border-radius);color:hsl(var(--sdc-input-field-text-color));font-size:var(--sdc-input-field-text-size);transition:all .2s ease-in-out;outline:none}textarea.sdc-input-field{--sdc-input-field-border-radius: var(--radius-xl)}.resize-none textarea.sdc-input-field{resize:none}.resize-both textarea.sdc-input-field{resize:both}.resize-horizontal textarea.sdc-input-field{resize:horizontal}.resize-vertical textarea.sdc-input-field{resize:vertical}.sdc-input-field:focus{border-color:hsl(var(--sdc-input-field-border-color));box-shadow:0 0 0 3px hsl(var(--color-primary) / .1)}.sdc-input-field:disabled{opacity:.6;cursor:not-allowed;background:hsl(var(--color-neutral-100))}.sdc-input-error{color:hsl(var(--sdc-input-error-color));font-size:var(--sdc-input-error-text-size);line-height:1rem;padding:var(--sdc-input-field-vertical-padding) var(--sdc-input-field-horizontal-padding)}.has-error .sdc-input-field{border-color:hsl(var(--sdc-input-error-color))}.size-sm .sdc-input-field{--sdc-input-field-height: var(--space-8);--sdc-input-field-vertical-padding: var(--space-2);--sdc-input-field-horizontal-padding: var(--space-3);--sdc-input-field-text-size: var(--text-sm);--sdc-input-field-placeholder-size: var(--text-xs)}.size-md .sdc-input-field{--sdc-input-field-height: var(--space-10);--sdc-input-field-vertical-padding: var(--space-3);--sdc-input-field-horizontal-padding: var(--space-4);--sdc-input-field-text-size: var(--text-base);--sdc-input-field-placeholder-size: var(--text-sm)}.size-lg .sdc-input-field{--sdc-input-field-height: var(--space-11);--sdc-input-field-vertical-padding: var(--space-4);--sdc-input-field-horizontal-padding: var(--space-5);--sdc-input-field-text-size: var(--text-lg);--sdc-input-field-placeholder-size: var(--text-base)}.size-xl .sdc-input-field{--sdc-input-field-height: var(--space-12);--sdc-input-field-vertical-padding: var(--space-5);--sdc-input-field-horizontal-padding: var(--space-6);--sdc-input-field-text-size: var(--text-xl);--sdc-input-field-placeholder-size: var(--text-lg)}.radius-sm .sdc-input-field{--sdc-input-field-border-radius: var(--radius-sm)}.radius-default .sdc-input-field{--sdc-input-field-border-radius: var(--radius-default)}.radius-md .sdc-input-field{--sdc-input-field-border-radius: var(--radius-md)}.radius-lg .sdc-input-field{--sdc-input-field-border-radius: var(--radius-lg)}.radius-xl .sdc-input-field{--sdc-input-field-border-radius: var(--radius-xl)}.radius-2xl .sdc-input-field{--sdc-input-field-border-radius: var(--radius-2xl)}.radius-full .sdc-input-field{--sdc-input-field-border-radius: var(--radius-full)}.border-0 .sdc-input-field{--sdc-input-field-border-width: var(--border-0)}.border-default .sdc-input-field{--sdc-input-field-border-width: var(--border-default)}.border-2 .sdc-input-field{--sdc-input-field-border-width: var(--border-2)}.border-4 .sdc-input-field{--sdc-input-field-border-width: var(--border-4)}.border-8 .sdc-input-field{--sdc-input-field-border-width: var(--border-8)}.variant-primary .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-primary) / .1)}.variant-secondary .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-secondary) / .1)}.variant-alternative .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-alternative) / .1)}.variant-success .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-success) / .1)}.variant-warning .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-warning) / .1)}.variant-danger .sdc-input-field:focus{box-shadow:0 0 0 var(--sdc-input-focus-ring-width) hsl(var(--color-danger) / .1)}.sdc-input-field:focus-visible{outline:var(--sdc-input-focus-ring-width) solid hsl(var(--sdc-input-focus-ring-color));outline-offset:var(--sdc-input-focus-ring-offset)}.variant-primary .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-primary)}.variant-secondary .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-secondary)}.variant-alternative .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-alternative)}.variant-success .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-success)}.variant-warning .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-warning)}.variant-danger .sdc-input-field:focus-visible{--sdc-input-focus-ring-color: var(--color-danger)}.sdc-input-field:hover:not(:disabled){border-color:hsl(var(--color-neutral-400))}.sdc-input-field::placeholder{color:hsl(var(--sdc-input-field-placeholder-color));font-size:var(--sdc-input-field-placeholder-size);font-weight:var(--sdc-input-field-placeholder-weight);opacity:1}.input-container{position:relative;width:100%;flex:1}.sdc-input-hint{color:hsl(var(--sdc-input-hint-color));font-size:var(--sdc-input-hint-size);line-height:1rem;padding-left:var(--sdc-input-field-horizontal-padding)}.info-icon{height:calc(var(--sdc-input-field-height) - (var(--sdc-input-field-height) * .25));position:absolute;top:50%;right:var(--space-3);transform:translateY(-50%);display:flex;align-items:center;justify-content:center;color:hsl(var(--sdc-input-hint-color));pointer-events:none;z-index:1}.size-sm .info-icon{right:var(--space-3)}.size-md .info-icon{right:var(--space-4)}.size-lg .info-icon{right:var(--space-5)}.size-xl .info-icon{right:var(--space-6)}.info-icon-symbol{font-size:16px;font-weight:700;line-height:1}.info-icon-svg{width:16px;height:16px}\n"] }]
402
+ }], ctorParameters: () => [], propDecorators: { theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], isTextarea: [{ type: i0.Input, args: [{ isSignal: true, alias: "isTextarea", required: false }] }], textareaRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "textareaRows", required: false }] }], textareaCols: [{ type: i0.Input, args: [{ isSignal: true, alias: "textareaCols", required: false }] }], textareaResize: [{ type: i0.Input, args: [{ isSignal: true, alias: "textareaResize", required: false }] }], errorMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessage", required: false }] }], errorDisplayMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorDisplayMode", required: false }] }], control: [{ type: i0.Input, args: [{ isSignal: true, alias: "control", required: false }] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onInput: [{ type: i0.Output, args: ["onInput"] }], debounce: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounce", required: false }] }], isDebounced: [{ type: i0.Output, args: ["isDebounced"] }] } });
403
+
404
+ // Export the main form component
405
+
406
+ /**
407
+ * Generated bundle index. Do not edit.
408
+ */
409
+
410
+ export { InputComponent };
411
+ //# sourceMappingURL=3ddv-software-division-components-backoffice-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3ddv-software-division-components-backoffice-input.mjs","sources":["../../backoffice/input/input.component.ts","../../backoffice/input/input.component.html","../../backoffice/input/public-api.ts","../../backoffice/input/3ddv-software-division-components-backoffice-input.ts"],"sourcesContent":["import { ThemeClass } from '@3ddv/software-division-components/shared';\nimport { Component, computed, effect, EffectRef, input, OnDestroy, OnInit, output, signal } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormSubmittedEvent,\n ReactiveFormsModule,\n ValidationErrors,\n} from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport type InputStyleClasses = ReturnType<(typeof InputComponent.prototype)['styleClass']>;\n\n/**\n * A customizable input component built on the native input element.\n *\n * This component supports various configurations and exposes all native input functionality.\n * All HTML input attributes and events are automatically forwarded to the inner input element.\n *\n * @since 1.0.0-alpha.1\n */\n@Component({\n standalone: true,\n selector: 'sdc-input',\n styleUrls: ['./input.component.css'],\n templateUrl: './input.component.html',\n imports: [ReactiveFormsModule],\n})\nexport class InputComponent implements OnInit, OnDestroy {\n private readonly allowedVariants = [\n 'variant-primary',\n 'variant-secondary',\n 'variant-alternative',\n 'variant-success',\n 'variant-warning',\n 'variant-danger',\n ] as const;\n private readonly allowedSizes = ['size-sm', 'size-md', 'size-lg', 'size-xl'] as const;\n private readonly allowedRadius = [\n 'radius-default',\n 'radius-sm',\n 'radius-md',\n 'radius-lg',\n 'radius-xl',\n 'radius-2xl',\n 'radius-full',\n ] as const;\n\n /**\n * The current theme applied to the component.\n */\n public readonly theme = input<ThemeClass>('theme-sdc');\n\n /**\n * Predefined styles to apply to the component.\n * Can be a single class or multiple classes from different categories.\n */\n public readonly styleClass = input<\n ((typeof this.allowedVariants)[number] | (typeof this.allowedSizes)[number] | (typeof this.allowedRadius)[number])[]\n >([]);\n\n // Computed signal that validates and filters the styleClass input\n private readonly _validatedStyleClass = computed(() => {\n const value = this.styleClass();\n\n if (!Array.isArray(value)) {\n return [];\n }\n\n const validValues = value.filter(style => {\n return (\n (this.allowedVariants as readonly string[]).includes(style) ||\n (this.allowedSizes as readonly string[]).includes(style) ||\n (this.allowedRadius as readonly string[]).includes(style)\n );\n });\n\n const invalidValues = value.filter(style => {\n return (\n !(this.allowedVariants as readonly string[]).includes(style) &&\n !(this.allowedSizes as readonly string[]).includes(style) &&\n !(this.allowedRadius as readonly string[]).includes(style)\n );\n });\n\n if (invalidValues.length > 0) {\n throw new Error(\n `InputComponent: Invalid styleClass values ignored: ${invalidValues.join(', ')}. Allowed values: ${[\n ...this.allowedVariants,\n ...this.allowedSizes,\n ...this.allowedRadius,\n ].join(', ')}`\n );\n }\n\n return validValues;\n });\n\n /**\n * Additional CSS classes to apply to the component.\n */\n public readonly className = input<string>('');\n\n /**\n * The label text to display above or to the left of the input.\n * Only visible when a value is provided.\n */\n public readonly label = input<string>('');\n\n /**\n * The position of the label relative to the input.\n * 'top' places the label above the input, 'left' places it to the left.\n */\n public readonly labelPosition = input<'top' | 'left'>('top');\n\n /**\n * Whether the component is disabled.\n */\n public readonly disabled = input<boolean>(false);\n\n /**\n * The type of the input element.\n */\n public readonly type = input<string>('text');\n\n /**\n * The placeholder text for the input.\n */\n public readonly placeholder = input<string>('');\n\n /**\n * The hint text for the input.\n */\n public readonly hint = input<string>('');\n\n /**\n * The name of the form control.\n */\n public readonly name = input<string>('');\n\n /**\n * Whether the input is a textarea.\n */\n public readonly isTextarea = input<boolean>(false);\n\n /**\n * The number of rows for the textarea.\n */\n public readonly textareaRows = input<number>(1);\n\n /**\n * The number of columns for the textarea.\n */\n public readonly textareaCols = input<number>(1);\n\n /**\n * Whether the textarea is resizable.\n */\n public readonly textareaResize = input<'none' | 'both' | 'horizontal' | 'vertical'>('vertical');\n\n /**\n * Custom error message to override the validator's error message.\n */\n public readonly errorMessage = input<string>('');\n\n /**\n * Controls when errors are displayed.\n * - 'after-submit': Show errors only after form submission (default)\n * - 'always': Show errors immediately when validation fails\n */\n public readonly errorDisplayMode = input<'always' | 'after-submit'>('after-submit');\n\n /**\n * The FormControl instance to bind to this input.\n * This allows the component to access form state without circular dependencies.\n */\n public readonly control = input<AbstractControl<string | null> | FormControl | null>(null);\n\n /**\n * The state of the form control.\n */\n public readonly controlState = signal<{\n invalid: boolean;\n touched: boolean;\n dirty: boolean;\n errors: ValidationErrors | null;\n value: string;\n isFormSubmitted: boolean;\n }>({ invalid: false, touched: false, dirty: false, errors: null, value: '', isFormSubmitted: false });\n\n /**\n * Event emitted when the component receives focus.\n */\n public readonly onFocus = output<FocusEvent>();\n\n /**\n * Event emitted when the component loses focus.\n */\n public readonly onBlur = output<FocusEvent>();\n\n /**\n * Event emitted when the input value changes.\n */\n public readonly onInput = output<InputEvent>();\n\n /**\n * Computed class string that combines theme and user classes.\n */\n protected readonly computedClass = computed(() => {\n const themeClass = this.theme();\n const styleClass = this._validatedStyleClass();\n const className = this.className();\n const errorClass = this.showError() ? 'has-error' : '';\n const textareaResizeClass = this.isTextarea() ? `resize-${this.textareaResize()}` : '';\n return ['sdc-input', themeClass, ...styleClass, className, errorClass, textareaResizeClass]\n .filter(Boolean)\n .join(' ');\n });\n\n /**\n * Computed class string for the label positioning.\n */\n protected readonly labelClass = computed(() => {\n const position = this.labelPosition();\n return position === 'left' ? 'sdc-input-label left' : 'sdc-input-label top';\n });\n\n /**\n * Debounce time in milliseconds. When 0, no debounce is applied.\n * Default value is 0 (no debounce).\n */\n public readonly debounce = input<number>(0);\n\n /**\n * Event emitted to notify the debounce state.\n * Returns true while the component is debounced, false when not.\n */\n public readonly isDebounced = output<boolean>();\n\n /**\n * Signal to track the current debounce state of the component.\n */\n protected readonly debounceState = signal<boolean>(false);\n\n /**\n * Subject for handling input events with debounce.\n */\n private readonly inputSubject = new Subject<Event>();\n\n /**\n * Subject for cleanup.\n */\n private readonly destroy$ = new Subject<void>();\n\n /**\n * Current subscription for debounce.\n */\n private debounceSubscription: Subscription | null = null;\n\n /**\n * Current debounce timeout.\n */\n private debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n\n /**\n * Component subscriptions.\n */\n private subscriptions: (Subscription | undefined)[] = [];\n\n /**\n * Computed signal to determine if the label should be visible.\n */\n protected readonly showLabel = computed(() => {\n return this.label() && this.label().trim().length > 0;\n });\n\n /**\n * Computed signal to get the current error message.\n */\n protected readonly currentErrorMessage = computed(() => {\n const customMessage = this.errorMessage();\n const hasErrors = Object.keys(this.controlState()?.errors ?? {}).length > 0;\n\n if (hasErrors && customMessage && customMessage.trim().length > 0) {\n return customMessage;\n }\n\n // If no custom message, try to get validation error from the form control state\n if (hasErrors) {\n const firstErrorKey = Object.keys(this.controlState()?.errors ?? {})[0];\n const firstErrorValue = this.controlState()?.errors?.[firstErrorKey];\n return this.getValidatorErrorMessage(firstErrorKey, firstErrorValue);\n }\n\n return '';\n });\n\n /**\n * Computed signal to determine if there's an error to display.\n */\n protected readonly showError = computed(() => {\n const errorMode = this.errorDisplayMode();\n\n // For validation errors, respect the error display mode\n if (this.controlState()?.invalid) {\n if (errorMode === 'always') {\n // Show errors when component is touched and invalid\n return this.controlState()?.touched || this.controlState()?.dirty || this.controlState()?.isFormSubmitted;\n } else if (errorMode === 'after-submit') {\n // Show errors when form is submitted, regardless of touch/focus state\n return this.controlState()?.isFormSubmitted;\n }\n }\n\n return false;\n });\n\n /**\n * References to effects for proper cleanup\n */\n private readonly effects: EffectRef[] = [];\n\n constructor() {\n // Set up reactive debounce handling within injection context\n const debounceEffect = effect(() => {\n const debounceTime = this.debounce();\n this.setupDebounce(debounceTime);\n });\n this.effects.push(debounceEffect);\n }\n\n ngOnInit(): void {\n // Validate the name input\n if ((this.control() || this.showLabel()) && !this.name()) {\n throw new Error('InputComponent: name is required when control or label inputs are present');\n }\n\n const formEventsSubscription = this.control()?.parent?.events.subscribe(event => {\n // We do not reset this signal because it is used to show the errors\n // When a form is submitted at least once, we want to show the errors\n if (event instanceof FormSubmittedEvent) {\n this.controlState.set({ ...this.controlState(), isFormSubmitted: true });\n\n // We add this because the statusChanges event is not triggered when the form is submitted\n if (event.source.status === 'INVALID') {\n this.controlState.set({ ...this.controlState(), invalid: true });\n }\n }\n\n this.updateErrors();\n });\n\n const statusChangesSubscription = this.control()?.statusChanges.subscribe(status => {\n if (status === 'INVALID') {\n this.controlState.set({ ...this.controlState(), invalid: true });\n }\n\n this.updateErrors();\n });\n\n this.subscriptions.push(formEventsSubscription, statusChangesSubscription);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.inputSubject.complete();\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n this.effects.forEach(effect => effect.destroy());\n this.subscriptions.forEach(subscription => subscription?.unsubscribe());\n }\n\n private updateErrors() {\n // We override the errors except the internal_* errors\n const currentInternalErrors = Object.entries(this.controlState()?.errors || {})?.filter(([key]) =>\n key.startsWith('internal_')\n );\n const controlStateHasInternalErrors = currentInternalErrors.length > 0;\n\n const newErrors =\n this.control()?.errors || controlStateHasInternalErrors\n ? Object.assign(Object.fromEntries(currentInternalErrors), this.control()?.errors ?? {})\n : null;\n\n this.controlState.set({ ...this.controlState(), errors: newErrors });\n }\n\n /**\n * Sets up the debounce functionality for input events.\n */\n private setupDebounce(debounceTime: number): void {\n // Clear existing subscription\n if (this.debounceSubscription) {\n this.debounceSubscription.unsubscribe();\n }\n\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = null;\n }\n\n // Set up new subscription\n this.debounceSubscription = this.inputSubject.pipe(takeUntil(this.destroy$)).subscribe((event: Event) => {\n // Clear existing timeout\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n }\n\n // Set new timeout\n this.debounceTimeout = setTimeout(() => {\n this.debounceState.set(false);\n this.isDebounced.emit(false);\n this.onInput.emit(event as InputEvent);\n this.debounceTimeout = null;\n }, debounceTime);\n });\n }\n\n /**\n * Handles input events with debounce functionality.\n */\n protected handleInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const newValue = target.value;\n\n // Only allow numbers for input with type number\n if (this.type() === 'number') {\n const isValidNumber = /^[0-9]+$/.test(newValue);\n this.controlState.set({ ...this.controlState(), errors: isValidNumber ? null : { internal_number: true } });\n }\n\n // Update the form control value\n this.controlState.set({ ...this.controlState(), value: newValue, dirty: true });\n this.control()?.setValue(newValue);\n\n const debounceTime = this.debounce();\n\n if (debounceTime > 0) {\n // Apply debounce\n this.debounceState.set(true);\n this.isDebounced.emit(true);\n this.inputSubject.next({ ...event, target: { ...event.target, value: newValue } } as unknown as InputEvent);\n } else {\n // No debounce, emit immediately\n this.onInput.emit({ ...event, target: { ...event.target, value: newValue } } as unknown as InputEvent);\n }\n }\n\n /**\n * Handles focus events and emits the onFocus output.\n */\n protected handleFocus(event: FocusEvent): void {\n this.controlState.set({ ...this.controlState(), touched: true });\n this.onFocus.emit(event);\n }\n\n /**\n * Handles blur events and emits the onBlur output.\n */\n protected handleBlur(event: FocusEvent): void {\n this.controlState.set({ ...this.controlState(), touched: true });\n this.onBlur.emit(event);\n }\n\n /**\n * Gets the error message for a specific validator error.\n */\n private getValidatorErrorMessage(errorKey: string, errorValue: any): string {\n switch (errorKey) {\n case 'required':\n return 'This field is required.';\n case 'internal_number':\n return 'Please enter a valid number.';\n case 'email':\n return 'Please enter a valid email address.';\n case 'minlength':\n return `Minimum length is ${errorValue.requiredLength} characters.`;\n case 'maxlength':\n return `Maximum length is ${errorValue.requiredLength} characters.`;\n case 'min':\n return `Minimum value is ${errorValue.min}.`;\n case 'max':\n return `Maximum value is ${errorValue.max}.`;\n case 'pattern':\n return 'Please enter a valid value.';\n default:\n return 'Please enter a valid value.';\n }\n }\n}\n","<div [class]=\"computedClass()\">\n <div class=\"component-container\">\n <!-- Label positioned above or to the left -->\n @if (showLabel()) {\n <label [class]=\"labelClass()\" [for]=\"name()\">\n {{ label() }}\n </label>\n }\n\n <div class=\"input-container\">\n @if (isTextarea()) {\n <textarea\n [rows]=\"textareaRows()\"\n [cols]=\"textareaCols()\"\n [id]=\"name()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (input)=\"handleInput($event)\"\n class=\"sdc-input-field\"></textarea>\n } @else {\n <input\n [id]=\"name()\"\n [name]=\"name()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (input)=\"handleInput($event)\"\n class=\"sdc-input-field\" />\n }\n </div>\n </div>\n\n <!-- Error message -->\n @if (showError()) {\n <div class=\"sdc-input-error\">\n {{ currentErrorMessage() }}\n </div>\n }\n\n <!-- Hint message -->\n @if (hint() && hint().trim().length > 0 && !showError()) {\n <div class=\"sdc-input-hint\">\n {{ hint() }}\n </div>\n }\n</div>\n","// Export the main form component\nexport * from './input.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}