ngx-vector-components 4.70.1 → 4.70.3

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 (308) hide show
  1. package/CHANGELOG.md +1040 -1029
  2. package/README.md +35 -35
  3. package/assets/icons/chevron_down_icon.svg +3 -3
  4. package/assets/icons/home_menu_icon.svg +3 -3
  5. package/assets/icons/logout_icon.svg +9 -9
  6. package/assets/icons/menu_footer_icon.svg +3 -3
  7. package/assets/icons/menu_hamburguer_icon.svg +3 -3
  8. package/assets/icons/terms_of_use_icon.svg +9 -9
  9. package/assets/icons/vector_admin_icon.svg +4 -4
  10. package/assets/icons/vector_fintech_icon.svg +3 -3
  11. package/assets/icons/vector_logtech_icon.svg +6 -6
  12. package/assets/icons/vector_marketplace_icon.svg +3 -3
  13. package/assets/images/bunge_logo.svg +23 -23
  14. package/assets/images/cofco_logo.svg +117 -117
  15. package/assets/images/emote_bad.svg +6 -6
  16. package/assets/images/emote_cool.svg +5 -5
  17. package/assets/images/emote_nice.svg +5 -5
  18. package/assets/images/success_sign.svg +4 -4
  19. package/assets/images/vector-logo-horizontal-inverse-color.svg +13 -13
  20. package/assets/images/vector_logo_horizontal.svg +13 -13
  21. package/assets/images/warn_sign.svg +4 -4
  22. package/assets/styles/_fonts.scss +114 -114
  23. package/assets/styles/_mixins.scss +7 -7
  24. package/assets/styles/_primeng-custom-theme.scss +978 -978
  25. package/assets/styles/_spinner.scss +35 -35
  26. package/assets/styles/_styles.scss +115 -115
  27. package/assets/styles/_variables.scss +27 -27
  28. package/esm2020/lib/components/badge/badge.component.mjs +39 -39
  29. package/esm2020/lib/components/badge/badge.module.mjs +19 -19
  30. package/esm2020/lib/components/badge/index.mjs +3 -3
  31. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +66 -66
  32. package/esm2020/lib/components/breadcrumb/breadcrumb.module.mjs +18 -18
  33. package/esm2020/lib/components/breadcrumb/index.mjs +3 -3
  34. package/esm2020/lib/components/crud-base/crud-base.component.mjs +47 -47
  35. package/esm2020/lib/components/crud-base/index.mjs +2 -2
  36. package/esm2020/lib/components/crud-footer/crud-footer.component.mjs +32 -32
  37. package/esm2020/lib/components/crud-footer/crud-footer.module.mjs +20 -20
  38. package/esm2020/lib/components/crud-footer/index.mjs +3 -3
  39. package/esm2020/lib/components/crud-header/crud-header.component.mjs +30 -30
  40. package/esm2020/lib/components/crud-header/crud-header.module.mjs +19 -19
  41. package/esm2020/lib/components/crud-header/index.mjs +3 -3
  42. package/esm2020/lib/components/crud-history/crud-history.component.mjs +82 -82
  43. package/esm2020/lib/components/crud-history/crud-history.module.mjs +20 -20
  44. package/esm2020/lib/components/crud-history/index.mjs +3 -3
  45. package/esm2020/lib/components/fields/button/button.component.mjs +41 -41
  46. package/esm2020/lib/components/fields/button/index.mjs +2 -2
  47. package/esm2020/lib/components/fields/calendar-field/calendar-field.component.mjs +74 -74
  48. package/esm2020/lib/components/fields/calendar-field/index.mjs +2 -2
  49. package/esm2020/lib/components/fields/checkbox-field/checkbox-field.component.mjs +46 -46
  50. package/esm2020/lib/components/fields/checkbox-field/index.mjs +2 -2
  51. package/esm2020/lib/components/fields/currency-field/currency-field.component.mjs +95 -95
  52. package/esm2020/lib/components/fields/currency-field/index.mjs +2 -2
  53. package/esm2020/lib/components/fields/data-table/data-table.component.mjs +382 -382
  54. package/esm2020/lib/components/fields/data-table/index.mjs +2 -2
  55. package/esm2020/lib/components/fields/dropdown-field/dropdown-field.component.mjs +197 -197
  56. package/esm2020/lib/components/fields/dropdown-field/index.mjs +2 -2
  57. package/esm2020/lib/components/fields/field-error-message/field-error-message.component.mjs +30 -30
  58. package/esm2020/lib/components/fields/field-error-message/index.mjs +2 -2
  59. package/esm2020/lib/components/fields/fields.module.mjs +213 -213
  60. package/esm2020/lib/components/fields/filters/filters.component.mjs +203 -203
  61. package/esm2020/lib/components/fields/filters/index.mjs +2 -2
  62. package/esm2020/lib/components/fields/index.mjs +19 -19
  63. package/esm2020/lib/components/fields/input-number-field/index.mjs +2 -2
  64. package/esm2020/lib/components/fields/input-number-field/input-number-field.component.mjs +85 -85
  65. package/esm2020/lib/components/fields/multiselect-field/index.mjs +2 -2
  66. package/esm2020/lib/components/fields/multiselect-field/multiselect-field.component.mjs +47 -47
  67. package/esm2020/lib/components/fields/percentage-field/index.mjs +2 -2
  68. package/esm2020/lib/components/fields/percentage-field/percentage-field.component.mjs +42 -42
  69. package/esm2020/lib/components/fields/radio-button-field/index.mjs +2 -2
  70. package/esm2020/lib/components/fields/radio-button-field/radio-button-field.component.mjs +48 -48
  71. package/esm2020/lib/components/fields/range-value/index.mjs +2 -2
  72. package/esm2020/lib/components/fields/range-value/range-value.component.mjs +72 -72
  73. package/esm2020/lib/components/fields/search-field/index.mjs +2 -2
  74. package/esm2020/lib/components/fields/search-field/search-field.component.mjs +33 -33
  75. package/esm2020/lib/components/fields/select-button-field/index.mjs +2 -2
  76. package/esm2020/lib/components/fields/select-button-field/select-button-field.component.mjs +20 -20
  77. package/esm2020/lib/components/fields/text-field/index.mjs +2 -2
  78. package/esm2020/lib/components/fields/text-field/text-field.component.mjs +217 -217
  79. package/esm2020/lib/components/fields/textarea-field/index.mjs +2 -2
  80. package/esm2020/lib/components/fields/textarea-field/textarea-field.component.mjs +81 -81
  81. package/esm2020/lib/components/generic-error-modal/generic-error-modal.component.mjs +30 -30
  82. package/esm2020/lib/components/generic-error-modal/generic-error-modal.module.mjs +20 -20
  83. package/esm2020/lib/components/generic-error-modal/index.mjs +3 -3
  84. package/esm2020/lib/components/generic-modal/generic-modal.component.mjs +66 -66
  85. package/esm2020/lib/components/generic-modal/generic-modal.module.mjs +20 -20
  86. package/esm2020/lib/components/generic-modal/index.mjs +3 -3
  87. package/esm2020/lib/components/index.mjs +14 -14
  88. package/esm2020/lib/components/menu/index.mjs +4 -4
  89. package/esm2020/lib/components/menu/menu.component.mjs +305 -305
  90. package/esm2020/lib/components/menu/menu.module.mjs +20 -20
  91. package/esm2020/lib/components/menu/sub-menus-list/sub-menus-list.component.mjs +42 -42
  92. package/esm2020/lib/components/panel/index.mjs +3 -3
  93. package/esm2020/lib/components/panel/panel.component.mjs +15 -15
  94. package/esm2020/lib/components/panel/panel.module.mjs +19 -19
  95. package/esm2020/lib/components/score/index.mjs +3 -3
  96. package/esm2020/lib/components/score/score.component.mjs +17 -17
  97. package/esm2020/lib/components/score/score.module.mjs +16 -16
  98. package/esm2020/lib/components/top-bar/index.mjs +3 -3
  99. package/esm2020/lib/components/top-bar/top-bar.component.mjs +120 -120
  100. package/esm2020/lib/components/top-bar/top-bar.module.mjs +20 -20
  101. package/esm2020/lib/guards/crud-list-has-items.guard.mjs +22 -22
  102. package/esm2020/lib/guards/get-token-by-guid.guard.mjs +54 -54
  103. package/esm2020/lib/guards/has-permission.guard.mjs +27 -27
  104. package/esm2020/lib/guards/index.mjs +6 -6
  105. package/esm2020/lib/guards/role.guard.mjs +24 -24
  106. package/esm2020/lib/guards/token-is-present.guard.mjs +26 -26
  107. package/esm2020/lib/interceptors/http-interceptor.mjs +183 -183
  108. package/esm2020/lib/interceptors/index.mjs +2 -2
  109. package/esm2020/lib/models/app-name.enum.mjs +10 -10
  110. package/esm2020/lib/models/boolean-type.enum.mjs +6 -6
  111. package/esm2020/lib/models/crud-history.model.mjs +3 -3
  112. package/esm2020/lib/models/crud-mode.enum.mjs +7 -7
  113. package/esm2020/lib/models/currency.enum.mjs +7 -7
  114. package/esm2020/lib/models/data-table.model.mjs +23 -23
  115. package/esm2020/lib/models/document-type.enum.mjs +6 -6
  116. package/esm2020/lib/models/filters.model.mjs +2 -2
  117. package/esm2020/lib/models/generic-modal.model.mjs +2 -2
  118. package/esm2020/lib/models/http-response.model.mjs +2 -2
  119. package/esm2020/lib/models/index.mjs +18 -18
  120. package/esm2020/lib/models/ip-info.enum.mjs +2 -2
  121. package/esm2020/lib/models/list-item.model.mjs +2 -2
  122. package/esm2020/lib/models/locale.enum.mjs +7 -7
  123. package/esm2020/lib/models/menu-item.model.mjs +2 -2
  124. package/esm2020/lib/models/message-status.enum.mjs +8 -8
  125. package/esm2020/lib/models/profile.model.mjs +237 -237
  126. package/esm2020/lib/models/role.enum.mjs +5 -5
  127. package/esm2020/lib/models/status.enum.mjs +8 -8
  128. package/esm2020/lib/models/vector-app.model.mjs +2 -2
  129. package/esm2020/lib/models/vector-notification.model.mjs +2 -2
  130. package/esm2020/lib/models/view.enum.mjs +7 -7
  131. package/esm2020/lib/pipes/currency-brl.pipe.mjs +18 -18
  132. package/esm2020/lib/pipes/format-document.pipe.mjs +17 -17
  133. package/esm2020/lib/pipes/index.mjs +9 -9
  134. package/esm2020/lib/pipes/mask.pipe.mjs +21 -21
  135. package/esm2020/lib/pipes/not-hidden.pipe.mjs +16 -16
  136. package/esm2020/lib/pipes/only-active.pipe.mjs +16 -16
  137. package/esm2020/lib/pipes/pipes.module.mjs +50 -50
  138. package/esm2020/lib/pipes/remove-last-child.pipe.mjs +18 -18
  139. package/esm2020/lib/pipes/unread-notifications.pipe.mjs +15 -15
  140. package/esm2020/lib/resolvers/get-selected-crud-item.resolver.mjs +28 -28
  141. package/esm2020/lib/resolvers/index.mjs +2 -2
  142. package/esm2020/lib/services/auth.service.mjs +77 -77
  143. package/esm2020/lib/services/base-dropdown.mjs +2 -2
  144. package/esm2020/lib/services/crud-base.service.mjs +14 -14
  145. package/esm2020/lib/services/enum.service.mjs +43 -43
  146. package/esm2020/lib/services/error-message.service.mjs +16 -16
  147. package/esm2020/lib/services/geolocation.service.mjs +23 -23
  148. package/esm2020/lib/services/index.mjs +13 -13
  149. package/esm2020/lib/services/loading.service.mjs +15 -15
  150. package/esm2020/lib/services/menu.service.mjs +152 -152
  151. package/esm2020/lib/services/modal.service.mjs +15 -15
  152. package/esm2020/lib/services/notifications.service.mjs +64 -64
  153. package/esm2020/lib/services/profile.service.mjs +100 -100
  154. package/esm2020/lib/services/storage.service.mjs +108 -108
  155. package/esm2020/lib/shared/shared.module.mjs +19 -19
  156. package/esm2020/lib/utils/cpf-cnpj-validator.util.mjs +116 -116
  157. package/esm2020/lib/utils/file.util.mjs +15 -15
  158. package/esm2020/lib/utils/index.mjs +8 -8
  159. package/esm2020/lib/utils/mask.util.mjs +76 -76
  160. package/esm2020/lib/utils/object.util.mjs +27 -27
  161. package/esm2020/lib/utils/string.util.mjs +16 -16
  162. package/esm2020/lib/utils/validation.util.mjs +234 -234
  163. package/esm2020/lib/utils/window.util.mjs +9 -9
  164. package/esm2020/ngx-vector-components.mjs +4 -4
  165. package/esm2020/public-api.mjs +9 -9
  166. package/fesm2015/ngx-vector-components.mjs +4465 -4465
  167. package/fesm2015/ngx-vector-components.mjs.map +1 -1
  168. package/fesm2020/ngx-vector-components.mjs +4443 -4443
  169. package/fesm2020/ngx-vector-components.mjs.map +1 -1
  170. package/lib/components/badge/badge.component.d.ts +15 -15
  171. package/lib/components/badge/badge.module.d.ts +9 -9
  172. package/lib/components/badge/index.d.ts +2 -2
  173. package/lib/components/breadcrumb/breadcrumb.component.d.ts +19 -19
  174. package/lib/components/breadcrumb/breadcrumb.module.d.ts +8 -8
  175. package/lib/components/breadcrumb/index.d.ts +2 -2
  176. package/lib/components/crud-base/crud-base.component.d.ts +20 -20
  177. package/lib/components/crud-base/index.d.ts +1 -1
  178. package/lib/components/crud-footer/crud-footer.component.d.ts +13 -13
  179. package/lib/components/crud-footer/crud-footer.module.d.ts +10 -10
  180. package/lib/components/crud-footer/index.d.ts +2 -2
  181. package/lib/components/crud-header/crud-header.component.d.ts +11 -11
  182. package/lib/components/crud-header/crud-header.module.d.ts +9 -9
  183. package/lib/components/crud-header/index.d.ts +2 -2
  184. package/lib/components/crud-history/crud-history.component.d.ts +12 -12
  185. package/lib/components/crud-history/crud-history.module.d.ts +10 -10
  186. package/lib/components/crud-history/index.d.ts +2 -2
  187. package/lib/components/fields/button/button.component.d.ts +17 -17
  188. package/lib/components/fields/button/index.d.ts +1 -1
  189. package/lib/components/fields/calendar-field/calendar-field.component.d.ts +23 -23
  190. package/lib/components/fields/calendar-field/index.d.ts +1 -1
  191. package/lib/components/fields/checkbox-field/checkbox-field.component.d.ts +19 -19
  192. package/lib/components/fields/checkbox-field/index.d.ts +1 -1
  193. package/lib/components/fields/currency-field/currency-field.component.d.ts +31 -31
  194. package/lib/components/fields/currency-field/index.d.ts +1 -1
  195. package/lib/components/fields/data-table/data-table.component.d.ts +81 -81
  196. package/lib/components/fields/data-table/index.d.ts +1 -1
  197. package/lib/components/fields/dropdown-field/dropdown-field.component.d.ts +50 -50
  198. package/lib/components/fields/dropdown-field/index.d.ts +1 -1
  199. package/lib/components/fields/field-error-message/field-error-message.component.d.ts +10 -10
  200. package/lib/components/fields/field-error-message/index.d.ts +1 -1
  201. package/lib/components/fields/fields.module.d.ts +48 -48
  202. package/lib/components/fields/filters/filters.component.d.ts +62 -62
  203. package/lib/components/fields/filters/index.d.ts +1 -1
  204. package/lib/components/fields/index.d.ts +18 -18
  205. package/lib/components/fields/input-number-field/index.d.ts +1 -1
  206. package/lib/components/fields/input-number-field/input-number-field.component.d.ts +28 -28
  207. package/lib/components/fields/multiselect-field/index.d.ts +1 -1
  208. package/lib/components/fields/multiselect-field/multiselect-field.component.d.ts +15 -15
  209. package/lib/components/fields/percentage-field/index.d.ts +1 -1
  210. package/lib/components/fields/percentage-field/percentage-field.component.d.ts +16 -16
  211. package/lib/components/fields/radio-button-field/index.d.ts +1 -1
  212. package/lib/components/fields/radio-button-field/radio-button-field.component.d.ts +25 -25
  213. package/lib/components/fields/range-value/index.d.ts +1 -1
  214. package/lib/components/fields/range-value/range-value.component.d.ts +18 -18
  215. package/lib/components/fields/search-field/index.d.ts +1 -1
  216. package/lib/components/fields/search-field/search-field.component.d.ts +14 -14
  217. package/lib/components/fields/select-button-field/index.d.ts +1 -1
  218. package/lib/components/fields/select-button-field/select-button-field.component.d.ts +9 -9
  219. package/lib/components/fields/text-field/index.d.ts +1 -1
  220. package/lib/components/fields/text-field/text-field.component.d.ts +50 -50
  221. package/lib/components/fields/textarea-field/index.d.ts +1 -1
  222. package/lib/components/fields/textarea-field/textarea-field.component.d.ts +22 -22
  223. package/lib/components/generic-error-modal/generic-error-modal.component.d.ts +14 -14
  224. package/lib/components/generic-error-modal/generic-error-modal.module.d.ts +10 -10
  225. package/lib/components/generic-error-modal/index.d.ts +2 -2
  226. package/lib/components/generic-modal/generic-modal.component.d.ts +24 -24
  227. package/lib/components/generic-modal/generic-modal.module.d.ts +10 -10
  228. package/lib/components/generic-modal/index.d.ts +2 -2
  229. package/lib/components/index.d.ts +13 -13
  230. package/lib/components/menu/index.d.ts +3 -3
  231. package/lib/components/menu/menu.component.d.ts +53 -53
  232. package/lib/components/menu/menu.module.d.ts +10 -10
  233. package/lib/components/menu/sub-menus-list/sub-menus-list.component.d.ts +14 -14
  234. package/lib/components/panel/index.d.ts +2 -2
  235. package/lib/components/panel/panel.component.d.ts +8 -8
  236. package/lib/components/panel/panel.module.d.ts +9 -9
  237. package/lib/components/score/index.d.ts +2 -2
  238. package/lib/components/score/score.component.d.ts +9 -9
  239. package/lib/components/score/score.module.d.ts +7 -7
  240. package/lib/components/top-bar/index.d.ts +2 -2
  241. package/lib/components/top-bar/top-bar.component.d.ts +46 -46
  242. package/lib/components/top-bar/top-bar.module.d.ts +10 -10
  243. package/lib/guards/crud-list-has-items.guard.d.ts +10 -10
  244. package/lib/guards/get-token-by-guid.guard.d.ts +15 -15
  245. package/lib/guards/has-permission.guard.d.ts +13 -13
  246. package/lib/guards/index.d.ts +5 -5
  247. package/lib/guards/role.guard.d.ts +11 -11
  248. package/lib/guards/token-is-present.guard.d.ts +11 -11
  249. package/lib/interceptors/http-interceptor.d.ts +31 -31
  250. package/lib/interceptors/index.d.ts +1 -1
  251. package/lib/models/app-name.enum.d.ts +8 -8
  252. package/lib/models/boolean-type.enum.d.ts +4 -4
  253. package/lib/models/crud-history.model.d.ts +13 -13
  254. package/lib/models/crud-mode.enum.d.ts +5 -5
  255. package/lib/models/currency.enum.d.ts +5 -5
  256. package/lib/models/data-table.model.d.ts +65 -65
  257. package/lib/models/document-type.enum.d.ts +4 -4
  258. package/lib/models/filters.model.d.ts +4 -4
  259. package/lib/models/generic-modal.model.d.ts +13 -13
  260. package/lib/models/http-response.model.d.ts +40 -40
  261. package/lib/models/index.d.ts +17 -17
  262. package/lib/models/ip-info.enum.d.ts +6 -6
  263. package/lib/models/list-item.model.d.ts +6 -6
  264. package/lib/models/locale.enum.d.ts +5 -5
  265. package/lib/models/menu-item.model.d.ts +16 -16
  266. package/lib/models/message-status.enum.d.ts +6 -6
  267. package/lib/models/profile.model.d.ts +258 -258
  268. package/lib/models/role.enum.d.ts +3 -3
  269. package/lib/models/status.enum.d.ts +6 -6
  270. package/lib/models/vector-app.model.d.ts +9 -9
  271. package/lib/models/vector-notification.model.d.ts +8 -8
  272. package/lib/models/view.enum.d.ts +5 -5
  273. package/lib/pipes/currency-brl.pipe.d.ts +7 -7
  274. package/lib/pipes/format-document.pipe.d.ts +7 -7
  275. package/lib/pipes/index.d.ts +8 -8
  276. package/lib/pipes/mask.pipe.d.ts +7 -7
  277. package/lib/pipes/not-hidden.pipe.d.ts +7 -7
  278. package/lib/pipes/only-active.pipe.d.ts +7 -7
  279. package/lib/pipes/pipes.module.d.ts +13 -13
  280. package/lib/pipes/remove-last-child.pipe.d.ts +7 -7
  281. package/lib/pipes/unread-notifications.pipe.d.ts +9 -9
  282. package/lib/resolvers/get-selected-crud-item.resolver.d.ts +10 -10
  283. package/lib/resolvers/index.d.ts +1 -1
  284. package/lib/services/auth.service.d.ts +24 -24
  285. package/lib/services/base-dropdown.d.ts +7 -7
  286. package/lib/services/crud-base.service.d.ts +7 -7
  287. package/lib/services/enum.service.d.ts +13 -13
  288. package/lib/services/error-message.service.d.ts +8 -8
  289. package/lib/services/geolocation.service.d.ts +13 -13
  290. package/lib/services/index.d.ts +12 -12
  291. package/lib/services/loading.service.d.ts +7 -7
  292. package/lib/services/menu.service.d.ts +35 -35
  293. package/lib/services/modal.service.d.ts +7 -7
  294. package/lib/services/notifications.service.d.ts +13 -13
  295. package/lib/services/profile.service.d.ts +26 -26
  296. package/lib/services/storage.service.d.ts +43 -43
  297. package/lib/shared/shared.module.d.ts +10 -10
  298. package/lib/utils/cpf-cnpj-validator.util.d.ts +5 -5
  299. package/lib/utils/file.util.d.ts +4 -4
  300. package/lib/utils/index.d.ts +7 -7
  301. package/lib/utils/mask.util.d.ts +21 -21
  302. package/lib/utils/object.util.d.ts +5 -5
  303. package/lib/utils/string.util.d.ts +4 -4
  304. package/lib/utils/validation.util.d.ts +17 -17
  305. package/lib/utils/window.util.d.ts +4 -4
  306. package/ngx-vector-components.d.ts +5 -5
  307. package/package.json +1 -1
  308. package/public-api.d.ts +8 -8
