valtech-components 2.0.44 → 2.0.46

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 (331) hide show
  1. package/ng-package.json +10 -0
  2. package/package.json +15 -13
  3. package/release.sh +76 -0
  4. package/src/lib/components/atoms/avatar/avatar.component.scss +20 -0
  5. package/src/lib/components/atoms/avatar/avatar.component.ts +29 -0
  6. package/src/lib/components/atoms/avatar/types.ts +6 -0
  7. package/src/lib/components/atoms/box/box.component.scss +57 -0
  8. package/src/lib/components/atoms/box/box.component.ts +38 -0
  9. package/src/lib/components/atoms/box/types.ts +8 -0
  10. package/src/lib/components/atoms/button/button.component.scss +5 -0
  11. package/src/lib/components/atoms/button/button.component.ts +53 -0
  12. package/src/lib/components/atoms/button/factory.ts +444 -0
  13. package/src/lib/components/atoms/display/display.component.scss +17 -0
  14. package/src/lib/components/atoms/display/display.component.ts +25 -0
  15. package/src/lib/components/atoms/display/types.ts +7 -0
  16. package/src/lib/components/atoms/divider/divider.component.scss +62 -0
  17. package/src/lib/components/atoms/divider/divider.component.ts +18 -0
  18. package/src/lib/components/atoms/divider/types.ts +5 -0
  19. package/src/lib/components/atoms/href/href.component.scss +25 -0
  20. package/src/lib/components/atoms/href/href.component.ts +43 -0
  21. package/src/lib/components/atoms/href/types.ts +10 -0
  22. package/src/lib/components/atoms/icon/icon.component.scss +33 -0
  23. package/src/lib/components/atoms/icon/icon.component.ts +21 -0
  24. package/src/lib/components/atoms/icon/types.ts +7 -0
  25. package/src/lib/components/atoms/image/image.component.scss +70 -0
  26. package/src/lib/components/atoms/image/image.component.ts +40 -0
  27. package/src/lib/components/atoms/image/types.ts +11 -0
  28. package/src/lib/components/atoms/progress-bar/progress-bar.component.scss +22 -0
  29. package/src/lib/components/atoms/progress-bar/progress-bar.component.ts +29 -0
  30. package/src/lib/components/atoms/progress-bar/types.ts +10 -0
  31. package/src/lib/components/atoms/text/text.component.scss +33 -0
  32. package/src/lib/components/atoms/text/text.component.ts +23 -0
  33. package/src/lib/components/atoms/text/types.ts +8 -0
  34. package/src/lib/components/atoms/title/title.component.scss +17 -0
  35. package/src/lib/components/atoms/title/title.component.ts +27 -0
  36. package/src/lib/components/atoms/title/types.ts +8 -0
  37. package/src/lib/components/molecules/alert-box/alert-box.component.scss +10 -0
  38. package/src/lib/components/molecules/alert-box/alert-box.component.ts +28 -0
  39. package/{lib/components/molecules/alert-box/types.d.ts → src/lib/components/molecules/alert-box/types.ts} +4 -3
  40. package/src/lib/components/molecules/button-group/button-group.component.scss +31 -0
  41. package/src/lib/components/molecules/button-group/button-group.component.ts +44 -0
  42. package/src/lib/components/molecules/button-group/types.ts +7 -0
  43. package/src/lib/components/molecules/card/card.component.scss +46 -0
  44. package/src/lib/components/molecules/card/card.component.ts +218 -0
  45. package/src/lib/components/molecules/card/types.ts +36 -0
  46. package/src/lib/components/molecules/check-input/check-input.component.scss +0 -0
  47. package/src/lib/components/molecules/check-input/check-input.component.ts +16 -0
  48. package/src/lib/components/molecules/comment-input/comment-input.component.scss +0 -0
  49. package/src/lib/components/molecules/comment-input/comment-input.component.ts +22 -0
  50. package/src/lib/components/molecules/content-loader/content-loader.component.scss +42 -0
  51. package/src/lib/components/molecules/content-loader/content-loader.component.ts +27 -0
  52. package/src/lib/components/molecules/content-loader/types.ts +8 -0
  53. package/src/lib/components/molecules/date-input/date-input.component.scss +11 -0
  54. package/src/lib/components/molecules/date-input/date-input.component.ts +47 -0
  55. package/src/lib/components/molecules/email-input/email-input.component.scss +0 -0
  56. package/src/lib/components/molecules/email-input/email-input.component.ts +20 -0
  57. package/src/lib/components/molecules/expandable-text/expandable-text.component.ts +89 -0
  58. package/src/lib/components/molecules/expandable-text/types.ts +6 -0
  59. package/src/lib/components/molecules/file-input/file-input.component.scss +11 -0
  60. package/src/lib/components/molecules/file-input/file-input.component.ts +56 -0
  61. package/src/lib/components/molecules/hint/hint.component.scss +5 -0
  62. package/src/lib/components/molecules/hint/hint.component.ts +42 -0
  63. package/src/lib/components/molecules/hour-input/hour-input.component.scss +0 -0
  64. package/src/lib/components/molecules/hour-input/hour-input.component.ts +19 -0
  65. package/src/lib/components/molecules/link/link.component.scss +5 -0
  66. package/src/lib/components/molecules/link/link.component.ts +52 -0
  67. package/src/lib/components/molecules/link/types.ts +10 -0
  68. package/src/lib/components/molecules/links-cake/links-cake.component.scss +9 -0
  69. package/src/lib/components/molecules/links-cake/links-cake.component.ts +30 -0
  70. package/{lib/components/molecules/links-cake/types.d.ts → src/lib/components/molecules/links-cake/types.ts} +4 -3
  71. package/src/lib/components/molecules/notes-box/notes-box.component.scss +5 -0
  72. package/src/lib/components/molecules/notes-box/notes-box.component.ts +28 -0
  73. package/src/lib/components/molecules/notes-box/types.ts +9 -0
  74. package/src/lib/components/molecules/number-input/number-input.component.scss +0 -0
  75. package/src/lib/components/molecules/number-input/number-input.component.ts +19 -0
  76. package/src/lib/components/molecules/password-input/password-input.component.scss +7 -0
  77. package/src/lib/components/molecules/password-input/password-input.component.ts +33 -0
  78. package/src/lib/components/molecules/pin-input/pin-input.component.scss +13 -0
  79. package/src/lib/components/molecules/pin-input/pin-input.component.ts +42 -0
  80. package/src/lib/components/molecules/progress-status/progress-status.component.scss +41 -0
  81. package/src/lib/components/molecules/progress-status/progress-status.component.ts +70 -0
  82. package/src/lib/components/molecules/progress-status/types.ts +11 -0
  83. package/src/lib/components/molecules/prompter/prompter.component.scss +34 -0
  84. package/src/lib/components/molecules/prompter/prompter.component.ts +58 -0
  85. package/{lib/components/molecules/prompter/types.d.ts → src/lib/components/molecules/prompter/types.ts} +7 -6
  86. package/src/lib/components/molecules/radio-input/radio-input.component.scss +0 -0
  87. package/src/lib/components/molecules/radio-input/radio-input.component.ts +27 -0
  88. package/src/lib/components/molecules/searchbar/searchbar.component.scss +9 -0
  89. package/src/lib/components/molecules/searchbar/searchbar.component.ts +47 -0
  90. package/src/lib/components/molecules/text-input/text-input.component.scss +1 -0
  91. package/src/lib/components/molecules/text-input/text-input.component.ts +19 -0
  92. package/src/lib/components/molecules/title-block/title-block.component.scss +36 -0
  93. package/src/lib/components/molecules/title-block/title-block.component.ts +50 -0
  94. package/src/lib/components/molecules/title-block/types.ts +14 -0
  95. package/src/lib/components/organisms/banner/banner.component.scss +45 -0
  96. package/src/lib/components/organisms/banner/banner.component.ts +57 -0
  97. package/src/lib/components/organisms/banner/types.ts +13 -0
  98. package/src/lib/components/organisms/footer/footer.component.scss +3 -0
  99. package/src/lib/components/organisms/footer/footer.component.ts +40 -0
  100. package/{lib/components/organisms/footer/types.d.ts → src/lib/components/organisms/footer/types.ts} +4 -3
  101. package/src/lib/components/organisms/form/factory.ts +11 -0
  102. package/src/lib/components/organisms/form/form-footer/form-footer.component.scss +0 -0
  103. package/src/lib/components/organisms/form/form-footer/form-footer.component.ts +63 -0
  104. package/src/lib/components/organisms/form/form.component.scss +16 -0
  105. package/src/lib/components/organisms/form/form.component.ts +183 -0
  106. package/src/lib/components/organisms/header/header.component.scss +0 -0
  107. package/src/lib/components/organisms/header/header.component.ts +31 -0
  108. package/{lib/components/organisms/header/types.d.ts → src/lib/components/organisms/header/types.ts} +4 -3
  109. package/src/lib/components/organisms/item-list/item-list.component.scss +41 -0
  110. package/src/lib/components/organisms/item-list/item-list.component.ts +223 -0
  111. package/src/lib/components/organisms/item-list/types.ts +42 -0
  112. package/src/lib/components/organisms/no-content/no-content.component.scss +11 -0
  113. package/src/lib/components/organisms/no-content/no-content.component.ts +37 -0
  114. package/{lib/components/organisms/no-content/types.d.ts → src/lib/components/organisms/no-content/types.ts} +4 -3
  115. package/src/lib/components/organisms/toolbar/toolbar.component.scss +13 -0
  116. package/src/lib/components/organisms/toolbar/toolbar.component.ts +123 -0
  117. package/src/lib/components/organisms/toolbar/types.ts +12 -0
  118. package/src/lib/components/organisms/wizard/types.ts +24 -0
  119. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.scss +0 -0
  120. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.ts +90 -0
  121. package/src/lib/components/organisms/wizard/wizard.component.scss +15 -0
  122. package/src/lib/components/organisms/wizard/wizard.component.ts +99 -0
  123. package/src/lib/components/templates/layout/layout.component.scss +22 -0
  124. package/src/lib/components/templates/layout/layout.component.ts +14 -0
  125. package/src/lib/components/templates/simple/simple.component.ts +75 -0
  126. package/{lib/components/templates/simple/types.d.ts → src/lib/components/templates/simple/types.ts} +6 -5
  127. package/src/lib/components/types.ts +122 -0
  128. package/src/lib/services/download.service.ts +58 -0
  129. package/src/lib/services/icons.service.ts +36 -0
  130. package/src/lib/services/in-app-browser.service.ts +19 -0
  131. package/src/lib/services/lang-provider/components/lang-settings.ts +14 -0
  132. package/src/lib/services/lang-provider/components/theme-settings.ts +16 -0
  133. package/src/lib/services/lang-provider/content.ts +14 -0
  134. package/src/lib/services/lang-provider/lang-provider.service.ts +38 -0
  135. package/src/lib/services/lang-provider/types.ts +25 -0
  136. package/src/lib/services/local-storage.service.ts +18 -0
  137. package/src/lib/services/navigation.service.ts +39 -0
  138. package/src/lib/services/theme.service.ts +102 -0
  139. package/{lib/services/types.d.ts → src/lib/services/types.ts} +4 -2
  140. package/src/lib/shared/constants/storage.ts +2 -0
  141. package/src/lib/shared/utils/dom.ts +19 -0
  142. package/src/lib/shared/utils/styles.ts +27 -0
  143. package/{public-api.d.ts → src/public-api.ts} +13 -0
  144. package/tsconfig.lib.json +14 -0
  145. package/tsconfig.lib.prod.json +10 -0
  146. package/tsconfig.spec.json +14 -0
  147. package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +0 -31
  148. package/esm2022/lib/components/atoms/avatar/types.mjs +0 -2
  149. package/esm2022/lib/components/atoms/box/box.component.mjs +0 -47
  150. package/esm2022/lib/components/atoms/box/types.mjs +0 -2
  151. package/esm2022/lib/components/atoms/button/button.component.mjs +0 -69
  152. package/esm2022/lib/components/atoms/button/factory.mjs +0 -217
  153. package/esm2022/lib/components/atoms/display/display.component.mjs +0 -28
  154. package/esm2022/lib/components/atoms/display/types.mjs +0 -2
  155. package/esm2022/lib/components/atoms/divider/divider.component.mjs +0 -17
  156. package/esm2022/lib/components/atoms/divider/types.mjs +0 -2
  157. package/esm2022/lib/components/atoms/href/href.component.mjs +0 -51
  158. package/esm2022/lib/components/atoms/href/types.mjs +0 -2
  159. package/esm2022/lib/components/atoms/icon/icon.component.mjs +0 -19
  160. package/esm2022/lib/components/atoms/icon/types.mjs +0 -2
  161. package/esm2022/lib/components/atoms/image/image.component.mjs +0 -50
  162. package/esm2022/lib/components/atoms/image/types.mjs +0 -2
  163. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +0 -36
  164. package/esm2022/lib/components/atoms/progress-bar/types.mjs +0 -2
  165. package/esm2022/lib/components/atoms/text/text.component.mjs +0 -24
  166. package/esm2022/lib/components/atoms/text/types.mjs +0 -2
  167. package/esm2022/lib/components/atoms/title/title.component.mjs +0 -31
  168. package/esm2022/lib/components/atoms/title/types.mjs +0 -2
  169. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +0 -32
  170. package/esm2022/lib/components/molecules/alert-box/types.mjs +0 -2
  171. package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +0 -49
  172. package/esm2022/lib/components/molecules/button-group/types.mjs +0 -2
  173. package/esm2022/lib/components/molecules/card/card.component.mjs +0 -365
  174. package/esm2022/lib/components/molecules/card/types.mjs +0 -16
  175. package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +0 -15
  176. package/esm2022/lib/components/molecules/comment-input/comment-input.component.mjs +0 -23
  177. package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +0 -32
  178. package/esm2022/lib/components/molecules/content-loader/types.mjs +0 -2
  179. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +0 -73
  180. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +0 -19
  181. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +0 -58
  182. package/esm2022/lib/components/molecules/expandable-text/types.mjs +0 -2
  183. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +0 -69
  184. package/esm2022/lib/components/molecules/hint/hint.component.mjs +0 -52
  185. package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +0 -18
  186. package/esm2022/lib/components/molecules/link/link.component.mjs +0 -53
  187. package/esm2022/lib/components/molecules/link/types.mjs +0 -2
  188. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +0 -37
  189. package/esm2022/lib/components/molecules/links-cake/types.mjs +0 -2
  190. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +0 -33
  191. package/esm2022/lib/components/molecules/notes-box/types.mjs +0 -2
  192. package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +0 -18
  193. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +0 -44
  194. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +0 -45
  195. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +0 -94
  196. package/esm2022/lib/components/molecules/progress-status/types.mjs +0 -2
  197. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +0 -84
  198. package/esm2022/lib/components/molecules/prompter/types.mjs +0 -2
  199. package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +0 -33
  200. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +0 -61
  201. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +0 -18
  202. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +0 -77
  203. package/esm2022/lib/components/molecules/title-block/types.mjs +0 -2
  204. package/esm2022/lib/components/organisms/banner/banner.component.mjs +0 -75
  205. package/esm2022/lib/components/organisms/banner/types.mjs +0 -2
  206. package/esm2022/lib/components/organisms/footer/footer.component.mjs +0 -50
  207. package/esm2022/lib/components/organisms/footer/types.mjs +0 -2
  208. package/esm2022/lib/components/organisms/form/factory.mjs +0 -8
  209. package/esm2022/lib/components/organisms/form/form-footer/form-footer.component.mjs +0 -76
  210. package/esm2022/lib/components/organisms/form/form.component.mjs +0 -230
  211. package/esm2022/lib/components/organisms/header/header.component.mjs +0 -32
  212. package/esm2022/lib/components/organisms/header/types.mjs +0 -2
  213. package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +0 -362
  214. package/esm2022/lib/components/organisms/item-list/types.mjs +0 -2
  215. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +0 -44
  216. package/esm2022/lib/components/organisms/no-content/types.mjs +0 -2
  217. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +0 -171
  218. package/esm2022/lib/components/organisms/toolbar/types.mjs +0 -2
  219. package/esm2022/lib/components/organisms/wizard/types.mjs +0 -7
  220. package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +0 -107
  221. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +0 -103
  222. package/esm2022/lib/components/templates/layout/layout.component.mjs +0 -19
  223. package/esm2022/lib/components/templates/simple/simple.component.mjs +0 -102
  224. package/esm2022/lib/components/templates/simple/types.mjs +0 -2
  225. package/esm2022/lib/components/types.mjs +0 -36
  226. package/esm2022/lib/services/download.service.mjs +0 -63
  227. package/esm2022/lib/services/icons.service.mjs +0 -30
  228. package/esm2022/lib/services/in-app-browser.service.mjs +0 -24
  229. package/esm2022/lib/services/lang-provider/components/lang-settings.mjs +0 -13
  230. package/esm2022/lib/services/lang-provider/components/theme-settings.mjs +0 -15
  231. package/esm2022/lib/services/lang-provider/content.mjs +0 -8
  232. package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +0 -39
  233. package/esm2022/lib/services/lang-provider/types.mjs +0 -14
  234. package/esm2022/lib/services/local-storage.service.mjs +0 -16
  235. package/esm2022/lib/services/navigation.service.mjs +0 -39
  236. package/esm2022/lib/services/theme.service.mjs +0 -97
  237. package/esm2022/lib/services/types.mjs +0 -3
  238. package/esm2022/lib/shared/constants/storage.mjs +0 -3
  239. package/esm2022/lib/shared/utils/dom.mjs +0 -17
  240. package/esm2022/lib/shared/utils/styles.mjs +0 -25
  241. package/esm2022/public-api.mjs +0 -95
  242. package/esm2022/valtech-components.mjs +0 -5
  243. package/fesm2022/valtech-components.mjs +0 -3556
  244. package/fesm2022/valtech-components.mjs.map +0 -1
  245. package/index.d.ts +0 -5
  246. package/lib/components/atoms/avatar/avatar.component.d.ts +0 -12
  247. package/lib/components/atoms/avatar/types.d.ts +0 -6
  248. package/lib/components/atoms/box/box.component.d.ts +0 -12
  249. package/lib/components/atoms/box/types.d.ts +0 -7
  250. package/lib/components/atoms/button/button.component.d.ts +0 -20
  251. package/lib/components/atoms/button/factory.d.ts +0 -71
  252. package/lib/components/atoms/display/display.component.d.ts +0 -10
  253. package/lib/components/atoms/display/types.d.ts +0 -6
  254. package/lib/components/atoms/divider/divider.component.d.ts +0 -10
  255. package/lib/components/atoms/divider/types.d.ts +0 -5
  256. package/lib/components/atoms/href/href.component.d.ts +0 -15
  257. package/lib/components/atoms/href/types.d.ts +0 -9
  258. package/lib/components/atoms/icon/icon.component.d.ts +0 -11
  259. package/lib/components/atoms/icon/types.d.ts +0 -6
  260. package/lib/components/atoms/image/image.component.d.ts +0 -12
  261. package/lib/components/atoms/image/types.d.ts +0 -11
  262. package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +0 -10
  263. package/lib/components/atoms/progress-bar/types.d.ts +0 -9
  264. package/lib/components/atoms/text/text.component.d.ts +0 -10
  265. package/lib/components/atoms/text/types.d.ts +0 -7
  266. package/lib/components/atoms/title/title.component.d.ts +0 -10
  267. package/lib/components/atoms/title/types.d.ts +0 -7
  268. package/lib/components/molecules/alert-box/alert-box.component.d.ts +0 -10
  269. package/lib/components/molecules/button-group/button-group.component.d.ts +0 -13
  270. package/lib/components/molecules/button-group/types.d.ts +0 -6
  271. package/lib/components/molecules/card/card.component.d.ts +0 -16
  272. package/lib/components/molecules/card/types.d.ts +0 -32
  273. package/lib/components/molecules/check-input/check-input.component.d.ts +0 -8
  274. package/lib/components/molecules/comment-input/comment-input.component.d.ts +0 -10
  275. package/lib/components/molecules/content-loader/content-loader.component.d.ts +0 -10
  276. package/lib/components/molecules/content-loader/types.d.ts +0 -7
  277. package/lib/components/molecules/date-input/date-input.component.d.ts +0 -10
  278. package/lib/components/molecules/email-input/email-input.component.d.ts +0 -10
  279. package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +0 -13
  280. package/lib/components/molecules/expandable-text/types.d.ts +0 -6
  281. package/lib/components/molecules/file-input/file-input.component.d.ts +0 -15
  282. package/lib/components/molecules/hint/hint.component.d.ts +0 -11
  283. package/lib/components/molecules/hour-input/hour-input.component.d.ts +0 -10
  284. package/lib/components/molecules/link/link.component.d.ts +0 -14
  285. package/lib/components/molecules/link/types.d.ts +0 -9
  286. package/lib/components/molecules/links-cake/links-cake.component.d.ts +0 -10
  287. package/lib/components/molecules/notes-box/notes-box.component.d.ts +0 -10
  288. package/lib/components/molecules/notes-box/types.d.ts +0 -8
  289. package/lib/components/molecules/number-input/number-input.component.d.ts +0 -10
  290. package/lib/components/molecules/password-input/password-input.component.d.ts +0 -11
  291. package/lib/components/molecules/pin-input/pin-input.component.d.ts +0 -15
  292. package/lib/components/molecules/progress-status/progress-status.component.d.ts +0 -14
  293. package/lib/components/molecules/progress-status/types.d.ts +0 -10
  294. package/lib/components/molecules/prompter/prompter.component.d.ts +0 -12
  295. package/lib/components/molecules/radio-input/radio-input.component.d.ts +0 -10
  296. package/lib/components/molecules/searchbar/searchbar.component.d.ts +0 -14
  297. package/lib/components/molecules/text-input/text-input.component.d.ts +0 -10
  298. package/lib/components/molecules/title-block/title-block.component.d.ts +0 -10
  299. package/lib/components/molecules/title-block/types.d.ts +0 -12
  300. package/lib/components/organisms/banner/banner.component.d.ts +0 -14
  301. package/lib/components/organisms/banner/types.d.ts +0 -12
  302. package/lib/components/organisms/footer/footer.component.d.ts +0 -12
  303. package/lib/components/organisms/form/factory.d.ts +0 -5
  304. package/lib/components/organisms/form/form-footer/form-footer.component.d.ts +0 -15
  305. package/lib/components/organisms/form/form.component.d.ts +0 -23
  306. package/lib/components/organisms/header/header.component.d.ts +0 -12
  307. package/lib/components/organisms/item-list/item-list.component.d.ts +0 -23
  308. package/lib/components/organisms/item-list/types.d.ts +0 -38
  309. package/lib/components/organisms/no-content/no-content.component.d.ts +0 -12
  310. package/lib/components/organisms/toolbar/toolbar.component.d.ts +0 -21
  311. package/lib/components/organisms/toolbar/types.d.ts +0 -11
  312. package/lib/components/organisms/wizard/types.d.ts +0 -20
  313. package/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.d.ts +0 -21
  314. package/lib/components/organisms/wizard/wizard.component.d.ts +0 -22
  315. package/lib/components/templates/layout/layout.component.d.ts +0 -5
  316. package/lib/components/templates/simple/simple.component.d.ts +0 -10
  317. package/lib/components/types.d.ts +0 -113
  318. package/lib/services/download.service.d.ts +0 -8
  319. package/lib/services/icons.service.d.ts +0 -6
  320. package/lib/services/in-app-browser.service.d.ts +0 -9
  321. package/lib/services/lang-provider/components/lang-settings.d.ts +0 -3
  322. package/lib/services/lang-provider/components/theme-settings.d.ts +0 -3
  323. package/lib/services/lang-provider/content.d.ts +0 -6
  324. package/lib/services/lang-provider/lang-provider.service.d.ts +0 -17
  325. package/lib/services/lang-provider/types.d.ts +0 -15
  326. package/lib/services/local-storage.service.d.ts +0 -6
  327. package/lib/services/navigation.service.d.ts +0 -15
  328. package/lib/services/theme.service.d.ts +0 -27
  329. package/lib/shared/constants/storage.d.ts +0 -2
  330. package/lib/shared/utils/dom.d.ts +0 -3
  331. package/lib/shared/utils/styles.d.ts +0 -1
