valtech-components 2.0.28 → 2.0.29

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 (312) 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 +18 -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/file-input/file-input.component.mjs +69 -0
  36. package/esm2022/lib/components/molecules/hint/hint.component.mjs +52 -0
  37. package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +18 -0
  38. package/esm2022/lib/components/molecules/link/link.component.mjs +53 -0
  39. package/esm2022/lib/components/molecules/link/types.mjs +2 -0
  40. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +37 -0
  41. package/esm2022/lib/components/molecules/links-cake/types.mjs +2 -0
  42. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +33 -0
  43. package/esm2022/lib/components/molecules/notes-box/types.mjs +2 -0
  44. package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +18 -0
  45. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +44 -0
  46. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +45 -0
  47. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +94 -0
  48. package/esm2022/lib/components/molecules/progress-status/types.mjs +2 -0
  49. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +84 -0
  50. package/esm2022/lib/components/molecules/prompter/types.mjs +2 -0
  51. package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +33 -0
  52. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +61 -0
  53. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +18 -0
  54. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +77 -0
  55. package/esm2022/lib/components/molecules/title-block/types.mjs +2 -0
  56. package/esm2022/lib/components/organisms/banner/banner.component.mjs +75 -0
  57. package/esm2022/lib/components/organisms/banner/types.mjs +2 -0
  58. package/esm2022/lib/components/organisms/footer/footer.component.mjs +50 -0
  59. package/esm2022/lib/components/organisms/footer/types.mjs +2 -0
  60. package/esm2022/lib/components/organisms/form/factory.mjs +8 -0
  61. package/esm2022/lib/components/organisms/form/form-footer/form-footer.component.mjs +76 -0
  62. package/esm2022/lib/components/organisms/form/form.component.mjs +230 -0
  63. package/esm2022/lib/components/organisms/header/header.component.mjs +33 -0
  64. package/esm2022/lib/components/organisms/header/types.mjs +2 -0
  65. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +34 -0
  66. package/esm2022/lib/components/organisms/no-content/types.mjs +2 -0
  67. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +168 -0
  68. package/esm2022/lib/components/organisms/toolbar/types.mjs +2 -0
  69. package/esm2022/lib/components/organisms/wizard/types.mjs +7 -0
  70. package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +107 -0
  71. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +103 -0
  72. package/esm2022/lib/components/templates/layout/layout.component.mjs +19 -0
  73. package/esm2022/lib/components/templates/simple/simple.component.mjs +80 -0
  74. package/esm2022/lib/components/templates/simple/types.mjs +2 -0
  75. package/esm2022/lib/components/types.mjs +36 -0
  76. package/esm2022/lib/services/download.service.mjs +63 -0
  77. package/esm2022/lib/services/in-app-browser.service.mjs +24 -0
  78. package/esm2022/lib/services/lang-provider/components/lang-settings.mjs +13 -0
  79. package/esm2022/lib/services/lang-provider/components/theme-settings.mjs +15 -0
  80. package/esm2022/lib/services/lang-provider/content.mjs +8 -0
  81. package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +39 -0
  82. package/esm2022/lib/services/lang-provider/types.mjs +14 -0
  83. package/esm2022/lib/services/local-storage.service.mjs +16 -0
  84. package/esm2022/lib/services/navigation.service.mjs +39 -0
  85. package/esm2022/lib/services/theme.service.mjs +97 -0
  86. package/esm2022/lib/services/types.mjs +3 -0
  87. package/esm2022/lib/shared/constants/storage.mjs +3 -0
  88. package/esm2022/lib/shared/utils/dom.mjs +17 -0
  89. package/esm2022/public-api.mjs +88 -0
  90. package/esm2022/valtech-components.mjs +5 -0
  91. package/fesm2022/valtech-components.mjs +3064 -0
  92. package/fesm2022/valtech-components.mjs.map +1 -0
  93. package/index.d.ts +5 -0
  94. package/lib/components/atoms/avatar/avatar.component.d.ts +12 -0
  95. package/lib/components/atoms/avatar/types.d.ts +6 -0
  96. package/lib/components/atoms/box/box.component.d.ts +12 -0
  97. package/lib/components/atoms/box/types.d.ts +7 -0
  98. package/lib/components/atoms/button/button.component.d.ts +20 -0
  99. package/lib/components/atoms/button/factory.d.ts +71 -0
  100. package/lib/components/atoms/display/display.component.d.ts +10 -0
  101. package/lib/components/atoms/display/types.d.ts +6 -0
  102. package/lib/components/atoms/divider/divider.component.d.ts +10 -0
  103. package/lib/components/atoms/divider/types.d.ts +5 -0
  104. package/lib/components/atoms/href/href.component.d.ts +15 -0
  105. package/lib/components/atoms/href/types.d.ts +9 -0
  106. package/lib/components/atoms/icon/icon.component.d.ts +10 -0
  107. package/lib/components/atoms/icon/types.d.ts +6 -0
  108. package/lib/components/atoms/image/image.component.d.ts +12 -0
  109. package/lib/components/atoms/image/types.d.ts +11 -0
  110. package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +10 -0
  111. package/lib/components/atoms/progress-bar/types.d.ts +9 -0
  112. package/lib/components/atoms/text/text.component.d.ts +10 -0
  113. package/lib/components/atoms/text/types.d.ts +7 -0
  114. package/lib/components/atoms/title/title.component.d.ts +10 -0
  115. package/lib/components/atoms/title/types.d.ts +7 -0
  116. package/lib/components/molecules/alert-box/alert-box.component.d.ts +10 -0
  117. package/{src/lib/components/molecules/alert-box/types.ts → lib/components/molecules/alert-box/types.d.ts} +3 -4
  118. package/lib/components/molecules/button-group/button-group.component.d.ts +13 -0
  119. package/lib/components/molecules/button-group/types.d.ts +6 -0
  120. package/lib/components/molecules/card/card.component.d.ts +16 -0
  121. package/lib/components/molecules/card/types.d.ts +32 -0
  122. package/lib/components/molecules/check-input/check-input.component.d.ts +8 -0
  123. package/lib/components/molecules/comment-input/comment-input.component.d.ts +10 -0
  124. package/lib/components/molecules/content-loader/content-loader.component.d.ts +10 -0
  125. package/lib/components/molecules/content-loader/types.d.ts +7 -0
  126. package/lib/components/molecules/date-input/date-input.component.d.ts +10 -0
  127. package/lib/components/molecules/email-input/email-input.component.d.ts +10 -0
  128. package/lib/components/molecules/file-input/file-input.component.d.ts +15 -0
  129. package/lib/components/molecules/hint/hint.component.d.ts +11 -0
  130. package/lib/components/molecules/hour-input/hour-input.component.d.ts +10 -0
  131. package/lib/components/molecules/link/link.component.d.ts +14 -0
  132. package/lib/components/molecules/link/types.d.ts +9 -0
  133. package/lib/components/molecules/links-cake/links-cake.component.d.ts +10 -0
  134. package/{src/lib/components/molecules/links-cake/types.ts → lib/components/molecules/links-cake/types.d.ts} +3 -4
  135. package/lib/components/molecules/notes-box/notes-box.component.d.ts +10 -0
  136. package/lib/components/molecules/notes-box/types.d.ts +8 -0
  137. package/lib/components/molecules/number-input/number-input.component.d.ts +10 -0
  138. package/lib/components/molecules/password-input/password-input.component.d.ts +11 -0
  139. package/lib/components/molecules/pin-input/pin-input.component.d.ts +15 -0
  140. package/lib/components/molecules/progress-status/progress-status.component.d.ts +14 -0
  141. package/lib/components/molecules/progress-status/types.d.ts +10 -0
  142. package/lib/components/molecules/prompter/prompter.component.d.ts +12 -0
  143. package/{src/lib/components/molecules/prompter/types.ts → lib/components/molecules/prompter/types.d.ts} +6 -7
  144. package/lib/components/molecules/radio-input/radio-input.component.d.ts +10 -0
  145. package/lib/components/molecules/searchbar/searchbar.component.d.ts +14 -0
  146. package/lib/components/molecules/text-input/text-input.component.d.ts +10 -0
  147. package/lib/components/molecules/title-block/title-block.component.d.ts +10 -0
  148. package/lib/components/molecules/title-block/types.d.ts +12 -0
  149. package/lib/components/organisms/banner/banner.component.d.ts +14 -0
  150. package/lib/components/organisms/banner/types.d.ts +12 -0
  151. package/lib/components/organisms/footer/footer.component.d.ts +12 -0
  152. package/{src/lib/components/organisms/footer/types.ts → lib/components/organisms/footer/types.d.ts} +3 -4
  153. package/lib/components/organisms/form/factory.d.ts +5 -0
  154. package/lib/components/organisms/form/form-footer/form-footer.component.d.ts +15 -0
  155. package/lib/components/organisms/form/form.component.d.ts +23 -0
  156. package/lib/components/organisms/header/header.component.d.ts +12 -0
  157. package/{src/lib/components/organisms/header/types.ts → lib/components/organisms/header/types.d.ts} +3 -4
  158. package/lib/components/organisms/no-content/no-content.component.d.ts +12 -0
  159. package/{src/lib/components/organisms/no-content/types.ts → lib/components/organisms/no-content/types.d.ts} +2 -3
  160. package/lib/components/organisms/toolbar/toolbar.component.d.ts +21 -0
  161. package/lib/components/organisms/toolbar/types.d.ts +11 -0
  162. package/lib/components/organisms/wizard/types.d.ts +20 -0
  163. package/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.d.ts +21 -0
  164. package/lib/components/organisms/wizard/wizard.component.d.ts +22 -0
  165. package/lib/components/templates/layout/layout.component.d.ts +5 -0
  166. package/lib/components/templates/simple/simple.component.d.ts +10 -0
  167. package/{src/lib/components/templates/simple/types.ts → lib/components/templates/simple/types.d.ts} +5 -6
  168. package/lib/components/types.d.ts +113 -0
  169. package/lib/services/download.service.d.ts +8 -0
  170. package/lib/services/in-app-browser.service.d.ts +9 -0
  171. package/lib/services/lang-provider/components/lang-settings.d.ts +3 -0
  172. package/lib/services/lang-provider/components/theme-settings.d.ts +3 -0
  173. package/lib/services/lang-provider/content.d.ts +6 -0
  174. package/lib/services/lang-provider/lang-provider.service.d.ts +17 -0
  175. package/lib/services/lang-provider/types.d.ts +15 -0
  176. package/lib/services/local-storage.service.d.ts +6 -0
  177. package/lib/services/navigation.service.d.ts +15 -0
  178. package/lib/services/theme.service.d.ts +27 -0
  179. package/{src/lib/services/types.ts → lib/services/types.d.ts} +2 -4
  180. package/lib/shared/constants/storage.d.ts +2 -0
  181. package/lib/shared/utils/dom.d.ts +3 -0
  182. package/package.json +14 -11
  183. package/{src/public-api.ts → public-api.d.ts} +0 -13
  184. package/ng-package.json +0 -10
  185. package/src/lib/components/atoms/avatar/avatar.component.scss +0 -20
  186. package/src/lib/components/atoms/avatar/avatar.component.ts +0 -29
  187. package/src/lib/components/atoms/avatar/types.ts +0 -6
  188. package/src/lib/components/atoms/box/box.component.scss +0 -57
  189. package/src/lib/components/atoms/box/box.component.ts +0 -38
  190. package/src/lib/components/atoms/box/types.ts +0 -8
  191. package/src/lib/components/atoms/button/button.component.scss +0 -5
  192. package/src/lib/components/atoms/button/button.component.ts +0 -53
  193. package/src/lib/components/atoms/button/factory.ts +0 -444
  194. package/src/lib/components/atoms/display/display.component.scss +0 -17
  195. package/src/lib/components/atoms/display/display.component.ts +0 -25
  196. package/src/lib/components/atoms/display/types.ts +0 -7
  197. package/src/lib/components/atoms/divider/divider.component.scss +0 -62
  198. package/src/lib/components/atoms/divider/divider.component.ts +0 -18
  199. package/src/lib/components/atoms/divider/types.ts +0 -5
  200. package/src/lib/components/atoms/href/href.component.scss +0 -25
  201. package/src/lib/components/atoms/href/href.component.ts +0 -43
  202. package/src/lib/components/atoms/href/types.ts +0 -10
  203. package/src/lib/components/atoms/icon/icon.component.scss +0 -33
  204. package/src/lib/components/atoms/icon/icon.component.ts +0 -20
  205. package/src/lib/components/atoms/icon/types.ts +0 -7
  206. package/src/lib/components/atoms/image/image.component.scss +0 -70
  207. package/src/lib/components/atoms/image/image.component.ts +0 -40
  208. package/src/lib/components/atoms/image/types.ts +0 -11
  209. package/src/lib/components/atoms/progress-bar/progress-bar.component.scss +0 -22
  210. package/src/lib/components/atoms/progress-bar/progress-bar.component.ts +0 -29
  211. package/src/lib/components/atoms/progress-bar/types.ts +0 -10
  212. package/src/lib/components/atoms/text/text.component.scss +0 -33
  213. package/src/lib/components/atoms/text/text.component.ts +0 -23
  214. package/src/lib/components/atoms/text/types.ts +0 -8
  215. package/src/lib/components/atoms/title/title.component.scss +0 -17
  216. package/src/lib/components/atoms/title/title.component.ts +0 -27
  217. package/src/lib/components/atoms/title/types.ts +0 -8
  218. package/src/lib/components/molecules/alert-box/alert-box.component.scss +0 -10
  219. package/src/lib/components/molecules/alert-box/alert-box.component.ts +0 -28
  220. package/src/lib/components/molecules/button-group/button-group.component.scss +0 -31
  221. package/src/lib/components/molecules/button-group/button-group.component.ts +0 -44
  222. package/src/lib/components/molecules/button-group/types.ts +0 -7
  223. package/src/lib/components/molecules/card/card.component.scss +0 -46
  224. package/src/lib/components/molecules/card/card.component.ts +0 -218
  225. package/src/lib/components/molecules/card/types.ts +0 -36
  226. package/src/lib/components/molecules/check-input/check-input.component.scss +0 -0
  227. package/src/lib/components/molecules/check-input/check-input.component.ts +0 -16
  228. package/src/lib/components/molecules/comment-input/comment-input.component.scss +0 -0
  229. package/src/lib/components/molecules/comment-input/comment-input.component.ts +0 -22
  230. package/src/lib/components/molecules/content-loader/content-loader.component.scss +0 -42
  231. package/src/lib/components/molecules/content-loader/content-loader.component.ts +0 -27
  232. package/src/lib/components/molecules/content-loader/types.ts +0 -8
  233. package/src/lib/components/molecules/date-input/date-input.component.scss +0 -11
  234. package/src/lib/components/molecules/date-input/date-input.component.ts +0 -47
  235. package/src/lib/components/molecules/email-input/email-input.component.scss +0 -0
  236. package/src/lib/components/molecules/email-input/email-input.component.ts +0 -20
  237. package/src/lib/components/molecules/file-input/file-input.component.scss +0 -11
  238. package/src/lib/components/molecules/file-input/file-input.component.ts +0 -56
  239. package/src/lib/components/molecules/hint/hint.component.scss +0 -5
  240. package/src/lib/components/molecules/hint/hint.component.ts +0 -42
  241. package/src/lib/components/molecules/hour-input/hour-input.component.scss +0 -0
  242. package/src/lib/components/molecules/hour-input/hour-input.component.ts +0 -19
  243. package/src/lib/components/molecules/link/link.component.scss +0 -5
  244. package/src/lib/components/molecules/link/link.component.ts +0 -52
  245. package/src/lib/components/molecules/link/types.ts +0 -10
  246. package/src/lib/components/molecules/links-cake/links-cake.component.scss +0 -9
  247. package/src/lib/components/molecules/links-cake/links-cake.component.ts +0 -30
  248. package/src/lib/components/molecules/notes-box/notes-box.component.scss +0 -5
  249. package/src/lib/components/molecules/notes-box/notes-box.component.ts +0 -28
  250. package/src/lib/components/molecules/notes-box/types.ts +0 -9
  251. package/src/lib/components/molecules/number-input/number-input.component.scss +0 -0
  252. package/src/lib/components/molecules/number-input/number-input.component.ts +0 -19
  253. package/src/lib/components/molecules/password-input/password-input.component.scss +0 -7
  254. package/src/lib/components/molecules/password-input/password-input.component.ts +0 -33
  255. package/src/lib/components/molecules/pin-input/pin-input.component.scss +0 -13
  256. package/src/lib/components/molecules/pin-input/pin-input.component.ts +0 -42
  257. package/src/lib/components/molecules/progress-status/progress-status.component.scss +0 -41
  258. package/src/lib/components/molecules/progress-status/progress-status.component.ts +0 -70
  259. package/src/lib/components/molecules/progress-status/types.ts +0 -11
  260. package/src/lib/components/molecules/prompter/prompter.component.scss +0 -34
  261. package/src/lib/components/molecules/prompter/prompter.component.ts +0 -58
  262. package/src/lib/components/molecules/radio-input/radio-input.component.scss +0 -0
  263. package/src/lib/components/molecules/radio-input/radio-input.component.ts +0 -27
  264. package/src/lib/components/molecules/searchbar/searchbar.component.scss +0 -9
  265. package/src/lib/components/molecules/searchbar/searchbar.component.ts +0 -47
  266. package/src/lib/components/molecules/text-input/text-input.component.scss +0 -1
  267. package/src/lib/components/molecules/text-input/text-input.component.ts +0 -19
  268. package/src/lib/components/molecules/title-block/title-block.component.scss +0 -36
  269. package/src/lib/components/molecules/title-block/title-block.component.ts +0 -50
  270. package/src/lib/components/molecules/title-block/types.ts +0 -14
  271. package/src/lib/components/organisms/banner/banner.component.scss +0 -45
  272. package/src/lib/components/organisms/banner/banner.component.ts +0 -57
  273. package/src/lib/components/organisms/banner/types.ts +0 -13
  274. package/src/lib/components/organisms/footer/footer.component.scss +0 -3
  275. package/src/lib/components/organisms/footer/footer.component.ts +0 -40
  276. package/src/lib/components/organisms/form/factory.ts +0 -11
  277. package/src/lib/components/organisms/form/form-footer/form-footer.component.scss +0 -0
  278. package/src/lib/components/organisms/form/form-footer/form-footer.component.ts +0 -63
  279. package/src/lib/components/organisms/form/form.component.scss +0 -16
  280. package/src/lib/components/organisms/form/form.component.ts +0 -183
  281. package/src/lib/components/organisms/header/header.component.scss +0 -0
  282. package/src/lib/components/organisms/header/header.component.ts +0 -32
  283. package/src/lib/components/organisms/no-content/no-content.component.scss +0 -11
  284. package/src/lib/components/organisms/no-content/no-content.component.ts +0 -32
  285. package/src/lib/components/organisms/toolbar/toolbar.component.scss +0 -13
  286. package/src/lib/components/organisms/toolbar/toolbar.component.ts +0 -119
  287. package/src/lib/components/organisms/toolbar/types.ts +0 -12
  288. package/src/lib/components/organisms/wizard/types.ts +0 -24
  289. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.scss +0 -0
  290. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.ts +0 -90
  291. package/src/lib/components/organisms/wizard/wizard.component.scss +0 -15
  292. package/src/lib/components/organisms/wizard/wizard.component.ts +0 -99
  293. package/src/lib/components/templates/layout/layout.component.scss +0 -22
  294. package/src/lib/components/templates/layout/layout.component.ts +0 -14
  295. package/src/lib/components/templates/simple/simple.component.scss +0 -30
  296. package/src/lib/components/templates/simple/simple.component.ts +0 -60
  297. package/src/lib/components/types.ts +0 -122
  298. package/src/lib/services/download.service.ts +0 -58
  299. package/src/lib/services/in-app-browser.service.ts +0 -19
  300. package/src/lib/services/lang-provider/components/lang-settings.ts +0 -14
  301. package/src/lib/services/lang-provider/components/theme-settings.ts +0 -16
  302. package/src/lib/services/lang-provider/content.ts +0 -14
  303. package/src/lib/services/lang-provider/lang-provider.service.ts +0 -38
  304. package/src/lib/services/lang-provider/types.ts +0 -25
  305. package/src/lib/services/local-storage.service.ts +0 -18
  306. package/src/lib/services/navigation.service.ts +0 -39
  307. package/src/lib/services/theme.service.ts +0 -102
  308. package/src/lib/shared/constants/storage.ts +0 -2
  309. package/src/lib/shared/utils/dom.ts +0 -19
  310. package/tsconfig.lib.json +0 -14
  311. package/tsconfig.lib.prod.json +0 -10
  312. package/tsconfig.spec.json +0 -14