@@ -1,217 +1,217 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { Subscription } from 'rxjs';
3
- import { DocumentType } from '../../../models';
4
- import { MaskUtil } from '../../../utils';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../button/button.component";
7
- import * as i2 from "primeng/inputmask";
8
- import * as i3 from "../field-error-message/field-error-message.component";
9
- import * as i4 from "@angular/forms";
10
- import * as i5 from "@angular/common";
11
- import * as i6 from "primeng/inputtext";
12
- import * as i7 from "primeng/keyfilter";
13
- export class TextFieldComponent {
14
- constructor() {
15
- this.isRequired = false;
16
- this.label = '';
17
- this.maxlength = '';
18
- this.isPassword = false;
19
- this.numeric = false;
20
- this.decimal = false;
21
- this.onlyText = false;
22
- this.alphaNumeric = false;
23
- this.alphaNumericAndWhitespace = false;
24
- this.autoClear = true;
25
- this.rightIcon = '';
26
- this.centered = false;
27
- this.enableDocumentTypeChoice = false;
28
- this.hiddenErrorMessage = false;
29
- this.blurEvent = new EventEmitter();
30
- this.enterKeyPress = new EventEmitter();
31
- this.focusEvent = new EventEmitter();
32
- this.onDocumentTypeChange = new EventEmitter();
33
- this.isPasswordVisible = false;
34
- this.validateOnly = false;
35
- this.documentTypes = [
36
- {
37
- name: 'CPF',
38
- code: DocumentType.CPF,
39
- },
40
- {
41
- name: 'CNPJ',
42
- code: DocumentType.CNPJ,
43
- },
44
- ];
45
- this.selectedDocumentType = this.documentTypes[1];
46
- this.lastBlurValue = '';
47
- this.lastTypedValue = '';
48
- this.subscription = new Subscription();
49
- this.controlSubscription = new Subscription();
50
- }
51
- set control(_control) {
52
- this._control = _control;
53
- if (this.enableDocumentTypeChoice) {
54
- this.handleInitialDocumentTypeState();
55
- }
56
- if (this.controlSubscription) {
57
- this.controlSubscription.unsubscribe();
58
- this.controlSubscription = new Subscription();
59
- }
60
- this.controlSubscription.add(this.control.valueChanges.subscribe((value) => {
61
- if (this.enableDocumentTypeChoice && !this.lastTypedValue && value?.length > 11) {
62
- this.handleInitialDocumentTypeState();
63
- }
64
- this.lastTypedValue = value;
65
- }));
66
- }
67
- get placeholder() {
68
- if (!this.label) {
69
- return '';
70
- }
71
- return `${this.label}${this.isRequired ? '*' : ''}`;
72
- }
73
- get keyfilter() {
74
- this.validateOnly = false;
75
- if (this.numeric) {
76
- return 'int';
77
- }
78
- if (this.decimal) {
79
- this.validateOnly = true;
80
- return /^(\d+(?:[\,]\d{2})?)$/;
81
- }
82
- if (this.onlyText) {
83
- this.validateOnly = true;
84
- return /^[a-zA-ZÀ-ú\s]*$/gm;
85
- }
86
- if (this.alphaNumeric) {
87
- return 'alphanum';
88
- }
89
- if (this.alphaNumericAndWhitespace) {
90
- return /^[A-Za-zÀ-ú0-9 ]*$/gm;
91
- }
92
- return /[\s\S]*/;
93
- }
94
- get control() {
95
- return this._control;
96
- }
97
- get showPasswordIcon() {
98
- return this.isPasswordVisible ? 'fas fa-eye' : 'fas fa-eye-slash';
99
- }
100
- ngOnInit() {
101
- if (this.enableDocumentTypeChoice) {
102
- this.setDocumentType(this.selectedDocumentType.code);
103
- }
104
- }
105
- ngOnDestroy() {
106
- this.subscription.unsubscribe();
107
- this.controlSubscription.unsubscribe();
108
- }
109
- onBlur() {
110
- this.control.markAsTouched();
111
- if (this.lastBlurValue !== this.control.value) {
112
- this.lastBlurValue = this.control.value;
113
- setTimeout(() => {
114
- this.blurEvent.emit(this.control.value);
115
- });
116
- }
117
- }
118
- onEnterPress() {
119
- this.onBlur();
120
- this.enterKeyPress.emit();
121
- }
122
- onFocus($event) {
123
- const target = $event.target;
124
- if (this.mask) {
125
- const firstUnderscore = target?.value.indexOf('_');
126
- const selectionIndex = (firstUnderscore >= 0 ? firstUnderscore : target?.value.length) || 0;
127
- target?.setSelectionRange(selectionIndex, selectionIndex);
128
- }
129
- this.focusEvent.emit(target?.value);
130
- }
131
- toggleShowPassword() {
132
- this.isPasswordVisible = !this.isPasswordVisible;
133
- }
134
- handleDocumentTypeChange() {
135
- if (this.selectedDocumentType.code === DocumentType.CNPJ) {
136
- this.setDocumentType(DocumentType.CPF);
137
- }
138
- else {
139
- this.setDocumentType(DocumentType.CNPJ);
140
- }
141
- }
142
- handleInitialDocumentTypeState() {
143
- if (this.control?.value) {
144
- if (this.control.value.length === 11) {
145
- this.setDocumentType(DocumentType.CPF);
146
- }
147
- else {
148
- this.setDocumentType(DocumentType.CNPJ);
149
- }
150
- }
151
- else {
152
- this.setDocumentType(DocumentType.CPF);
153
- }
154
- }
155
- setDocumentType(documentType) {
156
- switch (documentType) {
157
- case DocumentType.CNPJ:
158
- this.selectedDocumentType = this.documentTypes[1];
159
- this.mask = MaskUtil.CNPJ_TEXT_FIELD_PATTERN;
160
- break;
161
- case DocumentType.CPF:
162
- this.selectedDocumentType = this.documentTypes[0];
163
- this.mask = MaskUtil.CPF_TEXT_FIELD_PATTERN;
164
- break;
165
- }
166
- this.onDocumentTypeChange.emit(this.selectedDocumentType);
167
- }
168
- }
169
- TextFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: TextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
170
- TextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: TextFieldComponent, selector: "vector-text-field", inputs: { isRequired: "isRequired", label: "label", maxlength: "maxlength", isPassword: "isPassword", numeric: "numeric", decimal: "decimal", onlyText: "onlyText", alphaNumeric: "alphaNumeric", alphaNumericAndWhitespace: "alphaNumericAndWhitespace", mask: "mask", autoClear: "autoClear", rightIcon: "rightIcon", centered: "centered", enableDocumentTypeChoice: "enableDocumentTypeChoice", hiddenErrorMessage: "hiddenErrorMessage", leftLabel: "leftLabel", control: "control" }, outputs: { blurEvent: "blurEvent", enterKeyPress: "enterKeyPress", focusEvent: "focusEvent", onDocumentTypeChange: "onDocumentTypeChange" }, ngImport: i0, template: "<form class=\"input-container p-input-icon-right\">\n <i *ngIf=\"rightIcon\" [class]=\"rightIcon\"></i>\n <i *ngIf=\"isPassword\" class=\"show-password-icon {{ showPasswordIcon }}\" (click)=\"toggleShowPassword()\"></i>\n <div class=\"p-inputgroup\">\n <vector-button\n *ngIf=\"enableDocumentTypeChoice\"\n leftIcon=\"fas fa-exchange-alt\"\n type=\"success\"\n [label]=\"selectedDocumentType.name\"\n [disabled]=\"control.disabled\"\n [noShadow]=\"true\"\n (onClick)=\"handleDocumentTypeChange()\"\n ></vector-button>\n\n <span *ngIf=\"leftLabel\" class=\"left-label\">\n {{ leftLabel }}\n </span>\n\n <input\n *ngIf=\"!mask\"\n pInputText\n type=\"text\"\n [formControl]=\"control\"\n [attr.maxlength]=\"maxlength\"\n [placeholder]=\"placeholder\"\n [pValidateOnly]=\"validateOnly\"\n [pKeyFilter]=\"keyfilter\"\n [ngClass]=\"{ 'password-field': isPassword && !isPasswordVisible, 'text-centered': centered }\"\n (onBlur)=\"onBlur()\"\n (keydown.enter)=\"onEnterPress()\"\n (click)=\"onFocus($event)\"\n />\n <p-inputMask\n *ngIf=\"mask\"\n type=\"text\"\n [formControl]=\"control\"\n [mask]=\"mask\"\n [placeholder]=\"placeholder\"\n (onBlur)=\"onBlur()\"\n (keydown.enter)=\"onEnterPress()\"\n [autoClear]=\"autoClear\"\n [unmask]=\"true\"\n [styleClass]=\"centered ? 'text-centered' : ''\"\n slotChar=\"_\"\n (click)=\"onFocus($event)\"\n ></p-inputMask>\n </div>\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\n</form>\n", styles: [".input-container{width:100%}.input-container .password-field{-webkit-text-security:disc}.input-container .input-error{font-size:.7em;color:var(--error-color);position:absolute;width:max-content}.input-container .show-password-icon{font-size:1.4em;margin-right:5px;cursor:pointer}.input-container .text-centered{text-align:center}.input-container .left-label{min-height:100%;display:flex;align-items:center;justify-content:center;padding:0 10px;white-space:nowrap;font-size:13px;background-color:var(--gray-light);color:var(--theme-primary)}\n"], components: [{ type: i1.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "rightIcon", "noShadow", "style"], outputs: ["onClick"] }, { type: i2.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown"] }, { type: i3.FieldErrorMessageComponent, selector: "vector-field-error-message", inputs: ["control"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.InputText, selector: "[pInputText]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i7.KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: TextFieldComponent, decorators: [{
172
- type: Component,
173
- args: [{ selector: 'vector-text-field', template: "<form class=\"input-container p-input-icon-right\">\n <i *ngIf=\"rightIcon\" [class]=\"rightIcon\"></i>\n <i *ngIf=\"isPassword\" class=\"show-password-icon {{ showPasswordIcon }}\" (click)=\"toggleShowPassword()\"></i>\n <div class=\"p-inputgroup\">\n <vector-button\n *ngIf=\"enableDocumentTypeChoice\"\n leftIcon=\"fas fa-exchange-alt\"\n type=\"success\"\n [label]=\"selectedDocumentType.name\"\n [disabled]=\"control.disabled\"\n [noShadow]=\"true\"\n (onClick)=\"handleDocumentTypeChange()\"\n ></vector-button>\n\n <span *ngIf=\"leftLabel\" class=\"left-label\">\n {{ leftLabel }}\n </span>\n\n <input\n *ngIf=\"!mask\"\n pInputText\n type=\"text\"\n [formControl]=\"control\"\n [attr.maxlength]=\"maxlength\"\n [placeholder]=\"placeholder\"\n [pValidateOnly]=\"validateOnly\"\n [pKeyFilter]=\"keyfilter\"\n [ngClass]=\"{ 'password-field': isPassword && !isPasswordVisible, 'text-centered': centered }\"\n (onBlur)=\"onBlur()\"\n (keydown.enter)=\"onEnterPress()\"\n (click)=\"onFocus($event)\"\n />\n <p-inputMask\n *ngIf=\"mask\"\n type=\"text\"\n [formControl]=\"control\"\n [mask]=\"mask\"\n [placeholder]=\"placeholder\"\n (onBlur)=\"onBlur()\"\n (keydown.enter)=\"onEnterPress()\"\n [autoClear]=\"autoClear\"\n [unmask]=\"true\"\n [styleClass]=\"centered ? 'text-centered' : ''\"\n slotChar=\"_\"\n (click)=\"onFocus($event)\"\n ></p-inputMask>\n </div>\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\n</form>\n", styles: [".input-container{width:100%}.input-container .password-field{-webkit-text-security:disc}.input-container .input-error{font-size:.7em;color:var(--error-color);position:absolute;width:max-content}.input-container .show-password-icon{font-size:1.4em;margin-right:5px;cursor:pointer}.input-container .text-centered{text-align:center}.input-container .left-label{min-height:100%;display:flex;align-items:center;justify-content:center;padding:0 10px;white-space:nowrap;font-size:13px;background-color:var(--gray-light);color:var(--theme-primary)}\n"] }]
174
- }], propDecorators: { isRequired: [{
175
- type: Input
176
- }], label: [{
177
- type: Input
178
- }], maxlength: [{
179
- type: Input
180
- }], isPassword: [{
181
- type: Input
182
- }], numeric: [{
183
- type: Input
184
- }], decimal: [{
185
- type: Input
186
- }], onlyText: [{
187
- type: Input
188
- }], alphaNumeric: [{
189
- type: Input
190
- }], alphaNumericAndWhitespace: [{
191
- type: Input
192
- }], mask: [{
193
- type: Input
194
- }], autoClear: [{
195
- type: Input
196
- }], rightIcon: [{
197
- type: Input
198
- }], centered: [{
199
- type: Input
200
- }], enableDocumentTypeChoice: [{
201
- type: Input
202
- }], hiddenErrorMessage: [{
203
- type: Input
204
- }], leftLabel: [{
205
- type: Input
206
- }], control: [{
207
- type: Input
208
- }], blurEvent: [{
209
- type: Output
210
- }], enterKeyPress: [{
211
- type: Output
212
- }], focusEvent: [{
213
- type: Output
214
- }], onDocumentTypeChange: [{
215
- type: Output
216
- }] } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy90ZXh0LWZpZWxkL3RleHQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvdGV4dC1maWVsZC90ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPUyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbkIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUV2QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUlsQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR2pCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLDZCQUF3QixHQUFHLEtBQUss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c0JBRGhCLE1BQU07Z0JBR0Esb0JBQW9CO3NCQUQxQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERvY3VtZW50VHlwZSwgTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgTWFza1V0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlY3Rvci10ZXh0LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRleHRGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIGlzUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KClcbiAgcHVibGljIG1heGxlbmd0aDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1Bhc3N3b3JkID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBudW1lcmljID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWNpbWFsID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvbmx5VGV4dCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWxwaGFOdW1lcmljID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbHBoYU51bWVyaWNBbmRXaGl0ZXNwYWNlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXNrPzogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b0NsZWFyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmlnaHRJY29uID0gJyc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjZW50ZXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW5hYmxlRG9jdW1lbnRUeXBlQ2hvaWNlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRkZW5FcnJvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGxlZnRMYWJlbD86IHN0cmluZztcbiAgQElucHV0KClcbiAgc2V0IGNvbnRyb2woX2NvbnRyb2w6IGFueSkge1xuICAgIHRoaXMuX2NvbnRyb2wgPSBfY29udHJvbDtcbiAgICBpZiAodGhpcy5lbmFibGVEb2N1bWVudFR5cGVDaG9pY2UpIHtcbiAgICAgIHRoaXMuaGFuZGxlSW5pdGlhbERvY3VtZW50VHlwZVN0YXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodGhpcy5lbmFibGVEb2N1bWVudFR5cGVDaG9pY2UgJiYgIXRoaXMubGFzdFR5cGVkVmFsdWUgJiYgdmFsdWU/Lmxlbmd0aCA+IDExKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVJbml0aWFsRG9jdW1lbnRUeXBlU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxhc3RUeXBlZFZhbHVlID0gdmFsdWU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBibHVyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZW50ZXJLZXlQcmVzcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmb2N1c0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uRG9jdW1lbnRUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0SXRlbT4oKTtcblxuICBwdWJsaWMgaXNQYXNzd29yZFZpc2libGUgPSBmYWxzZTtcbiAgcHVibGljIHZhbGlkYXRlT25seSA9IGZhbHNlO1xuXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICBpZiAoIXRoaXMubGFiZWwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMubGFiZWx9JHt0aGlzLmlzUmVxdWlyZWQgPyAnKicgOiAnJ31gO1xuICB9XG5cbiAgZ2V0IGtleWZpbHRlcigpIHtcbiAgICB0aGlzLnZhbGlkYXRlT25seSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLm51bWVyaWMpIHtcbiAgICAgIHJldHVybiAnaW50JztcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVjaW1hbCkge1xuICAgICAgdGhpcy52YWxpZGF0ZU9ubHkgPSB0cnVlO1xuICAgICAgcmV0dXJuIC9eKFxcZCsoPzpbXFwsXVxcZHsyfSk/KSQvO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmx5VGV4dCkge1xuICAgICAgdGhpcy52YWxpZGF0ZU9ubHkgPSB0cnVlO1xuICAgICAgcmV0dXJuIC9eW2EtekEtWsOALcO6XFxzXSokL2dtO1xuICAgIH1cbiAgICBpZiAodGhpcy5hbHBoYU51bWVyaWMpIHtcbiAgICAgIHJldHVybiAnYWxwaGFudW0nO1xuICAgIH1cbiAgICBpZiAodGhpcy5hbHBoYU51bWVyaWNBbmRXaGl0ZXNwYWNlKSB7XG4gICAgICByZXR1cm4gL15bQS1aYS16w4Atw7owLTkgXSokL2dtO1xuICAgIH1cbiAgICByZXR1cm4gL1tcXHNcXFNdKi87XG4gIH1cblxuICBnZXQgY29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbDtcbiAgfVxuXG4gIGdldCBzaG93UGFzc3dvcmRJY29uKCkge1xuICAgIHJldHVybiB0aGlzLmlzUGFzc3dvcmRWaXNpYmxlID8gJ2ZhcyBmYS1leWUnIDogJ2ZhcyBmYS1leWUtc2xhc2gnO1xuICB9XG5cbiAgcHVibGljIGRvY3VtZW50VHlwZXM6IExpc3RJdGVtW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ0NQRicsXG4gICAgICBjb2RlOiBEb2N1bWVudFR5cGUuQ1BGLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0NOUEonLFxuICAgICAgY29kZTogRG9jdW1lbnRUeXBlLkNOUEosXG4gICAgfSxcbiAgXTtcblxuICBwdWJsaWMgc2VsZWN0ZWREb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZXNbMV07XG5cbiAgcHJpdmF0ZSBsYXN0Qmx1clZhbHVlID0gJyc7XG4gIHByaXZhdGUgbGFzdFR5cGVkVmFsdWUgPSAnJztcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgY29udHJvbFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfY29udHJvbDogYW55O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmVuYWJsZURvY3VtZW50VHlwZUNob2ljZSkge1xuICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZS5jb2RlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uQmx1cigpIHtcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmxhc3RCbHVyVmFsdWUgIT09IHRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgdGhpcy5sYXN0Qmx1clZhbHVlID0gdGhpcy5jb250cm9sLnZhbHVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYmx1ckV2ZW50LmVtaXQodGhpcy5jb250cm9sLnZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkVudGVyUHJlc3MoKSB7XG4gICAgdGhpcy5vbkJsdXIoKTtcbiAgICB0aGlzLmVudGVyS2V5UHJlc3MuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uRm9jdXMoJGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHRhcmdldCA9ICRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAodGhpcy5tYXNrKSB7XG4gICAgICBjb25zdCBmaXJzdFVuZGVyc2NvcmUgPSB0YXJnZXQ/LnZhbHVlLmluZGV4T2YoJ18nKTtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbkluZGV4ID0gKGZpcnN0VW5kZXJzY29yZSA+PSAwID8gZmlyc3RVbmRlcnNjb3JlIDogdGFyZ2V0Py52YWx1ZS5sZW5ndGgpIHx8IDA7XG4gICAgICB0YXJnZXQ/LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkluZGV4LCBzZWxlY3Rpb25JbmRleCk7XG4gICAgfVxuICAgIHRoaXMuZm9jdXNFdmVudC5lbWl0KHRhcmdldD8udmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNob3dQYXNzd29yZCgpIHtcbiAgICB0aGlzLmlzUGFzc3dvcmRWaXNpYmxlID0gIXRoaXMuaXNQYXNzd29yZFZpc2libGU7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRG9jdW1lbnRUeXBlQ2hhbmdlKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlLmNvZGUgPT09IERvY3VtZW50VHlwZS5DTlBKKSB7XG4gICAgICB0aGlzLnNldERvY3VtZW50VHlwZShEb2N1bWVudFR5cGUuQ1BGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUoRG9jdW1lbnRUeXBlLkNOUEopO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlSW5pdGlhbERvY3VtZW50VHlwZVN0YXRlKCkge1xuICAgIGlmICh0aGlzLmNvbnRyb2w/LnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5jb250cm9sLnZhbHVlLmxlbmd0aCA9PT0gMTEpIHtcbiAgICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUoRG9jdW1lbnRUeXBlLkNQRik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldERvY3VtZW50VHlwZShEb2N1bWVudFR5cGUuQ05QSik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RG9jdW1lbnRUeXBlKERvY3VtZW50VHlwZS5DUEYpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RG9jdW1lbnRUeXBlKGRvY3VtZW50VHlwZTogRG9jdW1lbnRUeXBlKSB7XG4gICAgc3dpdGNoIChkb2N1bWVudFR5cGUpIHtcbiAgICAgIGNhc2UgRG9jdW1lbnRUeXBlLkNOUEo6XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZXNbMV07XG4gICAgICAgIHRoaXMubWFzayA9IE1hc2tVdGlsLkNOUEpfVEVYVF9GSUVMRF9QQVRURVJOO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRG9jdW1lbnRUeXBlLkNQRjpcbiAgICAgICAgdGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZSA9IHRoaXMuZG9jdW1lbnRUeXBlc1swXTtcbiAgICAgICAgdGhpcy5tYXNrID0gTWFza1V0aWwuQ1BGX1RFWFRfRklFTERfUEFUVEVSTjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMub25Eb2N1bWVudFR5cGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlKTtcbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJpbnB1dC1jb250YWluZXIgcC1pbnB1dC1pY29uLXJpZ2h0XCI+XG4gIDxpICpuZ0lmPVwicmlnaHRJY29uXCIgW2NsYXNzXT1cInJpZ2h0SWNvblwiPjwvaT5cbiAgPGkgKm5nSWY9XCJpc1Bhc3N3b3JkXCIgY2xhc3M9XCJzaG93LXBhc3N3b3JkLWljb24ge3sgc2hvd1Bhc3N3b3JkSWNvbiB9fVwiIChjbGljayk9XCJ0b2dnbGVTaG93UGFzc3dvcmQoKVwiPjwvaT5cbiAgPGRpdiBjbGFzcz1cInAtaW5wdXRncm91cFwiPlxuICAgIDx2ZWN0b3ItYnV0dG9uXG4gICAgICAqbmdJZj1cImVuYWJsZURvY3VtZW50VHlwZUNob2ljZVwiXG4gICAgICBsZWZ0SWNvbj1cImZhcyBmYS1leGNoYW5nZS1hbHRcIlxuICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgW2xhYmVsXT1cInNlbGVjdGVkRG9jdW1lbnRUeXBlLm5hbWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgW25vU2hhZG93XT1cInRydWVcIlxuICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlRG9jdW1lbnRUeXBlQ2hhbmdlKClcIlxuICAgID48L3ZlY3Rvci1idXR0b24+XG5cbiAgICA8c3BhbiAqbmdJZj1cImxlZnRMYWJlbFwiIGNsYXNzPVwibGVmdC1sYWJlbFwiPlxuICAgICAge3sgbGVmdExhYmVsIH19XG4gICAgPC9zcGFuPlxuXG4gICAgPGlucHV0XG4gICAgICAqbmdJZj1cIiFtYXNrXCJcbiAgICAgIHBJbnB1dFRleHRcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtwVmFsaWRhdGVPbmx5XT1cInZhbGlkYXRlT25seVwiXG4gICAgICBbcEtleUZpbHRlcl09XCJrZXlmaWx0ZXJcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncGFzc3dvcmQtZmllbGQnOiBpc1Bhc3N3b3JkICYmICFpc1Bhc3N3b3JkVmlzaWJsZSwgJ3RleHQtY2VudGVyZWQnOiBjZW50ZXJlZCB9XCJcbiAgICAgIChvbkJsdXIpPVwib25CbHVyKClcIlxuICAgICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlclByZXNzKClcIlxuICAgICAgKGNsaWNrKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8cC1pbnB1dE1hc2tcbiAgICAgICpuZ0lmPVwibWFza1wiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAob25CbHVyKT1cIm9uQmx1cigpXCJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXJQcmVzcygpXCJcbiAgICAgIFthdXRvQ2xlYXJdPVwiYXV0b0NsZWFyXCJcbiAgICAgIFt1bm1hc2tdPVwidHJ1ZVwiXG4gICAgICBbc3R5bGVDbGFzc109XCJjZW50ZXJlZCA/ICd0ZXh0LWNlbnRlcmVkJyA6ICcnXCJcbiAgICAgIHNsb3RDaGFyPVwiX1wiXG4gICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICA+PC9wLWlucHV0TWFzaz5cbiAgPC9kaXY+XG4gIDx2ZWN0b3ItZmllbGQtZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFoaWRkZW5FcnJvck1lc3NhZ2VcIiBbY29udHJvbF09XCJjb250cm9sXCI+PC92ZWN0b3ItZmllbGQtZXJyb3ItbWVzc2FnZT5cbjwvZm9ybT5cbiJdfQ==
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import { DocumentType } from '../../../models';
4
+ import { MaskUtil } from '../../../utils';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../button/button.component";
7
+ import * as i2 from "primeng/inputmask";
8
+ import * as i3 from "../field-error-message/field-error-message.component";
9
+ import * as i4 from "@angular/forms";
10
+ import * as i5 from "@angular/common";
11
+ import * as i6 from "primeng/inputtext";
12
+ import * as i7 from "primeng/keyfilter";
13
+ export class TextFieldComponent {
14
+ constructor() {
15
+ this.isRequired = false;
16
+ this.label = '';
17
+ this.maxlength = '';
18
+ this.isPassword = false;
19
+ this.numeric = false;
20
+ this.decimal = false;
21
+ this.onlyText = false;
22
+ this.alphaNumeric = false;
23
+ this.alphaNumericAndWhitespace = false;
24
+ this.autoClear = true;
25
+ this.rightIcon = '';
26
+ this.centered = false;
27
+ this.enableDocumentTypeChoice = false;
28
+ this.hiddenErrorMessage = false;
29
+ this.blurEvent = new EventEmitter();
30
+ this.enterKeyPress = new EventEmitter();
31
+ this.focusEvent = new EventEmitter();
32
+ this.onDocumentTypeChange = new EventEmitter();
33
+ this.isPasswordVisible = false;
34
+ this.validateOnly = false;
35
+ this.documentTypes = [
36
+ {
37
+ name: 'CPF',
38
+ code: DocumentType.CPF,
39
+ },
40
+ {
41
+ name: 'CNPJ',
42
+ code: DocumentType.CNPJ,
43
+ },
44
+ ];
45
+ this.selectedDocumentType = this.documentTypes[1];
46
+ this.lastBlurValue = '';
47
+ this.lastTypedValue = '';
48
+ this.subscription = new Subscription();
49
+ this.controlSubscription = new Subscription();
50
+ }
51
+ set control(_control) {
52
+ this._control = _control;
53
+ if (this.enableDocumentTypeChoice) {
54
+ this.handleInitialDocumentTypeState();
55
+ }
56
+ if (this.controlSubscription) {
57
+ this.controlSubscription.unsubscribe();
58
+ this.controlSubscription = new Subscription();
59
+ }
60
+ this.controlSubscription.add(this.control.valueChanges.subscribe((value) => {
61
+ if (this.enableDocumentTypeChoice && !this.lastTypedValue && value?.length > 11) {
62
+ this.handleInitialDocumentTypeState();
63
+ }
64
+ this.lastTypedValue = value;
65
+ }));
66
+ }
67
+ get placeholder() {
68
+ if (!this.label) {
69
+ return '';
70
+ }
71
+ return `${this.label}${this.isRequired ? '*' : ''}`;
72
+ }
73
+ get keyfilter() {
74
+ this.validateOnly = false;
75
+ if (this.numeric) {
76
+ return 'int';
77
+ }
78
+ if (this.decimal) {
79
+ this.validateOnly = true;
80
+ return /^(\d+(?:[\,]\d{2})?)$/;
81
+ }
82
+ if (this.onlyText) {
83
+ this.validateOnly = true;
84
+ return /^[a-zA-ZÀ-ú\s]*$/gm;
85
+ }
86
+ if (this.alphaNumeric) {
87
+ return 'alphanum';
88
+ }
89
+ if (this.alphaNumericAndWhitespace) {
90
+ return /^[A-Za-zÀ-ú0-9 ]*$/gm;
91
+ }
92
+ return /[\s\S]*/;
93
+ }
94
+ get control() {
95
+ return this._control;
96
+ }
97
+ get showPasswordIcon() {
98
+ return this.isPasswordVisible ? 'fas fa-eye' : 'fas fa-eye-slash';
99
+ }
100
+ ngOnInit() {
101
+ if (this.enableDocumentTypeChoice) {
102
+ this.setDocumentType(this.selectedDocumentType.code);
103
+ }
104
+ }
105
+ ngOnDestroy() {
106
+ this.subscription.unsubscribe();
107
+ this.controlSubscription.unsubscribe();
108
+ }
109
+ onBlur() {
110
+ this.control.markAsTouched();
111
+ if (this.lastBlurValue !== this.control.value) {
112
+ this.lastBlurValue = this.control.value;
113
+ setTimeout(() => {
114
+ this.blurEvent.emit(this.control.value);
115
+ });
116
+ }
117
+ }
118
+ onEnterPress() {
119
+ this.onBlur();
120
+ this.enterKeyPress.emit();
121
+ }
122
+ onFocus($event) {
123
+ const target = $event.target;
124
+ if (this.mask) {
125
+ const firstUnderscore = target?.value.indexOf('_');
126
+ const selectionIndex = (firstUnderscore >= 0 ? firstUnderscore : target?.value.length) || 0;
127
+ target?.setSelectionRange(selectionIndex, selectionIndex);
128
+ }
129
+ this.focusEvent.emit(target?.value);
130
+ }
131
+ toggleShowPassword() {
132
+ this.isPasswordVisible = !this.isPasswordVisible;
133
+ }
134
+ handleDocumentTypeChange() {
135
+ if (this.selectedDocumentType.code === DocumentType.CNPJ) {
136
+ this.setDocumentType(DocumentType.CPF);
137
+ }
138
+ else {
139
+ this.setDocumentType(DocumentType.CNPJ);
140
+ }
141
+ }
142
+ handleInitialDocumentTypeState() {
143
+ if (this.control?.value) {
144
+ if (this.control.value.length === 11) {
145
+ this.setDocumentType(DocumentType.CPF);
146
+ }
147
+ else {
148
+ this.setDocumentType(DocumentType.CNPJ);
149
+ }
150
+ }
151
+ else {
152
+ this.setDocumentType(DocumentType.CPF);
153
+ }
154
+ }
155
+ setDocumentType(documentType) {
156
+ switch (documentType) {
157
+ case DocumentType.CNPJ:
158
+ this.selectedDocumentType = this.documentTypes[1];
159
+ this.mask = MaskUtil.CNPJ_TEXT_FIELD_PATTERN;
160
+ break;
161
+ case DocumentType.CPF:
162
+ this.selectedDocumentType = this.documentTypes[0];
163
+ this.mask = MaskUtil.CPF_TEXT_FIELD_PATTERN;
164
+ break;
165
+ }
166
+ this.onDocumentTypeChange.emit(this.selectedDocumentType);
167
+ }
168
+ }
169
+ TextFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: TextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
170
+ TextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: TextFieldComponent, selector: "vector-text-field", inputs: { isRequired: "isRequired", label: "label", maxlength: "maxlength", isPassword: "isPassword", numeric: "numeric", decimal: "decimal", onlyText: "onlyText", alphaNumeric: "alphaNumeric", alphaNumericAndWhitespace: "alphaNumericAndWhitespace", mask: "mask", autoClear: "autoClear", rightIcon: "rightIcon", centered: "centered", enableDocumentTypeChoice: "enableDocumentTypeChoice", hiddenErrorMessage: "hiddenErrorMessage", leftLabel: "leftLabel", control: "control" }, outputs: { blurEvent: "blurEvent", enterKeyPress: "enterKeyPress", focusEvent: "focusEvent", onDocumentTypeChange: "onDocumentTypeChange" }, ngImport: i0, template: "<form class=\"input-container p-input-icon-right\">\r\n <i *ngIf=\"rightIcon\" [class]=\"rightIcon\"></i>\r\n <i *ngIf=\"isPassword\" class=\"show-password-icon {{ showPasswordIcon }}\" (click)=\"toggleShowPassword()\"></i>\r\n <div class=\"p-inputgroup\">\r\n <vector-button\r\n *ngIf=\"enableDocumentTypeChoice\"\r\n leftIcon=\"fas fa-exchange-alt\"\r\n type=\"success\"\r\n [label]=\"selectedDocumentType.name\"\r\n [disabled]=\"control.disabled\"\r\n [noShadow]=\"true\"\r\n (onClick)=\"handleDocumentTypeChange()\"\r\n ></vector-button>\r\n\r\n <span *ngIf=\"leftLabel\" class=\"left-label\">\r\n {{ leftLabel }}\r\n </span>\r\n\r\n <input\r\n *ngIf=\"!mask\"\r\n pInputText\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n [pValidateOnly]=\"validateOnly\"\r\n [pKeyFilter]=\"keyfilter\"\r\n [ngClass]=\"{ 'password-field': isPassword && !isPasswordVisible, 'text-centered': centered }\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (click)=\"onFocus($event)\"\r\n />\r\n <p-inputMask\r\n *ngIf=\"mask\"\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [mask]=\"mask\"\r\n [placeholder]=\"placeholder\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n [autoClear]=\"autoClear\"\r\n [unmask]=\"true\"\r\n [styleClass]=\"centered ? 'text-centered' : ''\"\r\n slotChar=\"_\"\r\n (click)=\"onFocus($event)\"\r\n ></p-inputMask>\r\n </div>\r\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\r\n</form>\r\n", styles: [".input-container{width:100%}.input-container .password-field{-webkit-text-security:disc}.input-container .input-error{font-size:.7em;color:var(--error-color);position:absolute;width:max-content}.input-container .show-password-icon{font-size:1.4em;margin-right:5px;cursor:pointer}.input-container .text-centered{text-align:center}.input-container .left-label{min-height:100%;display:flex;align-items:center;justify-content:center;padding:0 10px;white-space:nowrap;font-size:13px;background-color:var(--gray-light);color:var(--theme-primary)}\n"], components: [{ type: i1.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "rightIcon", "noShadow", "style"], outputs: ["onClick"] }, { type: i2.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown"] }, { type: i3.FieldErrorMessageComponent, selector: "vector-field-error-message", inputs: ["control"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.InputText, selector: "[pInputText]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i7.KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: TextFieldComponent, decorators: [{
172
+ type: Component,
173
+ args: [{ selector: 'vector-text-field', template: "<form class=\"input-container p-input-icon-right\">\r\n <i *ngIf=\"rightIcon\" [class]=\"rightIcon\"></i>\r\n <i *ngIf=\"isPassword\" class=\"show-password-icon {{ showPasswordIcon }}\" (click)=\"toggleShowPassword()\"></i>\r\n <div class=\"p-inputgroup\">\r\n <vector-button\r\n *ngIf=\"enableDocumentTypeChoice\"\r\n leftIcon=\"fas fa-exchange-alt\"\r\n type=\"success\"\r\n [label]=\"selectedDocumentType.name\"\r\n [disabled]=\"control.disabled\"\r\n [noShadow]=\"true\"\r\n (onClick)=\"handleDocumentTypeChange()\"\r\n ></vector-button>\r\n\r\n <span *ngIf=\"leftLabel\" class=\"left-label\">\r\n {{ leftLabel }}\r\n </span>\r\n\r\n <input\r\n *ngIf=\"!mask\"\r\n pInputText\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n [pValidateOnly]=\"validateOnly\"\r\n [pKeyFilter]=\"keyfilter\"\r\n [ngClass]=\"{ 'password-field': isPassword && !isPasswordVisible, 'text-centered': centered }\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (click)=\"onFocus($event)\"\r\n />\r\n <p-inputMask\r\n *ngIf=\"mask\"\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [mask]=\"mask\"\r\n [placeholder]=\"placeholder\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n [autoClear]=\"autoClear\"\r\n [unmask]=\"true\"\r\n [styleClass]=\"centered ? 'text-centered' : ''\"\r\n slotChar=\"_\"\r\n (click)=\"onFocus($event)\"\r\n ></p-inputMask>\r\n </div>\r\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\r\n</form>\r\n", styles: [".input-container{width:100%}.input-container .password-field{-webkit-text-security:disc}.input-container .input-error{font-size:.7em;color:var(--error-color);position:absolute;width:max-content}.input-container .show-password-icon{font-size:1.4em;margin-right:5px;cursor:pointer}.input-container .text-centered{text-align:center}.input-container .left-label{min-height:100%;display:flex;align-items:center;justify-content:center;padding:0 10px;white-space:nowrap;font-size:13px;background-color:var(--gray-light);color:var(--theme-primary)}\n"] }]
174
+ }], propDecorators: { isRequired: [{
175
+ type: Input
176
+ }], label: [{
177
+ type: Input
178
+ }], maxlength: [{
179
+ type: Input
180
+ }], isPassword: [{
181
+ type: Input
182
+ }], numeric: [{
183
+ type: Input
184
+ }], decimal: [{
185
+ type: Input
186
+ }], onlyText: [{
187
+ type: Input
188
+ }], alphaNumeric: [{
189
+ type: Input
190
+ }], alphaNumericAndWhitespace: [{
191
+ type: Input
192
+ }], mask: [{
193
+ type: Input
194
+ }], autoClear: [{
195
+ type: Input
196
+ }], rightIcon: [{
197
+ type: Input
198
+ }], centered: [{
199
+ type: Input
200
+ }], enableDocumentTypeChoice: [{
201
+ type: Input
202
+ }], hiddenErrorMessage: [{
203
+ type: Input
204
+ }], leftLabel: [{
205
+ type: Input
206
+ }], control: [{
207
+ type: Input
208
+ }], blurEvent: [{
209
+ type: Output
210
+ }], enterKeyPress: [{
211
+ type: Output
212
+ }], focusEvent: [{
213
+ type: Output
214
+ }], onDocumentTypeChange: [{
215
+ type: Output
216
+ }] } });
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy90ZXh0LWZpZWxkL3RleHQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvdGV4dC1maWVsZC90ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPUyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbkIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUV2QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUlsQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR2pCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLDZCQUF3QixHQUFHLEtBQUss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c0JBRGhCLE1BQU07Z0JBR0Esb0JBQW9CO3NCQUQxQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFR5cGUsIExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgTWFza1V0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ZlY3Rvci10ZXh0LWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1maWVsZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dEZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlzUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWF4bGVuZ3RoOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc1Bhc3N3b3JkID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbnVtZXJpYyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlY2ltYWwgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvbmx5VGV4dCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFscGhhTnVtZXJpYyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFscGhhTnVtZXJpY0FuZFdoaXRlc3BhY2UgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXNrPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGF1dG9DbGVhciA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJpZ2h0SWNvbiA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNlbnRlcmVkID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW5hYmxlRG9jdW1lbnRUeXBlQ2hvaWNlID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGlkZGVuRXJyb3JNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGVmdExhYmVsPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNvbnRyb2woX2NvbnRyb2w6IGFueSkge1xyXG4gICAgdGhpcy5fY29udHJvbCA9IF9jb250cm9sO1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlRG9jdW1lbnRUeXBlQ2hvaWNlKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlSW5pdGlhbERvY3VtZW50VHlwZVN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVEb2N1bWVudFR5cGVDaG9pY2UgJiYgIXRoaXMubGFzdFR5cGVkVmFsdWUgJiYgdmFsdWU/Lmxlbmd0aCA+IDExKSB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUluaXRpYWxEb2N1bWVudFR5cGVTdGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RUeXBlZFZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYmx1ckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlbnRlcktleVByZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBmb2N1c0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkRvY3VtZW50VHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEl0ZW0+KCk7XHJcblxyXG4gIHB1YmxpYyBpc1Bhc3N3b3JkVmlzaWJsZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyB2YWxpZGF0ZU9ubHkgPSBmYWxzZTtcclxuXHJcbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmxhYmVsKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBgJHt0aGlzLmxhYmVsfSR7dGhpcy5pc1JlcXVpcmVkID8gJyonIDogJyd9YDtcclxuICB9XHJcblxyXG4gIGdldCBrZXlmaWx0ZXIoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlT25seSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMubnVtZXJpYykge1xyXG4gICAgICByZXR1cm4gJ2ludCc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kZWNpbWFsKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVPbmx5ID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuIC9eKFxcZCsoPzpbXFwsXVxcZHsyfSk/KSQvO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub25seVRleHQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZU9ubHkgPSB0cnVlO1xyXG4gICAgICByZXR1cm4gL15bYS16QS1aw4Atw7pcXHNdKiQvZ207XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hbHBoYU51bWVyaWMpIHtcclxuICAgICAgcmV0dXJuICdhbHBoYW51bSc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hbHBoYU51bWVyaWNBbmRXaGl0ZXNwYWNlKSB7XHJcbiAgICAgIHJldHVybiAvXltBLVphLXrDgC3DujAtOSBdKiQvZ207XHJcbiAgICB9XHJcbiAgICByZXR1cm4gL1tcXHNcXFNdKi87XHJcbiAgfVxyXG5cclxuICBnZXQgY29udHJvbCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dQYXNzd29yZEljb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1Bhc3N3b3JkVmlzaWJsZSA/ICdmYXMgZmEtZXllJyA6ICdmYXMgZmEtZXllLXNsYXNoJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb2N1bWVudFR5cGVzOiBMaXN0SXRlbVtdID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiAnQ1BGJyxcclxuICAgICAgY29kZTogRG9jdW1lbnRUeXBlLkNQRixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdDTlBKJyxcclxuICAgICAgY29kZTogRG9jdW1lbnRUeXBlLkNOUEosXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZERvY3VtZW50VHlwZSA9IHRoaXMuZG9jdW1lbnRUeXBlc1sxXTtcclxuXHJcbiAgcHJpdmF0ZSBsYXN0Qmx1clZhbHVlID0gJyc7XHJcbiAgcHJpdmF0ZSBsYXN0VHlwZWRWYWx1ZSA9ICcnO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgY29udHJvbFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBwcml2YXRlIF9jb250cm9sOiBhbnk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlRG9jdW1lbnRUeXBlQ2hvaWNlKSB7XHJcbiAgICAgIHRoaXMuc2V0RG9jdW1lbnRUeXBlKHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUuY29kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgaWYgKHRoaXMubGFzdEJsdXJWYWx1ZSAhPT0gdGhpcy5jb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMubGFzdEJsdXJWYWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ibHVyRXZlbnQuZW1pdCh0aGlzLmNvbnRyb2wudmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkVudGVyUHJlc3MoKSB7XHJcbiAgICB0aGlzLm9uQmx1cigpO1xyXG4gICAgdGhpcy5lbnRlcktleVByZXNzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZvY3VzKCRldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9ICRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICh0aGlzLm1hc2spIHtcclxuICAgICAgY29uc3QgZmlyc3RVbmRlcnNjb3JlID0gdGFyZ2V0Py52YWx1ZS5pbmRleE9mKCdfJyk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGlvbkluZGV4ID0gKGZpcnN0VW5kZXJzY29yZSA+PSAwID8gZmlyc3RVbmRlcnNjb3JlIDogdGFyZ2V0Py52YWx1ZS5sZW5ndGgpIHx8IDA7XHJcbiAgICAgIHRhcmdldD8uc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uSW5kZXgsIHNlbGVjdGlvbkluZGV4KTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9jdXNFdmVudC5lbWl0KHRhcmdldD8udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVNob3dQYXNzd29yZCgpIHtcclxuICAgIHRoaXMuaXNQYXNzd29yZFZpc2libGUgPSAhdGhpcy5pc1Bhc3N3b3JkVmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEb2N1bWVudFR5cGVDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZS5jb2RlID09PSBEb2N1bWVudFR5cGUuQ05QSikge1xyXG4gICAgICB0aGlzLnNldERvY3VtZW50VHlwZShEb2N1bWVudFR5cGUuQ1BGKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0RG9jdW1lbnRUeXBlKERvY3VtZW50VHlwZS5DTlBKKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSW5pdGlhbERvY3VtZW50VHlwZVN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbD8udmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZS5sZW5ndGggPT09IDExKSB7XHJcbiAgICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUoRG9jdW1lbnRUeXBlLkNQRik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUoRG9jdW1lbnRUeXBlLkNOUEopO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldERvY3VtZW50VHlwZShEb2N1bWVudFR5cGUuQ1BGKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RG9jdW1lbnRUeXBlKGRvY3VtZW50VHlwZTogRG9jdW1lbnRUeXBlKSB7XHJcbiAgICBzd2l0Y2ggKGRvY3VtZW50VHlwZSkge1xyXG4gICAgICBjYXNlIERvY3VtZW50VHlwZS5DTlBKOlxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZXNbMV07XHJcbiAgICAgICAgdGhpcy5tYXNrID0gTWFza1V0aWwuQ05QSl9URVhUX0ZJRUxEX1BBVFRFUk47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRG9jdW1lbnRUeXBlLkNQRjpcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlID0gdGhpcy5kb2N1bWVudFR5cGVzWzBdO1xyXG4gICAgICAgIHRoaXMubWFzayA9IE1hc2tVdGlsLkNQRl9URVhUX0ZJRUxEX1BBVFRFUk47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRG9jdW1lbnRUeXBlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIHAtaW5wdXQtaWNvbi1yaWdodFwiPlxyXG4gIDxpICpuZ0lmPVwicmlnaHRJY29uXCIgW2NsYXNzXT1cInJpZ2h0SWNvblwiPjwvaT5cclxuICA8aSAqbmdJZj1cImlzUGFzc3dvcmRcIiBjbGFzcz1cInNob3ctcGFzc3dvcmQtaWNvbiB7eyBzaG93UGFzc3dvcmRJY29uIH19XCIgKGNsaWNrKT1cInRvZ2dsZVNob3dQYXNzd29yZCgpXCI+PC9pPlxyXG4gIDxkaXYgY2xhc3M9XCJwLWlucHV0Z3JvdXBcIj5cclxuICAgIDx2ZWN0b3ItYnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiZW5hYmxlRG9jdW1lbnRUeXBlQ2hvaWNlXCJcclxuICAgICAgbGVmdEljb249XCJmYXMgZmEtZXhjaGFuZ2UtYWx0XCJcclxuICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxyXG4gICAgICBbbGFiZWxdPVwic2VsZWN0ZWREb2N1bWVudFR5cGUubmFtZVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJjb250cm9sLmRpc2FibGVkXCJcclxuICAgICAgW25vU2hhZG93XT1cInRydWVcIlxyXG4gICAgICAob25DbGljayk9XCJoYW5kbGVEb2N1bWVudFR5cGVDaGFuZ2UoKVwiXHJcbiAgICA+PC92ZWN0b3ItYnV0dG9uPlxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwibGVmdExhYmVsXCIgY2xhc3M9XCJsZWZ0LWxhYmVsXCI+XHJcbiAgICAgIHt7IGxlZnRMYWJlbCB9fVxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICAqbmdJZj1cIiFtYXNrXCJcclxuICAgICAgcElucHV0VGV4dFxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heGxlbmd0aFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFtwVmFsaWRhdGVPbmx5XT1cInZhbGlkYXRlT25seVwiXHJcbiAgICAgIFtwS2V5RmlsdGVyXT1cImtleWZpbHRlclwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3Bhc3N3b3JkLWZpZWxkJzogaXNQYXNzd29yZCAmJiAhaXNQYXNzd29yZFZpc2libGUsICd0ZXh0LWNlbnRlcmVkJzogY2VudGVyZWQgfVwiXHJcbiAgICAgIChvbkJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyUHJlc3MoKVwiXHJcbiAgICAgIChjbGljayk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgLz5cclxuICAgIDxwLWlucHV0TWFza1xyXG4gICAgICAqbmdJZj1cIm1hc2tcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgW21hc2tdPVwibWFza1wiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIChvbkJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyUHJlc3MoKVwiXHJcbiAgICAgIFthdXRvQ2xlYXJdPVwiYXV0b0NsZWFyXCJcclxuICAgICAgW3VubWFza109XCJ0cnVlXCJcclxuICAgICAgW3N0eWxlQ2xhc3NdPVwiY2VudGVyZWQgPyAndGV4dC1jZW50ZXJlZCcgOiAnJ1wiXHJcbiAgICAgIHNsb3RDaGFyPVwiX1wiXHJcbiAgICAgIChjbGljayk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgPjwvcC1pbnB1dE1hc2s+XHJcbiAgPC9kaXY+XHJcbiAgPHZlY3Rvci1maWVsZC1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIWhpZGRlbkVycm9yTWVzc2FnZVwiIFtjb250cm9sXT1cImNvbnRyb2xcIj48L3ZlY3Rvci1maWVsZC1lcnJvci1tZXNzYWdlPlxyXG48L2Zvcm0+XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export * from './textarea-field.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy90ZXh0YXJlYS1maWVsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQnO1xuIl19
1
+ export * from './textarea-field.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy90ZXh0YXJlYS1maWVsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQnO1xyXG4iXX0=