@@ -0,0 +1,218 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
3
+ import {
4
+ IonButton,
5
+ IonButtons,
6
+ IonCard,
7
+ IonCardContent,
8
+ IonCardHeader,
9
+ IonCardSubtitle,
10
+ IonCardTitle,
11
+ IonCheckbox,
12
+ IonIcon,
13
+ } from '@ionic/angular/standalone';
14
+ import { AvatarComponent } from '../../atoms/avatar/avatar.component';
15
+ import { ButtonComponent } from '../../atoms/button/button.component';
16
+ import { ImageComponent } from '../../atoms/image/image.component';
17
+ import { TextComponent } from '../../atoms/text/text.component';
18
+ import { ToolbarActionType } from '../../types';
19
+ import { CardClickEvent, CardMetadata, CardSection, CardType } from './types';
20
+
21
+ @Component({
22
+ selector: 'val-card',
23
+ standalone: true,
24
+ imports: [
25
+ CommonModule,
26
+ ButtonComponent,
27
+ AvatarComponent,
28
+ ImageComponent,
29
+ TextComponent,
30
+ IonCard,
31
+ IonCardContent,
32
+ IonCardHeader,
33
+ IonCardTitle,
34
+ IonCardSubtitle,
35
+ IonCheckbox,
36
+ IonButtons,
37
+ IonButton,
38
+ IonIcon,
39
+ ],
40
+ template: `
41
+ <ion-card *ngIf="props.type === types.native">
42
+ <img alt="image" [src]="props.image" />
43
+ <ion-card-header *ngIf="props.title || props.overtitle">
44
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
45
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
46
+ </ion-card-header>
47
+
48
+ <ion-card-content *ngIf="props.content">{{ props.content }}</ion-card-content>
49
+
50
+ <val-button
51
+ *ngFor="let b of props.footerActions"
52
+ [props]="b"
53
+ (onClick)="clickHandler(sections.footer, b.token)"
54
+ ></val-button>
55
+ </ion-card>
56
+
57
+ <ion-card
58
+ *ngIf="props.type === types.tappable"
59
+ (click)="clickHandler(sections.content, props.token)"
60
+ class="tapable"
61
+ >
62
+ <img alt="image" [src]="props.image" />
63
+ <ion-card-header *ngIf="props.title || props.overtitle">
64
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
65
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
66
+ </ion-card-header>
67
+
68
+ <ion-card-content *ngIf="props.content">{{ props.content }}</ion-card-content>
69
+ </ion-card>
70
+
71
+ <ion-card
72
+ *ngIf="props.type === types.checker"
73
+ (click)="clickHandler(sections.content, props.token)"
74
+ class="tapable"
75
+ >
76
+ <ion-card-header *ngIf="props.title || props.overtitle" class="checker">
77
+ <div>
78
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
79
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
80
+ </div>
81
+ <div>
82
+ <ion-checkbox [checked]="props.selected"></ion-checkbox>
83
+ </div>
84
+ </ion-card-header>
85
+
86
+ <ion-card-content *ngIf="props.content">{{ props.content }}</ion-card-content>
87
+ </ion-card>
88
+
89
+ <ion-card *ngIf="props.type === types.complex" class="complex">
90
+ <ion-card-header class="complex-header">
91
+ <ion-buttons style="display: flex; align-items: center" *ngIf="props.leftActions.length > 0">
92
+ <ng-container *ngFor="let action of props.leftActions">
93
+ <ion-button
94
+ *ngIf="action.type === actionTypes.ICON"
95
+ (click)="clickHandler(sections.headerLeft, action.token)"
96
+ >
97
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
98
+ </ion-button>
99
+ <val-avatar
100
+ style="margin-right: 4px; cursor: pointer"
101
+ *ngIf="action.type === actionTypes.AVATAR"
102
+ [props]="{ size: 'small', image: action.description, default: '' }"
103
+ (onClick)="clickHandler(sections.headerLeft, action.token)"
104
+ ></val-avatar>
105
+ <val-image
106
+ *ngIf="action.type === actionTypes.IMAGE"
107
+ [props]="action.image"
108
+ (click)="clickHandler(sections.headerLeft, action.token)"
109
+ ></val-image>
110
+ <ion-button
111
+ *ngIf="action.type === actionTypes.BUTTON"
112
+ (click)="clickHandler(sections.headerLeft, action.token)"
113
+ >
114
+ {{ action.description }}
115
+ </ion-button>
116
+ <div *ngIf="props.headerText">
117
+ <val-text [props]="{ content: props.headerText, color: 'dark', bold: true, size: 'medium' }" />
118
+ </div>
119
+ </ng-container>
120
+ </ion-buttons>
121
+ <ion-buttons style="display: flex; align-items: center" *ngIf="props.rightActions.length > 0">
122
+ <ng-container *ngFor="let action of props.rightActions">
123
+ <ion-button
124
+ *ngIf="action.type === actionTypes.ICON"
125
+ (click)="clickHandler(sections.headerRight, action.token)"
126
+ >
127
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
128
+ </ion-button>
129
+ <val-avatar
130
+ style="margin-right: 4px; cursor: pointer"
131
+ *ngIf="action.type === actionTypes.AVATAR"
132
+ [props]="{ size: 'small', image: action.description, default: '' }"
133
+ (onClick)="clickHandler(sections.headerRight, action.token)"
134
+ ></val-avatar>
135
+ <val-image
136
+ *ngIf="action.type === actionTypes.IMAGE"
137
+ [props]="action.image"
138
+ (click)="clickHandler(sections.headerRight, action.token)"
139
+ ></val-image>
140
+ <ion-button
141
+ *ngIf="action.type === actionTypes.BUTTON"
142
+ (click)="clickHandler(sections.headerRight, action.token)"
143
+ >
144
+ {{ action.description }}
145
+ </ion-button>
146
+ </ng-container>
147
+ </ion-buttons>
148
+ </ion-card-header>
149
+
150
+ <div class="tapable" (click)="clickHandler(sections.content, props.token)">
151
+ <ion-card-header *ngIf="props.title || props.overtitle" class="complex-header">
152
+ <div>
153
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
154
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
155
+ </div>
156
+ </ion-card-header>
157
+
158
+ <img alt="image" [src]="props.image" />
159
+ <ion-card-content *ngIf="props.content" class="complex-content">{{ props.content }}</ion-card-content>
160
+ </div>
161
+ <val-button
162
+ *ngFor="let b of props.footerActions"
163
+ [props]="b"
164
+ (onClick)="clickHandler(sections.footer, b.token)"
165
+ ></val-button>
166
+ <ion-buttons
167
+ style="display: flex; align-items: center; justify-content: flex-end; margin: 8px"
168
+ *ngIf="props.footerComplexActions.length > 0"
169
+ >
170
+ <ng-container *ngFor="let action of props.footerComplexActions">
171
+ <ion-button
172
+ *ngIf="action.type === actionTypes.ICON"
173
+ (click)="clickHandler(sections.footerExtra, action.token)"
174
+ >
175
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
176
+ </ion-button>
177
+ <val-avatar
178
+ style="margin-right: 4px; cursor: pointer"
179
+ *ngIf="action.type === actionTypes.AVATAR"
180
+ [props]="{ size: 'small', image: action.description, default: '' }"
181
+ (onClick)="clickHandler(sections.footerExtra, action.token)"
182
+ ></val-avatar>
183
+ <val-image
184
+ *ngIf="action.type === actionTypes.IMAGE"
185
+ [props]="action.image"
186
+ (click)="clickHandler(sections.footerExtra, action.token)"
187
+ ></val-image>
188
+ <ion-button
189
+ *ngIf="action.type === actionTypes.BUTTON"
190
+ (click)="clickHandler(sections.footerExtra, action.token)"
191
+ color="dark"
192
+ >
193
+ {{ action.description }}
194
+ </ion-button>
195
+ </ng-container>
196
+ </ion-buttons>
197
+ </ion-card>
198
+ `,
199
+ styleUrls: ['./card.component.scss'],
200
+ })
201
+ export class CardComponent implements OnInit {
202
+ @Input() props: CardMetadata;
203
+
204
+ @Output()
205
+ onClick = new EventEmitter<CardClickEvent>();
206
+
207
+ types = CardType;
208
+ actionTypes = ToolbarActionType;
209
+ sections = CardSection;
210
+
211
+ constructor() {}
212
+
213
+ ngOnInit() {}
214
+
215
+ clickHandler(section: CardSection, token?: string) {
216
+ this.onClick.emit({ section, token });
217
+ }
218
+ }
@@ -0,0 +1,36 @@
1
+ import { ButtonMetadata, ToolbarAction } from '../../types';
2
+
3
+ export enum CardType {
4
+ native = 'native',
5
+ checker = 'checker',
6
+ tappable = 'tappable',
7
+ complex = 'complex',
8
+ }
9
+
10
+ export interface CardClickEvent {
11
+ section: CardSection;
12
+ token?: string;
13
+ }
14
+
15
+ export enum CardSection {
16
+ headerLeft,
17
+ headerRight,
18
+ content,
19
+ footer,
20
+ footerExtra,
21
+ }
22
+
23
+ export interface CardMetadata {
24
+ token?: string;
25
+ type: CardType;
26
+ title?: string;
27
+ overtitle?: string;
28
+ content?: string;
29
+ image?: string;
30
+ footerActions: ButtonMetadata[];
31
+ footerComplexActions: ToolbarAction[];
32
+ leftActions: ToolbarAction[];
33
+ rightActions: ToolbarAction[];
34
+ selected: boolean;
35
+ headerText?: string;
36
+ }
@@ -0,0 +1,16 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, OnInit } from '@angular/core';
3
+ import { IonCheckbox } from '@ionic/angular/standalone';
4
+
5
+ @Component({
6
+ selector: 'val-check-input',
7
+ standalone: true,
8
+ imports: [CommonModule, IonCheckbox],
9
+ template: ` <ion-checkbox>I agree to the terms and conditions</ion-checkbox> `,
10
+ styleUrls: ['./check-input.component.scss'],
11
+ })
12
+ export class CheckInputComponent implements OnInit {
13
+ constructor() {}
14
+
15
+ ngOnInit() {}
16
+ }
@@ -0,0 +1,22 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, OnInit } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { IonCheckbox, IonTextarea } from '@ionic/angular/standalone';
5
+ import { InputMetadata } from '../../types';
6
+
7
+ @Component({
8
+ selector: 'val-comment-input',
9
+ standalone: true,
10
+ imports: [CommonModule, ReactiveFormsModule, IonCheckbox, IonTextarea],
11
+ template: `
12
+ <ion-textarea [formControl]="props.control" [counter]="true" [maxlength]="props.range.max"></ion-textarea>
13
+ `,
14
+ styleUrls: ['./comment-input.component.scss'],
15
+ })
16
+ export class CommentInputComponent implements OnInit {
17
+ @Input() props: InputMetadata;
18
+
19
+ constructor() {}
20
+
21
+ ngOnInit() {}
22
+ }
@@ -0,0 +1,42 @@
1
+ @import '../../styles/mixins.scss';
2
+
3
+ .small {
4
+ width: pxToRem(24);
5
+ height: pxToRem(24);
6
+ }
7
+
8
+ .medium {
9
+ width: pxToRem(38);
10
+ height: pxToRem(38);
11
+ }
12
+
13
+ .large {
14
+ width: pxToRem(48);
15
+ height: pxToRem(48);
16
+ }
17
+
18
+ .spinner-wrapper {
19
+ width: 100%;
20
+ text-align: center;
21
+
22
+ &.small {
23
+ height: pxToRem(72);
24
+ padding-top: pxToRem(24);
25
+
26
+ @include body-small;
27
+ }
28
+
29
+ &.medium {
30
+ height: pxToRem(98);
31
+ padding-top: pxToRem(32);
32
+
33
+ @include body-medium;
34
+ }
35
+
36
+ &.large {
37
+ height: pxToRem(108);
38
+ padding-top: pxToRem(42);
39
+
40
+ @include body-large;
41
+ }
42
+ }
@@ -0,0 +1,27 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, OnInit } from '@angular/core';
3
+ import { IonSpinner, IonText } from '@ionic/angular/standalone';
4
+ import { ContentLoaderMetadata } from './types';
5
+
6
+ @Component({
7
+ selector: 'val-content-loader',
8
+ standalone: true,
9
+ imports: [CommonModule, IonSpinner, IonText],
10
+ template: `
11
+ <div [ngClass]="['spinner-wrapper', props.size]">
12
+ <ion-spinner [ngClass]="[props.size]" [name]="props.name" [color]="props.color"></ion-spinner>
13
+ <ion-text [color]="props.color">
14
+ <p>{{ props.text }}</p>
15
+ </ion-text>
16
+ </div>
17
+ `,
18
+ styleUrls: ['./content-loader.component.scss'],
19
+ })
20
+ export class ContentLoaderComponent implements OnInit {
21
+ @Input()
22
+ props: ContentLoaderMetadata;
23
+
24
+ constructor() {}
25
+
26
+ ngOnInit() {}
27
+ }
@@ -0,0 +1,8 @@
1
+ import { Color } from '@ionic/core';
2
+
3
+ export interface ContentLoaderMetadata {
4
+ color: Color;
5
+ size: 'small' | 'medium' | 'large';
6
+ name: 'circular' | 'crescent' | 'dots' | 'lines-sharp';
7
+ text: string;
8
+ }
@@ -0,0 +1,11 @@
1
+ @import '../../organisms/form/form.component.scss';
2
+
3
+ .button-container {
4
+ display: flex;
5
+ flex-direction: column;
6
+ align-items: flex-start;
7
+ }
8
+
9
+ .action {
10
+ margin-top: pxToRem(4);
11
+ }
@@ -0,0 +1,47 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, OnInit } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { IonDatetime, IonDatetimeButton, IonModal } from '@ionic/angular/standalone';
5
+ import { InputMetadata } from '../../types';
6
+
7
+ @Component({
8
+ selector: 'val-date-input',
9
+ standalone: true,
10
+ imports: [CommonModule, ReactiveFormsModule, IonDatetime, IonDatetimeButton, IonModal],
11
+ template: `
12
+ <div class="button-container">
13
+ <ion-datetime-button class="action" datetime="datetime"></ion-datetime-button>
14
+ </div>
15
+ <ion-modal [keepContentsMounted]="true">
16
+ <ng-template>
17
+ <ion-datetime
18
+ [formControl]="props.control"
19
+ id="datetime"
20
+ presentation="date"
21
+ locale="es-ES"
22
+ [firstDayOfWeek]="1"
23
+ [showDefaultButtons]="true"
24
+ doneText="Aceptar"
25
+ cancelText="Cancelar"
26
+ formatOptions="{
27
+ date: { weekday: 'short', month: 'long', day: '2-digit' },
28
+ time: {
29
+ hour: '2-digit',
30
+ minute: '2-digit',
31
+ },
32
+ }"
33
+ >
34
+ <span slot="title">{{ props.hint }}</span>
35
+ </ion-datetime>
36
+ </ng-template>
37
+ </ion-modal>
38
+ `,
39
+ styleUrls: ['./date-input.component.scss'],
40
+ })
41
+ export class DateInputComponent implements OnInit {
42
+ @Input() props: InputMetadata;
43
+
44
+ constructor() {}
45
+
46
+ ngOnInit() {}
47
+ }
@@ -0,0 +1,20 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, OnInit } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { IonInput } from '@ionic/angular/standalone';
5
+ import { InputMetadata } from '../../types';
6
+
7
+ @Component({
8
+ selector: 'val-email-input',
9
+ standalone: true,
10
+ imports: [CommonModule, ReactiveFormsModule, IonInput],
11
+ template: ` <ion-input [formControl]="props.control" type="email" [placeholder]="props.placeholder"></ion-input> `,
12
+ styleUrls: ['./email-input.component.scss'],
13
+ })
14
+ export class EmailInputComponent implements OnInit {
15
+ @Input() props: InputMetadata;
16
+
17
+ constructor() {}
18
+
19
+ ngOnInit() {}
20
+ }
@@ -0,0 +1,89 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { IonText } from '@ionic/angular/standalone';
3
+ import { ExpandableTextInput } from './types';
4
+ import { resolveColor } from '../../../shared/utils/styles';
5
+
6
+ @Component({
7
+ selector: 'val-expandable-text',
8
+ standalone: true,
9
+ imports: [IonText],
10
+ template: `
11
+ <div class="description-container" [class.expanded]="expanded" [class.has-gradient]="!expanded && isTruncated">
12
+ <ion-text>
13
+ <p class="description">
14
+ <span class="content">{{ expanded ? props.content : truncatedText }}</span>
15
+ @if (!expanded && isTruncated) {
16
+ <span class="see-more" [style.color]="this.color()" (click)="toggleExpand()">
17
+ {{ props.expandText || 'ver más' }}
18
+ </span>
19
+ }
20
+ </p>
21
+ </ion-text>
22
+ </div>
23
+ `,
24
+ styles: [
25
+ `
26
+ .description-container {
27
+ position: relative;
28
+ overflow: hidden;
29
+ max-height: 10rem; /* Altura para texto truncado */
30
+ transition: max-height 0.3s ease-in-out;
31
+ }
32
+
33
+ .description-container.expanded {
34
+ max-height: none; /* Sin límite de altura al expandir */
35
+ }
36
+
37
+ .description {
38
+ position: relative;
39
+ overflow: hidden;
40
+ text-overflow: ellipsis;
41
+ }
42
+
43
+ .description-container:not(.expanded) .description::after {
44
+ content: '';
45
+ position: absolute;
46
+ bottom: 0;
47
+ left: 0;
48
+ right: 0;
49
+ height: 3.5rem; /* Altura del gradiente */
50
+ background: linear-gradient(to top, var(--ion-background-color), rgba(255, 255, 255, 0));
51
+ pointer-events: none; /* Ignorar interacciones en el gradiente */
52
+ }
53
+
54
+ .description-container:not(.has-gradient) .description::after {
55
+ background: transparent; /* Fondo transparente si no hay gradiente */
56
+ }
57
+
58
+ .see-more {
59
+ position: relative;
60
+ font-weight: bold;
61
+ cursor: pointer;
62
+ z-index: 1;
63
+ margin-left: 0.3rem;
64
+ }
65
+ `,
66
+ ],
67
+ })
68
+ export class ExpandableTextComponent {
69
+ @Input() props: ExpandableTextInput;
70
+ expanded = false;
71
+ defaultColor = 'primary';
72
+
73
+ get truncatedText(): string {
74
+ const maxLength = this.props.limit || 100; // Longitud por defecto
75
+ return this.props.content?.length > maxLength ? this.props.content.slice(0, maxLength) + '...' : this.props.content;
76
+ }
77
+
78
+ get isTruncated(): boolean {
79
+ return this.props.content?.length > (this.props.limit || 100);
80
+ }
81
+
82
+ toggleExpand() {
83
+ this.expanded = !this.expanded;
84
+ }
85
+
86
+ color() {
87
+ return resolveColor(this.props.color || this.defaultColor);
88
+ }
89
+ }
@@ -0,0 +1,6 @@
1
+ export interface ExpandableTextInput {
2
+ limit: number; // Máxima longitud del texto antes de truncar
3
+ content: string; // Contenido a mostrar
4
+ color?: string; // Color del texto "ver más"
5
+ expandText?: string; // Texto para "ver más" o equivalente
6
+ }
@@ -0,0 +1,11 @@
1
+ @import '../../organisms/form/form.component.scss';
2
+
3
+ .file-container {
4
+ margin-top: pxToRem(4);
5
+ }
6
+
7
+ .name-container {
8
+ display: flex;
9
+ flex-direction: row;
10
+ align-items: flex-start;
11
+ }
@@ -0,0 +1,56 @@
1
+ import { Component, Input, OnInit, ViewChild } from '@angular/core';
2
+ import { IonIcon } from '@ionic/angular/standalone';
3
+ import { ButtonComponent } from '../../atoms/button/button.component';
4
+ import { PrimarySolidDefaultRoundButton } from '../../atoms/button/factory';
5
+ import { TextComponent } from '../../atoms/text/text.component';
6
+ import { ButtonMetadata, InputMetadata } from '../../types';
7
+
8
+ @Component({
9
+ selector: 'val-file-input',
10
+ standalone: true,
11
+ imports: [IonIcon, TextComponent, ButtonComponent],
12
+ template: `
13
+ <div class="file-container">
14
+ <input style="display: none" type="file" (change)="onFileSelected($event)" #fileInput />
15
+ <div class="name-container">
16
+ <ion-icon [name]="selectedFile ? 'checkmark-circle-outline' : 'alert-circle-outline'"></ion-icon>
17
+ <val-text
18
+ style="margin-left: 4px;"
19
+ [props]="{
20
+ content: selectedFile ? selectedFile.name : 'No has seleccionado archivo',
21
+ color: 'dark',
22
+ bold: false,
23
+ size: 'medium',
24
+ }"
25
+ ></val-text>
26
+ </div>
27
+ <val-button [props]="contrastButton" (onClick)="fileInput.click()"></val-button>
28
+ </div>
29
+ `,
30
+ styleUrls: ['./file-input.component.scss'],
31
+ })
32
+ export class FileInputComponent implements OnInit {
33
+ @ViewChild('fileInput') fileInput;
34
+
35
+ @Input() props: InputMetadata;
36
+
37
+ contrastButton: ButtonMetadata = {
38
+ ...PrimarySolidDefaultRoundButton('Subir archivo'),
39
+ color: 'light',
40
+ };
41
+ selectedFile: File;
42
+
43
+ constructor() {}
44
+
45
+ ngOnInit() {}
46
+
47
+ onFileSelected(event): void {
48
+ this.selectedFile = event.target.files[0];
49
+ this.props.control.setValue(this.selectedFile);
50
+ }
51
+
52
+ reset(): void {
53
+ this.selectedFile = null;
54
+ this.fileInput.nativeElement.value = '';
55
+ }
56
+ }
@@ -0,0 +1,5 @@
1
+ @import '../../organisms/form/form.component.scss';
2
+
3
+ .hint-container {
4
+ margin-top: pxToRem(4);
5
+ }
@@ -0,0 +1,42 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, OnInit } from '@angular/core';
3
+ import { TextComponent } from '../../atoms/text/text.component';
4
+ import { InputMetadata } from '../../types';
5
+
6
+ @Component({
7
+ selector: 'val-hint',
8
+ standalone: true,
9
+ imports: [CommonModule, TextComponent],
10
+ template: `
11
+ <div class="hint-container" *ngIf="props.control.invalid && (props.control.touched || props.control.dirty)">
12
+ <val-text
13
+ *ngFor="let e of Errors"
14
+ [props]="{
15
+ content: e,
16
+ color: 'danger',
17
+ bold: false,
18
+ size: 'small',
19
+ }"
20
+ ></val-text>
21
+ </div>
22
+ `,
23
+ styleUrls: ['./hint.component.scss'],
24
+ })
25
+ export class HintComponent implements OnInit {
26
+ @Input() props: InputMetadata;
27
+
28
+ constructor() {}
29
+
30
+ ngOnInit() {}
31
+
32
+ get Errors(): string[] {
33
+ const keys = Object.keys(this.props.errors);
34
+ const errors = [];
35
+ keys.map((e: string) => {
36
+ if (this.props.control.hasError(e)) {
37
+ errors.push(this.props.errors[e]);
38
+ }
39
+ });
40
+ return errors;
41
+ }
42
+ }