@@ -0,0 +1,3064 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, Injectable, ViewChild, inject, InjectionToken, Inject } from '@angular/core';
3
+ import { IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonProgressBar, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonButtons, IonTextarea, IonDatetime, IonDatetimeButton, IonModal, IonInput, IonRadioGroup, IonRadio, IonSearchbar, IonToolbar, IonTitle, IonFooter, IonHeader, IonContent } from '@ionic/angular/standalone';
4
+ import * as i1 from '@angular/common';
5
+ import { CommonModule, NgIf, NgFor, NgClass } from '@angular/common';
6
+ import * as i1$1 from '@angular/forms';
7
+ import { ReactiveFormsModule, Validators } from '@angular/forms';
8
+ import { addIcons } from 'ionicons';
9
+ import { chevronForwardOutline } from 'ionicons/icons';
10
+ import { Router } from '@angular/router';
11
+ import { Browser } from '@capacitor/browser';
12
+ import * as i1$2 from 'ng-otp-input';
13
+ import { NgOtpInputComponent, NgOtpInputModule } from 'ng-otp-input';
14
+ import * as i1$3 from '@ionic/angular';
15
+ import { BehaviorSubject } from 'rxjs';
16
+
17
+ class AvatarComponent {
18
+ constructor() {
19
+ this.onClick = new EventEmitter();
20
+ }
21
+ ngOnInit() { }
22
+ onClickHandler() {
23
+ this.onClick.emit();
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AvatarComponent, isStandalone: true, selector: "val-avatar", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
27
+ <ion-avatar [class]="props.size" [class.box]="props.box" (click)="onClickHandler()">
28
+ <img alt="profile image" [src]="props.image || props.default" />
29
+ </ion-avatar>
30
+ `, isInline: true, styles: [".box{--border-radius: pxToRem(4)}.small{width:1.75rem;height:1.75rem}.medium{width:2.375rem;height:2.375rem}.large{width:3rem;height:3rem}\n"], dependencies: [{ kind: "component", type: IonAvatar, selector: "ion-avatar" }] }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AvatarComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'val-avatar', standalone: true, imports: [IonAvatar], template: `
35
+ <ion-avatar [class]="props.size" [class.box]="props.box" (click)="onClickHandler()">
36
+ <img alt="profile image" [src]="props.image || props.default" />
37
+ </ion-avatar>
38
+ `, styles: [".box{--border-radius: pxToRem(4)}.small{width:1.75rem;height:1.75rem}.medium{width:2.375rem;height:2.375rem}.large{width:3rem;height:3rem}\n"] }]
39
+ }], ctorParameters: () => [], propDecorators: { props: [{
40
+ type: Input
41
+ }], onClick: [{
42
+ type: Output
43
+ }] } });
44
+
45
+ class BoxComponent {
46
+ constructor() {
47
+ this.onClick = new EventEmitter();
48
+ }
49
+ ngOnInit() { }
50
+ clickHandler() {
51
+ this.onClick.emit();
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BoxComponent, isStandalone: true, selector: "val-box", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
55
+ <ion-card
56
+ class="box"
57
+ [color]="props.color"
58
+ [class.bordered]="props.bordered"
59
+ [class.transparent]="!props.color"
60
+ [class.left-border]="props.leftBorder"
61
+ >
62
+ <ion-icon *ngIf="!!props.icon" class="icon" [name]="props.icon" (click)="clickHandler()"></ion-icon>
63
+ <ng-content select="[body]"></ng-content>
64
+ </ion-card>
65
+ `, isInline: true, styles: [".bordered{border:.0625rem solid var(--ion-color-medium)}.box{width:100%;margin:0rem;border-radius:0rem;box-shadow:none;padding:.25rem}@media (min-width: 768px){.box{padding:.5rem}}.icon{cursor:pointer;margin:0rem;padding:0rem;position:absolute;right:.25rem;top:.25rem;font-size:1rem}@media (min-width: 768px){.icon{right:.5rem;top:.5rem;font-size:1.5rem}}.left-border{border-left:.1875rem solid #dde3ed}.left-border.small{border-width:.1875rem}.left-border.medium{border-width:.375rem}.left-border.large{border-width:.4375rem}.left-border.xlarge{border-width:.5rem}.transparent{--background: transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BoxComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: 'val-box', standalone: true, imports: [CommonModule, IonCard, IonIcon], template: `
70
+ <ion-card
71
+ class="box"
72
+ [color]="props.color"
73
+ [class.bordered]="props.bordered"
74
+ [class.transparent]="!props.color"
75
+ [class.left-border]="props.leftBorder"
76
+ >
77
+ <ion-icon *ngIf="!!props.icon" class="icon" [name]="props.icon" (click)="clickHandler()"></ion-icon>
78
+ <ng-content select="[body]"></ng-content>
79
+ </ion-card>
80
+ `, styles: [".bordered{border:.0625rem solid var(--ion-color-medium)}.box{width:100%;margin:0rem;border-radius:0rem;box-shadow:none;padding:.25rem}@media (min-width: 768px){.box{padding:.5rem}}.icon{cursor:pointer;margin:0rem;padding:0rem;position:absolute;right:.25rem;top:.25rem;font-size:1rem}@media (min-width: 768px){.icon{right:.5rem;top:.5rem;font-size:1.5rem}}.left-border{border-left:.1875rem solid #dde3ed}.left-border.small{border-width:.1875rem}.left-border.medium{border-width:.375rem}.left-border.large{border-width:.4375rem}.left-border.xlarge{border-width:.5rem}.transparent{--background: transparent}\n"] }]
81
+ }], ctorParameters: () => [], propDecorators: { props: [{
82
+ type: Input
83
+ }], onClick: [{
84
+ type: Output
85
+ }] } });
86
+
87
+ const ENABLED = 'ENABLED';
88
+ const DISABLED = 'DISABLED';
89
+ const WORKING = 'WORKING';
90
+ const ERROR = 'ERROR';
91
+ const ComponentStates = { ENABLED, DISABLED, WORKING, ERROR };
92
+ var ActionType;
93
+ (function (ActionType) {
94
+ ActionType[ActionType["BROWSER_NEW_TAB"] = 0] = "BROWSER_NEW_TAB";
95
+ ActionType[ActionType["BROWSER_DOWNLOAD"] = 1] = "BROWSER_DOWNLOAD";
96
+ ActionType[ActionType["NATIVE_DOWNLOAD"] = 2] = "NATIVE_DOWNLOAD";
97
+ ActionType[ActionType["APP_NAVIGATION"] = 3] = "APP_NAVIGATION";
98
+ ActionType[ActionType["BROWSER_NAVIGATION"] = 4] = "BROWSER_NAVIGATION";
99
+ })(ActionType || (ActionType = {}));
100
+ var InputType;
101
+ (function (InputType) {
102
+ InputType[InputType["TEXT"] = 0] = "TEXT";
103
+ InputType[InputType["EMAIL"] = 1] = "EMAIL";
104
+ InputType[InputType["PASSWORD"] = 2] = "PASSWORD";
105
+ InputType[InputType["COMMENT"] = 3] = "COMMENT";
106
+ InputType[InputType["NUMBER"] = 4] = "NUMBER";
107
+ InputType[InputType["PIN_CODE"] = 5] = "PIN_CODE";
108
+ InputType[InputType["DATE"] = 6] = "DATE";
109
+ InputType[InputType["HOUR"] = 7] = "HOUR";
110
+ InputType[InputType["CHECK"] = 8] = "CHECK";
111
+ InputType[InputType["RADIO"] = 9] = "RADIO";
112
+ InputType[InputType["SELECT"] = 10] = "SELECT";
113
+ InputType[InputType["FILE"] = 11] = "FILE";
114
+ })(InputType || (InputType = {}));
115
+ var ToolbarActionType;
116
+ (function (ToolbarActionType) {
117
+ ToolbarActionType["AVATAR"] = "AVATAR";
118
+ ToolbarActionType["ICON"] = "ICON";
119
+ ToolbarActionType["IMAGE"] = "IMAGE";
120
+ ToolbarActionType["BUTTON"] = "BUTTON";
121
+ })(ToolbarActionType || (ToolbarActionType = {}));
122
+
123
+ class DownloadService {
124
+ getFileNameFromUrl(url) {
125
+ try {
126
+ const pathSegments = url.split('/');
127
+ const lastSegment = pathSegments[pathSegments.length - 1];
128
+ const fileName = decodeURIComponent(lastSegment);
129
+ return fileName;
130
+ }
131
+ catch (error) {
132
+ console.error('Error al obtener nombre de archivo: ', JSON.stringify(error));
133
+ return 'filename';
134
+ }
135
+ }
136
+ openNewTab(url) {
137
+ if (url) {
138
+ const fileName = this.getFileNameFromUrl(url);
139
+ const link = document.createElement('a');
140
+ link.href = url;
141
+ link.download = fileName;
142
+ link.target = '_blank';
143
+ document.body.appendChild(link);
144
+ link.click();
145
+ document.body.removeChild(link);
146
+ }
147
+ else {
148
+ console.error('La URL no está definida');
149
+ }
150
+ }
151
+ downloadLinkFromBrowser(url) {
152
+ console.log('trying to download file from url');
153
+ if (url) {
154
+ fetch(url)
155
+ .then(response => response.blob())
156
+ .then(blob => {
157
+ const url = window.URL.createObjectURL(blob);
158
+ const link = document.createElement('a');
159
+ link.href = url;
160
+ const fileName = this.getFileNameFromUrl(url);
161
+ link.download = `${+new Date()}-${fileName}`;
162
+ link.target = '_self';
163
+ link.click();
164
+ window.URL.revokeObjectURL(url);
165
+ })
166
+ .catch(error => {
167
+ console.error('Error al descargar el archivo:', JSON.stringify(error));
168
+ });
169
+ }
170
+ else {
171
+ console.error('La URL no está definida');
172
+ }
173
+ }
174
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DownloadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
175
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DownloadService, providedIn: 'root' }); }
176
+ }
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DownloadService, decorators: [{
178
+ type: Injectable,
179
+ args: [{
180
+ providedIn: 'root',
181
+ }]
182
+ }] });
183
+
184
+ class ButtonComponent {
185
+ constructor(download) {
186
+ this.download = download;
187
+ this.states = ComponentStates;
188
+ this.onClick = new EventEmitter();
189
+ }
190
+ ngOnInit() { }
191
+ clickHandler() {
192
+ if (this.props.download) {
193
+ this.download.downloadLinkFromBrowser(this.props.download);
194
+ }
195
+ if (this.props.state === this.states.DISABLED) {
196
+ return;
197
+ }
198
+ this.onClick.emit(this.props.token);
199
+ }
200
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonComponent, deps: [{ token: DownloadService }], target: i0.ɵɵFactoryTarget.Component }); }
201
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ButtonComponent, isStandalone: true, selector: "val-button", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
202
+ <ion-button
203
+ [type]="props.type"
204
+ [color]="props.color"
205
+ [expand]="props.expand"
206
+ [fill]="props.fill"
207
+ [size]="props.size"
208
+ [href]="props.href"
209
+ [target]="props.target"
210
+ [shape]="props.shape"
211
+ (click)="clickHandler()"
212
+ [disabled]="props.state === states.DISABLED"
213
+ >
214
+ <ion-icon *ngIf="props.icon" [slot]="props.icon.slot" [name]="props.icon.name"></ion-icon>
215
+ <ion-spinner *ngIf="props.state === states.WORKING" name="circular"></ion-spinner>
216
+ <ion-text *ngIf="props.state !== states.WORKING">{{ props.text }}</ion-text>
217
+ </ion-button>
218
+ `, isInline: true, styles: ["ion-button{font-family:var(--ion-default-font),Arial,sans-serif}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
219
+ }
220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonComponent, decorators: [{
221
+ type: Component,
222
+ args: [{ selector: 'val-button', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonSpinner, IonText], template: `
223
+ <ion-button
224
+ [type]="props.type"
225
+ [color]="props.color"
226
+ [expand]="props.expand"
227
+ [fill]="props.fill"
228
+ [size]="props.size"
229
+ [href]="props.href"
230
+ [target]="props.target"
231
+ [shape]="props.shape"
232
+ (click)="clickHandler()"
233
+ [disabled]="props.state === states.DISABLED"
234
+ >
235
+ <ion-icon *ngIf="props.icon" [slot]="props.icon.slot" [name]="props.icon.name"></ion-icon>
236
+ <ion-spinner *ngIf="props.state === states.WORKING" name="circular"></ion-spinner>
237
+ <ion-text *ngIf="props.state !== states.WORKING">{{ props.text }}</ion-text>
238
+ </ion-button>
239
+ `, styles: ["ion-button{font-family:var(--ion-default-font),Arial,sans-serif}\n"] }]
240
+ }], ctorParameters: () => [{ type: DownloadService }], propDecorators: { props: [{
241
+ type: Input
242
+ }], onClick: [{
243
+ type: Output
244
+ }] } });
245
+
246
+ const Icon = (name, slot) => {
247
+ return {
248
+ name,
249
+ slot,
250
+ };
251
+ };
252
+ /* name convention: COLOR FILL SIZE [optionals: SHAPE EXPAND ICON HREF/DOWNLOAD] TYPE */
253
+ const BaseDefault = (text, type) => {
254
+ return {
255
+ color: 'primary',
256
+ state: 'ENABLED',
257
+ text,
258
+ size: 'default',
259
+ type,
260
+ };
261
+ };
262
+ const ClearDefault = (text, type) => {
263
+ return { ...BaseDefault(text, type), fill: 'clear' };
264
+ };
265
+ const ClearDefaultRound = (text, type) => {
266
+ return { ...ClearDefault(text, type), shape: 'round' };
267
+ };
268
+ const SolidDefault = (text, type) => {
269
+ return { ...BaseDefault(text, type), fill: 'solid' };
270
+ };
271
+ const SolidDefaultRound = (text, type) => {
272
+ return { ...SolidDefault(text, type), shape: 'round' };
273
+ };
274
+ const OutlineDefault = (text, type) => {
275
+ return { ...BaseDefault(text, type), fill: 'outline' };
276
+ };
277
+ const OutlineDefaultRound = (text, type) => {
278
+ return { ...OutlineDefault(text, type), shape: 'round' };
279
+ };
280
+ const ClearDefaultFull = (text, type) => {
281
+ return { ...ClearDefault(text, type), expand: 'full' };
282
+ };
283
+ const ClearDefaultRoundFull = (text, type) => {
284
+ return { ...ClearDefaultRound(text, type), expand: 'full' };
285
+ };
286
+ const ClearDefaultBlock = (text, type) => {
287
+ return { ...ClearDefault(text, type), expand: 'block' };
288
+ };
289
+ const ClearDefaultRoundBlock = (text, type) => {
290
+ return { ...ClearDefaultRound(text, type), expand: 'block' };
291
+ };
292
+ const SolidDefaultFull = (text, type) => {
293
+ return { ...SolidDefault(text, type), expand: 'full' };
294
+ };
295
+ const SolidDefaultRoundFull = (text, type) => {
296
+ return { ...SolidDefaultRound(text, type), expand: 'full' };
297
+ };
298
+ const SolidDefaultBlock = (text, type) => {
299
+ return { ...SolidDefault(text, type), expand: 'block' };
300
+ };
301
+ const SolidDefaultRoundBlock = (text, type) => {
302
+ return { ...SolidDefaultRound(text, type), expand: 'block' };
303
+ };
304
+ const OutlineDefaultFull = (text, type) => {
305
+ return { ...OutlineDefault(text, type), expand: 'full' };
306
+ };
307
+ const OutlineDefaultRoundFull = (text, type) => {
308
+ return { ...OutlineDefaultRound(text, type), expand: 'full' };
309
+ };
310
+ const OutlineDefaultBlock = (text, type) => {
311
+ return { ...OutlineDefault(text, type), expand: 'block' };
312
+ };
313
+ const OutlineDefaultRoundBlock = (text, type) => {
314
+ return { ...OutlineDefaultRound(text, type), expand: 'block' };
315
+ };
316
+ const SolidDefaultButton = (text) => {
317
+ return SolidDefault(text, 'button');
318
+ };
319
+ const SolidSmallButton = (text) => {
320
+ return { ...SolidDefault(text, 'button'), size: 'small' };
321
+ };
322
+ const SolidLargeButton = (text) => {
323
+ return { ...SolidDefault(text, 'button'), size: 'large' };
324
+ };
325
+ const SolidDefaultRoundButton = (text) => {
326
+ return SolidDefaultRound(text, 'button');
327
+ };
328
+ const SolidSmallRoundButton = (text) => {
329
+ return { ...SolidDefaultRound(text, 'button'), size: 'small' };
330
+ };
331
+ const SolidLargeRoundButton = (text) => {
332
+ return { ...SolidDefaultRound(text, 'button'), size: 'large' };
333
+ };
334
+ const SolidFullButton = (text) => {
335
+ return SolidDefaultFull(text, 'button');
336
+ };
337
+ const SolidBlockButton = (text) => {
338
+ return SolidDefaultBlock(text, 'button');
339
+ };
340
+ /** PRIMARY */
341
+ const PrimarySolidDefaultRoundButton = (text) => {
342
+ return { ...SolidDefaultRoundButton(text), color: 'primary' };
343
+ };
344
+ const PrimarySolidDefaultRoundIconButton = (text, icon) => {
345
+ return { ...PrimarySolidDefaultRoundButton(text), icon };
346
+ };
347
+ const PrimarySolidDefaultRoundHrefButton = (text, href, target) => {
348
+ return { ...PrimarySolidDefaultRoundButton(text), href, target };
349
+ };
350
+ const PrimarySolidDefaultRoundIconHrefButton = (text, icon, href, target) => {
351
+ return { ...PrimarySolidDefaultRoundIconButton(text, icon), href, target };
352
+ };
353
+ const PrimarySolidSmallRoundButton = (text) => {
354
+ return { ...SolidSmallRoundButton(text), color: 'primary' };
355
+ };
356
+ const PrimarySolidSmallRoundIconButton = (text, icon) => {
357
+ return { ...PrimarySolidSmallRoundButton(text), icon };
358
+ };
359
+ const PrimarySolidSmallRoundHrefButton = (text, href, target) => {
360
+ return { ...PrimarySolidSmallRoundButton(text), href, target };
361
+ };
362
+ const PrimarySolidSmallRoundIconHrefButton = (text, icon, href, target) => {
363
+ return { ...PrimarySolidSmallRoundIconButton(text, icon), href, target };
364
+ };
365
+ const PrimarySolidLargeRoundButton = (text) => {
366
+ return { ...SolidLargeRoundButton(text), color: 'primary' };
367
+ };
368
+ const PrimarySolidLargeRoundIconButton = (text, icon) => {
369
+ return { ...PrimarySolidLargeRoundButton(text), icon };
370
+ };
371
+ const PrimarySolidLargeRoundHrefButton = (text, href, target) => {
372
+ return { ...PrimarySolidLargeRoundButton(text), href, target };
373
+ };
374
+ const PrimarySolidLargeRoundIconHrefButton = (text, icon, href, target) => {
375
+ return { ...PrimarySolidLargeRoundIconButton(text, icon), href, target };
376
+ };
377
+ const PrimarySolidBlockButton = (text) => {
378
+ return { ...SolidBlockButton(text), color: 'primary' };
379
+ };
380
+ const PrimarySolidBlockIconButton = (text, icon) => {
381
+ return { ...PrimarySolidBlockButton(text), icon };
382
+ };
383
+ const PrimarySolidBlockHrefButton = (text, href, target) => {
384
+ return { ...PrimarySolidBlockButton(text), href, target };
385
+ };
386
+ const PrimarySolidBlockIconHrefButton = (text, icon, href, target) => {
387
+ return { ...PrimarySolidBlockIconButton(text, icon), href, target };
388
+ };
389
+ const PrimarySolidFullButton = (text) => {
390
+ return { ...SolidFullButton(text), color: 'primary' };
391
+ };
392
+ const PrimarySolidFullIconButton = (text, icon) => {
393
+ return { ...PrimarySolidFullButton(text), icon };
394
+ };
395
+ const PrimarySolidFullHrefButton = (text, href, target) => {
396
+ return { ...PrimarySolidFullButton(text), href, target };
397
+ };
398
+ const PrimarySolidFullIconHrefButton = (text, icon, href, target) => {
399
+ return { ...PrimarySolidFullIconButton(text, icon), href, target };
400
+ };
401
+ /** SECONDARY */
402
+ const SecondarySolidDefaultRoundButton = (text) => {
403
+ return { ...SolidDefaultRoundButton(text), color: 'secondary' };
404
+ };
405
+ const SecondarySolidDefaultRoundIconButton = (text, icon) => {
406
+ return { ...SecondarySolidDefaultRoundButton(text), icon };
407
+ };
408
+ const SecondarySolidDefaultRoundHrefButton = (text, href, target) => {
409
+ return { ...SecondarySolidDefaultRoundButton(text), href, target };
410
+ };
411
+ const SecondarySolidDefaultRoundIconHrefButton = (text, icon, href, target) => {
412
+ return { ...SecondarySolidDefaultRoundIconButton(text, icon), href, target };
413
+ };
414
+ const SecondarySolidSmallRoundButton = (text) => {
415
+ return { ...SolidSmallRoundButton(text), color: 'secondary' };
416
+ };
417
+ const SecondarySolidSmallRoundIconButton = (text, icon) => {
418
+ return { ...SecondarySolidSmallRoundButton(text), icon };
419
+ };
420
+ const SecondarySolidSmallRoundHrefButton = (text, href, target) => {
421
+ return { ...SecondarySolidSmallRoundButton(text), href, target };
422
+ };
423
+ const SecondarySolidSmallRoundIconHrefButton = (text, icon, href, target) => {
424
+ return { ...SecondarySolidSmallRoundIconButton(text, icon), href, target };
425
+ };
426
+ const SecondarySolidLargeRoundButton = (text) => {
427
+ return { ...SolidLargeRoundButton(text), color: 'secondary' };
428
+ };
429
+ const SecondarySolidLargeRoundIconButton = (text, icon) => {
430
+ return { ...SecondarySolidLargeRoundButton(text), icon };
431
+ };
432
+ const SecondarySolidLargeRoundHrefButton = (text, href, target) => {
433
+ return { ...SecondarySolidLargeRoundButton(text), href, target };
434
+ };
435
+ const SecondarySolidLargeRoundIconHrefButton = (text, icon, href, target) => {
436
+ return { ...SecondarySolidLargeRoundIconButton(text, icon), href, target };
437
+ };
438
+ const SecondarySolidFullButton = (text) => {
439
+ return { ...SolidFullButton(text), color: 'secondary' };
440
+ };
441
+ const SecondarySolidFullIconButton = (text, icon) => {
442
+ return { ...SecondarySolidFullButton(text), icon };
443
+ };
444
+ const SecondarySolidFullHrefButton = (text, href, target) => {
445
+ return { ...SecondarySolidFullButton(text), href, target };
446
+ };
447
+ const SecondarySolidFullIconHrefButton = (text, icon, href, target) => {
448
+ return { ...SecondarySolidFullIconButton(text, icon), href, target };
449
+ };
450
+ const SecondarySolidBlockButton = (text) => {
451
+ return { ...SolidBlockButton(text), color: 'secondary' };
452
+ };
453
+ const SecondarySolidBlockIconButton = (text, icon) => {
454
+ return { ...SecondarySolidBlockButton(text), icon };
455
+ };
456
+ const SecondarySolidBlockHrefButton = (text, href, target) => {
457
+ return { ...SecondarySolidBlockButton(text), href, target };
458
+ };
459
+ const SecondarySolidBlockIconHrefButton = (text, icon, href, target) => {
460
+ return { ...SecondarySolidBlockIconButton(text, icon), href, target };
461
+ };
462
+
463
+ class DisplayComponent {
464
+ constructor() { }
465
+ ngOnInit() { }
466
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
467
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DisplayComponent, isStandalone: true, selector: "val-display", inputs: { props: "props" }, ngImport: i0, template: `
468
+ <ion-text [color]="props.color">
469
+ <p [class]="props.size">
470
+ {{ props.content }}
471
+ </p>
472
+ </ion-text>
473
+ `, isInline: true, styles: [".small{font-size:1.5rem;line-height:2rem;font-weight:800}@media (min-width: 768px){.small{font-size:2rem;line-height:2.5rem}}.medium{font-size:2rem;line-height:2.5rem;font-weight:800}@media (min-width: 768px){.medium{font-size:2.5rem;line-height:3rem}}.large{font-size:2.5rem;line-height:3rem;font-weight:800}@media (min-width: 768px){.large{font-size:3rem;line-height:3.5rem}}.xlarge{font-size:3rem;line-height:3.5rem;font-weight:800}@media (min-width: 768px){.xlarge{font-size:3.5rem;line-height:4rem}}\n"], dependencies: [{ kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
474
+ }
475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisplayComponent, decorators: [{
476
+ type: Component,
477
+ args: [{ selector: 'val-display', standalone: true, imports: [IonText], template: `
478
+ <ion-text [color]="props.color">
479
+ <p [class]="props.size">
480
+ {{ props.content }}
481
+ </p>
482
+ </ion-text>
483
+ `, styles: [".small{font-size:1.5rem;line-height:2rem;font-weight:800}@media (min-width: 768px){.small{font-size:2rem;line-height:2.5rem}}.medium{font-size:2rem;line-height:2.5rem;font-weight:800}@media (min-width: 768px){.medium{font-size:2.5rem;line-height:3rem}}.large{font-size:2.5rem;line-height:3rem;font-weight:800}@media (min-width: 768px){.large{font-size:3rem;line-height:3.5rem}}.xlarge{font-size:3rem;line-height:3.5rem;font-weight:800}@media (min-width: 768px){.xlarge{font-size:3.5rem;line-height:4rem}}\n"] }]
484
+ }], ctorParameters: () => [], propDecorators: { props: [{
485
+ type: Input
486
+ }] } });
487
+
488
+ class DividerComponent {
489
+ constructor() { }
490
+ ngOnInit() { }
491
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
492
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DividerComponent, isStandalone: true, selector: "val-divider", inputs: { props: "props" }, ngImport: i0, template: ` <div [ngClass]="['divider', props.size, props.color, props.fill]"></div> `, isInline: true, styles: [".solid{border-top:.0625rem solid #878ca0}.gradient{height:.125rem}.gradient.primary{background:linear-gradient(to right,var(--ion-color-primary),var(--ion-color-light))}.gradient.secondary{background:linear-gradient(to right,var(--ion-color-secondary),var(--ion-color-light))}.gradient.dark{background:linear-gradient(to right,var(--ion-color-dark),var(--ion-color-light))}.gradient.light{background:linear-gradient(to right,var(--ion-color-light),#ffffff)}.gradient.medium{background:linear-gradient(to right,var(--ion-color-medium),#ffffff)}.small{margin:1rem}.medium{margin:1.5rem 1rem}.large{margin:2.25rem 1rem}.primary{border-color:var(--ion-color-primary)}.secondary{border-color:var(--ion-color-secondary)}.dark{border-color:var(--ion-color-dark)}.light{border-color:var(--ion-color-light)}.medium{border-color:var(--ion-color-medium)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
493
+ }
494
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DividerComponent, decorators: [{
495
+ type: Component,
496
+ args: [{ selector: 'val-divider', standalone: true, imports: [CommonModule], template: ` <div [ngClass]="['divider', props.size, props.color, props.fill]"></div> `, styles: [".solid{border-top:.0625rem solid #878ca0}.gradient{height:.125rem}.gradient.primary{background:linear-gradient(to right,var(--ion-color-primary),var(--ion-color-light))}.gradient.secondary{background:linear-gradient(to right,var(--ion-color-secondary),var(--ion-color-light))}.gradient.dark{background:linear-gradient(to right,var(--ion-color-dark),var(--ion-color-light))}.gradient.light{background:linear-gradient(to right,var(--ion-color-light),#ffffff)}.gradient.medium{background:linear-gradient(to right,var(--ion-color-medium),#ffffff)}.small{margin:1rem}.medium{margin:1.5rem 1rem}.large{margin:2.25rem 1rem}.primary{border-color:var(--ion-color-primary)}.secondary{border-color:var(--ion-color-secondary)}.dark{border-color:var(--ion-color-dark)}.light{border-color:var(--ion-color-light)}.medium{border-color:var(--ion-color-medium)}\n"] }]
497
+ }], ctorParameters: () => [], propDecorators: { props: [{
498
+ type: Input
499
+ }] } });
500
+
501
+ class HrefComponent {
502
+ constructor(downloadService) {
503
+ this.downloadService = downloadService;
504
+ this.onClick = new EventEmitter();
505
+ }
506
+ ngOnInit() { }
507
+ getFileName() {
508
+ return this.downloadService.getFileNameFromUrl(this.props.url);
509
+ }
510
+ onClickHandler(event) {
511
+ if (this.props.download && this.props.url) {
512
+ event.preventDefault();
513
+ this.downloadService.downloadLinkFromBrowser(this.props.url);
514
+ }
515
+ this.onClick.emit(this.props.token);
516
+ }
517
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HrefComponent, deps: [{ token: DownloadService }], target: i0.ɵɵFactoryTarget.Component }); }
518
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HrefComponent, isStandalone: true, selector: "val-href", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
519
+ <a
520
+ [ngClass]="[props.color]"
521
+ [class.hoverable]="props.hoverable"
522
+ [href]="props.url"
523
+ target="_blank"
524
+ (click)="onClickHandler($event)"
525
+ >{{ props.text }}</a
526
+ >
527
+ `, isInline: true, styles: [".primary{color:var(--ion-color-primary)}.secondary{color:var(--ion-color-secondary)}.dark{color:var(--ion-color-dark)}.medium{color:var(--ion-color-medium)}.hoverable{text-decoration:none}.hoverable:hover{text-decoration:underline}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
528
+ }
529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HrefComponent, decorators: [{
530
+ type: Component,
531
+ args: [{ selector: 'val-href', standalone: true, imports: [CommonModule], template: `
532
+ <a
533
+ [ngClass]="[props.color]"
534
+ [class.hoverable]="props.hoverable"
535
+ [href]="props.url"
536
+ target="_blank"
537
+ (click)="onClickHandler($event)"
538
+ >{{ props.text }}</a
539
+ >
540
+ `, styles: [".primary{color:var(--ion-color-primary)}.secondary{color:var(--ion-color-secondary)}.dark{color:var(--ion-color-dark)}.medium{color:var(--ion-color-medium)}.hoverable{text-decoration:none}.hoverable:hover{text-decoration:underline}\n"] }]
541
+ }], ctorParameters: () => [{ type: DownloadService }], propDecorators: { props: [{
542
+ type: Input
543
+ }], onClick: [{
544
+ type: Output
545
+ }] } });
546
+
547
+ class IconComponent {
548
+ constructor() { }
549
+ ngOnInit() { }
550
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
551
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: IconComponent, isStandalone: true, selector: "val-icon", inputs: { props: "props" }, ngImport: i0, template: ` <ion-icon [ngClass]="[props.size]" [name]="props.name" [color]="props.color"></ion-icon> `, isInline: true, styles: [".small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
552
+ }
553
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconComponent, decorators: [{
554
+ type: Component,
555
+ args: [{ selector: 'val-icon', standalone: true, imports: [CommonModule, IonIcon], template: ` <ion-icon [ngClass]="[props.size]" [name]="props.name" [color]="props.color"></ion-icon> `, styles: [".small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}\n"] }]
556
+ }], ctorParameters: () => [], propDecorators: { props: [{
557
+ type: Input
558
+ }] } });
559
+
560
+ class ImageComponent {
561
+ constructor() {
562
+ this.available = true;
563
+ }
564
+ ngOnInit() { }
565
+ changeToVisible() {
566
+ setInterval(() => {
567
+ this.available = true;
568
+ }, 100);
569
+ }
570
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
571
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImageComponent, isStandalone: true, selector: "val-image", inputs: { props: "props" }, ngImport: i0, template: `
572
+ <img
573
+ [ngClass]="['image', props.mode, props.size]"
574
+ [class.bordered]="props.bordered"
575
+ [class.shaded]="props.shaded"
576
+ [class.limited]="props.limited"
577
+ [class.visible]="available"
578
+ [src]="props.src"
579
+ [alt]="props.alt"
580
+ [style.width.px]="props.width"
581
+ [style.max-width.px]="props.width"
582
+ [style.height.px]="props.height"
583
+ />
584
+ `, isInline: true, styles: [".small{width:30%}.small.limited{max-width:6.25rem}.medium{width:50%}.medium.limited{max-width:15rem}.large{width:70%}.large.limited{max-width:28.125rem}.xlarge{width:100%}.xlarge.limited{max-width:43.75rem}.image{opacity:0;height:0;display:block}.visible{animation:appereance ease-in 1s forwards}@keyframes appereance{0%{opacity:0;height:0}to{opacity:1;height:auto}}.rounded{border-radius:.5rem}.circular{border-radius:50%}.bordered{border:.0625rem solid var(--ion-color-medium)}.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
585
+ }
586
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageComponent, decorators: [{
587
+ type: Component,
588
+ args: [{ selector: 'val-image', standalone: true, imports: [CommonModule], template: `
589
+ <img
590
+ [ngClass]="['image', props.mode, props.size]"
591
+ [class.bordered]="props.bordered"
592
+ [class.shaded]="props.shaded"
593
+ [class.limited]="props.limited"
594
+ [class.visible]="available"
595
+ [src]="props.src"
596
+ [alt]="props.alt"
597
+ [style.width.px]="props.width"
598
+ [style.max-width.px]="props.width"
599
+ [style.height.px]="props.height"
600
+ />
601
+ `, styles: [".small{width:30%}.small.limited{max-width:6.25rem}.medium{width:50%}.medium.limited{max-width:15rem}.large{width:70%}.large.limited{max-width:28.125rem}.xlarge{width:100%}.xlarge.limited{max-width:43.75rem}.image{opacity:0;height:0;display:block}.visible{animation:appereance ease-in 1s forwards}@keyframes appereance{0%{opacity:0;height:0}to{opacity:1;height:auto}}.rounded{border-radius:.5rem}.circular{border-radius:50%}.bordered{border:.0625rem solid var(--ion-color-medium)}.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}\n"] }]
602
+ }], ctorParameters: () => [], propDecorators: { props: [{
603
+ type: Input
604
+ }] } });
605
+
606
+ class ProgressBarComponent {
607
+ constructor() { }
608
+ ngOnInit() { }
609
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
610
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProgressBarComponent, isStandalone: true, selector: "val-progress-bar", inputs: { props: "props" }, ngImport: i0, template: `
611
+ <ion-progress-bar
612
+ [ngClass]="[props.size]"
613
+ [class.rounded]="props.rounded"
614
+ [value]="props.progress"
615
+ [color]="props.color"
616
+ [buffer]="props.buffer"
617
+ [type]="props.type"
618
+ ></ion-progress-bar>
619
+ `, isInline: true, styles: ["ion-progress-bar.rounded{border-radius:.5rem}.medium{height:.25rem}.large{height:.375rem}.xlarge{height:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }] }); }
620
+ }
621
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProgressBarComponent, decorators: [{
622
+ type: Component,
623
+ args: [{ selector: 'val-progress-bar', standalone: true, imports: [CommonModule, IonProgressBar], template: `
624
+ <ion-progress-bar
625
+ [ngClass]="[props.size]"
626
+ [class.rounded]="props.rounded"
627
+ [value]="props.progress"
628
+ [color]="props.color"
629
+ [buffer]="props.buffer"
630
+ [type]="props.type"
631
+ ></ion-progress-bar>
632
+ `, styles: ["ion-progress-bar.rounded{border-radius:.5rem}.medium{height:.25rem}.large{height:.375rem}.xlarge{height:.5rem}\n"] }]
633
+ }], ctorParameters: () => [], propDecorators: { props: [{
634
+ type: Input
635
+ }] } });
636
+
637
+ class TextComponent {
638
+ constructor() { }
639
+ ngOnInit() { }
640
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
641
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TextComponent, isStandalone: true, selector: "val-text", inputs: { props: "props" }, ngImport: i0, template: `
642
+ <ion-text [color]="props.color">
643
+ <p [class]="props.size" [class.bold]="props.bold">{{ props.content }}</p>
644
+ </ion-text>
645
+ `, isInline: true, styles: [".small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}\n"], dependencies: [{ kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
646
+ }
647
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextComponent, decorators: [{
648
+ type: Component,
649
+ args: [{ selector: 'val-text', standalone: true, imports: [IonText], template: `
650
+ <ion-text [color]="props.color">
651
+ <p [class]="props.size" [class.bold]="props.bold">{{ props.content }}</p>
652
+ </ion-text>
653
+ `, styles: [".small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}\n"] }]
654
+ }], ctorParameters: () => [], propDecorators: { props: [{
655
+ type: Input
656
+ }] } });
657
+
658
+ class TitleComponent {
659
+ constructor() { }
660
+ ngOnInit() { }
661
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
662
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TitleComponent, isStandalone: true, selector: "val-title", inputs: { props: "props" }, ngImport: i0, template: `
663
+ <ion-text [color]="props.color">
664
+ <p *ngIf="!props.bold" [class]="props.size">{{ props.content }}</p>
665
+ <b *ngIf="props.bold">
666
+ <p [class]="props.size">{{ props.content }}</p>
667
+ </b>
668
+ </ion-text>
669
+ `, isInline: true, styles: [".small{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.small{font-size:1rem;line-height:1.5rem}}.medium{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium{font-size:1.125rem;line-height:1.5rem}}.large{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large{font-size:1.5rem;line-height:2rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
670
+ }
671
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TitleComponent, decorators: [{
672
+ type: Component,
673
+ args: [{ selector: 'val-title', standalone: true, imports: [NgIf, IonText], template: `
674
+ <ion-text [color]="props.color">
675
+ <p *ngIf="!props.bold" [class]="props.size">{{ props.content }}</p>
676
+ <b *ngIf="props.bold">
677
+ <p [class]="props.size">{{ props.content }}</p>
678
+ </b>
679
+ </ion-text>
680
+ `, styles: [".small{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.small{font-size:1rem;line-height:1.5rem}}.medium{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium{font-size:1.125rem;line-height:1.5rem}}.large{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large{font-size:1.5rem;line-height:2rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}\n"] }]
681
+ }], ctorParameters: () => [], propDecorators: { props: [{
682
+ type: Input
683
+ }] } });
684
+
685
+ class AlertBoxComponent {
686
+ constructor() { }
687
+ ngOnInit() { }
688
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlertBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
689
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AlertBoxComponent, isStandalone: true, selector: "val-alert-box", inputs: { props: "props" }, ngImport: i0, template: `
690
+ <val-box [props]="props.box">
691
+ <div class="content-container" body>
692
+ <val-icon [props]="props.icon"></val-icon>
693
+ <val-text class="text" [props]="props.text"></val-text>
694
+ </div>
695
+ </val-box>
696
+ `, isInline: true, styles: [".text{margin-left:.25rem}.content-container{display:flex;align-items:flex-start}\n"], dependencies: [{ kind: "component", type: BoxComponent, selector: "val-box", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: IconComponent, selector: "val-icon", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
697
+ }
698
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlertBoxComponent, decorators: [{
699
+ type: Component,
700
+ args: [{ selector: 'val-alert-box', standalone: true, imports: [BoxComponent, IconComponent, TextComponent], template: `
701
+ <val-box [props]="props.box">
702
+ <div class="content-container" body>
703
+ <val-icon [props]="props.icon"></val-icon>
704
+ <val-text class="text" [props]="props.text"></val-text>
705
+ </div>
706
+ </val-box>
707
+ `, styles: [".text{margin-left:.25rem}.content-container{display:flex;align-items:flex-start}\n"] }]
708
+ }], ctorParameters: () => [], propDecorators: { props: [{
709
+ type: Input
710
+ }] } });
711
+
712
+ class ButtonGroupComponent {
713
+ constructor() {
714
+ this.onClick = new EventEmitter();
715
+ }
716
+ ngOnInit() { }
717
+ clickHandler(token) {
718
+ this.onClick.emit(token);
719
+ }
720
+ get Position() {
721
+ if (this.props.buttons.length === 1 && this.props.position === 'spaced') {
722
+ return 'right';
723
+ }
724
+ return this.props.position;
725
+ }
726
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
727
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ButtonGroupComponent, isStandalone: true, selector: "val-button-group", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
728
+ <div [ngClass]="['group-container', Position]" [class.column]="props.columned" style="width: 100%;">
729
+ <val-button
730
+ *ngFor="let b of props.buttons"
731
+ [props]="b"
732
+ (click)="clickHandler(b?.token)"
733
+ [ngStyle]="{ width: props.buttons.length === 1 ? '100%' : 'auto' }"
734
+ ></val-button>
735
+ </div>
736
+ `, isInline: true, styles: ["val-button{display:inline-block}.group-container{width:100%}.group-container.left{text-align:left}.group-container.center{text-align:center}.group-container.right{text-align:right}.group-container.column{display:flex;flex-direction:column-reverse}.group-container.spaced{display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["props"], outputs: ["onClick"] }] }); }
737
+ }
738
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonGroupComponent, decorators: [{
739
+ type: Component,
740
+ args: [{ selector: 'val-button-group', standalone: true, imports: [CommonModule, ButtonComponent], template: `
741
+ <div [ngClass]="['group-container', Position]" [class.column]="props.columned" style="width: 100%;">
742
+ <val-button
743
+ *ngFor="let b of props.buttons"
744
+ [props]="b"
745
+ (click)="clickHandler(b?.token)"
746
+ [ngStyle]="{ width: props.buttons.length === 1 ? '100%' : 'auto' }"
747
+ ></val-button>
748
+ </div>
749
+ `, styles: ["val-button{display:inline-block}.group-container{width:100%}.group-container.left{text-align:left}.group-container.center{text-align:center}.group-container.right{text-align:right}.group-container.column{display:flex;flex-direction:column-reverse}.group-container.spaced{display:flex;justify-content:space-between}\n"] }]
750
+ }], ctorParameters: () => [], propDecorators: { props: [{
751
+ type: Input
752
+ }], onClick: [{
753
+ type: Output
754
+ }] } });
755
+
756
+ var CardType;
757
+ (function (CardType) {
758
+ CardType["native"] = "native";
759
+ CardType["checker"] = "checker";
760
+ CardType["tappable"] = "tappable";
761
+ CardType["complex"] = "complex";
762
+ })(CardType || (CardType = {}));
763
+ var CardSection;
764
+ (function (CardSection) {
765
+ CardSection[CardSection["headerLeft"] = 0] = "headerLeft";
766
+ CardSection[CardSection["headerRight"] = 1] = "headerRight";
767
+ CardSection[CardSection["content"] = 2] = "content";
768
+ CardSection[CardSection["footer"] = 3] = "footer";
769
+ CardSection[CardSection["footerExtra"] = 4] = "footerExtra";
770
+ })(CardSection || (CardSection = {}));
771
+
772
+ class CardComponent {
773
+ constructor() {
774
+ this.onClick = new EventEmitter();
775
+ this.types = CardType;
776
+ this.actionTypes = ToolbarActionType;
777
+ this.sections = CardSection;
778
+ }
779
+ ngOnInit() { }
780
+ clickHandler(section, token) {
781
+ this.onClick.emit({ section, token });
782
+ }
783
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
784
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CardComponent, isStandalone: true, selector: "val-card", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
785
+ <ion-card *ngIf="props.type === types.native">
786
+ <img alt="image" [src]="props.image" />
787
+ <ion-card-header *ngIf="props.title || props.overtitle">
788
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
789
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
790
+ </ion-card-header>
791
+
792
+ <ion-card-content *ngIf="props.content">{{ props.content }}</ion-card-content>
793
+
794
+ <val-button
795
+ *ngFor="let b of props.footerActions"
796
+ [props]="b"
797
+ (click)="clickHandler(sections.footer, b.token)"
798
+ ></val-button>
799
+ </ion-card>
800
+
801
+ <ion-card
802
+ *ngIf="props.type === types.tappable"
803
+ (click)="clickHandler(sections.content, props.token)"
804
+ class="tapable"
805
+ >
806
+ <img alt="image" [src]="props.image" />
807
+ <ion-card-header *ngIf="props.title || props.overtitle">
808
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
809
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
810
+ </ion-card-header>
811
+
812
+ <ion-card-content *ngIf="props.content">{{ props.content }}</ion-card-content>
813
+ </ion-card>
814
+
815
+ <ion-card
816
+ *ngIf="props.type === types.checker"
817
+ (click)="clickHandler(sections.content, props.token)"
818
+ class="tapable"
819
+ >
820
+ <ion-card-header *ngIf="props.title || props.overtitle" class="checker">
821
+ <div>
822
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
823
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
824
+ </div>
825
+ <div>
826
+ <ion-checkbox [checked]="props.selected"></ion-checkbox>
827
+ </div>
828
+ </ion-card-header>
829
+
830
+ <ion-card-content *ngIf="props.content">{{ props.content }}</ion-card-content>
831
+ </ion-card>
832
+
833
+ <ion-card *ngIf="props.type === types.complex" class="complex">
834
+ <ion-card-header class="complex-header">
835
+ <ion-buttons style="display: flex; align-items: center" *ngIf="props.leftActions.length > 0">
836
+ <ng-container *ngFor="let action of props.leftActions">
837
+ <ion-button
838
+ *ngIf="action.type === actionTypes.ICON"
839
+ (click)="clickHandler(sections.headerLeft, action.token)"
840
+ >
841
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
842
+ </ion-button>
843
+ <val-avatar
844
+ style="margin-right: 4px; cursor: pointer"
845
+ *ngIf="action.type === actionTypes.AVATAR"
846
+ [props]="{ size: 'small', image: action.description, default: '' }"
847
+ (onClick)="clickHandler(sections.headerLeft, action.token)"
848
+ ></val-avatar>
849
+ <val-image
850
+ *ngIf="action.type === actionTypes.IMAGE"
851
+ [props]="action.image"
852
+ (click)="clickHandler(sections.headerLeft, action.token)"
853
+ ></val-image>
854
+ <ion-button
855
+ *ngIf="action.type === actionTypes.BUTTON"
856
+ (click)="clickHandler(sections.headerLeft, action.token)"
857
+ >
858
+ {{ action.description }}
859
+ </ion-button>
860
+ <div *ngIf="props.headerText">
861
+ <val-text [props]="{ content: props.headerText, color: 'dark', bold: true, size: 'medium' }" />
862
+ </div>
863
+ </ng-container>
864
+ </ion-buttons>
865
+ <ion-buttons style="display: flex; align-items: center" *ngIf="props.rightActions.length > 0">
866
+ <ng-container *ngFor="let action of props.rightActions">
867
+ <ion-button
868
+ *ngIf="action.type === actionTypes.ICON"
869
+ (click)="clickHandler(sections.headerRight, action.token)"
870
+ >
871
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
872
+ </ion-button>
873
+ <val-avatar
874
+ style="margin-right: 4px; cursor: pointer"
875
+ *ngIf="action.type === actionTypes.AVATAR"
876
+ [props]="{ size: 'small', image: action.description, default: '' }"
877
+ (onClick)="clickHandler(sections.headerRight, action.token)"
878
+ ></val-avatar>
879
+ <val-image
880
+ *ngIf="action.type === actionTypes.IMAGE"
881
+ [props]="action.image"
882
+ (click)="clickHandler(sections.headerRight, action.token)"
883
+ ></val-image>
884
+ <ion-button
885
+ *ngIf="action.type === actionTypes.BUTTON"
886
+ (click)="clickHandler(sections.headerRight, action.token)"
887
+ >
888
+ {{ action.description }}
889
+ </ion-button>
890
+ </ng-container>
891
+ </ion-buttons>
892
+ </ion-card-header>
893
+
894
+ <div class="tapable" (click)="clickHandler(sections.content, props.token)">
895
+ <ion-card-header *ngIf="props.title || props.overtitle" class="complex-header">
896
+ <div>
897
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
898
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
899
+ </div>
900
+ </ion-card-header>
901
+
902
+ <img alt="image" [src]="props.image" />
903
+ <ion-card-content *ngIf="props.content" class="complex-content">{{ props.content }}</ion-card-content>
904
+ </div>
905
+ <val-button
906
+ *ngFor="let b of props.footerActions"
907
+ [props]="b"
908
+ (click)="clickHandler(sections.footer, b.token)"
909
+ ></val-button>
910
+ <ion-buttons
911
+ style="display: flex; align-items: center; justify-content: flex-end; margin: 8px"
912
+ *ngIf="props.footerComplexActions.length > 0"
913
+ >
914
+ <ng-container *ngFor="let action of props.footerComplexActions">
915
+ <ion-button
916
+ *ngIf="action.type === actionTypes.ICON"
917
+ (click)="clickHandler(sections.footerExtra, action.token)"
918
+ >
919
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
920
+ </ion-button>
921
+ <val-avatar
922
+ style="margin-right: 4px; cursor: pointer"
923
+ *ngIf="action.type === actionTypes.AVATAR"
924
+ [props]="{ size: 'small', image: action.description, default: '' }"
925
+ (onClick)="clickHandler(sections.footerExtra, action.token)"
926
+ ></val-avatar>
927
+ <val-image
928
+ *ngIf="action.type === actionTypes.IMAGE"
929
+ [props]="action.image"
930
+ (click)="clickHandler(sections.footerExtra, action.token)"
931
+ ></val-image>
932
+ <ion-button
933
+ *ngIf="action.type === actionTypes.BUTTON"
934
+ (click)="clickHandler(sections.footerExtra, action.token)"
935
+ color="dark"
936
+ >
937
+ {{ action.description }}
938
+ </ion-button>
939
+ </ng-container>
940
+ </ion-buttons>
941
+ </ion-card>
942
+ `, isInline: true, styles: ["ion-card.tapable{transition:transform .3s ease,box-shadow .3s ease}ion-card.tapable:hover{transform:scale(1.01);box-shadow:.1875rem .625rem .5rem #1219541a}.tapable{cursor:pointer}.checker{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.complex-header{padding:10px;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.complex-content{padding-left:10px;padding-top:4px;padding-bottom:10px}.complex{border-radius:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: AvatarComponent, selector: "val-avatar", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
943
+ }
944
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CardComponent, decorators: [{
945
+ type: Component,
946
+ args: [{ selector: 'val-card', standalone: true, imports: [
947
+ CommonModule,
948
+ ButtonComponent,
949
+ AvatarComponent,
950
+ ImageComponent,
951
+ TextComponent,
952
+ IonCard,
953
+ IonCardContent,
954
+ IonCardHeader,
955
+ IonCardTitle,
956
+ IonCardSubtitle,
957
+ IonCheckbox,
958
+ IonButtons,
959
+ IonButton,
960
+ IonIcon,
961
+ ], template: `
962
+ <ion-card *ngIf="props.type === types.native">
963
+ <img alt="image" [src]="props.image" />
964
+ <ion-card-header *ngIf="props.title || props.overtitle">
965
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
966
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
967
+ </ion-card-header>
968
+
969
+ <ion-card-content *ngIf="props.content">{{ props.content }}</ion-card-content>
970
+
971
+ <val-button
972
+ *ngFor="let b of props.footerActions"
973
+ [props]="b"
974
+ (click)="clickHandler(sections.footer, b.token)"
975
+ ></val-button>
976
+ </ion-card>
977
+
978
+ <ion-card
979
+ *ngIf="props.type === types.tappable"
980
+ (click)="clickHandler(sections.content, props.token)"
981
+ class="tapable"
982
+ >
983
+ <img alt="image" [src]="props.image" />
984
+ <ion-card-header *ngIf="props.title || props.overtitle">
985
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
986
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
987
+ </ion-card-header>
988
+
989
+ <ion-card-content *ngIf="props.content">{{ props.content }}</ion-card-content>
990
+ </ion-card>
991
+
992
+ <ion-card
993
+ *ngIf="props.type === types.checker"
994
+ (click)="clickHandler(sections.content, props.token)"
995
+ class="tapable"
996
+ >
997
+ <ion-card-header *ngIf="props.title || props.overtitle" class="checker">
998
+ <div>
999
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
1000
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
1001
+ </div>
1002
+ <div>
1003
+ <ion-checkbox [checked]="props.selected"></ion-checkbox>
1004
+ </div>
1005
+ </ion-card-header>
1006
+
1007
+ <ion-card-content *ngIf="props.content">{{ props.content }}</ion-card-content>
1008
+ </ion-card>
1009
+
1010
+ <ion-card *ngIf="props.type === types.complex" class="complex">
1011
+ <ion-card-header class="complex-header">
1012
+ <ion-buttons style="display: flex; align-items: center" *ngIf="props.leftActions.length > 0">
1013
+ <ng-container *ngFor="let action of props.leftActions">
1014
+ <ion-button
1015
+ *ngIf="action.type === actionTypes.ICON"
1016
+ (click)="clickHandler(sections.headerLeft, action.token)"
1017
+ >
1018
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
1019
+ </ion-button>
1020
+ <val-avatar
1021
+ style="margin-right: 4px; cursor: pointer"
1022
+ *ngIf="action.type === actionTypes.AVATAR"
1023
+ [props]="{ size: 'small', image: action.description, default: '' }"
1024
+ (onClick)="clickHandler(sections.headerLeft, action.token)"
1025
+ ></val-avatar>
1026
+ <val-image
1027
+ *ngIf="action.type === actionTypes.IMAGE"
1028
+ [props]="action.image"
1029
+ (click)="clickHandler(sections.headerLeft, action.token)"
1030
+ ></val-image>
1031
+ <ion-button
1032
+ *ngIf="action.type === actionTypes.BUTTON"
1033
+ (click)="clickHandler(sections.headerLeft, action.token)"
1034
+ >
1035
+ {{ action.description }}
1036
+ </ion-button>
1037
+ <div *ngIf="props.headerText">
1038
+ <val-text [props]="{ content: props.headerText, color: 'dark', bold: true, size: 'medium' }" />
1039
+ </div>
1040
+ </ng-container>
1041
+ </ion-buttons>
1042
+ <ion-buttons style="display: flex; align-items: center" *ngIf="props.rightActions.length > 0">
1043
+ <ng-container *ngFor="let action of props.rightActions">
1044
+ <ion-button
1045
+ *ngIf="action.type === actionTypes.ICON"
1046
+ (click)="clickHandler(sections.headerRight, action.token)"
1047
+ >
1048
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
1049
+ </ion-button>
1050
+ <val-avatar
1051
+ style="margin-right: 4px; cursor: pointer"
1052
+ *ngIf="action.type === actionTypes.AVATAR"
1053
+ [props]="{ size: 'small', image: action.description, default: '' }"
1054
+ (onClick)="clickHandler(sections.headerRight, action.token)"
1055
+ ></val-avatar>
1056
+ <val-image
1057
+ *ngIf="action.type === actionTypes.IMAGE"
1058
+ [props]="action.image"
1059
+ (click)="clickHandler(sections.headerRight, action.token)"
1060
+ ></val-image>
1061
+ <ion-button
1062
+ *ngIf="action.type === actionTypes.BUTTON"
1063
+ (click)="clickHandler(sections.headerRight, action.token)"
1064
+ >
1065
+ {{ action.description }}
1066
+ </ion-button>
1067
+ </ng-container>
1068
+ </ion-buttons>
1069
+ </ion-card-header>
1070
+
1071
+ <div class="tapable" (click)="clickHandler(sections.content, props.token)">
1072
+ <ion-card-header *ngIf="props.title || props.overtitle" class="complex-header">
1073
+ <div>
1074
+ <ion-card-subtitle *ngIf="props.overtitle">{{ props.overtitle }}</ion-card-subtitle>
1075
+ <ion-card-title *ngIf="props.title">{{ props.title }}</ion-card-title>
1076
+ </div>
1077
+ </ion-card-header>
1078
+
1079
+ <img alt="image" [src]="props.image" />
1080
+ <ion-card-content *ngIf="props.content" class="complex-content">{{ props.content }}</ion-card-content>
1081
+ </div>
1082
+ <val-button
1083
+ *ngFor="let b of props.footerActions"
1084
+ [props]="b"
1085
+ (click)="clickHandler(sections.footer, b.token)"
1086
+ ></val-button>
1087
+ <ion-buttons
1088
+ style="display: flex; align-items: center; justify-content: flex-end; margin: 8px"
1089
+ *ngIf="props.footerComplexActions.length > 0"
1090
+ >
1091
+ <ng-container *ngFor="let action of props.footerComplexActions">
1092
+ <ion-button
1093
+ *ngIf="action.type === actionTypes.ICON"
1094
+ (click)="clickHandler(sections.footerExtra, action.token)"
1095
+ >
1096
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
1097
+ </ion-button>
1098
+ <val-avatar
1099
+ style="margin-right: 4px; cursor: pointer"
1100
+ *ngIf="action.type === actionTypes.AVATAR"
1101
+ [props]="{ size: 'small', image: action.description, default: '' }"
1102
+ (onClick)="clickHandler(sections.footerExtra, action.token)"
1103
+ ></val-avatar>
1104
+ <val-image
1105
+ *ngIf="action.type === actionTypes.IMAGE"
1106
+ [props]="action.image"
1107
+ (click)="clickHandler(sections.footerExtra, action.token)"
1108
+ ></val-image>
1109
+ <ion-button
1110
+ *ngIf="action.type === actionTypes.BUTTON"
1111
+ (click)="clickHandler(sections.footerExtra, action.token)"
1112
+ color="dark"
1113
+ >
1114
+ {{ action.description }}
1115
+ </ion-button>
1116
+ </ng-container>
1117
+ </ion-buttons>
1118
+ </ion-card>
1119
+ `, styles: ["ion-card.tapable{transition:transform .3s ease,box-shadow .3s ease}ion-card.tapable:hover{transform:scale(1.01);box-shadow:.1875rem .625rem .5rem #1219541a}.tapable{cursor:pointer}.checker{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.complex-header{padding:10px;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.complex-content{padding-left:10px;padding-top:4px;padding-bottom:10px}.complex{border-radius:16px}\n"] }]
1120
+ }], ctorParameters: () => [], propDecorators: { props: [{
1121
+ type: Input
1122
+ }], onClick: [{
1123
+ type: Output
1124
+ }] } });
1125
+
1126
+ class CheckInputComponent {
1127
+ constructor() { }
1128
+ ngOnInit() { }
1129
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CheckInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1130
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CheckInputComponent, isStandalone: true, selector: "val-check-input", ngImport: i0, template: ` <ion-checkbox>I agree to the terms and conditions</ion-checkbox> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }] }); }
1131
+ }
1132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CheckInputComponent, decorators: [{
1133
+ type: Component,
1134
+ args: [{ selector: 'val-check-input', standalone: true, imports: [CommonModule, IonCheckbox], template: ` <ion-checkbox>I agree to the terms and conditions</ion-checkbox> ` }]
1135
+ }], ctorParameters: () => [] });
1136
+
1137
+ class CommentInputComponent {
1138
+ constructor() { }
1139
+ ngOnInit() { }
1140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1141
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CommentInputComponent, isStandalone: true, selector: "val-comment-input", inputs: { props: "props" }, ngImport: i0, template: `
1142
+ <ion-textarea [formControl]="props.control" [counter]="true" [maxlength]="props.range.max"></ion-textarea>
1143
+ `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
1144
+ }
1145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentInputComponent, decorators: [{
1146
+ type: Component,
1147
+ args: [{ selector: 'val-comment-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonCheckbox, IonTextarea], template: `
1148
+ <ion-textarea [formControl]="props.control" [counter]="true" [maxlength]="props.range.max"></ion-textarea>
1149
+ ` }]
1150
+ }], ctorParameters: () => [], propDecorators: { props: [{
1151
+ type: Input
1152
+ }] } });
1153
+
1154
+ class ContentLoaderComponent {
1155
+ constructor() { }
1156
+ ngOnInit() { }
1157
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1158
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ContentLoaderComponent, isStandalone: true, selector: "val-content-loader", inputs: { props: "props" }, ngImport: i0, template: `
1159
+ <div [ngClass]="['spinner-wrapper', props.size]">
1160
+ <ion-spinner [ngClass]="[props.size]" [name]="props.name" [color]="props.color"></ion-spinner>
1161
+ <ion-text [color]="props.color">
1162
+ <p>{{ props.text }}</p>
1163
+ </ion-text>
1164
+ </div>
1165
+ `, isInline: true, styles: [".small{width:1.5rem;height:1.5rem}.medium{width:2.375rem;height:2.375rem}.large{width:3rem;height:3rem}.spinner-wrapper{width:100%;text-align:center}.spinner-wrapper.small{height:4.5rem;padding-top:1.5rem;font-size:.75rem;line-height:1.25rem;font-weight:400}.spinner-wrapper.medium{height:6.125rem;padding-top:2rem;font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.spinner-wrapper.medium{font-size:1rem;line-height:1.5rem}}.spinner-wrapper.large{height:6.75rem;padding-top:2.625rem;font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.spinner-wrapper.large{font-size:1.125rem;line-height:1.5rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
1166
+ }
1167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContentLoaderComponent, decorators: [{
1168
+ type: Component,
1169
+ args: [{ selector: 'val-content-loader', standalone: true, imports: [CommonModule, IonSpinner, IonText], template: `
1170
+ <div [ngClass]="['spinner-wrapper', props.size]">
1171
+ <ion-spinner [ngClass]="[props.size]" [name]="props.name" [color]="props.color"></ion-spinner>
1172
+ <ion-text [color]="props.color">
1173
+ <p>{{ props.text }}</p>
1174
+ </ion-text>
1175
+ </div>
1176
+ `, styles: [".small{width:1.5rem;height:1.5rem}.medium{width:2.375rem;height:2.375rem}.large{width:3rem;height:3rem}.spinner-wrapper{width:100%;text-align:center}.spinner-wrapper.small{height:4.5rem;padding-top:1.5rem;font-size:.75rem;line-height:1.25rem;font-weight:400}.spinner-wrapper.medium{height:6.125rem;padding-top:2rem;font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.spinner-wrapper.medium{font-size:1rem;line-height:1.5rem}}.spinner-wrapper.large{height:6.75rem;padding-top:2.625rem;font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.spinner-wrapper.large{font-size:1.125rem;line-height:1.5rem}}\n"] }]
1177
+ }], ctorParameters: () => [], propDecorators: { props: [{
1178
+ type: Input
1179
+ }] } });
1180
+
1181
+ class DateInputComponent {
1182
+ constructor() { }
1183
+ ngOnInit() { }
1184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DateInputComponent, isStandalone: true, selector: "val-date-input", inputs: { props: "props" }, ngImport: i0, template: `
1186
+ <div class="button-container">
1187
+ <ion-datetime-button class="action" datetime="datetime"></ion-datetime-button>
1188
+ </div>
1189
+ <ion-modal [keepContentsMounted]="true">
1190
+ <ng-template>
1191
+ <ion-datetime
1192
+ [formControl]="props.control"
1193
+ id="datetime"
1194
+ presentation="date"
1195
+ locale="es-ES"
1196
+ [firstDayOfWeek]="1"
1197
+ [showDefaultButtons]="true"
1198
+ doneText="Aceptar"
1199
+ cancelText="Cancelar"
1200
+ formatOptions="{
1201
+ date: { weekday: 'short', month: 'long', day: '2-digit' },
1202
+ time: {
1203
+ hour: '2-digit',
1204
+ minute: '2-digit',
1205
+ },
1206
+ }"
1207
+ >
1208
+ <span slot="title">{{ props.hint }}</span>
1209
+ </ion-datetime>
1210
+ </ng-template>
1211
+ </ion-modal>
1212
+ `, isInline: true, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: IonDatetimeButton, selector: "ion-datetime-button", inputs: ["color", "datetime", "disabled", "mode"] }, { kind: "component", type: IonModal, selector: "ion-modal" }] }); }
1213
+ }
1214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
1215
+ type: Component,
1216
+ args: [{ selector: 'val-date-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonDatetime, IonDatetimeButton, IonModal], template: `
1217
+ <div class="button-container">
1218
+ <ion-datetime-button class="action" datetime="datetime"></ion-datetime-button>
1219
+ </div>
1220
+ <ion-modal [keepContentsMounted]="true">
1221
+ <ng-template>
1222
+ <ion-datetime
1223
+ [formControl]="props.control"
1224
+ id="datetime"
1225
+ presentation="date"
1226
+ locale="es-ES"
1227
+ [firstDayOfWeek]="1"
1228
+ [showDefaultButtons]="true"
1229
+ doneText="Aceptar"
1230
+ cancelText="Cancelar"
1231
+ formatOptions="{
1232
+ date: { weekday: 'short', month: 'long', day: '2-digit' },
1233
+ time: {
1234
+ hour: '2-digit',
1235
+ minute: '2-digit',
1236
+ },
1237
+ }"
1238
+ >
1239
+ <span slot="title">{{ props.hint }}</span>
1240
+ </ion-datetime>
1241
+ </ng-template>
1242
+ </ion-modal>
1243
+ `, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}\n"] }]
1244
+ }], ctorParameters: () => [], propDecorators: { props: [{
1245
+ type: Input
1246
+ }] } });
1247
+
1248
+ class EmailInputComponent {
1249
+ constructor() { }
1250
+ ngOnInit() { }
1251
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmailInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1252
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EmailInputComponent, isStandalone: true, selector: "val-email-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="email" [placeholder]="props.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
1253
+ }
1254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmailInputComponent, decorators: [{
1255
+ type: Component,
1256
+ args: [{ selector: 'val-email-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="props.control" type="email" [placeholder]="props.placeholder"></ion-input> ` }]
1257
+ }], ctorParameters: () => [], propDecorators: { props: [{
1258
+ type: Input
1259
+ }] } });
1260
+
1261
+ class FileInputComponent {
1262
+ constructor() {
1263
+ this.contrastButton = {
1264
+ ...PrimarySolidDefaultRoundButton('Subir archivo'),
1265
+ color: 'light',
1266
+ };
1267
+ }
1268
+ ngOnInit() { }
1269
+ onFileSelected(event) {
1270
+ this.selectedFile = event.target.files[0];
1271
+ this.props.control.setValue(this.selectedFile);
1272
+ }
1273
+ reset() {
1274
+ this.selectedFile = null;
1275
+ this.fileInput.nativeElement.value = '';
1276
+ }
1277
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1278
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FileInputComponent, isStandalone: true, selector: "val-file-input", inputs: { props: "props" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: `
1279
+ <div class="file-container">
1280
+ <input style="display: none" type="file" (change)="onFileSelected($event)" #fileInput />
1281
+ <div class="name-container">
1282
+ <ion-icon [name]="selectedFile ? 'checkmark-circle-outline' : 'alert-circle-outline'"></ion-icon>
1283
+ <val-text
1284
+ style="margin-left: 4px;"
1285
+ [props]="{
1286
+ content: selectedFile ? selectedFile.name : 'No has seleccionado archivo',
1287
+ color: 'dark',
1288
+ bold: false,
1289
+ size: 'medium',
1290
+ }"
1291
+ ></val-text>
1292
+ </div>
1293
+ <val-button [props]="contrastButton" (onClick)="fileInput.click()"></val-button>
1294
+ </div>
1295
+ `, isInline: true, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.file-container{margin-top:.25rem}.name-container{display:flex;flex-direction:row;align-items:flex-start}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["props"], outputs: ["onClick"] }] }); }
1296
+ }
1297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileInputComponent, decorators: [{
1298
+ type: Component,
1299
+ args: [{ selector: 'val-file-input', standalone: true, imports: [IonIcon, TextComponent, ButtonComponent], template: `
1300
+ <div class="file-container">
1301
+ <input style="display: none" type="file" (change)="onFileSelected($event)" #fileInput />
1302
+ <div class="name-container">
1303
+ <ion-icon [name]="selectedFile ? 'checkmark-circle-outline' : 'alert-circle-outline'"></ion-icon>
1304
+ <val-text
1305
+ style="margin-left: 4px;"
1306
+ [props]="{
1307
+ content: selectedFile ? selectedFile.name : 'No has seleccionado archivo',
1308
+ color: 'dark',
1309
+ bold: false,
1310
+ size: 'medium',
1311
+ }"
1312
+ ></val-text>
1313
+ </div>
1314
+ <val-button [props]="contrastButton" (onClick)="fileInput.click()"></val-button>
1315
+ </div>
1316
+ `, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.file-container{margin-top:.25rem}.name-container{display:flex;flex-direction:row;align-items:flex-start}\n"] }]
1317
+ }], ctorParameters: () => [], propDecorators: { fileInput: [{
1318
+ type: ViewChild,
1319
+ args: ['fileInput']
1320
+ }], props: [{
1321
+ type: Input
1322
+ }] } });
1323
+
1324
+ class HintComponent {
1325
+ constructor() { }
1326
+ ngOnInit() { }
1327
+ get Errors() {
1328
+ const keys = Object.keys(this.props.errors);
1329
+ const errors = [];
1330
+ keys.map((e) => {
1331
+ if (this.props.control.hasError(e)) {
1332
+ errors.push(this.props.errors[e]);
1333
+ }
1334
+ });
1335
+ return errors;
1336
+ }
1337
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1338
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HintComponent, isStandalone: true, selector: "val-hint", inputs: { props: "props" }, ngImport: i0, template: `
1339
+ <div class="hint-container" *ngIf="props.control.invalid && (props.control.touched || props.control.dirty)">
1340
+ <val-text
1341
+ *ngFor="let e of Errors"
1342
+ [props]="{
1343
+ content: e,
1344
+ color: 'danger',
1345
+ bold: false,
1346
+ size: 'small',
1347
+ }"
1348
+ ></val-text>
1349
+ </div>
1350
+ `, isInline: true, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.hint-container{margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
1351
+ }
1352
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HintComponent, decorators: [{
1353
+ type: Component,
1354
+ args: [{ selector: 'val-hint', standalone: true, imports: [CommonModule, TextComponent], template: `
1355
+ <div class="hint-container" *ngIf="props.control.invalid && (props.control.touched || props.control.dirty)">
1356
+ <val-text
1357
+ *ngFor="let e of Errors"
1358
+ [props]="{
1359
+ content: e,
1360
+ color: 'danger',
1361
+ bold: false,
1362
+ size: 'small',
1363
+ }"
1364
+ ></val-text>
1365
+ </div>
1366
+ `, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.hint-container{margin-top:.25rem}\n"] }]
1367
+ }], ctorParameters: () => [], propDecorators: { props: [{
1368
+ type: Input
1369
+ }] } });
1370
+
1371
+ class HourInputComponent {
1372
+ constructor() { }
1373
+ ngOnInit() { }
1374
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HourInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1375
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HourInputComponent, isStandalone: true, selector: "val-hour-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-datetime [formControl]="props.control" presentation="time"></ion-datetime>`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }] }); }
1376
+ }
1377
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HourInputComponent, decorators: [{
1378
+ type: Component,
1379
+ args: [{ selector: 'val-hour-input', standalone: true, imports: [ReactiveFormsModule, IonDatetime], template: ` <ion-datetime [formControl]="props.control" presentation="time"></ion-datetime>` }]
1380
+ }], ctorParameters: () => [], propDecorators: { props: [{
1381
+ type: Input
1382
+ }] } });
1383
+
1384
+ /* eslint-disable no-underscore-dangle */
1385
+ class InAppBrowserService {
1386
+ constructor() {
1387
+ this.options = {
1388
+ presentationStyle: 'popover',
1389
+ url: '',
1390
+ };
1391
+ }
1392
+ async openWithInAppBrowser(url) {
1393
+ await Browser.open({ ...this.options, url });
1394
+ }
1395
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InAppBrowserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1396
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InAppBrowserService, providedIn: 'root' }); }
1397
+ }
1398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InAppBrowserService, decorators: [{
1399
+ type: Injectable,
1400
+ args: [{
1401
+ providedIn: 'root',
1402
+ }]
1403
+ }], ctorParameters: () => [] });
1404
+
1405
+ class NavigationService {
1406
+ constructor() {
1407
+ this.router = inject(Router);
1408
+ this.inAppBrowser = inject(InAppBrowserService);
1409
+ }
1410
+ navigateInApp(url) {
1411
+ this.inAppBrowser.openWithInAppBrowser(url);
1412
+ }
1413
+ navigateWithData(route, dataTransfer) {
1414
+ const navigationExtras = {
1415
+ state: {
1416
+ data: dataTransfer,
1417
+ },
1418
+ };
1419
+ this.router.navigate([route], navigationExtras);
1420
+ }
1421
+ navigateByUrl(url) {
1422
+ this.router
1423
+ .navigateByUrl(url)
1424
+ .then(response => { })
1425
+ .catch(error => { });
1426
+ }
1427
+ openInNewTab(url) {
1428
+ window.open(url, '_blank', 'noopener,noreferrer');
1429
+ }
1430
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1431
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavigationService, providedIn: 'root' }); }
1432
+ }
1433
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavigationService, decorators: [{
1434
+ type: Injectable,
1435
+ args: [{
1436
+ providedIn: 'root',
1437
+ }]
1438
+ }], ctorParameters: () => [] });
1439
+
1440
+ class LinkComponent {
1441
+ constructor() {
1442
+ this.onClick = new EventEmitter();
1443
+ this.service = inject(NavigationService);
1444
+ addIcons({ chevronForwardOutline });
1445
+ }
1446
+ ngOnInit() { }
1447
+ onClickHandler() {
1448
+ this.onClick.emit(this.props.token);
1449
+ switch (this.props.type) {
1450
+ case 'internal':
1451
+ this.service.navigateByUrl(this.props.link);
1452
+ break;
1453
+ case 'browse':
1454
+ this.service.navigateInApp(this.props.link);
1455
+ break;
1456
+ case 'tab':
1457
+ this.service.openInNewTab(this.props.link);
1458
+ break;
1459
+ }
1460
+ }
1461
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1462
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LinkComponent, isStandalone: true, selector: "val-link", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
1463
+ <div>
1464
+ <ion-button type="button" [color]="props.color" fill="clear" [size]="props.size" (click)="onClickHandler()">
1465
+ <ion-icon slot="end" name="chevron-forward-outline"></ion-icon>
1466
+ <ion-text>{{ props.text }}</ion-text>
1467
+ </ion-button>
1468
+ </div>
1469
+ `, isInline: true, styles: ["ion-button{font-family:var(--ion-default-font),Arial,sans-serif}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
1470
+ }
1471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkComponent, decorators: [{
1472
+ type: Component,
1473
+ args: [{ selector: 'val-link', standalone: true, imports: [IonButton, IonIcon, IonText], template: `
1474
+ <div>
1475
+ <ion-button type="button" [color]="props.color" fill="clear" [size]="props.size" (click)="onClickHandler()">
1476
+ <ion-icon slot="end" name="chevron-forward-outline"></ion-icon>
1477
+ <ion-text>{{ props.text }}</ion-text>
1478
+ </ion-button>
1479
+ </div>
1480
+ `, styles: ["ion-button{font-family:var(--ion-default-font),Arial,sans-serif}\n"] }]
1481
+ }], ctorParameters: () => [], propDecorators: { props: [{
1482
+ type: Input
1483
+ }], onClick: [{
1484
+ type: Output
1485
+ }] } });
1486
+
1487
+ class LinksCakeComponent {
1488
+ constructor() { }
1489
+ ngOnInit() { }
1490
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinksCakeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1491
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LinksCakeComponent, isStandalone: true, selector: "val-links-cake", inputs: { props: "props" }, ngImport: i0, template: `
1492
+ <div>
1493
+ <div class="title">
1494
+ <val-title [props]="{ content: props.title, color: 'dark', bold: false, size: props.size }"></val-title>
1495
+ </div>
1496
+ <div class="link" *ngFor="let l of props.links">
1497
+ <val-href [props]="l"></val-href>
1498
+ </div>
1499
+ </div>
1500
+ `, isInline: true, styles: [".title{margin:1rem 0}.link{margin-bottom:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: HrefComponent, selector: "val-href", inputs: ["props"], outputs: ["onClick"] }] }); }
1501
+ }
1502
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinksCakeComponent, decorators: [{
1503
+ type: Component,
1504
+ args: [{ selector: 'val-links-cake', standalone: true, imports: [CommonModule, TitleComponent, HrefComponent], template: `
1505
+ <div>
1506
+ <div class="title">
1507
+ <val-title [props]="{ content: props.title, color: 'dark', bold: false, size: props.size }"></val-title>
1508
+ </div>
1509
+ <div class="link" *ngFor="let l of props.links">
1510
+ <val-href [props]="l"></val-href>
1511
+ </div>
1512
+ </div>
1513
+ `, styles: [".title{margin:1rem 0}.link{margin-bottom:.5rem}\n"] }]
1514
+ }], ctorParameters: () => [], propDecorators: { props: [{
1515
+ type: Input
1516
+ }] } });
1517
+
1518
+ class NotesBoxComponent {
1519
+ constructor() { }
1520
+ ngOnInit() { }
1521
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotesBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1522
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NotesBoxComponent, isStandalone: true, selector: "val-notes-box", inputs: { props: "props" }, ngImport: i0, template: `
1523
+ <val-box [props]="{ icon: '', bordered: false, color: props.color, leftBorder: true }">
1524
+ <div [ngClass]="['content-container', props.size]" body>
1525
+ <val-text [props]="{ content: props.prefix, color: props.textColor, bold: true, size: props.size }"></val-text>
1526
+ <val-text [props]="{ content: props.text, color: props.textColor, bold: false, size: props.size }"></val-text>
1527
+ </div>
1528
+ </val-box>
1529
+ `, isInline: true, styles: [".content-container{display:inline-grid}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BoxComponent, selector: "val-box", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
1530
+ }
1531
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotesBoxComponent, decorators: [{
1532
+ type: Component,
1533
+ args: [{ selector: 'val-notes-box', standalone: true, imports: [CommonModule, BoxComponent, TextComponent], template: `
1534
+ <val-box [props]="{ icon: '', bordered: false, color: props.color, leftBorder: true }">
1535
+ <div [ngClass]="['content-container', props.size]" body>
1536
+ <val-text [props]="{ content: props.prefix, color: props.textColor, bold: true, size: props.size }"></val-text>
1537
+ <val-text [props]="{ content: props.text, color: props.textColor, bold: false, size: props.size }"></val-text>
1538
+ </div>
1539
+ </val-box>
1540
+ `, styles: [".content-container{display:inline-grid}\n"] }]
1541
+ }], ctorParameters: () => [], propDecorators: { props: [{
1542
+ type: Input
1543
+ }] } });
1544
+
1545
+ class NumberInputComponent {
1546
+ constructor() { }
1547
+ ngOnInit() { }
1548
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1549
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NumberInputComponent, isStandalone: true, selector: "val-number-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="number" [placeholder]="props.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
1550
+ }
1551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NumberInputComponent, decorators: [{
1552
+ type: Component,
1553
+ args: [{ selector: 'val-number-input', standalone: true, imports: [ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="props.control" type="number" [placeholder]="props.placeholder"></ion-input> ` }]
1554
+ }], ctorParameters: () => [], propDecorators: { props: [{
1555
+ type: Input
1556
+ }] } });
1557
+
1558
+ class PasswordInputComponent {
1559
+ constructor() {
1560
+ this.hidePassword = true;
1561
+ }
1562
+ ngOnInit() { }
1563
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1564
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PasswordInputComponent, isStandalone: true, selector: "val-password-input", inputs: { props: "props" }, ngImport: i0, template: `
1565
+ <div class="input-container">
1566
+ <ion-input
1567
+ class="sign-in__input-password"
1568
+ [formControl]="props.control"
1569
+ [type]="hidePassword ? 'password' : 'text'"
1570
+ [placeholder]="props.placeholder"
1571
+ ></ion-input>
1572
+ <ion-button color="dark" fill="clear" (click)="hidePassword = !hidePassword" size="small">
1573
+ <ion-icon slot="icon-only" [name]="hidePassword ? 'eye-off-outline' : 'eye-outline'"></ion-icon>
1574
+ </ion-button>
1575
+ </div>
1576
+ `, isInline: true, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.input-container{display:flex;align-items:center;flex-direction:row}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
1577
+ }
1578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordInputComponent, decorators: [{
1579
+ type: Component,
1580
+ args: [{ selector: 'val-password-input', standalone: true, imports: [ReactiveFormsModule, IonInput, IonButton, IonIcon], template: `
1581
+ <div class="input-container">
1582
+ <ion-input
1583
+ class="sign-in__input-password"
1584
+ [formControl]="props.control"
1585
+ [type]="hidePassword ? 'password' : 'text'"
1586
+ [placeholder]="props.placeholder"
1587
+ ></ion-input>
1588
+ <ion-button color="dark" fill="clear" (click)="hidePassword = !hidePassword" size="small">
1589
+ <ion-icon slot="icon-only" [name]="hidePassword ? 'eye-off-outline' : 'eye-outline'"></ion-icon>
1590
+ </ion-button>
1591
+ </div>
1592
+ `, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.input-container{display:flex;align-items:center;flex-direction:row}\n"] }]
1593
+ }], ctorParameters: () => [], propDecorators: { props: [{
1594
+ type: Input
1595
+ }] } });
1596
+
1597
+ class PinInputComponent {
1598
+ constructor() {
1599
+ this.codeLength = 5;
1600
+ this.otpInputConfig = {
1601
+ inputStyles: {
1602
+ 'font-size': '36px',
1603
+ width: '55px',
1604
+ height: '55px',
1605
+ },
1606
+ inputClass: 'otp-input-box',
1607
+ length: this.codeLength,
1608
+ allowNumbersOnly: true,
1609
+ };
1610
+ }
1611
+ ngOnInit() { }
1612
+ reset() {
1613
+ if (this.pinCode) {
1614
+ this.pinCode.setValue('');
1615
+ }
1616
+ }
1617
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PinInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1618
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PinInputComponent, isStandalone: true, selector: "val-pin-input", inputs: { props: "props" }, viewQueries: [{ propertyName: "pinCode", first: true, predicate: NgOtpInputComponent, descendants: true }], ngImport: i0, template: `
1619
+ <div class="otp">
1620
+ <ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
1621
+ </div>
1622
+ `, isInline: true, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1$2.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
1623
+ }
1624
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PinInputComponent, decorators: [{
1625
+ type: Component,
1626
+ args: [{ selector: 'val-pin-input', standalone: true, imports: [NgOtpInputModule], template: `
1627
+ <div class="otp">
1628
+ <ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
1629
+ </div>
1630
+ `, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"] }]
1631
+ }], ctorParameters: () => [], propDecorators: { pinCode: [{
1632
+ type: ViewChild,
1633
+ args: [NgOtpInputComponent, { static: false }]
1634
+ }], props: [{
1635
+ type: Input
1636
+ }] } });
1637
+
1638
+ class TitleBlockComponent {
1639
+ constructor() { }
1640
+ ngOnInit() { }
1641
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TitleBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1642
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TitleBlockComponent, isStandalone: true, selector: "val-title-block", inputs: { props: "props" }, ngImport: i0, template: `
1643
+ <div [ngClass]="['titles-container', props.position]">
1644
+ <val-title
1645
+ *ngIf="props.aboveTitle"
1646
+ [props]="{
1647
+ content: props.aboveTitle.text | uppercase,
1648
+ color: props.aboveTitle.color,
1649
+ bold: false,
1650
+ size: props.aboveTitle.size,
1651
+ }"
1652
+ ></val-title>
1653
+ <val-display
1654
+ *ngIf="props.title"
1655
+ [props]="{
1656
+ content: props.title.text,
1657
+ color: props.title.color,
1658
+ size: props.title.size,
1659
+ }"
1660
+ ></val-display>
1661
+ <val-title
1662
+ *ngIf="props.bellowTitle"
1663
+ [props]="{
1664
+ content: props.bellowTitle.text,
1665
+ color: props.bellowTitle.color,
1666
+ bold: false,
1667
+ size: props.bellowTitle.size,
1668
+ }"
1669
+ ></val-title>
1670
+ </div>
1671
+ `, isInline: true, styles: ["val-button,val-title,val-display{display:inline-block}.titles-container{width:100%;padding:.25rem;display:flex;flex-direction:column;flex-wrap:wrap}.titles-container.left{align-content:flex-start;align-items:start}.titles-container.center{align-content:center;align-items:center;text-align:center}.titles-container.right{align-content:flex-end;align-items:end;text-align:end}@media (min-width: 768px){.titles-container{padding:.5rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }] }); }
1672
+ }
1673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TitleBlockComponent, decorators: [{
1674
+ type: Component,
1675
+ args: [{ selector: 'val-title-block', standalone: true, imports: [CommonModule, TitleComponent, DisplayComponent], template: `
1676
+ <div [ngClass]="['titles-container', props.position]">
1677
+ <val-title
1678
+ *ngIf="props.aboveTitle"
1679
+ [props]="{
1680
+ content: props.aboveTitle.text | uppercase,
1681
+ color: props.aboveTitle.color,
1682
+ bold: false,
1683
+ size: props.aboveTitle.size,
1684
+ }"
1685
+ ></val-title>
1686
+ <val-display
1687
+ *ngIf="props.title"
1688
+ [props]="{
1689
+ content: props.title.text,
1690
+ color: props.title.color,
1691
+ size: props.title.size,
1692
+ }"
1693
+ ></val-display>
1694
+ <val-title
1695
+ *ngIf="props.bellowTitle"
1696
+ [props]="{
1697
+ content: props.bellowTitle.text,
1698
+ color: props.bellowTitle.color,
1699
+ bold: false,
1700
+ size: props.bellowTitle.size,
1701
+ }"
1702
+ ></val-title>
1703
+ </div>
1704
+ `, styles: ["val-button,val-title,val-display{display:inline-block}.titles-container{width:100%;padding:.25rem;display:flex;flex-direction:column;flex-wrap:wrap}.titles-container.left{align-content:flex-start;align-items:start}.titles-container.center{align-content:center;align-items:center;text-align:center}.titles-container.right{align-content:flex-end;align-items:end;text-align:end}@media (min-width: 768px){.titles-container{padding:.5rem}}\n"] }]
1705
+ }], ctorParameters: () => [], propDecorators: { props: [{
1706
+ type: Input
1707
+ }] } });
1708
+
1709
+ class ProgressStatusComponent {
1710
+ constructor() {
1711
+ this.currentIndex = 0;
1712
+ this.blinking = false;
1713
+ }
1714
+ ngOnInit() {
1715
+ setInterval(() => {
1716
+ this.blinking = !this.blinking;
1717
+ }, 1000);
1718
+ setInterval(() => {
1719
+ this.getNextMessage();
1720
+ }, 9000);
1721
+ }
1722
+ get Content() {
1723
+ return this.props.messages[this.currentIndex];
1724
+ }
1725
+ getNextMessage() {
1726
+ this.currentIndex = (this.currentIndex + 1) % this.props.messages.length;
1727
+ }
1728
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProgressStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1729
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProgressStatusComponent, isStandalone: true, selector: "val-progress-status", inputs: { props: "props" }, ngImport: i0, template: `
1730
+ <div class="status-container">
1731
+ <div class="title-container">
1732
+ <val-title-block
1733
+ [props]="{
1734
+ position: 'center',
1735
+ aboveTitle: props.titles.aboveTitle,
1736
+ title: props.titles.title,
1737
+ bellowTitle: props.titles.bellowTitle,
1738
+ }"
1739
+ ></val-title-block>
1740
+ </div>
1741
+ <div class="progress-bar-container">
1742
+ <val-progress-bar
1743
+ [props]="{
1744
+ progress: props.progress,
1745
+ size: 'xlarge',
1746
+ color: props.color,
1747
+ rounded: true,
1748
+ type: 'determinate',
1749
+ buffer: 1,
1750
+ }"
1751
+ ></val-progress-bar>
1752
+ </div>
1753
+ <div class="subtitle-container">
1754
+ <div class="subtitle" [class.blink]="blinking">
1755
+ <val-text [props]="{ content: Content, color: 'medium', bold: false, size: props.size }"></val-text>
1756
+ </div>
1757
+ </div>
1758
+ </div>
1759
+ `, isInline: true, styles: [".status-container{min-height:6.25rem;margin:1rem .5rem}.progress-bar-container{max-width:60%;margin:0 auto}.title-container{margin-bottom:.5rem}.subtitle-container{width:100%;display:flex}.subtitle{padding:1rem;margin:0 auto;height:1rem}.blink{animation:blink 1s infinite alternate ease-in}@keyframes blink{0%{opacity:0;margin-top:6px}to{opacity:1;margin-top:0}}\n"], dependencies: [{ kind: "component", type: TitleBlockComponent, selector: "val-title-block", inputs: ["props"] }, { kind: "component", type: ProgressBarComponent, selector: "val-progress-bar", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
1760
+ }
1761
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProgressStatusComponent, decorators: [{
1762
+ type: Component,
1763
+ args: [{ selector: 'val-progress-status', standalone: true, imports: [TitleBlockComponent, ProgressBarComponent, TextComponent], template: `
1764
+ <div class="status-container">
1765
+ <div class="title-container">
1766
+ <val-title-block
1767
+ [props]="{
1768
+ position: 'center',
1769
+ aboveTitle: props.titles.aboveTitle,
1770
+ title: props.titles.title,
1771
+ bellowTitle: props.titles.bellowTitle,
1772
+ }"
1773
+ ></val-title-block>
1774
+ </div>
1775
+ <div class="progress-bar-container">
1776
+ <val-progress-bar
1777
+ [props]="{
1778
+ progress: props.progress,
1779
+ size: 'xlarge',
1780
+ color: props.color,
1781
+ rounded: true,
1782
+ type: 'determinate',
1783
+ buffer: 1,
1784
+ }"
1785
+ ></val-progress-bar>
1786
+ </div>
1787
+ <div class="subtitle-container">
1788
+ <div class="subtitle" [class.blink]="blinking">
1789
+ <val-text [props]="{ content: Content, color: 'medium', bold: false, size: props.size }"></val-text>
1790
+ </div>
1791
+ </div>
1792
+ </div>
1793
+ `, styles: [".status-container{min-height:6.25rem;margin:1rem .5rem}.progress-bar-container{max-width:60%;margin:0 auto}.title-container{margin-bottom:.5rem}.subtitle-container{width:100%;display:flex}.subtitle{padding:1rem;margin:0 auto;height:1rem}.blink{animation:blink 1s infinite alternate ease-in}@keyframes blink{0%{opacity:0;margin-top:6px}to{opacity:1;margin-top:0}}\n"] }]
1794
+ }], ctorParameters: () => [], propDecorators: { props: [{
1795
+ type: Input
1796
+ }] } });
1797
+
1798
+ class PrompterComponent {
1799
+ constructor() {
1800
+ this.onClick = new EventEmitter();
1801
+ }
1802
+ ngOnInit() { }
1803
+ clickHandler(token) {
1804
+ this.onClick.emit(token);
1805
+ }
1806
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PrompterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1807
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PrompterComponent, isStandalone: true, selector: "val-prompter", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
1808
+ <val-box
1809
+ class="teleprompter-container"
1810
+ [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false }"
1811
+ >
1812
+ <div class="container" [class.teleprompter-content]="props.teleprompter" body>
1813
+ <div>
1814
+ <val-text
1815
+ [props]="{
1816
+ content: props.content,
1817
+ color: '',
1818
+ bold: true,
1819
+ size: 'large',
1820
+ }"
1821
+ ></val-text>
1822
+ </div>
1823
+ <div *ngIf="props.buttons">
1824
+ <val-button-group
1825
+ class="buttons-container"
1826
+ [props]="{ buttons: props.buttons, position: 'left', columned: false }"
1827
+ (onClick)="clickHandler($event)"
1828
+ ></val-button-group>
1829
+ </div>
1830
+ <div *ngIf="props.hrefs">
1831
+ <val-href class="link" *ngFor="let l of props.hrefs" [props]="l" (onClick)="clickHandler($event)"></val-href>
1832
+ </div>
1833
+ </div>
1834
+ </val-box>
1835
+ `, isInline: true, styles: ["@charset \"UTF-8\";.container{display:flex;align-items:center;justify-content:center}.teleprompter-container{overflow:hidden;width:100%}.teleprompter-content{white-space:nowrap;animation:scroll-left 15s linear infinite}@keyframes scroll-left{0%{transform:translate(100%)}to{transform:translate(-100%)}}.link{margin:0 .25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BoxComponent, selector: "val-box", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: HrefComponent, selector: "val-href", inputs: ["props"], outputs: ["onClick"] }] }); }
1836
+ }
1837
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PrompterComponent, decorators: [{
1838
+ type: Component,
1839
+ args: [{ selector: 'val-prompter', standalone: true, imports: [CommonModule, BoxComponent, ButtonGroupComponent, TextComponent, HrefComponent], template: `
1840
+ <val-box
1841
+ class="teleprompter-container"
1842
+ [props]="{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false }"
1843
+ >
1844
+ <div class="container" [class.teleprompter-content]="props.teleprompter" body>
1845
+ <div>
1846
+ <val-text
1847
+ [props]="{
1848
+ content: props.content,
1849
+ color: '',
1850
+ bold: true,
1851
+ size: 'large',
1852
+ }"
1853
+ ></val-text>
1854
+ </div>
1855
+ <div *ngIf="props.buttons">
1856
+ <val-button-group
1857
+ class="buttons-container"
1858
+ [props]="{ buttons: props.buttons, position: 'left', columned: false }"
1859
+ (onClick)="clickHandler($event)"
1860
+ ></val-button-group>
1861
+ </div>
1862
+ <div *ngIf="props.hrefs">
1863
+ <val-href class="link" *ngFor="let l of props.hrefs" [props]="l" (onClick)="clickHandler($event)"></val-href>
1864
+ </div>
1865
+ </div>
1866
+ </val-box>
1867
+ `, styles: ["@charset \"UTF-8\";.container{display:flex;align-items:center;justify-content:center}.teleprompter-container{overflow:hidden;width:100%}.teleprompter-content{white-space:nowrap;animation:scroll-left 15s linear infinite}@keyframes scroll-left{0%{transform:translate(100%)}to{transform:translate(-100%)}}.link{margin:0 .25rem}\n"] }]
1868
+ }], ctorParameters: () => [], propDecorators: { props: [{
1869
+ type: Input
1870
+ }], onClick: [{
1871
+ type: Output
1872
+ }] } });
1873
+
1874
+ class RadioInputComponent {
1875
+ constructor() { }
1876
+ ngOnInit() { }
1877
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RadioInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1878
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: RadioInputComponent, isStandalone: true, selector: "val-radio-input", inputs: { props: "props" }, ngImport: i0, template: `
1879
+ <ion-radio-group [allowEmptySelection]="true" [formControl]="props.control">
1880
+ <ng-container *ngFor="let o of props.options">
1881
+ <ion-radio [value]="o.id">{{ o.name }}</ion-radio>
1882
+ <br />
1883
+ </ng-container>
1884
+ </ion-radio-group>
1885
+ `, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "name", "value"] }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }] }); }
1886
+ }
1887
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RadioInputComponent, decorators: [{
1888
+ type: Component,
1889
+ args: [{ selector: 'val-radio-input', standalone: true, imports: [NgFor, ReactiveFormsModule, IonRadioGroup, IonRadio], template: `
1890
+ <ion-radio-group [allowEmptySelection]="true" [formControl]="props.control">
1891
+ <ng-container *ngFor="let o of props.options">
1892
+ <ion-radio [value]="o.id">{{ o.name }}</ion-radio>
1893
+ <br />
1894
+ </ng-container>
1895
+ </ion-radio-group>
1896
+ ` }]
1897
+ }], ctorParameters: () => [], propDecorators: { props: [{
1898
+ type: Input
1899
+ }] } });
1900
+
1901
+ class SearchbarComponent {
1902
+ constructor() {
1903
+ this.focusEvent = new EventEmitter();
1904
+ this.blurEvent = new EventEmitter();
1905
+ this.filterEvent = new EventEmitter();
1906
+ }
1907
+ onSearch($event) {
1908
+ const searchTerm = $event.detail.value;
1909
+ this.filterEvent.emit(searchTerm);
1910
+ }
1911
+ onFocus() {
1912
+ this.focusEvent.emit();
1913
+ }
1914
+ onBlur() {
1915
+ this.blurEvent.emit();
1916
+ }
1917
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1918
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchbarComponent, isStandalone: true, selector: "app-searchbar", inputs: { disabled: "disabled" }, outputs: { focusEvent: "focusEvent", blurEvent: "blurEvent", filterEvent: "filterEvent" }, ngImport: i0, template: `
1919
+ <ion-searchbar
1920
+ mode="ios"
1921
+ debounce="500"
1922
+ placeholder="Búsqueda"
1923
+ [disabled]="disabled"
1924
+ showCancelButton="focus"
1925
+ cancelButtonText="Cancelar"
1926
+ (ionInput)="onSearch($event)"
1927
+ (ionBlur)="onBlur()"
1928
+ (ionFocus)="onFocus()"
1929
+ >
1930
+ </ion-searchbar>
1931
+ `, isInline: true, styles: ["ion-searchbar{--cancel-button-color: var(--ion-color-dark);--background: var(--ion-color-light);font-family:var(--ion-default-font),Arial,sans-serif}\n"], dependencies: [{ kind: "component", type: IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }] }); }
1932
+ }
1933
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchbarComponent, decorators: [{
1934
+ type: Component,
1935
+ args: [{ selector: 'app-searchbar', standalone: true, imports: [IonSearchbar], template: `
1936
+ <ion-searchbar
1937
+ mode="ios"
1938
+ debounce="500"
1939
+ placeholder="Búsqueda"
1940
+ [disabled]="disabled"
1941
+ showCancelButton="focus"
1942
+ cancelButtonText="Cancelar"
1943
+ (ionInput)="onSearch($event)"
1944
+ (ionBlur)="onBlur()"
1945
+ (ionFocus)="onFocus()"
1946
+ >
1947
+ </ion-searchbar>
1948
+ `, styles: ["ion-searchbar{--cancel-button-color: var(--ion-color-dark);--background: var(--ion-color-light);font-family:var(--ion-default-font),Arial,sans-serif}\n"] }]
1949
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
1950
+ type: Input
1951
+ }], focusEvent: [{
1952
+ type: Output
1953
+ }], blurEvent: [{
1954
+ type: Output
1955
+ }], filterEvent: [{
1956
+ type: Output
1957
+ }] } });
1958
+
1959
+ class TextInputComponent {
1960
+ constructor() { }
1961
+ ngOnInit() { }
1962
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1963
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TextInputComponent, isStandalone: true, selector: "val-text-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="text" [placeholder]="props.placeholder"></ion-input> `, isInline: true, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
1964
+ }
1965
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextInputComponent, decorators: [{
1966
+ type: Component,
1967
+ args: [{ selector: 'val-text-input', standalone: true, imports: [ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="props.control" type="text" [placeholder]="props.placeholder"></ion-input> `, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"] }]
1968
+ }], ctorParameters: () => [], propDecorators: { props: [{
1969
+ type: Input
1970
+ }] } });
1971
+
1972
+ class BannerComponent {
1973
+ constructor() {
1974
+ this.onClick = new EventEmitter();
1975
+ this.onClose = new EventEmitter();
1976
+ }
1977
+ ngOnInit() { }
1978
+ clickHandler(token) {
1979
+ this.onClick.emit(token);
1980
+ }
1981
+ closeHandler() {
1982
+ this.onClose.emit();
1983
+ }
1984
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1985
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BannerComponent, isStandalone: true, selector: "val-banner", inputs: { props: "props" }, outputs: { onClick: "onClick", onClose: "onClose" }, ngImport: i0, template: `
1986
+ <val-box
1987
+ [props]="{ icon: props.closable ? 'close-outline' : '', bordered: props.bordered, color: '' }"
1988
+ (onClick)="closeHandler()"
1989
+ >
1990
+ <div [ngClass]="['content-container', props.mode, props.alignment]" body>
1991
+ <val-title-block
1992
+ [props]="{
1993
+ position: props.mode === 'center' ? 'center' : 'left',
1994
+ aboveTitle: props.content.aboveTitle,
1995
+ title: props.content.title,
1996
+ bellowTitle: props.content.bellowTitle,
1997
+ }"
1998
+ ></val-title-block>
1999
+ <val-button-group
2000
+ class="buttons-container"
2001
+ [props]="{ position: props.mode === 'center' ? 'center' : 'left', buttons: props.actions, columned: false }"
2002
+ (onClick)="clickHandler($event)"
2003
+ ></val-button-group>
2004
+ </div>
2005
+ </val-box>
2006
+ `, isInline: true, styles: [".content-container{display:flex;justify-content:space-between}.content-container.center{flex-direction:column}.content-container.column{flex-direction:row}.content-container.row{flex-direction:column}.content-container.middle{align-items:center}.content-container.top{align-items:flex-start}.content-container.bottom{align-items:flex-end}.content-container.hybrid{flex-direction:column;align-items:flex-start}@media (min-width: 768px){.content-container.hybrid{flex-direction:row;align-items:center}}.buttons-container{align-items:center;display:flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BoxComponent, selector: "val-box", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: TitleBlockComponent, selector: "val-title-block", inputs: ["props"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }] }); }
2007
+ }
2008
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BannerComponent, decorators: [{
2009
+ type: Component,
2010
+ args: [{ selector: 'val-banner', standalone: true, imports: [CommonModule, BoxComponent, TitleBlockComponent, ButtonGroupComponent], template: `
2011
+ <val-box
2012
+ [props]="{ icon: props.closable ? 'close-outline' : '', bordered: props.bordered, color: '' }"
2013
+ (onClick)="closeHandler()"
2014
+ >
2015
+ <div [ngClass]="['content-container', props.mode, props.alignment]" body>
2016
+ <val-title-block
2017
+ [props]="{
2018
+ position: props.mode === 'center' ? 'center' : 'left',
2019
+ aboveTitle: props.content.aboveTitle,
2020
+ title: props.content.title,
2021
+ bellowTitle: props.content.bellowTitle,
2022
+ }"
2023
+ ></val-title-block>
2024
+ <val-button-group
2025
+ class="buttons-container"
2026
+ [props]="{ position: props.mode === 'center' ? 'center' : 'left', buttons: props.actions, columned: false }"
2027
+ (onClick)="clickHandler($event)"
2028
+ ></val-button-group>
2029
+ </div>
2030
+ </val-box>
2031
+ `, styles: [".content-container{display:flex;justify-content:space-between}.content-container.center{flex-direction:column}.content-container.column{flex-direction:row}.content-container.row{flex-direction:column}.content-container.middle{align-items:center}.content-container.top{align-items:flex-start}.content-container.bottom{align-items:flex-end}.content-container.hybrid{flex-direction:column;align-items:flex-start}@media (min-width: 768px){.content-container.hybrid{flex-direction:row;align-items:center}}.buttons-container{align-items:center;display:flex}\n"] }]
2032
+ }], ctorParameters: () => [], propDecorators: { props: [{
2033
+ type: Input
2034
+ }], onClick: [{
2035
+ type: Output
2036
+ }], onClose: [{
2037
+ type: Output
2038
+ }] } });
2039
+
2040
+ class ToolbarComponent {
2041
+ constructor(navCtrl) {
2042
+ this.navCtrl = navCtrl;
2043
+ this.onClick = new EventEmitter();
2044
+ this.actionTypes = ToolbarActionType;
2045
+ }
2046
+ ngOnInit() { }
2047
+ goBack() {
2048
+ this.navCtrl.back();
2049
+ }
2050
+ rightActions() {
2051
+ return this.props.actions.filter(x => x.position === 'right');
2052
+ }
2053
+ leftActions() {
2054
+ return this.props.actions.filter(x => x.position === 'left');
2055
+ }
2056
+ someInRight() {
2057
+ return !!this.props.actions.find(x => x.position === 'right');
2058
+ }
2059
+ someInLeft() {
2060
+ return !!this.props.actions.find(x => x.position === 'left');
2061
+ }
2062
+ clickHandler(token) {
2063
+ this.onClick.emit(token);
2064
+ }
2065
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1$3.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
2066
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ToolbarComponent, isStandalone: true, selector: "val-toolbar", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
2067
+ <ion-toolbar [color]="props.color" [class.background]="props.color === 'background'">
2068
+ <ng-container *ngIf="props.withBack">
2069
+ <ion-buttons class="left-buttons" slot="start" *ngIf="props.withBack">
2070
+ <ion-button fill="clear" (click)="goBack()" [color]="props.textColor">
2071
+ <ion-icon name="chevron-back-outline" [slot]="props.backText ? 'start' : 'icon-only'"></ion-icon>
2072
+ <ion-text *ngIf="props.backText">{{ props.backText }}</ion-text>
2073
+ </ion-button>
2074
+ </ion-buttons>
2075
+ </ng-container>
2076
+ <ng-container *ngIf="props.withActions">
2077
+ <ion-buttons slot="end" *ngIf="someInRight()">
2078
+ <ng-container *ngFor="let action of rightActions()">
2079
+ <ion-button *ngIf="action.type === actionTypes.ICON" (click)="clickHandler(action.token)">
2080
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
2081
+ </ion-button>
2082
+ <val-avatar
2083
+ *ngIf="action.type === actionTypes.AVATAR"
2084
+ [props]="{ size: 'small', image: action.description, default: '' }"
2085
+ (onClick)="clickHandler(action.token)"
2086
+ ></val-avatar>
2087
+ <val-image
2088
+ *ngIf="action.type === actionTypes.IMAGE"
2089
+ [props]="action.image"
2090
+ (click)="clickHandler(action.token)"
2091
+ ></val-image>
2092
+ <ion-button *ngIf="action.type === actionTypes.BUTTON" (click)="clickHandler(action.token)">{{
2093
+ action.description
2094
+ }}</ion-button>
2095
+ </ng-container>
2096
+ </ion-buttons>
2097
+ <ion-buttons slot="start" *ngIf="someInLeft()">
2098
+ <ng-container *ngFor="let action of leftActions()">
2099
+ <ion-button *ngIf="action.type === actionTypes.ICON" (click)="clickHandler(action.token)">
2100
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
2101
+ </ion-button>
2102
+ <val-avatar
2103
+ *ngIf="action.type === actionTypes.AVATAR"
2104
+ [props]="{ size: 'small', image: action.description, default: '' }"
2105
+ (onClick)="clickHandler(action.token)"
2106
+ ></val-avatar>
2107
+ <val-image
2108
+ *ngIf="action.type === actionTypes.IMAGE"
2109
+ [props]="action.image"
2110
+ (click)="clickHandler(action.token)"
2111
+ ></val-image>
2112
+ <ion-button *ngIf="action.type === actionTypes.BUTTON" (click)="clickHandler(action.token)">{{
2113
+ action.description
2114
+ }}</ion-button>
2115
+ </ng-container>
2116
+ </ion-buttons>
2117
+ </ng-container>
2118
+ <ion-title *ngIf="props.title" [color]="props.textColor">{{ props.title }}</ion-title>
2119
+ <!-- experimental -->
2120
+ <ng-content select="[toolbar-bottom]"></ng-content>
2121
+ </ion-toolbar>
2122
+ `, isInline: true, styles: ["ion-button{font-family:var(--ion-default-font),Arial,sans-serif}.left-buttons{margin-left:-1rem}.background{background:var(--ion-background-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: AvatarComponent, selector: "val-avatar", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }] }); }
2123
+ }
2124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, decorators: [{
2125
+ type: Component,
2126
+ args: [{ selector: 'val-toolbar', standalone: true, imports: [
2127
+ CommonModule,
2128
+ IonToolbar,
2129
+ IonButtons,
2130
+ IonButton,
2131
+ IonIcon,
2132
+ IonText,
2133
+ IonTitle,
2134
+ AvatarComponent,
2135
+ ImageComponent,
2136
+ ], template: `
2137
+ <ion-toolbar [color]="props.color" [class.background]="props.color === 'background'">
2138
+ <ng-container *ngIf="props.withBack">
2139
+ <ion-buttons class="left-buttons" slot="start" *ngIf="props.withBack">
2140
+ <ion-button fill="clear" (click)="goBack()" [color]="props.textColor">
2141
+ <ion-icon name="chevron-back-outline" [slot]="props.backText ? 'start' : 'icon-only'"></ion-icon>
2142
+ <ion-text *ngIf="props.backText">{{ props.backText }}</ion-text>
2143
+ </ion-button>
2144
+ </ion-buttons>
2145
+ </ng-container>
2146
+ <ng-container *ngIf="props.withActions">
2147
+ <ion-buttons slot="end" *ngIf="someInRight()">
2148
+ <ng-container *ngFor="let action of rightActions()">
2149
+ <ion-button *ngIf="action.type === actionTypes.ICON" (click)="clickHandler(action.token)">
2150
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
2151
+ </ion-button>
2152
+ <val-avatar
2153
+ *ngIf="action.type === actionTypes.AVATAR"
2154
+ [props]="{ size: 'small', image: action.description, default: '' }"
2155
+ (onClick)="clickHandler(action.token)"
2156
+ ></val-avatar>
2157
+ <val-image
2158
+ *ngIf="action.type === actionTypes.IMAGE"
2159
+ [props]="action.image"
2160
+ (click)="clickHandler(action.token)"
2161
+ ></val-image>
2162
+ <ion-button *ngIf="action.type === actionTypes.BUTTON" (click)="clickHandler(action.token)">{{
2163
+ action.description
2164
+ }}</ion-button>
2165
+ </ng-container>
2166
+ </ion-buttons>
2167
+ <ion-buttons slot="start" *ngIf="someInLeft()">
2168
+ <ng-container *ngFor="let action of leftActions()">
2169
+ <ion-button *ngIf="action.type === actionTypes.ICON" (click)="clickHandler(action.token)">
2170
+ <ion-icon slot="icon-only" [name]="action.description" color="dark"></ion-icon>
2171
+ </ion-button>
2172
+ <val-avatar
2173
+ *ngIf="action.type === actionTypes.AVATAR"
2174
+ [props]="{ size: 'small', image: action.description, default: '' }"
2175
+ (onClick)="clickHandler(action.token)"
2176
+ ></val-avatar>
2177
+ <val-image
2178
+ *ngIf="action.type === actionTypes.IMAGE"
2179
+ [props]="action.image"
2180
+ (click)="clickHandler(action.token)"
2181
+ ></val-image>
2182
+ <ion-button *ngIf="action.type === actionTypes.BUTTON" (click)="clickHandler(action.token)">{{
2183
+ action.description
2184
+ }}</ion-button>
2185
+ </ng-container>
2186
+ </ion-buttons>
2187
+ </ng-container>
2188
+ <ion-title *ngIf="props.title" [color]="props.textColor">{{ props.title }}</ion-title>
2189
+ <!-- experimental -->
2190
+ <ng-content select="[toolbar-bottom]"></ng-content>
2191
+ </ion-toolbar>
2192
+ `, styles: ["ion-button{font-family:var(--ion-default-font),Arial,sans-serif}.left-buttons{margin-left:-1rem}.background{background:var(--ion-background-color)}\n"] }]
2193
+ }], ctorParameters: () => [{ type: i1$3.NavController }], propDecorators: { props: [{
2194
+ type: Input
2195
+ }], onClick: [{
2196
+ type: Output
2197
+ }] } });
2198
+
2199
+ class FooterComponent {
2200
+ constructor() {
2201
+ this.onClick = new EventEmitter();
2202
+ }
2203
+ ngOnInit() { }
2204
+ clickHandler(token) {
2205
+ this.onClick.emit(token);
2206
+ }
2207
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2208
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FooterComponent, isStandalone: true, selector: "val-footer", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
2209
+ <ion-footer
2210
+ [class.ion-no-border]="!props.bordered"
2211
+ [translucent]="props.translucent"
2212
+ [class.background]="props.toolbar.color === 'background'"
2213
+ >
2214
+ <val-toolbar
2215
+ *ngIf="props.toolbar.title || props.toolbar.withActions || props.toolbar.withBack"
2216
+ [props]="props.toolbar"
2217
+ (onClick)="clickHandler($event)"
2218
+ ></val-toolbar>
2219
+ <ng-content select="[extra]"></ng-content>
2220
+ </ion-footer>
2221
+ `, isInline: true, styles: [".background{background:var(--ion-background-color)}\n"], dependencies: [{ kind: "component", type: IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: ToolbarComponent, selector: "val-toolbar", inputs: ["props"], outputs: ["onClick"] }] }); }
2222
+ }
2223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FooterComponent, decorators: [{
2224
+ type: Component,
2225
+ args: [{ selector: 'val-footer', standalone: true, imports: [IonFooter, ToolbarComponent], template: `
2226
+ <ion-footer
2227
+ [class.ion-no-border]="!props.bordered"
2228
+ [translucent]="props.translucent"
2229
+ [class.background]="props.toolbar.color === 'background'"
2230
+ >
2231
+ <val-toolbar
2232
+ *ngIf="props.toolbar.title || props.toolbar.withActions || props.toolbar.withBack"
2233
+ [props]="props.toolbar"
2234
+ (onClick)="clickHandler($event)"
2235
+ ></val-toolbar>
2236
+ <ng-content select="[extra]"></ng-content>
2237
+ </ion-footer>
2238
+ `, styles: [".background{background:var(--ion-background-color)}\n"] }]
2239
+ }], ctorParameters: () => [], propDecorators: { props: [{
2240
+ type: Input
2241
+ }], onClick: [{
2242
+ type: Output
2243
+ }] } });
2244
+
2245
+ const maxLength = (field, max) => {
2246
+ return {
2247
+ validator: Validators.maxLength(max),
2248
+ error: `El campo ${field} no debe superar los ${max} caracteres.`,
2249
+ };
2250
+ };
2251
+
2252
+ class FormFooterComponent {
2253
+ constructor() {
2254
+ this.onSubmit = new EventEmitter();
2255
+ }
2256
+ ngOnInit() { }
2257
+ async submitHandler(token) {
2258
+ this.onSubmit.emit({ fields: this.form.value, token });
2259
+ }
2260
+ get actions() {
2261
+ if (!this.form) {
2262
+ return [];
2263
+ }
2264
+ if (this.form.valid) {
2265
+ this.action.state = ComponentStates.ENABLED;
2266
+ }
2267
+ return [this.action];
2268
+ }
2269
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2270
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormFooterComponent, isStandalone: true, selector: "val-form-footer", inputs: { form: "form", action: "action" }, outputs: { onSubmit: "onSubmit" }, ngImport: i0, template: `
2271
+ <val-footer
2272
+ [props]="{
2273
+ bordered: false,
2274
+ translucent: false,
2275
+ toolbar: {
2276
+ title: '',
2277
+ actions: [],
2278
+ color: 'background',
2279
+ withBack: false,
2280
+ withActions: false,
2281
+ },
2282
+ }"
2283
+ >
2284
+ <val-button-group
2285
+ extra
2286
+ [props]="{ buttons: actions, position: 'center', columned: false }"
2287
+ (onClick)="submitHandler($event)"
2288
+ ></val-button-group>
2289
+ </val-footer>
2290
+ `, isInline: true, styles: [""], dependencies: [{ kind: "component", type: FooterComponent, selector: "val-footer", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }] }); }
2291
+ }
2292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFooterComponent, decorators: [{
2293
+ type: Component,
2294
+ args: [{ selector: 'val-form-footer', standalone: true, imports: [FooterComponent, ButtonGroupComponent], template: `
2295
+ <val-footer
2296
+ [props]="{
2297
+ bordered: false,
2298
+ translucent: false,
2299
+ toolbar: {
2300
+ title: '',
2301
+ actions: [],
2302
+ color: 'background',
2303
+ withBack: false,
2304
+ withActions: false,
2305
+ },
2306
+ }"
2307
+ >
2308
+ <val-button-group
2309
+ extra
2310
+ [props]="{ buttons: actions, position: 'center', columned: false }"
2311
+ (onClick)="submitHandler($event)"
2312
+ ></val-button-group>
2313
+ </val-footer>
2314
+ ` }]
2315
+ }], ctorParameters: () => [], propDecorators: { form: [{
2316
+ type: Input
2317
+ }], action: [{
2318
+ type: Input
2319
+ }], onSubmit: [{
2320
+ type: Output
2321
+ }] } });
2322
+
2323
+ const goToTop = (id) => {
2324
+ const element = document.getElementById(id);
2325
+ if (element) {
2326
+ element.scrollIntoView({
2327
+ block: 'start',
2328
+ inline: 'nearest',
2329
+ behavior: 'smooth',
2330
+ });
2331
+ }
2332
+ };
2333
+ const isAtEnd = (elementRef) => {
2334
+ const formElement = elementRef.nativeElement;
2335
+ const rect = formElement.getBoundingClientRect();
2336
+ const windowHeight = window.innerHeight;
2337
+ return rect.bottom <= windowHeight;
2338
+ };
2339
+
2340
+ class FormComponent {
2341
+ constructor(fb, elementRef) {
2342
+ this.fb = fb;
2343
+ this.elementRef = elementRef;
2344
+ this.onSubmit = new EventEmitter();
2345
+ this.onInvalid = new EventEmitter();
2346
+ this.types = InputType;
2347
+ }
2348
+ ngOnInit() {
2349
+ const formControls = {};
2350
+ this.props.sections.forEach(section => {
2351
+ section.fields.forEach(field => {
2352
+ formControls[field.name] = [undefined, field.validators || []];
2353
+ });
2354
+ });
2355
+ this.form = this.fb.group(formControls);
2356
+ }
2357
+ async submitHandler(token) {
2358
+ this.onSubmit.emit({ fields: this.form.value, token });
2359
+ }
2360
+ getControl(field) {
2361
+ return this.Form.get(field);
2362
+ }
2363
+ getFieldProp(field) {
2364
+ return {
2365
+ ...field,
2366
+ control: this.getControl(field.name),
2367
+ };
2368
+ }
2369
+ get isAtEndOfForm() {
2370
+ return isAtEnd(this.elementRef);
2371
+ }
2372
+ get Form() {
2373
+ return this.form;
2374
+ }
2375
+ get actions() {
2376
+ if (!this.form) {
2377
+ return [];
2378
+ }
2379
+ if (this.form.valid) {
2380
+ this.props.actions.state = ComponentStates.ENABLED;
2381
+ }
2382
+ if (this.props.state === ComponentStates.WORKING) {
2383
+ this.props.actions.state = ComponentStates.WORKING;
2384
+ }
2385
+ if (this.props.state === ComponentStates.ENABLED) {
2386
+ this.props.actions.state = ComponentStates.ENABLED;
2387
+ }
2388
+ if (this.props.state === ComponentStates.DISABLED) {
2389
+ this.props.actions.state = ComponentStates.DISABLED;
2390
+ }
2391
+ return [this.props.actions];
2392
+ }
2393
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormComponent, deps: [{ token: i1$1.FormBuilder }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
2394
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormComponent, isStandalone: true, selector: "val-form", inputs: { props: "props" }, outputs: { onSubmit: "onSubmit", onInvalid: "onInvalid" }, ngImport: i0, template: `
2395
+ <div class="container">
2396
+ <form [formGroup]="form">
2397
+ <val-display
2398
+ [props]="{
2399
+ content: props.name,
2400
+ color: 'dark',
2401
+ size: 'large',
2402
+ }"
2403
+ ></val-display>
2404
+ <div class="section" *ngFor="let s of props.sections">
2405
+ <val-title [props]="{ content: s.name, size: 'large', color: '', bold: false }"></val-title>
2406
+ <div class="input" *ngFor="let f of s.fields">
2407
+ <val-title [props]="{ content: f.label, size: 'small', color: 'dark', bold: false }"></val-title>
2408
+ <ng-container *ngIf="f.type === types.TEXT">
2409
+ <val-text-input [props]="getFieldProp(f)"></val-text-input>
2410
+ </ng-container>
2411
+ <ng-container *ngIf="f.type === types.CHECK">
2412
+ <val-check-input></val-check-input>
2413
+ </ng-container>
2414
+ <ng-container *ngIf="f.type === types.COMMENT">
2415
+ <val-comment-input [props]="getFieldProp(f)"></val-comment-input>
2416
+ </ng-container>
2417
+ <ng-container *ngIf="f.type === types.DATE">
2418
+ <val-date-input [props]="getFieldProp(f)"></val-date-input>
2419
+ </ng-container>
2420
+ <ng-container *ngIf="f.type === types.EMAIL">
2421
+ <val-email-input [props]="getFieldProp(f)"></val-email-input>
2422
+ </ng-container>
2423
+ <ng-container *ngIf="f.type === types.FILE">
2424
+ <val-file-input [props]="getFieldProp(f)"></val-file-input>
2425
+ </ng-container>
2426
+ <ng-container *ngIf="f.type === types.HOUR">
2427
+ <val-hour-input [props]="getFieldProp(f)"></val-hour-input>
2428
+ </ng-container>
2429
+ <ng-container *ngIf="f.type === types.NUMBER">
2430
+ <val-number-input [props]="getFieldProp(f)"></val-number-input>
2431
+ </ng-container>
2432
+ <ng-container *ngIf="f.type === types.PASSWORD">
2433
+ <val-password-input [props]="getFieldProp(f)"></val-password-input>
2434
+ </ng-container>
2435
+ <ng-container *ngIf="f.type === types.PIN_CODE">
2436
+ <val-pin-input [props]="getFieldProp(f)"></val-pin-input>
2437
+ </ng-container>
2438
+ <ng-container *ngIf="f.type === types.RADIO">
2439
+ <val-radio-input [props]="getFieldProp(f)"></val-radio-input>
2440
+ </ng-container>
2441
+ <ng-container *ngIf="f.type === types.SELECT">
2442
+ <!-- <val-select-input></val-select-input> -->
2443
+ </ng-container>
2444
+ <val-hint [props]="getFieldProp(f)"></val-hint>
2445
+ </div>
2446
+ <val-divider [props]="{ fill: 'solid', size: 'medium', color: 'medium' }"></val-divider>
2447
+ </div>
2448
+ <val-button-group
2449
+ [props]="{ buttons: actions, position: 'center', columned: false }"
2450
+ (onClick)="submitHandler($event)"
2451
+ ></val-button-group>
2452
+ </form>
2453
+ </div>
2454
+ `, isInline: true, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextInputComponent, selector: "val-text-input", inputs: ["props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input" }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: HintComponent, selector: "val-hint", inputs: ["props"] }, { kind: "component", type: CommentInputComponent, selector: "val-comment-input", inputs: ["props"] }, { kind: "component", type: DateInputComponent, selector: "val-date-input", inputs: ["props"] }, { kind: "component", type: FileInputComponent, selector: "val-file-input", inputs: ["props"] }, { kind: "component", type: HourInputComponent, selector: "val-hour-input", inputs: ["props"] }, { kind: "component", type: EmailInputComponent, selector: "val-email-input", inputs: ["props"] }, { kind: "component", type: NumberInputComponent, selector: "val-number-input", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: PasswordInputComponent, selector: "val-password-input", inputs: ["props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }] }); }
2455
+ }
2456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormComponent, decorators: [{
2457
+ type: Component,
2458
+ args: [{ selector: 'val-form', standalone: true, imports: [
2459
+ CommonModule,
2460
+ ReactiveFormsModule,
2461
+ DisplayComponent,
2462
+ TitleComponent,
2463
+ TextInputComponent,
2464
+ CheckInputComponent,
2465
+ ButtonGroupComponent,
2466
+ DividerComponent,
2467
+ HintComponent,
2468
+ CommentInputComponent,
2469
+ DateInputComponent,
2470
+ FileInputComponent,
2471
+ HourInputComponent,
2472
+ EmailInputComponent,
2473
+ NumberInputComponent,
2474
+ RadioInputComponent,
2475
+ PasswordInputComponent,
2476
+ PinInputComponent,
2477
+ ], template: `
2478
+ <div class="container">
2479
+ <form [formGroup]="form">
2480
+ <val-display
2481
+ [props]="{
2482
+ content: props.name,
2483
+ color: 'dark',
2484
+ size: 'large',
2485
+ }"
2486
+ ></val-display>
2487
+ <div class="section" *ngFor="let s of props.sections">
2488
+ <val-title [props]="{ content: s.name, size: 'large', color: '', bold: false }"></val-title>
2489
+ <div class="input" *ngFor="let f of s.fields">
2490
+ <val-title [props]="{ content: f.label, size: 'small', color: 'dark', bold: false }"></val-title>
2491
+ <ng-container *ngIf="f.type === types.TEXT">
2492
+ <val-text-input [props]="getFieldProp(f)"></val-text-input>
2493
+ </ng-container>
2494
+ <ng-container *ngIf="f.type === types.CHECK">
2495
+ <val-check-input></val-check-input>
2496
+ </ng-container>
2497
+ <ng-container *ngIf="f.type === types.COMMENT">
2498
+ <val-comment-input [props]="getFieldProp(f)"></val-comment-input>
2499
+ </ng-container>
2500
+ <ng-container *ngIf="f.type === types.DATE">
2501
+ <val-date-input [props]="getFieldProp(f)"></val-date-input>
2502
+ </ng-container>
2503
+ <ng-container *ngIf="f.type === types.EMAIL">
2504
+ <val-email-input [props]="getFieldProp(f)"></val-email-input>
2505
+ </ng-container>
2506
+ <ng-container *ngIf="f.type === types.FILE">
2507
+ <val-file-input [props]="getFieldProp(f)"></val-file-input>
2508
+ </ng-container>
2509
+ <ng-container *ngIf="f.type === types.HOUR">
2510
+ <val-hour-input [props]="getFieldProp(f)"></val-hour-input>
2511
+ </ng-container>
2512
+ <ng-container *ngIf="f.type === types.NUMBER">
2513
+ <val-number-input [props]="getFieldProp(f)"></val-number-input>
2514
+ </ng-container>
2515
+ <ng-container *ngIf="f.type === types.PASSWORD">
2516
+ <val-password-input [props]="getFieldProp(f)"></val-password-input>
2517
+ </ng-container>
2518
+ <ng-container *ngIf="f.type === types.PIN_CODE">
2519
+ <val-pin-input [props]="getFieldProp(f)"></val-pin-input>
2520
+ </ng-container>
2521
+ <ng-container *ngIf="f.type === types.RADIO">
2522
+ <val-radio-input [props]="getFieldProp(f)"></val-radio-input>
2523
+ </ng-container>
2524
+ <ng-container *ngIf="f.type === types.SELECT">
2525
+ <!-- <val-select-input></val-select-input> -->
2526
+ </ng-container>
2527
+ <val-hint [props]="getFieldProp(f)"></val-hint>
2528
+ </div>
2529
+ <val-divider [props]="{ fill: 'solid', size: 'medium', color: 'medium' }"></val-divider>
2530
+ </div>
2531
+ <val-button-group
2532
+ [props]="{ buttons: actions, position: 'center', columned: false }"
2533
+ (onClick)="submitHandler($event)"
2534
+ ></val-button-group>
2535
+ </form>
2536
+ </div>
2537
+ `, styles: [".section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"] }]
2538
+ }], ctorParameters: () => [{ type: i1$1.FormBuilder }, { type: i0.ElementRef }], propDecorators: { props: [{
2539
+ type: Input
2540
+ }], onSubmit: [{
2541
+ type: Output
2542
+ }], onInvalid: [{
2543
+ type: Output
2544
+ }] } });
2545
+
2546
+ class HeaderComponent {
2547
+ constructor() {
2548
+ this.onClick = new EventEmitter();
2549
+ }
2550
+ ngOnInit() { }
2551
+ clickHandler(token) {
2552
+ this.onClick.emit(token);
2553
+ }
2554
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2555
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HeaderComponent, isStandalone: true, selector: "val-header", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
2556
+ <ion-header [class.ion-no-border]="!props.bordered" [translucent]="props.translucent">
2557
+ <val-toolbar [props]="props.toolbar" (onClick)="clickHandler($event)"></val-toolbar>
2558
+ </ion-header>
2559
+ `, isInline: true, styles: [""], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: ToolbarComponent, selector: "val-toolbar", inputs: ["props"], outputs: ["onClick"] }] }); }
2560
+ }
2561
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HeaderComponent, decorators: [{
2562
+ type: Component,
2563
+ args: [{ selector: 'val-header', standalone: true, imports: [NgClass, IonHeader, ToolbarComponent], template: `
2564
+ <ion-header [class.ion-no-border]="!props.bordered" [translucent]="props.translucent">
2565
+ <val-toolbar [props]="props.toolbar" (onClick)="clickHandler($event)"></val-toolbar>
2566
+ </ion-header>
2567
+ ` }]
2568
+ }], ctorParameters: () => [], propDecorators: { props: [{
2569
+ type: Input
2570
+ }], onClick: [{
2571
+ type: Output
2572
+ }] } });
2573
+
2574
+ class NoContentComponent {
2575
+ constructor() {
2576
+ this.onClick = new EventEmitter();
2577
+ }
2578
+ ngOnInit() { }
2579
+ onClickHandler(token) {
2580
+ this.onClick.emit(token);
2581
+ }
2582
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2583
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NoContentComponent, isStandalone: true, selector: "val-no-content", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
2584
+ <val-image class="image-container" [props]="props.image"></val-image>
2585
+ <div>
2586
+ <val-banner [props]="props.content" (onClick)="onClickHandler($event)"></val-banner>
2587
+ </div>
2588
+ `, isInline: true, styles: [".image-container{display:flex;justify-content:center;margin-bottom:1rem}val-image .image{margin:0 auto}\n"], dependencies: [{ kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }, { kind: "component", type: BannerComponent, selector: "val-banner", inputs: ["props"], outputs: ["onClick", "onClose"] }] }); }
2589
+ }
2590
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoContentComponent, decorators: [{
2591
+ type: Component,
2592
+ args: [{ selector: 'val-no-content', standalone: true, imports: [ImageComponent, BannerComponent], template: `
2593
+ <val-image class="image-container" [props]="props.image"></val-image>
2594
+ <div>
2595
+ <val-banner [props]="props.content" (onClick)="onClickHandler($event)"></val-banner>
2596
+ </div>
2597
+ `, styles: [".image-container{display:flex;justify-content:center;margin-bottom:1rem}val-image .image{margin:0 auto}\n"] }]
2598
+ }], ctorParameters: () => [], propDecorators: { props: [{
2599
+ type: Input
2600
+ }], onClick: [{
2601
+ type: Output
2602
+ }] } });
2603
+
2604
+ var MOTION;
2605
+ (function (MOTION) {
2606
+ MOTION[MOTION["BACKWARD"] = 0] = "BACKWARD";
2607
+ MOTION[MOTION["FORWARD"] = 1] = "FORWARD";
2608
+ MOTION[MOTION["RETRY"] = 2] = "RETRY";
2609
+ })(MOTION || (MOTION = {}));
2610
+
2611
+ class WizardFooterComponent {
2612
+ constructor() {
2613
+ this.onClick = new EventEmitter();
2614
+ this.wrapperId = 'wizard-wrapper';
2615
+ }
2616
+ ngOnInit() { }
2617
+ clickHandler(token) {
2618
+ if (!token) {
2619
+ return;
2620
+ }
2621
+ if (token.includes('right')) {
2622
+ this.tryToStep(MOTION.FORWARD);
2623
+ }
2624
+ if (token.includes('left')) {
2625
+ this.tryToStep(MOTION.BACKWARD);
2626
+ }
2627
+ }
2628
+ get Current() {
2629
+ return this.props.steps[this.props.current];
2630
+ }
2631
+ get Progress() {
2632
+ if (this.props.steps && this.props.current) {
2633
+ return this.props.current / Object.keys(this.props.steps).length;
2634
+ }
2635
+ return 0;
2636
+ }
2637
+ get actions() {
2638
+ if (this.props.state === ComponentStates.ERROR && this.Current.buttons.length > 1) {
2639
+ this.Current.buttons[1].state = ComponentStates.DISABLED;
2640
+ }
2641
+ if (this.props.current === 1 && this.Current.buttons.length > 1) {
2642
+ return [this.Current.buttons[1]];
2643
+ }
2644
+ return this.Current.buttons;
2645
+ }
2646
+ tryToStep(motion) {
2647
+ this.onClick.emit({ current: this.props.current, motion });
2648
+ }
2649
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2650
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardFooterComponent, isStandalone: true, selector: "val-wizard-footer", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
2651
+ <val-footer
2652
+ [props]="{
2653
+ bordered: false,
2654
+ translucent: false,
2655
+ toolbar: {
2656
+ title: '',
2657
+ actions: [],
2658
+ color: 'background',
2659
+ withBack: false,
2660
+ withActions: false,
2661
+ },
2662
+ }"
2663
+ >
2664
+ <val-progress-bar
2665
+ extra
2666
+ [props]="{ progress: Progress, color: '', type: 'determinate', buffer: 1, size: 'small', rounded: false }"
2667
+ ></val-progress-bar>
2668
+ <val-button-group
2669
+ extra
2670
+ [props]="{ buttons: actions, position: 'left', columned: false }"
2671
+ position="spaced"
2672
+ (onClick)="clickHandler($event)"
2673
+ ></val-button-group>
2674
+ </val-footer>
2675
+ `, isInline: true, styles: [""], dependencies: [{ kind: "component", type: FooterComponent, selector: "val-footer", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ProgressBarComponent, selector: "val-progress-bar", inputs: ["props"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }] }); }
2676
+ }
2677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardFooterComponent, decorators: [{
2678
+ type: Component,
2679
+ args: [{ selector: 'val-wizard-footer', standalone: true, imports: [FooterComponent, ProgressBarComponent, ButtonGroupComponent], template: `
2680
+ <val-footer
2681
+ [props]="{
2682
+ bordered: false,
2683
+ translucent: false,
2684
+ toolbar: {
2685
+ title: '',
2686
+ actions: [],
2687
+ color: 'background',
2688
+ withBack: false,
2689
+ withActions: false,
2690
+ },
2691
+ }"
2692
+ >
2693
+ <val-progress-bar
2694
+ extra
2695
+ [props]="{ progress: Progress, color: '', type: 'determinate', buffer: 1, size: 'small', rounded: false }"
2696
+ ></val-progress-bar>
2697
+ <val-button-group
2698
+ extra
2699
+ [props]="{ buttons: actions, position: 'left', columned: false }"
2700
+ position="spaced"
2701
+ (onClick)="clickHandler($event)"
2702
+ ></val-button-group>
2703
+ </val-footer>
2704
+ ` }]
2705
+ }], ctorParameters: () => [], propDecorators: { props: [{
2706
+ type: Input
2707
+ }], onClick: [{
2708
+ type: Output
2709
+ }] } });
2710
+
2711
+ class WizardComponent {
2712
+ constructor() {
2713
+ this.onClick = new EventEmitter();
2714
+ this.wrapperId = 'wizard-wrapper';
2715
+ }
2716
+ ngOnInit() { }
2717
+ working() {
2718
+ this.props.state = ComponentStates.WORKING;
2719
+ this.Current.buttons.map(x => {
2720
+ x.state = ComponentStates.DISABLED;
2721
+ });
2722
+ }
2723
+ done() {
2724
+ if (this.props.state === ComponentStates.ENABLED) {
2725
+ return;
2726
+ }
2727
+ this.props.state = ComponentStates.ENABLED;
2728
+ this.Current.buttons.map(x => {
2729
+ x.state = ComponentStates.ENABLED;
2730
+ });
2731
+ }
2732
+ get Current() {
2733
+ return this.props.steps[this.props.current];
2734
+ }
2735
+ setCurrent(newStep) {
2736
+ if (newStep === this.props.current) {
2737
+ return;
2738
+ }
2739
+ this.props.current = newStep;
2740
+ goToTop(this.wrapperId);
2741
+ }
2742
+ setError(error) {
2743
+ if (this.props.state === ComponentStates.ERROR) {
2744
+ return;
2745
+ }
2746
+ this.props.error.titles.content.content.bellowTitle.text = error;
2747
+ this.props.state = ComponentStates.ERROR;
2748
+ goToTop(this.wrapperId);
2749
+ }
2750
+ reset() {
2751
+ this.props.error.titles.content.content.bellowTitle.text = '';
2752
+ this.done();
2753
+ }
2754
+ clickHandler(token) {
2755
+ if (!token) {
2756
+ return;
2757
+ }
2758
+ if (token.includes('retry')) {
2759
+ this.reset();
2760
+ }
2761
+ this.onClick.emit({ current: this.props.current, motion: MOTION.RETRY });
2762
+ }
2763
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2764
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardComponent, isStandalone: true, selector: "val-wizard", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
2765
+ <div [id]="wrapperId" class="wrapper">
2766
+ <ng-container *ngIf="props.state !== 'ERROR'">
2767
+ <val-no-content [props]="Current.titles"></val-no-content>
2768
+ <div class="step">
2769
+ <div *ngIf="props.state === 'WORKING'">
2770
+ <val-content-loader color="dark" size="large" text="Por favor espere..."></val-content-loader>
2771
+ </div>
2772
+ <ng-content select="[step]"></ng-content>
2773
+ </div>
2774
+ </ng-container>
2775
+ <ng-container *ngIf="props.state === 'ERROR'">
2776
+ <val-no-content [props]="props.error.titles" (onClick)="clickHandler($event)"></val-no-content>
2777
+ </ng-container>
2778
+ </div>
2779
+ `, isInline: true, styles: [".wrapper{height:auto;display:flex;flex-direction:column;justify-content:space-between;position:relative}.step{min-height:9.375rem;margin:16px 0;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NoContentComponent, selector: "val-no-content", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ContentLoaderComponent, selector: "val-content-loader", inputs: ["props"] }] }); }
2780
+ }
2781
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardComponent, decorators: [{
2782
+ type: Component,
2783
+ args: [{ selector: 'val-wizard', standalone: true, imports: [CommonModule, NoContentComponent, ContentLoaderComponent], template: `
2784
+ <div [id]="wrapperId" class="wrapper">
2785
+ <ng-container *ngIf="props.state !== 'ERROR'">
2786
+ <val-no-content [props]="Current.titles"></val-no-content>
2787
+ <div class="step">
2788
+ <div *ngIf="props.state === 'WORKING'">
2789
+ <val-content-loader color="dark" size="large" text="Por favor espere..."></val-content-loader>
2790
+ </div>
2791
+ <ng-content select="[step]"></ng-content>
2792
+ </div>
2793
+ </ng-container>
2794
+ <ng-container *ngIf="props.state === 'ERROR'">
2795
+ <val-no-content [props]="props.error.titles" (onClick)="clickHandler($event)"></val-no-content>
2796
+ </ng-container>
2797
+ </div>
2798
+ `, styles: [".wrapper{height:auto;display:flex;flex-direction:column;justify-content:space-between;position:relative}.step{min-height:9.375rem;margin:16px 0;text-align:center}\n"] }]
2799
+ }], ctorParameters: () => [], propDecorators: { props: [{
2800
+ type: Input
2801
+ }], onClick: [{
2802
+ type: Output
2803
+ }] } });
2804
+
2805
+ class LayoutComponent {
2806
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2807
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LayoutComponent, isStandalone: true, selector: "val-layout", ngImport: i0, template: `
2808
+ <div class="layout-container">
2809
+ <ng-content></ng-content>
2810
+ </div>
2811
+ `, isInline: true, styles: [".layout-container{margin:0 auto;padding:0 1rem;width:100%;box-sizing:border-box;margin-bottom:1rem}@media (max-width: 768px){.layout-container{max-width:100%}}@media (min-width: 768px){.layout-container{max-width:60rem;margin-bottom:1.5rem}}@media (min-width: 1200px){.layout-container{max-width:75rem}}\n"] }); }
2812
+ }
2813
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutComponent, decorators: [{
2814
+ type: Component,
2815
+ args: [{ selector: 'val-layout', standalone: true, imports: [], template: `
2816
+ <div class="layout-container">
2817
+ <ng-content></ng-content>
2818
+ </div>
2819
+ `, styles: [".layout-container{margin:0 auto;padding:0 1rem;width:100%;box-sizing:border-box;margin-bottom:1rem}@media (max-width: 768px){.layout-container{max-width:100%}}@media (min-width: 768px){.layout-container{max-width:60rem;margin-bottom:1.5rem}}@media (min-width: 1200px){.layout-container{max-width:75rem}}\n"] }]
2820
+ }] });
2821
+
2822
+ class SimpleComponent {
2823
+ constructor() {
2824
+ this.onClick = new EventEmitter();
2825
+ }
2826
+ onClickHandler(token) {
2827
+ this.onClick.emit(token);
2828
+ }
2829
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2830
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SimpleComponent, isStandalone: true, selector: "val-simple", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
2831
+ <val-header [props]="props.header" />
2832
+
2833
+ <ion-content [fullscreen]="true">
2834
+ <ion-header collapse="condense">
2835
+ <ion-toolbar>
2836
+ <ion-title size="large">{{ props.pageTitle }}</ion-title>
2837
+ </ion-toolbar>
2838
+ </ion-header>
2839
+ <div class="description-container" *ngIf="props.pageDescription">
2840
+ <ion-text>
2841
+ <p class="description">{{ props.pageDescription }}</p>
2842
+ </ion-text>
2843
+ <val-link *ngIf="props.link" [props]="props.link" (onClick)="onClickHandler($event)" )></val-link>
2844
+ </div>
2845
+ <val-divider *ngIf="props.withDivider" [props]="{ fill: 'solid', size: 'medium', color: 'dark' }" />
2846
+ <val-layout>
2847
+ <ng-content></ng-content>
2848
+ </val-layout>
2849
+ </ion-content>
2850
+ `, isInline: true, styles: [".layout-container{margin:0 auto;padding:0 1rem;width:100%;box-sizing:border-box;margin-bottom:1rem}@media (max-width: 768px){.layout-container{max-width:100%}}@media (min-width: 768px){.layout-container{max-width:60rem;margin-bottom:1.5rem}}@media (min-width: 1200px){.layout-container{max-width:75rem}}.description-container{padding-left:.5rem}.description{padding-left:1rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: LayoutComponent, selector: "val-layout" }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: LinkComponent, selector: "val-link", inputs: ["props"], outputs: ["onClick"] }] }); }
2851
+ }
2852
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleComponent, decorators: [{
2853
+ type: Component,
2854
+ args: [{ selector: 'val-simple', standalone: true, imports: [
2855
+ NgIf,
2856
+ IonHeader,
2857
+ IonToolbar,
2858
+ IonTitle,
2859
+ IonText,
2860
+ IonContent,
2861
+ ButtonComponent,
2862
+ HeaderComponent,
2863
+ LayoutComponent,
2864
+ DividerComponent,
2865
+ LinkComponent,
2866
+ ], template: `
2867
+ <val-header [props]="props.header" />
2868
+
2869
+ <ion-content [fullscreen]="true">
2870
+ <ion-header collapse="condense">
2871
+ <ion-toolbar>
2872
+ <ion-title size="large">{{ props.pageTitle }}</ion-title>
2873
+ </ion-toolbar>
2874
+ </ion-header>
2875
+ <div class="description-container" *ngIf="props.pageDescription">
2876
+ <ion-text>
2877
+ <p class="description">{{ props.pageDescription }}</p>
2878
+ </ion-text>
2879
+ <val-link *ngIf="props.link" [props]="props.link" (onClick)="onClickHandler($event)" )></val-link>
2880
+ </div>
2881
+ <val-divider *ngIf="props.withDivider" [props]="{ fill: 'solid', size: 'medium', color: 'dark' }" />
2882
+ <val-layout>
2883
+ <ng-content></ng-content>
2884
+ </val-layout>
2885
+ </ion-content>
2886
+ `, styles: [".layout-container{margin:0 auto;padding:0 1rem;width:100%;box-sizing:border-box;margin-bottom:1rem}@media (max-width: 768px){.layout-container{max-width:100%}}@media (min-width: 768px){.layout-container{max-width:60rem;margin-bottom:1.5rem}}@media (min-width: 1200px){.layout-container{max-width:75rem}}.description-container{padding-left:.5rem}.description{padding-left:1rem}\n"] }]
2887
+ }], propDecorators: { props: [{
2888
+ type: Input
2889
+ }], onClick: [{
2890
+ type: Output
2891
+ }] } });
2892
+
2893
+ class TextContent {
2894
+ constructor(text) {
2895
+ this.text = text;
2896
+ }
2897
+ get Content() {
2898
+ return this.text;
2899
+ }
2900
+ }
2901
+ var LangOption;
2902
+ (function (LangOption) {
2903
+ LangOption["ES"] = "es";
2904
+ LangOption["EN"] = "en";
2905
+ })(LangOption || (LangOption = {}));
2906
+
2907
+ class LocalStorageService {
2908
+ static set(reference, value) {
2909
+ localStorage.setItem(reference, JSON.stringify(value));
2910
+ }
2911
+ static get(reference) {
2912
+ const value = localStorage.getItem(reference);
2913
+ return JSON.parse(value);
2914
+ }
2915
+ static remove(reference) {
2916
+ localStorage.removeItem(reference);
2917
+ }
2918
+ static clear() {
2919
+ localStorage.clear();
2920
+ }
2921
+ }
2922
+
2923
+ const LANG = 'LANG';
2924
+ const THEME = 'THEME';
2925
+
2926
+ const ValtechConfigService = new InjectionToken('ValtechConfig');
2927
+
2928
+ class LangService {
2929
+ constructor(config) {
2930
+ this.default = LangOption.ES;
2931
+ console.log('injected config: ', config);
2932
+ this.content = config.content;
2933
+ this.config = config;
2934
+ const current = LocalStorageService.get(LANG);
2935
+ this.selectedLang = new BehaviorSubject(current || this.default);
2936
+ }
2937
+ Text(className) {
2938
+ return this.content[className].Content[this.selectedLang.value];
2939
+ }
2940
+ get Lang() {
2941
+ return this.selectedLang.value;
2942
+ }
2943
+ set Lang(lang) {
2944
+ this.selectedLang.next(lang);
2945
+ LocalStorageService.set(LANG, lang);
2946
+ }
2947
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LangService, deps: [{ token: ValtechConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2948
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LangService, providedIn: 'root' }); }
2949
+ }
2950
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LangService, decorators: [{
2951
+ type: Injectable,
2952
+ args: [{
2953
+ providedIn: 'root',
2954
+ }]
2955
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
2956
+ type: Inject,
2957
+ args: [ValtechConfigService]
2958
+ }] }] });
2959
+
2960
+ var ThemeOption;
2961
+ (function (ThemeOption) {
2962
+ ThemeOption["LIGHT"] = "light";
2963
+ ThemeOption["DARK"] = "dark";
2964
+ ThemeOption["AUTO"] = "auto";
2965
+ })(ThemeOption || (ThemeOption = {}));
2966
+ class ThemeService {
2967
+ constructor() {
2968
+ this.lightToggle = false;
2969
+ this.darkToggle = false;
2970
+ this.autoToggle = false;
2971
+ this.currentOption = ThemeOption.AUTO;
2972
+ this.themeOptions = ThemeOption;
2973
+ this.prefersDark = false;
2974
+ this.default = ThemeOption.AUTO;
2975
+ const current = LocalStorageService.get(THEME);
2976
+ console.log('💡 ThemeConfig current::: ', current);
2977
+ this.theme = new BehaviorSubject(current || this.default);
2978
+ this.currentOption = this.Theme;
2979
+ console.log('💡 ThemeConfig this.currentOption::: ', this.currentOption);
2980
+ this.toggleUserPreference(this.currentOption);
2981
+ const prefersDarkQuery = window.matchMedia('(prefers-color-scheme: dark)');
2982
+ this.prefersDark = prefersDarkQuery.matches;
2983
+ this.handleAutoConfiguration();
2984
+ prefersDarkQuery.addEventListener('change', mediaQuery => {
2985
+ console.log('💡 ThemeConfig addEventListener change::: ', mediaQuery);
2986
+ this.prefersDark = mediaQuery.matches;
2987
+ this.handleAutoConfiguration();
2988
+ });
2989
+ }
2990
+ handleAutoConfiguration() {
2991
+ if (this.prefersDark && this.currentOption === ThemeOption.AUTO) {
2992
+ console.log('💡 ThemeConfig prefersDark::: ', this.prefersDark);
2993
+ this.toggleUserPreference(ThemeOption.AUTO);
2994
+ }
2995
+ if (!this.prefersDark && this.currentOption === ThemeOption.AUTO) {
2996
+ console.log('💡 ThemeConfig prefersDark::: ', this.prefersDark);
2997
+ this.toggleUserPreference(ThemeOption.AUTO);
2998
+ }
2999
+ }
3000
+ handleDarkPreference() {
3001
+ this.toggleTheme(ThemeOption.DARK, true);
3002
+ this.toggleTheme(ThemeOption.LIGHT, false);
3003
+ }
3004
+ handleLightPreference() {
3005
+ this.toggleTheme(ThemeOption.LIGHT, true);
3006
+ this.toggleTheme(ThemeOption.DARK, false);
3007
+ }
3008
+ get Theme() {
3009
+ return this.theme.value;
3010
+ }
3011
+ set Theme(theme) {
3012
+ this.theme.next(theme);
3013
+ LocalStorageService.set(THEME, theme);
3014
+ }
3015
+ toggleTheme(name, shouldAdd) {
3016
+ console.log('toggleTheme::: ', name, shouldAdd);
3017
+ document.body.classList.toggle(name, shouldAdd);
3018
+ }
3019
+ toggleUserPreference(option) {
3020
+ this.currentOption = option;
3021
+ this.Theme = option;
3022
+ this.lightToggle = option === ThemeOption.LIGHT;
3023
+ this.darkToggle = option === ThemeOption.DARK;
3024
+ this.autoToggle = option === ThemeOption.AUTO;
3025
+ switch (option) {
3026
+ case ThemeOption.LIGHT:
3027
+ this.handleLightPreference();
3028
+ break;
3029
+ case ThemeOption.DARK:
3030
+ this.handleDarkPreference();
3031
+ break;
3032
+ case ThemeOption.AUTO:
3033
+ if (this.prefersDark) {
3034
+ this.handleDarkPreference();
3035
+ }
3036
+ else {
3037
+ this.handleLightPreference();
3038
+ }
3039
+ break;
3040
+ }
3041
+ }
3042
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3043
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ThemeService, providedIn: 'root' }); }
3044
+ }
3045
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ThemeService, decorators: [{
3046
+ type: Injectable,
3047
+ args: [{
3048
+ providedIn: 'root',
3049
+ }]
3050
+ }], ctorParameters: () => [] });
3051
+
3052
+ /*
3053
+ * Public API Surface of valtech-components
3054
+ */
3055
+ /*
3056
+ * Public API Surface of valtech-components
3057
+ */
3058
+
3059
+ /**
3060
+ * Generated bundle index. Do not edit.
3061
+ */
3062
+
3063
+ export { ActionType, AlertBoxComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CardSection, CardType, CheckInputComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CommentInputComponent, ComponentStates, ContentLoaderComponent, DateInputComponent, DisplayComponent, DividerComponent, DownloadService, EmailInputComponent, FileInputComponent, FooterComponent, FormComponent, FormFooterComponent, HeaderComponent, HintComponent, HourInputComponent, HrefComponent, Icon, IconComponent, ImageComponent, InputType, LangOption, LangService, LayoutComponent, LinkComponent, LinksCakeComponent, LocalStorageService, MOTION, NoContentComponent, NotesBoxComponent, NumberInputComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PasswordInputComponent, PinInputComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProgressBarComponent, ProgressStatusComponent, PrompterComponent, RadioInputComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SimpleComponent, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, TextComponent, TextContent, TextInputComponent, ThemeOption, ThemeService, TitleBlockComponent, TitleComponent, ToolbarActionType, ToolbarComponent, ValtechConfigService, WizardComponent, WizardFooterComponent, goToTop, isAtEnd, maxLength };
3064
+ //# sourceMappingURL=valtech-components.mjs.map