valtech-components 2.0.46 → 2.0.47

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/esm2022/lib/components/atoms/avatar/avatar.component.mjs +31 -0
  2. package/esm2022/lib/components/atoms/avatar/types.mjs +2 -0
  3. package/esm2022/lib/components/atoms/box/box.component.mjs +47 -0
  4. package/esm2022/lib/components/atoms/box/types.mjs +2 -0
  5. package/esm2022/lib/components/atoms/button/button.component.mjs +69 -0
  6. package/esm2022/lib/components/atoms/button/factory.mjs +217 -0
  7. package/esm2022/lib/components/atoms/display/display.component.mjs +28 -0
  8. package/esm2022/lib/components/atoms/display/types.mjs +2 -0
  9. package/esm2022/lib/components/atoms/divider/divider.component.mjs +17 -0
  10. package/esm2022/lib/components/atoms/divider/types.mjs +2 -0
  11. package/esm2022/lib/components/atoms/href/href.component.mjs +51 -0
  12. package/esm2022/lib/components/atoms/href/types.mjs +2 -0
  13. package/esm2022/lib/components/atoms/icon/icon.component.mjs +19 -0
  14. package/esm2022/lib/components/atoms/icon/types.mjs +2 -0
  15. package/esm2022/lib/components/atoms/image/image.component.mjs +50 -0
  16. package/esm2022/lib/components/atoms/image/types.mjs +2 -0
  17. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +36 -0
  18. package/esm2022/lib/components/atoms/progress-bar/types.mjs +2 -0
  19. package/esm2022/lib/components/atoms/text/text.component.mjs +24 -0
  20. package/esm2022/lib/components/atoms/text/types.mjs +2 -0
  21. package/esm2022/lib/components/atoms/title/title.component.mjs +31 -0
  22. package/esm2022/lib/components/atoms/title/types.mjs +2 -0
  23. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +32 -0
  24. package/esm2022/lib/components/molecules/alert-box/types.mjs +2 -0
  25. package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +49 -0
  26. package/esm2022/lib/components/molecules/button-group/types.mjs +2 -0
  27. package/esm2022/lib/components/molecules/card/card.component.mjs +365 -0
  28. package/esm2022/lib/components/molecules/card/types.mjs +16 -0
  29. package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +15 -0
  30. package/esm2022/lib/components/molecules/comment-input/comment-input.component.mjs +23 -0
  31. package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +32 -0
  32. package/esm2022/lib/components/molecules/content-loader/types.mjs +2 -0
  33. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +73 -0
  34. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +19 -0
  35. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +58 -0
  36. package/esm2022/lib/components/molecules/expandable-text/types.mjs +2 -0
  37. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +69 -0
  38. package/esm2022/lib/components/molecules/hint/hint.component.mjs +52 -0
  39. package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +18 -0
  40. package/esm2022/lib/components/molecules/link/link.component.mjs +53 -0
  41. package/esm2022/lib/components/molecules/link/types.mjs +2 -0
  42. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +37 -0
  43. package/esm2022/lib/components/molecules/links-cake/types.mjs +2 -0
  44. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +33 -0
  45. package/esm2022/lib/components/molecules/notes-box/types.mjs +2 -0
  46. package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +18 -0
  47. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +44 -0
  48. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +45 -0
  49. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +94 -0
  50. package/esm2022/lib/components/molecules/progress-status/types.mjs +2 -0
  51. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +84 -0
  52. package/esm2022/lib/components/molecules/prompter/types.mjs +2 -0
  53. package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +33 -0
  54. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +61 -0
  55. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +18 -0
  56. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +77 -0
  57. package/esm2022/lib/components/molecules/title-block/types.mjs +2 -0
  58. package/esm2022/lib/components/organisms/banner/banner.component.mjs +75 -0
  59. package/esm2022/lib/components/organisms/banner/types.mjs +2 -0
  60. package/esm2022/lib/components/organisms/footer/footer.component.mjs +50 -0
  61. package/esm2022/lib/components/organisms/footer/types.mjs +2 -0
  62. package/esm2022/lib/components/organisms/form/factory.mjs +8 -0
  63. package/esm2022/lib/components/organisms/form/form-footer/form-footer.component.mjs +76 -0
  64. package/esm2022/lib/components/organisms/form/form.component.mjs +230 -0
  65. package/esm2022/lib/components/organisms/header/header.component.mjs +32 -0
  66. package/esm2022/lib/components/organisms/header/types.mjs +2 -0
  67. package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +362 -0
  68. package/esm2022/lib/components/organisms/item-list/types.mjs +2 -0
  69. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +44 -0
  70. package/esm2022/lib/components/organisms/no-content/types.mjs +2 -0
  71. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +171 -0
  72. package/esm2022/lib/components/organisms/toolbar/types.mjs +2 -0
  73. package/esm2022/lib/components/organisms/wizard/types.mjs +7 -0
  74. package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +107 -0
  75. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +103 -0
  76. package/esm2022/lib/components/templates/layout/layout.component.mjs +19 -0
  77. package/esm2022/lib/components/templates/simple/simple.component.mjs +102 -0
  78. package/esm2022/lib/components/templates/simple/types.mjs +2 -0
  79. package/esm2022/lib/components/types.mjs +36 -0
  80. package/esm2022/lib/services/download.service.mjs +63 -0
  81. package/esm2022/lib/services/icons.service.mjs +30 -0
  82. package/esm2022/lib/services/in-app-browser.service.mjs +24 -0
  83. package/esm2022/lib/services/lang-provider/components/lang-settings.mjs +13 -0
  84. package/esm2022/lib/services/lang-provider/components/theme-settings.mjs +15 -0
  85. package/esm2022/lib/services/lang-provider/content.mjs +8 -0
  86. package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +39 -0
  87. package/esm2022/lib/services/lang-provider/types.mjs +14 -0
  88. package/esm2022/lib/services/local-storage.service.mjs +16 -0
  89. package/esm2022/lib/services/navigation.service.mjs +39 -0
  90. package/esm2022/lib/services/theme.service.mjs +97 -0
  91. package/esm2022/lib/services/types.mjs +3 -0
  92. package/esm2022/lib/shared/constants/storage.mjs +3 -0
  93. package/esm2022/lib/shared/utils/dom.mjs +17 -0
  94. package/esm2022/lib/shared/utils/styles.mjs +25 -0
  95. package/esm2022/public-api.mjs +95 -0
  96. package/esm2022/valtech-components.mjs +5 -0
  97. package/fesm2022/valtech-components.mjs +3556 -0
  98. package/fesm2022/valtech-components.mjs.map +1 -0
  99. package/index.d.ts +5 -0
  100. package/lib/components/atoms/avatar/avatar.component.d.ts +12 -0
  101. package/lib/components/atoms/avatar/types.d.ts +6 -0
  102. package/lib/components/atoms/box/box.component.d.ts +12 -0
  103. package/lib/components/atoms/box/types.d.ts +7 -0
  104. package/lib/components/atoms/button/button.component.d.ts +20 -0
  105. package/lib/components/atoms/button/factory.d.ts +71 -0
  106. package/lib/components/atoms/display/display.component.d.ts +10 -0
  107. package/lib/components/atoms/display/types.d.ts +6 -0
  108. package/lib/components/atoms/divider/divider.component.d.ts +10 -0
  109. package/lib/components/atoms/divider/types.d.ts +5 -0
  110. package/lib/components/atoms/href/href.component.d.ts +15 -0
  111. package/lib/components/atoms/href/types.d.ts +9 -0
  112. package/lib/components/atoms/icon/icon.component.d.ts +11 -0
  113. package/lib/components/atoms/icon/types.d.ts +6 -0
  114. package/lib/components/atoms/image/image.component.d.ts +12 -0
  115. package/lib/components/atoms/image/types.d.ts +11 -0
  116. package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +10 -0
  117. package/lib/components/atoms/progress-bar/types.d.ts +9 -0
  118. package/lib/components/atoms/text/text.component.d.ts +10 -0
  119. package/lib/components/atoms/text/types.d.ts +7 -0
  120. package/lib/components/atoms/title/title.component.d.ts +10 -0
  121. package/lib/components/atoms/title/types.d.ts +7 -0
  122. package/lib/components/molecules/alert-box/alert-box.component.d.ts +10 -0
  123. package/{src/lib/components/molecules/alert-box/types.ts → lib/components/molecules/alert-box/types.d.ts} +3 -4
  124. package/lib/components/molecules/button-group/button-group.component.d.ts +13 -0
  125. package/lib/components/molecules/button-group/types.d.ts +6 -0
  126. package/lib/components/molecules/card/card.component.d.ts +16 -0
  127. package/lib/components/molecules/card/types.d.ts +32 -0
  128. package/lib/components/molecules/check-input/check-input.component.d.ts +8 -0
  129. package/lib/components/molecules/comment-input/comment-input.component.d.ts +10 -0
  130. package/lib/components/molecules/content-loader/content-loader.component.d.ts +10 -0
  131. package/lib/components/molecules/content-loader/types.d.ts +7 -0
  132. package/lib/components/molecules/date-input/date-input.component.d.ts +10 -0
  133. package/lib/components/molecules/email-input/email-input.component.d.ts +10 -0
  134. package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +13 -0
  135. package/lib/components/molecules/expandable-text/types.d.ts +6 -0
  136. package/lib/components/molecules/file-input/file-input.component.d.ts +15 -0
  137. package/lib/components/molecules/hint/hint.component.d.ts +11 -0
  138. package/lib/components/molecules/hour-input/hour-input.component.d.ts +10 -0
  139. package/lib/components/molecules/link/link.component.d.ts +14 -0
  140. package/lib/components/molecules/link/types.d.ts +9 -0
  141. package/lib/components/molecules/links-cake/links-cake.component.d.ts +10 -0
  142. package/{src/lib/components/molecules/links-cake/types.ts → lib/components/molecules/links-cake/types.d.ts} +3 -4
  143. package/lib/components/molecules/notes-box/notes-box.component.d.ts +10 -0
  144. package/lib/components/molecules/notes-box/types.d.ts +8 -0
  145. package/lib/components/molecules/number-input/number-input.component.d.ts +10 -0
  146. package/lib/components/molecules/password-input/password-input.component.d.ts +11 -0
  147. package/lib/components/molecules/pin-input/pin-input.component.d.ts +15 -0
  148. package/lib/components/molecules/progress-status/progress-status.component.d.ts +14 -0
  149. package/lib/components/molecules/progress-status/types.d.ts +10 -0
  150. package/lib/components/molecules/prompter/prompter.component.d.ts +12 -0
  151. package/{src/lib/components/molecules/prompter/types.ts → lib/components/molecules/prompter/types.d.ts} +6 -7
  152. package/lib/components/molecules/radio-input/radio-input.component.d.ts +10 -0
  153. package/lib/components/molecules/searchbar/searchbar.component.d.ts +14 -0
  154. package/lib/components/molecules/text-input/text-input.component.d.ts +10 -0
  155. package/lib/components/molecules/title-block/title-block.component.d.ts +10 -0
  156. package/lib/components/molecules/title-block/types.d.ts +12 -0
  157. package/lib/components/organisms/banner/banner.component.d.ts +14 -0
  158. package/lib/components/organisms/banner/types.d.ts +12 -0
  159. package/lib/components/organisms/footer/footer.component.d.ts +12 -0
  160. package/{src/lib/components/organisms/footer/types.ts → lib/components/organisms/footer/types.d.ts} +3 -4
  161. package/lib/components/organisms/form/factory.d.ts +5 -0
  162. package/lib/components/organisms/form/form-footer/form-footer.component.d.ts +15 -0
  163. package/lib/components/organisms/form/form.component.d.ts +23 -0
  164. package/lib/components/organisms/header/header.component.d.ts +12 -0
  165. package/{src/lib/components/organisms/header/types.ts → lib/components/organisms/header/types.d.ts} +3 -4
  166. package/lib/components/organisms/item-list/item-list.component.d.ts +23 -0
  167. package/lib/components/organisms/item-list/types.d.ts +38 -0
  168. package/lib/components/organisms/no-content/no-content.component.d.ts +12 -0
  169. package/{src/lib/components/organisms/no-content/types.ts → lib/components/organisms/no-content/types.d.ts} +3 -4
  170. package/lib/components/organisms/toolbar/toolbar.component.d.ts +21 -0
  171. package/lib/components/organisms/toolbar/types.d.ts +11 -0
  172. package/lib/components/organisms/wizard/types.d.ts +20 -0
  173. package/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.d.ts +21 -0
  174. package/lib/components/organisms/wizard/wizard.component.d.ts +22 -0
  175. package/lib/components/templates/layout/layout.component.d.ts +5 -0
  176. package/lib/components/templates/simple/simple.component.d.ts +10 -0
  177. package/{src/lib/components/templates/simple/types.ts → lib/components/templates/simple/types.d.ts} +5 -6
  178. package/lib/components/types.d.ts +113 -0
  179. package/lib/services/download.service.d.ts +8 -0
  180. package/lib/services/icons.service.d.ts +6 -0
  181. package/lib/services/in-app-browser.service.d.ts +9 -0
  182. package/lib/services/lang-provider/components/lang-settings.d.ts +3 -0
  183. package/lib/services/lang-provider/components/theme-settings.d.ts +3 -0
  184. package/lib/services/lang-provider/content.d.ts +6 -0
  185. package/lib/services/lang-provider/lang-provider.service.d.ts +17 -0
  186. package/lib/services/lang-provider/types.d.ts +15 -0
  187. package/lib/services/local-storage.service.d.ts +6 -0
  188. package/lib/services/navigation.service.d.ts +15 -0
  189. package/lib/services/theme.service.d.ts +27 -0
  190. package/{src/lib/services/types.ts → lib/services/types.d.ts} +2 -4
  191. package/lib/shared/constants/storage.d.ts +2 -0
  192. package/lib/shared/utils/dom.d.ts +3 -0
  193. package/lib/shared/utils/styles.d.ts +1 -0
  194. package/package.json +13 -15
  195. package/{src/public-api.ts → public-api.d.ts} +0 -13
  196. package/ng-package.json +0 -10
  197. package/release.sh +0 -76
  198. package/src/lib/components/atoms/avatar/avatar.component.scss +0 -20
  199. package/src/lib/components/atoms/avatar/avatar.component.ts +0 -29
  200. package/src/lib/components/atoms/avatar/types.ts +0 -6
  201. package/src/lib/components/atoms/box/box.component.scss +0 -57
  202. package/src/lib/components/atoms/box/box.component.ts +0 -38
  203. package/src/lib/components/atoms/box/types.ts +0 -8
  204. package/src/lib/components/atoms/button/button.component.scss +0 -5
  205. package/src/lib/components/atoms/button/button.component.ts +0 -53
  206. package/src/lib/components/atoms/button/factory.ts +0 -444
  207. package/src/lib/components/atoms/display/display.component.scss +0 -17
  208. package/src/lib/components/atoms/display/display.component.ts +0 -25
  209. package/src/lib/components/atoms/display/types.ts +0 -7
  210. package/src/lib/components/atoms/divider/divider.component.scss +0 -62
  211. package/src/lib/components/atoms/divider/divider.component.ts +0 -18
  212. package/src/lib/components/atoms/divider/types.ts +0 -5
  213. package/src/lib/components/atoms/href/href.component.scss +0 -25
  214. package/src/lib/components/atoms/href/href.component.ts +0 -43
  215. package/src/lib/components/atoms/href/types.ts +0 -10
  216. package/src/lib/components/atoms/icon/icon.component.scss +0 -33
  217. package/src/lib/components/atoms/icon/icon.component.ts +0 -21
  218. package/src/lib/components/atoms/icon/types.ts +0 -7
  219. package/src/lib/components/atoms/image/image.component.scss +0 -70
  220. package/src/lib/components/atoms/image/image.component.ts +0 -40
  221. package/src/lib/components/atoms/image/types.ts +0 -11
  222. package/src/lib/components/atoms/progress-bar/progress-bar.component.scss +0 -22
  223. package/src/lib/components/atoms/progress-bar/progress-bar.component.ts +0 -29
  224. package/src/lib/components/atoms/progress-bar/types.ts +0 -10
  225. package/src/lib/components/atoms/text/text.component.scss +0 -33
  226. package/src/lib/components/atoms/text/text.component.ts +0 -23
  227. package/src/lib/components/atoms/text/types.ts +0 -8
  228. package/src/lib/components/atoms/title/title.component.scss +0 -17
  229. package/src/lib/components/atoms/title/title.component.ts +0 -27
  230. package/src/lib/components/atoms/title/types.ts +0 -8
  231. package/src/lib/components/molecules/alert-box/alert-box.component.scss +0 -10
  232. package/src/lib/components/molecules/alert-box/alert-box.component.ts +0 -28
  233. package/src/lib/components/molecules/button-group/button-group.component.scss +0 -31
  234. package/src/lib/components/molecules/button-group/button-group.component.ts +0 -44
  235. package/src/lib/components/molecules/button-group/types.ts +0 -7
  236. package/src/lib/components/molecules/card/card.component.scss +0 -46
  237. package/src/lib/components/molecules/card/card.component.ts +0 -218
  238. package/src/lib/components/molecules/card/types.ts +0 -36
  239. package/src/lib/components/molecules/check-input/check-input.component.scss +0 -0
  240. package/src/lib/components/molecules/check-input/check-input.component.ts +0 -16
  241. package/src/lib/components/molecules/comment-input/comment-input.component.scss +0 -0
  242. package/src/lib/components/molecules/comment-input/comment-input.component.ts +0 -22
  243. package/src/lib/components/molecules/content-loader/content-loader.component.scss +0 -42
  244. package/src/lib/components/molecules/content-loader/content-loader.component.ts +0 -27
  245. package/src/lib/components/molecules/content-loader/types.ts +0 -8
  246. package/src/lib/components/molecules/date-input/date-input.component.scss +0 -11
  247. package/src/lib/components/molecules/date-input/date-input.component.ts +0 -47
  248. package/src/lib/components/molecules/email-input/email-input.component.scss +0 -0
  249. package/src/lib/components/molecules/email-input/email-input.component.ts +0 -20
  250. package/src/lib/components/molecules/expandable-text/expandable-text.component.ts +0 -89
  251. package/src/lib/components/molecules/expandable-text/types.ts +0 -6
  252. package/src/lib/components/molecules/file-input/file-input.component.scss +0 -11
  253. package/src/lib/components/molecules/file-input/file-input.component.ts +0 -56
  254. package/src/lib/components/molecules/hint/hint.component.scss +0 -5
  255. package/src/lib/components/molecules/hint/hint.component.ts +0 -42
  256. package/src/lib/components/molecules/hour-input/hour-input.component.scss +0 -0
  257. package/src/lib/components/molecules/hour-input/hour-input.component.ts +0 -19
  258. package/src/lib/components/molecules/link/link.component.scss +0 -5
  259. package/src/lib/components/molecules/link/link.component.ts +0 -52
  260. package/src/lib/components/molecules/link/types.ts +0 -10
  261. package/src/lib/components/molecules/links-cake/links-cake.component.scss +0 -9
  262. package/src/lib/components/molecules/links-cake/links-cake.component.ts +0 -30
  263. package/src/lib/components/molecules/notes-box/notes-box.component.scss +0 -5
  264. package/src/lib/components/molecules/notes-box/notes-box.component.ts +0 -28
  265. package/src/lib/components/molecules/notes-box/types.ts +0 -9
  266. package/src/lib/components/molecules/number-input/number-input.component.scss +0 -0
  267. package/src/lib/components/molecules/number-input/number-input.component.ts +0 -19
  268. package/src/lib/components/molecules/password-input/password-input.component.scss +0 -7
  269. package/src/lib/components/molecules/password-input/password-input.component.ts +0 -33
  270. package/src/lib/components/molecules/pin-input/pin-input.component.scss +0 -13
  271. package/src/lib/components/molecules/pin-input/pin-input.component.ts +0 -42
  272. package/src/lib/components/molecules/progress-status/progress-status.component.scss +0 -41
  273. package/src/lib/components/molecules/progress-status/progress-status.component.ts +0 -70
  274. package/src/lib/components/molecules/progress-status/types.ts +0 -11
  275. package/src/lib/components/molecules/prompter/prompter.component.scss +0 -34
  276. package/src/lib/components/molecules/prompter/prompter.component.ts +0 -58
  277. package/src/lib/components/molecules/radio-input/radio-input.component.scss +0 -0
  278. package/src/lib/components/molecules/radio-input/radio-input.component.ts +0 -27
  279. package/src/lib/components/molecules/searchbar/searchbar.component.scss +0 -9
  280. package/src/lib/components/molecules/searchbar/searchbar.component.ts +0 -47
  281. package/src/lib/components/molecules/text-input/text-input.component.scss +0 -1
  282. package/src/lib/components/molecules/text-input/text-input.component.ts +0 -19
  283. package/src/lib/components/molecules/title-block/title-block.component.scss +0 -36
  284. package/src/lib/components/molecules/title-block/title-block.component.ts +0 -50
  285. package/src/lib/components/molecules/title-block/types.ts +0 -14
  286. package/src/lib/components/organisms/banner/banner.component.scss +0 -45
  287. package/src/lib/components/organisms/banner/banner.component.ts +0 -57
  288. package/src/lib/components/organisms/banner/types.ts +0 -13
  289. package/src/lib/components/organisms/footer/footer.component.scss +0 -3
  290. package/src/lib/components/organisms/footer/footer.component.ts +0 -40
  291. package/src/lib/components/organisms/form/factory.ts +0 -11
  292. package/src/lib/components/organisms/form/form-footer/form-footer.component.scss +0 -0
  293. package/src/lib/components/organisms/form/form-footer/form-footer.component.ts +0 -63
  294. package/src/lib/components/organisms/form/form.component.scss +0 -16
  295. package/src/lib/components/organisms/form/form.component.ts +0 -183
  296. package/src/lib/components/organisms/header/header.component.scss +0 -0
  297. package/src/lib/components/organisms/header/header.component.ts +0 -31
  298. package/src/lib/components/organisms/item-list/item-list.component.scss +0 -41
  299. package/src/lib/components/organisms/item-list/item-list.component.ts +0 -223
  300. package/src/lib/components/organisms/item-list/types.ts +0 -42
  301. package/src/lib/components/organisms/no-content/no-content.component.scss +0 -11
  302. package/src/lib/components/organisms/no-content/no-content.component.ts +0 -37
  303. package/src/lib/components/organisms/toolbar/toolbar.component.scss +0 -13
  304. package/src/lib/components/organisms/toolbar/toolbar.component.ts +0 -123
  305. package/src/lib/components/organisms/toolbar/types.ts +0 -12
  306. package/src/lib/components/organisms/wizard/types.ts +0 -24
  307. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.scss +0 -0
  308. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.ts +0 -90
  309. package/src/lib/components/organisms/wizard/wizard.component.scss +0 -15
  310. package/src/lib/components/organisms/wizard/wizard.component.ts +0 -99
  311. package/src/lib/components/templates/layout/layout.component.scss +0 -22
  312. package/src/lib/components/templates/layout/layout.component.ts +0 -14
  313. package/src/lib/components/templates/simple/simple.component.ts +0 -75
  314. package/src/lib/components/types.ts +0 -122
  315. package/src/lib/services/download.service.ts +0 -58
  316. package/src/lib/services/icons.service.ts +0 -36
  317. package/src/lib/services/in-app-browser.service.ts +0 -19
  318. package/src/lib/services/lang-provider/components/lang-settings.ts +0 -14
  319. package/src/lib/services/lang-provider/components/theme-settings.ts +0 -16
  320. package/src/lib/services/lang-provider/content.ts +0 -14
  321. package/src/lib/services/lang-provider/lang-provider.service.ts +0 -38
  322. package/src/lib/services/lang-provider/types.ts +0 -25
  323. package/src/lib/services/local-storage.service.ts +0 -18
  324. package/src/lib/services/navigation.service.ts +0 -39
  325. package/src/lib/services/theme.service.ts +0 -102
  326. package/src/lib/shared/constants/storage.ts +0 -2
  327. package/src/lib/shared/utils/dom.ts +0 -19
  328. package/src/lib/shared/utils/styles.ts +0 -27
  329. package/tsconfig.lib.json +0 -14
  330. package/tsconfig.lib.prod.json +0 -10
  331. package/tsconfig.spec.json +0 -14
@@ -1,218 +0,0 @@
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
- }
@@ -1,36 +0,0 @@
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
- }
@@ -1,16 +0,0 @@
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
- }
@@ -1,22 +0,0 @@
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
- }
@@ -1,42 +0,0 @@
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
- }
@@ -1,27 +0,0 @@
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
- }
@@ -1,8 +0,0 @@
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
- }
@@ -1,11 +0,0 @@
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
- }
@@ -1,47 +0,0 @@
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
- }
@@ -1,20 +0,0 @@
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
- }
@@ -1,89 +0,0 @@
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
- }
@@ -1,6 +0,0 @@
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
- }
@@ -1,11 +0,0 @@
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
- }
@@ -1,56 +0,0 @@
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
- }
@@ -1,5 +0,0 @@
1
- @import '../../organisms/form/form.component.scss';
2
-
3
- .hint-container {
4
- margin-top: pxToRem(4);
5
- }
@@ -1,42 +0,0 @@
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
- }