valtech-components 2.0.62 → 2.0.64

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