ngx-vector-components 4.92.0 → 4.94.0

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 (307) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/{esm2020 → esm2022}/lib/components/badge/badge.component.mjs +39 -39
  3. package/esm2022/lib/components/badge/badge.module.mjs +19 -0
  4. package/{esm2020 → esm2022}/lib/components/badge/index.mjs +2 -2
  5. package/{esm2020 → esm2022}/lib/components/breadcrumb/breadcrumb.component.mjs +66 -66
  6. package/esm2022/lib/components/breadcrumb/breadcrumb.module.mjs +18 -0
  7. package/{esm2020 → esm2022}/lib/components/breadcrumb/index.mjs +2 -2
  8. package/esm2022/lib/components/crud-base/crud-base.component.mjs +47 -0
  9. package/{esm2020 → esm2022}/lib/components/crud-base/index.mjs +1 -1
  10. package/{esm2020 → esm2022}/lib/components/crud-footer/crud-footer.component.mjs +32 -32
  11. package/esm2022/lib/components/crud-footer/crud-footer.module.mjs +20 -0
  12. package/{esm2020 → esm2022}/lib/components/crud-footer/index.mjs +2 -2
  13. package/esm2022/lib/components/crud-header/crud-header.component.mjs +30 -0
  14. package/esm2022/lib/components/crud-header/crud-header.module.mjs +19 -0
  15. package/{esm2020 → esm2022}/lib/components/crud-header/index.mjs +2 -2
  16. package/{esm2020 → esm2022}/lib/components/crud-history/crud-history.component.mjs +82 -82
  17. package/esm2022/lib/components/crud-history/crud-history.module.mjs +20 -0
  18. package/{esm2020 → esm2022}/lib/components/crud-history/index.mjs +2 -2
  19. package/{esm2020 → esm2022}/lib/components/fields/button/button.component.mjs +41 -41
  20. package/{esm2020 → esm2022}/lib/components/fields/button/index.mjs +1 -1
  21. package/{esm2020 → esm2022}/lib/components/fields/calendar-field/calendar-field.component.mjs +74 -74
  22. package/{esm2020 → esm2022}/lib/components/fields/calendar-field/index.mjs +1 -1
  23. package/{esm2020 → esm2022}/lib/components/fields/checkbox-field/checkbox-field.component.mjs +46 -46
  24. package/{esm2020 → esm2022}/lib/components/fields/checkbox-field/index.mjs +1 -1
  25. package/{esm2020 → esm2022}/lib/components/fields/currency-field/currency-field.component.mjs +98 -98
  26. package/{esm2020 → esm2022}/lib/components/fields/currency-field/index.mjs +1 -1
  27. package/esm2022/lib/components/fields/data-table/data-table.component.mjs +386 -0
  28. package/{esm2020 → esm2022}/lib/components/fields/data-table/index.mjs +1 -1
  29. package/esm2022/lib/components/fields/dropdown-field/dropdown-field.component.mjs +204 -0
  30. package/{esm2020 → esm2022}/lib/components/fields/dropdown-field/index.mjs +1 -1
  31. package/{esm2020 → esm2022}/lib/components/fields/field-error-message/field-error-message.component.mjs +30 -30
  32. package/{esm2020 → esm2022}/lib/components/fields/field-error-message/index.mjs +1 -1
  33. package/esm2022/lib/components/fields/fields.module.mjs +211 -0
  34. package/esm2022/lib/components/fields/filters/filters.component.mjs +203 -0
  35. package/{esm2020 → esm2022}/lib/components/fields/filters/index.mjs +1 -1
  36. package/{esm2020 → esm2022}/lib/components/fields/index.mjs +18 -18
  37. package/{esm2020 → esm2022}/lib/components/fields/input-number-field/index.mjs +1 -1
  38. package/{esm2020 → esm2022}/lib/components/fields/input-number-field/input-number-field.component.mjs +85 -85
  39. package/{esm2020 → esm2022}/lib/components/fields/multiselect-field/index.mjs +1 -1
  40. package/{esm2020 → esm2022}/lib/components/fields/multiselect-field/multiselect-field.component.mjs +50 -50
  41. package/{esm2020 → esm2022}/lib/components/fields/percentage-field/index.mjs +1 -1
  42. package/{esm2020 → esm2022}/lib/components/fields/percentage-field/percentage-field.component.mjs +42 -42
  43. package/{esm2020 → esm2022}/lib/components/fields/radio-button-field/index.mjs +1 -1
  44. package/{esm2020 → esm2022}/lib/components/fields/radio-button-field/radio-button-field.component.mjs +48 -48
  45. package/{esm2020 → esm2022}/lib/components/fields/range-value/index.mjs +1 -1
  46. package/{esm2020 → esm2022}/lib/components/fields/range-value/range-value.component.mjs +72 -72
  47. package/{esm2020 → esm2022}/lib/components/fields/search-field/index.mjs +1 -1
  48. package/esm2022/lib/components/fields/search-field/search-field.component.mjs +33 -0
  49. package/{esm2020 → esm2022}/lib/components/fields/select-button-field/index.mjs +1 -1
  50. package/{esm2020 → esm2022}/lib/components/fields/select-button-field/select-button-field.component.mjs +20 -20
  51. package/{esm2020 → esm2022}/lib/components/fields/text-field/index.mjs +1 -1
  52. package/esm2022/lib/components/fields/text-field/text-field.component.mjs +232 -0
  53. package/{esm2020 → esm2022}/lib/components/fields/textarea-field/index.mjs +1 -1
  54. package/{esm2020 → esm2022}/lib/components/fields/textarea-field/textarea-field.component.mjs +81 -81
  55. package/esm2022/lib/components/generic-error-modal/generic-error-modal.component.mjs +39 -0
  56. package/esm2022/lib/components/generic-error-modal/generic-error-modal.module.mjs +20 -0
  57. package/{esm2020 → esm2022}/lib/components/generic-error-modal/index.mjs +2 -2
  58. package/{esm2020 → esm2022}/lib/components/generic-modal/generic-modal.component.mjs +66 -66
  59. package/esm2022/lib/components/generic-modal/generic-modal.module.mjs +20 -0
  60. package/{esm2020 → esm2022}/lib/components/generic-modal/index.mjs +2 -2
  61. package/{esm2020 → esm2022}/lib/components/index.mjs +13 -13
  62. package/{esm2020 → esm2022}/lib/components/menu/index.mjs +3 -3
  63. package/esm2022/lib/components/menu/menu.component.mjs +305 -0
  64. package/esm2022/lib/components/menu/menu.module.mjs +20 -0
  65. package/{esm2020 → esm2022}/lib/components/menu/sub-menus-list/sub-menus-list.component.mjs +42 -42
  66. package/{esm2020 → esm2022}/lib/components/panel/index.mjs +2 -2
  67. package/{esm2020 → esm2022}/lib/components/panel/panel.component.mjs +15 -15
  68. package/esm2022/lib/components/panel/panel.module.mjs +19 -0
  69. package/{esm2020 → esm2022}/lib/components/score/index.mjs +2 -2
  70. package/{esm2020 → esm2022}/lib/components/score/score.component.mjs +17 -17
  71. package/{esm2020 → esm2022}/lib/components/score/score.module.mjs +16 -16
  72. package/{esm2020 → esm2022}/lib/components/top-bar/index.mjs +2 -2
  73. package/{esm2020 → esm2022}/lib/components/top-bar/top-bar.component.mjs +142 -142
  74. package/esm2022/lib/components/top-bar/top-bar.module.mjs +20 -0
  75. package/{esm2020 → esm2022}/lib/guards/crud-list-has-items.guard.mjs +22 -22
  76. package/{esm2020 → esm2022}/lib/guards/get-token-by-guid.guard.mjs +54 -54
  77. package/{esm2020 → esm2022}/lib/guards/has-permission.guard.mjs +27 -27
  78. package/{esm2020 → esm2022}/lib/guards/index.mjs +5 -5
  79. package/{esm2020 → esm2022}/lib/guards/role.guard.mjs +24 -24
  80. package/{esm2020 → esm2022}/lib/guards/token-is-present.guard.mjs +26 -26
  81. package/{esm2020 → esm2022}/lib/interceptors/http-interceptor.mjs +185 -185
  82. package/{esm2020 → esm2022}/lib/interceptors/index.mjs +1 -1
  83. package/{esm2020 → esm2022}/lib/models/app-name.enum.mjs +9 -9
  84. package/{esm2020 → esm2022}/lib/models/boolean-type.enum.mjs +5 -5
  85. package/{esm2020 → esm2022}/lib/models/crud-history.model.mjs +2 -2
  86. package/{esm2020 → esm2022}/lib/models/crud-mode.enum.mjs +6 -6
  87. package/{esm2020 → esm2022}/lib/models/currency.enum.mjs +6 -6
  88. package/{esm2020 → esm2022}/lib/models/data-table.model.mjs +22 -22
  89. package/{esm2020 → esm2022}/lib/models/document-type.enum.mjs +5 -5
  90. package/{esm2020 → esm2022}/lib/models/filters.model.mjs +1 -1
  91. package/{esm2020 → esm2022}/lib/models/generic-modal.model.mjs +1 -1
  92. package/{esm2020 → esm2022}/lib/models/http-response.model.mjs +1 -1
  93. package/{esm2020 → esm2022}/lib/models/index.mjs +17 -17
  94. package/{esm2020 → esm2022}/lib/models/ip-info.enum.mjs +1 -1
  95. package/{esm2020 → esm2022}/lib/models/list-item.model.mjs +1 -1
  96. package/{esm2020 → esm2022}/lib/models/locale.enum.mjs +6 -6
  97. package/{esm2020 → esm2022}/lib/models/menu-item.model.mjs +1 -1
  98. package/{esm2020 → esm2022}/lib/models/message-status.enum.mjs +7 -7
  99. package/{esm2020 → esm2022}/lib/models/profile.model.mjs +270 -270
  100. package/{esm2020 → esm2022}/lib/models/role.enum.mjs +4 -4
  101. package/{esm2020 → esm2022}/lib/models/status.enum.mjs +7 -7
  102. package/{esm2020 → esm2022}/lib/models/topbar.model.mjs +1 -1
  103. package/{esm2020 → esm2022}/lib/models/vector-app.model.mjs +1 -1
  104. package/{esm2020 → esm2022}/lib/models/vector-notification.model.mjs +1 -1
  105. package/{esm2020 → esm2022}/lib/models/view.enum.mjs +6 -6
  106. package/{esm2020 → esm2022}/lib/pipes/currency-brl.pipe.mjs +18 -18
  107. package/{esm2020 → esm2022}/lib/pipes/format-document.pipe.mjs +17 -17
  108. package/{esm2020 → esm2022}/lib/pipes/index.mjs +8 -8
  109. package/{esm2020 → esm2022}/lib/pipes/mask.pipe.mjs +21 -21
  110. package/{esm2020 → esm2022}/lib/pipes/not-hidden.pipe.mjs +16 -16
  111. package/{esm2020 → esm2022}/lib/pipes/only-active.pipe.mjs +16 -16
  112. package/{esm2020 → esm2022}/lib/pipes/pipes.module.mjs +50 -50
  113. package/{esm2020 → esm2022}/lib/pipes/remove-last-child.pipe.mjs +18 -18
  114. package/{esm2020 → esm2022}/lib/pipes/unread-notifications.pipe.mjs +15 -15
  115. package/{esm2020 → esm2022}/lib/resolvers/get-selected-crud-item.resolver.mjs +28 -28
  116. package/{esm2020 → esm2022}/lib/resolvers/index.mjs +1 -1
  117. package/{esm2020 → esm2022}/lib/services/auth.service.mjs +77 -77
  118. package/{esm2020 → esm2022}/lib/services/base-dropdown.mjs +1 -1
  119. package/{esm2020 → esm2022}/lib/services/crud-base.service.mjs +13 -13
  120. package/{esm2020 → esm2022}/lib/services/enum.service.mjs +43 -43
  121. package/{esm2020 → esm2022}/lib/services/error-message.service.mjs +16 -16
  122. package/{esm2020 → esm2022}/lib/services/geolocation.service.mjs +23 -23
  123. package/{esm2020 → esm2022}/lib/services/index.mjs +12 -12
  124. package/{esm2020 → esm2022}/lib/services/loading.service.mjs +15 -15
  125. package/{esm2020 → esm2022}/lib/services/menu.service.mjs +152 -152
  126. package/{esm2020 → esm2022}/lib/services/modal.service.mjs +15 -15
  127. package/{esm2020 → esm2022}/lib/services/notifications.service.mjs +64 -64
  128. package/{esm2020 → esm2022}/lib/services/profile.service.mjs +103 -103
  129. package/{esm2020 → esm2022}/lib/services/storage.service.mjs +108 -108
  130. package/esm2022/lib/shared/shared.module.mjs +19 -0
  131. package/{esm2020 → esm2022}/lib/utils/cpf-cnpj-validator.util.mjs +115 -115
  132. package/{esm2020 → esm2022}/lib/utils/file.util.mjs +14 -14
  133. package/{esm2020 → esm2022}/lib/utils/index.mjs +7 -7
  134. package/esm2022/lib/utils/mask.util.mjs +76 -0
  135. package/{esm2020 → esm2022}/lib/utils/object.util.mjs +26 -26
  136. package/{esm2020 → esm2022}/lib/utils/string.util.mjs +15 -15
  137. package/{esm2020 → esm2022}/lib/utils/validation.util.mjs +233 -233
  138. package/{esm2020 → esm2022}/lib/utils/window.util.mjs +8 -8
  139. package/{esm2020 → esm2022}/ngx-vector-components.mjs +4 -4
  140. package/{esm2020 → esm2022}/public-api.mjs +8 -8
  141. package/{fesm2020 → fesm2022}/ngx-vector-components.mjs +4577 -4573
  142. package/fesm2022/ngx-vector-components.mjs.map +1 -0
  143. package/{ngx-vector-components.d.ts → index.d.ts} +5 -5
  144. package/lib/components/badge/badge.component.d.ts +15 -15
  145. package/lib/components/badge/badge.module.d.ts +9 -9
  146. package/lib/components/badge/index.d.ts +2 -2
  147. package/lib/components/breadcrumb/breadcrumb.component.d.ts +19 -19
  148. package/lib/components/breadcrumb/breadcrumb.module.d.ts +8 -8
  149. package/lib/components/breadcrumb/index.d.ts +2 -2
  150. package/lib/components/crud-base/crud-base.component.d.ts +20 -20
  151. package/lib/components/crud-base/index.d.ts +1 -1
  152. package/lib/components/crud-footer/crud-footer.component.d.ts +13 -13
  153. package/lib/components/crud-footer/crud-footer.module.d.ts +10 -10
  154. package/lib/components/crud-footer/index.d.ts +2 -2
  155. package/lib/components/crud-header/crud-header.component.d.ts +11 -11
  156. package/lib/components/crud-header/crud-header.module.d.ts +9 -9
  157. package/lib/components/crud-header/index.d.ts +2 -2
  158. package/lib/components/crud-history/crud-history.component.d.ts +12 -12
  159. package/lib/components/crud-history/crud-history.module.d.ts +10 -10
  160. package/lib/components/crud-history/index.d.ts +2 -2
  161. package/lib/components/fields/button/button.component.d.ts +17 -17
  162. package/lib/components/fields/button/index.d.ts +1 -1
  163. package/lib/components/fields/calendar-field/calendar-field.component.d.ts +23 -23
  164. package/lib/components/fields/calendar-field/index.d.ts +1 -1
  165. package/lib/components/fields/checkbox-field/checkbox-field.component.d.ts +19 -19
  166. package/lib/components/fields/checkbox-field/index.d.ts +1 -1
  167. package/lib/components/fields/currency-field/currency-field.component.d.ts +32 -32
  168. package/lib/components/fields/currency-field/index.d.ts +1 -1
  169. package/lib/components/fields/data-table/data-table.component.d.ts +82 -82
  170. package/lib/components/fields/data-table/index.d.ts +1 -1
  171. package/lib/components/fields/dropdown-field/dropdown-field.component.d.ts +52 -52
  172. package/lib/components/fields/dropdown-field/index.d.ts +1 -1
  173. package/lib/components/fields/field-error-message/field-error-message.component.d.ts +10 -10
  174. package/lib/components/fields/field-error-message/index.d.ts +1 -1
  175. package/lib/components/fields/fields.module.d.ts +48 -48
  176. package/lib/components/fields/filters/filters.component.d.ts +63 -63
  177. package/lib/components/fields/filters/index.d.ts +1 -1
  178. package/lib/components/fields/index.d.ts +18 -18
  179. package/lib/components/fields/input-number-field/index.d.ts +1 -1
  180. package/lib/components/fields/input-number-field/input-number-field.component.d.ts +28 -28
  181. package/lib/components/fields/multiselect-field/index.d.ts +1 -1
  182. package/lib/components/fields/multiselect-field/multiselect-field.component.d.ts +16 -16
  183. package/lib/components/fields/percentage-field/index.d.ts +1 -1
  184. package/lib/components/fields/percentage-field/percentage-field.component.d.ts +16 -16
  185. package/lib/components/fields/radio-button-field/index.d.ts +1 -1
  186. package/lib/components/fields/radio-button-field/radio-button-field.component.d.ts +25 -25
  187. package/lib/components/fields/range-value/index.d.ts +1 -1
  188. package/lib/components/fields/range-value/range-value.component.d.ts +18 -18
  189. package/lib/components/fields/search-field/index.d.ts +1 -1
  190. package/lib/components/fields/search-field/search-field.component.d.ts +14 -14
  191. package/lib/components/fields/select-button-field/index.d.ts +1 -1
  192. package/lib/components/fields/select-button-field/select-button-field.component.d.ts +9 -9
  193. package/lib/components/fields/text-field/index.d.ts +1 -1
  194. package/lib/components/fields/text-field/text-field.component.d.ts +55 -54
  195. package/lib/components/fields/textarea-field/index.d.ts +1 -1
  196. package/lib/components/fields/textarea-field/textarea-field.component.d.ts +22 -22
  197. package/lib/components/generic-error-modal/generic-error-modal.component.d.ts +16 -15
  198. package/lib/components/generic-error-modal/generic-error-modal.module.d.ts +10 -10
  199. package/lib/components/generic-error-modal/index.d.ts +2 -2
  200. package/lib/components/generic-modal/generic-modal.component.d.ts +24 -24
  201. package/lib/components/generic-modal/generic-modal.module.d.ts +10 -10
  202. package/lib/components/generic-modal/index.d.ts +2 -2
  203. package/lib/components/index.d.ts +13 -13
  204. package/lib/components/menu/index.d.ts +3 -3
  205. package/lib/components/menu/menu.component.d.ts +53 -53
  206. package/lib/components/menu/menu.module.d.ts +10 -10
  207. package/lib/components/menu/sub-menus-list/sub-menus-list.component.d.ts +14 -14
  208. package/lib/components/panel/index.d.ts +2 -2
  209. package/lib/components/panel/panel.component.d.ts +8 -8
  210. package/lib/components/panel/panel.module.d.ts +9 -9
  211. package/lib/components/score/index.d.ts +2 -2
  212. package/lib/components/score/score.component.d.ts +9 -9
  213. package/lib/components/score/score.module.d.ts +7 -7
  214. package/lib/components/top-bar/index.d.ts +2 -2
  215. package/lib/components/top-bar/top-bar.component.d.ts +48 -48
  216. package/lib/components/top-bar/top-bar.module.d.ts +10 -10
  217. package/lib/guards/crud-list-has-items.guard.d.ts +10 -10
  218. package/lib/guards/get-token-by-guid.guard.d.ts +15 -15
  219. package/lib/guards/has-permission.guard.d.ts +13 -13
  220. package/lib/guards/index.d.ts +5 -5
  221. package/lib/guards/role.guard.d.ts +11 -11
  222. package/lib/guards/token-is-present.guard.d.ts +11 -11
  223. package/lib/interceptors/http-interceptor.d.ts +31 -31
  224. package/lib/interceptors/index.d.ts +1 -1
  225. package/lib/models/app-name.enum.d.ts +8 -8
  226. package/lib/models/boolean-type.enum.d.ts +4 -4
  227. package/lib/models/crud-history.model.d.ts +13 -13
  228. package/lib/models/crud-mode.enum.d.ts +5 -5
  229. package/lib/models/currency.enum.d.ts +5 -5
  230. package/lib/models/data-table.model.d.ts +65 -65
  231. package/lib/models/document-type.enum.d.ts +4 -4
  232. package/lib/models/filters.model.d.ts +4 -4
  233. package/lib/models/generic-modal.model.d.ts +13 -13
  234. package/lib/models/http-response.model.d.ts +48 -48
  235. package/lib/models/index.d.ts +17 -17
  236. package/lib/models/ip-info.enum.d.ts +6 -6
  237. package/lib/models/list-item.model.d.ts +7 -7
  238. package/lib/models/locale.enum.d.ts +5 -5
  239. package/lib/models/menu-item.model.d.ts +16 -16
  240. package/lib/models/message-status.enum.d.ts +6 -6
  241. package/lib/models/profile.model.d.ts +292 -292
  242. package/lib/models/role.enum.d.ts +3 -3
  243. package/lib/models/status.enum.d.ts +6 -6
  244. package/lib/models/topbar.model.d.ts +5 -5
  245. package/lib/models/vector-app.model.d.ts +9 -9
  246. package/lib/models/vector-notification.model.d.ts +8 -8
  247. package/lib/models/view.enum.d.ts +5 -5
  248. package/lib/pipes/currency-brl.pipe.d.ts +7 -7
  249. package/lib/pipes/format-document.pipe.d.ts +7 -7
  250. package/lib/pipes/index.d.ts +8 -8
  251. package/lib/pipes/mask.pipe.d.ts +7 -7
  252. package/lib/pipes/not-hidden.pipe.d.ts +7 -7
  253. package/lib/pipes/only-active.pipe.d.ts +7 -7
  254. package/lib/pipes/pipes.module.d.ts +13 -13
  255. package/lib/pipes/remove-last-child.pipe.d.ts +7 -7
  256. package/lib/pipes/unread-notifications.pipe.d.ts +9 -9
  257. package/lib/resolvers/get-selected-crud-item.resolver.d.ts +10 -10
  258. package/lib/resolvers/index.d.ts +1 -1
  259. package/lib/services/auth.service.d.ts +24 -24
  260. package/lib/services/base-dropdown.d.ts +7 -7
  261. package/lib/services/crud-base.service.d.ts +7 -7
  262. package/lib/services/enum.service.d.ts +13 -13
  263. package/lib/services/error-message.service.d.ts +8 -8
  264. package/lib/services/geolocation.service.d.ts +13 -13
  265. package/lib/services/index.d.ts +12 -12
  266. package/lib/services/loading.service.d.ts +7 -7
  267. package/lib/services/menu.service.d.ts +35 -35
  268. package/lib/services/modal.service.d.ts +7 -7
  269. package/lib/services/notifications.service.d.ts +13 -13
  270. package/lib/services/profile.service.d.ts +26 -26
  271. package/lib/services/storage.service.d.ts +43 -43
  272. package/lib/shared/shared.module.d.ts +10 -10
  273. package/lib/utils/cpf-cnpj-validator.util.d.ts +5 -5
  274. package/lib/utils/file.util.d.ts +4 -4
  275. package/lib/utils/index.d.ts +7 -7
  276. package/lib/utils/mask.util.d.ts +21 -21
  277. package/lib/utils/object.util.d.ts +5 -5
  278. package/lib/utils/string.util.d.ts +4 -4
  279. package/lib/utils/validation.util.d.ts +17 -17
  280. package/lib/utils/window.util.d.ts +4 -4
  281. package/package.json +18 -24
  282. package/public-api.d.ts +8 -8
  283. package/esm2020/lib/components/badge/badge.module.mjs +0 -19
  284. package/esm2020/lib/components/breadcrumb/breadcrumb.module.mjs +0 -18
  285. package/esm2020/lib/components/crud-base/crud-base.component.mjs +0 -47
  286. package/esm2020/lib/components/crud-footer/crud-footer.module.mjs +0 -20
  287. package/esm2020/lib/components/crud-header/crud-header.component.mjs +0 -30
  288. package/esm2020/lib/components/crud-header/crud-header.module.mjs +0 -19
  289. package/esm2020/lib/components/crud-history/crud-history.module.mjs +0 -20
  290. package/esm2020/lib/components/fields/data-table/data-table.component.mjs +0 -386
  291. package/esm2020/lib/components/fields/dropdown-field/dropdown-field.component.mjs +0 -204
  292. package/esm2020/lib/components/fields/fields.module.mjs +0 -213
  293. package/esm2020/lib/components/fields/filters/filters.component.mjs +0 -203
  294. package/esm2020/lib/components/fields/search-field/search-field.component.mjs +0 -33
  295. package/esm2020/lib/components/fields/text-field/text-field.component.mjs +0 -229
  296. package/esm2020/lib/components/generic-error-modal/generic-error-modal.component.mjs +0 -36
  297. package/esm2020/lib/components/generic-error-modal/generic-error-modal.module.mjs +0 -20
  298. package/esm2020/lib/components/generic-modal/generic-modal.module.mjs +0 -20
  299. package/esm2020/lib/components/menu/menu.component.mjs +0 -305
  300. package/esm2020/lib/components/menu/menu.module.mjs +0 -20
  301. package/esm2020/lib/components/panel/panel.module.mjs +0 -19
  302. package/esm2020/lib/components/top-bar/top-bar.module.mjs +0 -20
  303. package/esm2020/lib/shared/shared.module.mjs +0 -19
  304. package/esm2020/lib/utils/mask.util.mjs +0 -76
  305. package/fesm2015/ngx-vector-components.mjs +0 -4805
  306. package/fesm2015/ngx-vector-components.mjs.map +0 -1
  307. package/fesm2020/ngx-vector-components.mjs.map +0 -1
@@ -0,0 +1,33 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { UntypedFormControl } from '@angular/forms';
3
+ import { Subscription } from 'rxjs';
4
+ import { debounceTime } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../text-field/text-field.component";
7
+ export class SearchFieldComponent {
8
+ constructor() {
9
+ this.placeholder = '';
10
+ this.onSearch = new EventEmitter();
11
+ this.formControl = new UntypedFormControl();
12
+ this.subscription = new Subscription();
13
+ }
14
+ ngOnInit() {
15
+ this.subscription.add(this.formControl.valueChanges.pipe(debounceTime(300)).subscribe((value) => {
16
+ this.onSearch.emit(value);
17
+ }));
18
+ }
19
+ ngOnDestroy() {
20
+ this.subscription.unsubscribe();
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchFieldComponent, selector: "vector-search-field", inputs: { placeholder: "placeholder" }, outputs: { onSearch: "onSearch" }, ngImport: i0, template: "<vector-text-field [control]=\"formControl\" rightIcon=\"fas fa-search\" [label]=\"placeholder\"></vector-text-field>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1.TextFieldComponent, selector: "vector-text-field", inputs: ["isRequired", "label", "maxlength", "isPassword", "numeric", "decimal", "onlyText", "alphaNumeric", "alphaNumericAndWhitespace", "mask", "autoClear", "readonly", "rightIcon", "centered", "enableDocumentTypeChoice", "hiddenErrorMessage", "leftLabel", "control", "inputId", "slotChar"], outputs: ["blurEvent", "enterKeyPress", "backSpaceKeyPress", "focusEvent", "onDocumentTypeChange"] }] }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFieldComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'vector-search-field', template: "<vector-text-field [control]=\"formControl\" rightIcon=\"fas fa-search\" [label]=\"placeholder\"></vector-text-field>\r\n" }]
28
+ }], ctorParameters: function () { return []; }, propDecorators: { placeholder: [{
29
+ type: Input
30
+ }], onSearch: [{
31
+ type: Output
32
+ }] } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12ZWN0b3ItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZmllbGRzL3NlYXJjaC1maWVsZC9zZWFyY2gtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvc2VhcmNoLWZpZWxkL3NlYXJjaC1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTzlDLE1BQU0sT0FBTyxvQkFBb0I7SUFRL0I7UUFOTyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV0QyxnQkFBVyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVoQixRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7OEdBcEJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHNJQ1ZqQywySEFDQTs7MkZEU2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHFCQUFxQjswRUFNeEIsV0FBVztzQkFEakIsS0FBSztnQkFHQyxRQUFRO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd2ZWN0b3Itc2VhcmNoLWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaEZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIHB1YmxpYyBmb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KHZhbHVlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjx2ZWN0b3ItdGV4dC1maWVsZCBbY29udHJvbF09XCJmb3JtQ29udHJvbFwiIHJpZ2h0SWNvbj1cImZhcyBmYS1zZWFyY2hcIiBbbGFiZWxdPVwicGxhY2Vob2xkZXJcIj48L3ZlY3Rvci10ZXh0LWZpZWxkPlxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './select-button-field.component';
1
+ export * from './select-button-field.component';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9zZWxlY3QtYnV0dG9uLWZpZWxkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlbGVjdC1idXR0b24tZmllbGQuY29tcG9uZW50JztcclxuIl19
@@ -1,20 +1,20 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "primeng/selectbutton";
4
- import * as i2 from "@angular/forms";
5
- export class SelectButtonFieldComponent {
6
- constructor() {
7
- this.options = [];
8
- }
9
- }
10
- SelectButtonFieldComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: SelectButtonFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
- SelectButtonFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: SelectButtonFieldComponent, selector: "vector-select-button-field", inputs: { options: "options", control: "control" }, ngImport: i0, template: "<div class=\"input-container p-input-icon-right\">\r\n <p-selectButton [options]=\"options\" [formControl]=\"control\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\r\n</div>\r\n", styles: [""], components: [{ type: i1.SelectButton, selector: "p-selectButton", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "tabindex", "multiple", "style", "styleClass", "ariaLabelledBy", "disabled", "dataKey"], outputs: ["onOptionClick", "onChange"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: SelectButtonFieldComponent, decorators: [{
13
- type: Component,
14
- args: [{ selector: 'vector-select-button-field', template: "<div class=\"input-container p-input-icon-right\">\r\n <p-selectButton [options]=\"options\" [formControl]=\"control\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\r\n</div>\r\n", styles: [""] }]
15
- }], ctorParameters: function () { return []; }, propDecorators: { options: [{
16
- type: Input
17
- }], control: [{
18
- type: Input
19
- }] } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJ1dHRvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9zZWxlY3QtYnV0dG9uLWZpZWxkL3NlbGVjdC1idXR0b24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvc2VsZWN0LWJ1dHRvbi1maWVsZC9zZWxlY3QtYnV0dG9uLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUWpELE1BQU0sT0FBTywwQkFBMEI7SUFNckM7UUFKTyxZQUFPLEdBQWUsRUFBRSxDQUFDO0lBSWpCLENBQUM7O3VIQU5MLDBCQUEwQjsyR0FBMUIsMEJBQTBCLHNIQ1J2QyxtTUFHQTsyRkRLYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsNEJBQTRCOzBFQU0vQixPQUFPO3NCQURiLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ZlY3Rvci1zZWxlY3QtYnV0dG9uLWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWJ1dHRvbi1maWVsZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWJ1dHRvbi1maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0QnV0dG9uRmllbGRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9wdGlvbnM6IExpc3RJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb250cm9sOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIHAtaW5wdXQtaWNvbi1yaWdodFwiPlxyXG4gIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJvcHRpb25zXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cImNvZGVcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG48L2Rpdj5cclxuIl19
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ import * as i2 from "primeng/selectbutton";
5
+ export class SelectButtonFieldComponent {
6
+ constructor() {
7
+ this.options = [];
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectButtonFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SelectButtonFieldComponent, selector: "vector-select-button-field", inputs: { options: "options", control: "control" }, ngImport: i0, template: "<div class=\"input-container p-input-icon-right\">\r\n <p-selectButton [options]=\"options\" [formControl]=\"control\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2.SelectButton, selector: "p-selectButton", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "tabindex", "multiple", "style", "styleClass", "ariaLabelledBy", "disabled", "dataKey"], outputs: ["onOptionClick", "onChange"] }] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectButtonFieldComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'vector-select-button-field', template: "<div class=\"input-container p-input-icon-right\">\r\n <p-selectButton [options]=\"options\" [formControl]=\"control\" optionLabel=\"name\" optionValue=\"code\"></p-selectButton>\r\n</div>\r\n" }]
15
+ }], ctorParameters: function () { return []; }, propDecorators: { options: [{
16
+ type: Input
17
+ }], control: [{
18
+ type: Input
19
+ }] } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJ1dHRvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9zZWxlY3QtYnV0dG9uLWZpZWxkL3NlbGVjdC1idXR0b24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvc2VsZWN0LWJ1dHRvbi1maWVsZC9zZWxlY3QtYnV0dG9uLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUWpELE1BQU0sT0FBTywwQkFBMEI7SUFNckM7UUFKTyxZQUFPLEdBQWUsRUFBRSxDQUFDO0lBSWpCLENBQUM7OEdBTkwsMEJBQTBCO2tHQUExQiwwQkFBMEIsc0hDUnZDLG1NQUdBOzsyRkRLYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsNEJBQTRCOzBFQU0vQixPQUFPO3NCQURiLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ZlY3Rvci1zZWxlY3QtYnV0dG9uLWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWJ1dHRvbi1maWVsZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWJ1dHRvbi1maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0QnV0dG9uRmllbGRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9wdGlvbnM6IExpc3RJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb250cm9sOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIHAtaW5wdXQtaWNvbi1yaWdodFwiPlxyXG4gIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJvcHRpb25zXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cImNvZGVcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG48L2Rpdj5cclxuIl19
@@ -1,2 +1,2 @@
1
- export * from './text-field.component';
1
+ export * from './text-field.component';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy90ZXh0LWZpZWxkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RleHQtZmllbGQuY29tcG9uZW50JztcclxuIl19
@@ -0,0 +1,232 @@
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 "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "primeng/keyfilter";
9
+ import * as i4 from "primeng/inputtext";
10
+ import * as i5 from "primeng/inputmask";
11
+ import * as i6 from "../button/button.component";
12
+ import * as i7 from "../field-error-message/field-error-message.component";
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.readonly = false;
26
+ this.rightIcon = '';
27
+ this.centered = false;
28
+ this.enableDocumentTypeChoice = false;
29
+ this.hiddenErrorMessage = false;
30
+ this.slotChar = '_';
31
+ this.blurEvent = new EventEmitter();
32
+ this.enterKeyPress = new EventEmitter();
33
+ this.backSpaceKeyPress = new EventEmitter();
34
+ this.focusEvent = new EventEmitter();
35
+ this.onDocumentTypeChange = new EventEmitter();
36
+ this.isPasswordVisible = false;
37
+ this.validateOnly = false;
38
+ this.documentTypes = [
39
+ {
40
+ name: 'CPF',
41
+ code: DocumentType.CPF,
42
+ },
43
+ {
44
+ name: 'CNPJ',
45
+ code: DocumentType.CNPJ,
46
+ },
47
+ ];
48
+ this.selectedDocumentType = this.documentTypes[1];
49
+ this.lastBlurValue = '';
50
+ this.lastTypedValue = '';
51
+ this.subscription = new Subscription();
52
+ this.controlSubscription = new Subscription();
53
+ }
54
+ set control(_control) {
55
+ this._control = _control;
56
+ if (this.enableDocumentTypeChoice) {
57
+ this.handleInitialDocumentTypeState();
58
+ }
59
+ if (this.controlSubscription) {
60
+ this.controlSubscription.unsubscribe();
61
+ this.controlSubscription = new Subscription();
62
+ }
63
+ this.controlSubscription.add(this.control.valueChanges.subscribe((value) => {
64
+ if (this.enableDocumentTypeChoice && !this.lastTypedValue && value?.length > 11) {
65
+ this.handleInitialDocumentTypeState();
66
+ }
67
+ this.lastTypedValue = value;
68
+ }));
69
+ }
70
+ get placeholder() {
71
+ if (!this.label) {
72
+ return '';
73
+ }
74
+ return `${this.label}${this.isRequired ? '*' : ''}`;
75
+ }
76
+ get keyfilter() {
77
+ this.validateOnly = false;
78
+ if (this.numeric) {
79
+ return 'int';
80
+ }
81
+ if (this.decimal) {
82
+ this.validateOnly = true;
83
+ return /^(\d+(?:[\,]\d{2})?)$/;
84
+ }
85
+ if (this.onlyText) {
86
+ this.validateOnly = true;
87
+ return /^[a-zA-ZÀ-ú\s]*$/gm;
88
+ }
89
+ if (this.alphaNumeric) {
90
+ return 'alphanum';
91
+ }
92
+ if (this.alphaNumericAndWhitespace) {
93
+ return /^[A-Za-zÀ-ú0-9 ]*$/gm;
94
+ }
95
+ return /[\s\S]*/;
96
+ }
97
+ get control() {
98
+ return this._control;
99
+ }
100
+ get showPasswordIcon() {
101
+ return this.isPasswordVisible ? 'fas fa-eye' : 'fas fa-eye-slash';
102
+ }
103
+ ngOnInit() {
104
+ if (this.enableDocumentTypeChoice) {
105
+ this.setDocumentType(this.selectedDocumentType.code);
106
+ }
107
+ }
108
+ ngOnDestroy() {
109
+ this.subscription.unsubscribe();
110
+ this.controlSubscription.unsubscribe();
111
+ }
112
+ onBlur() {
113
+ this.control.markAsTouched();
114
+ if (this.lastBlurValue !== this.control.value) {
115
+ this.lastBlurValue = this.control.value;
116
+ setTimeout(() => {
117
+ this.blurEvent.emit(this.control.value);
118
+ });
119
+ }
120
+ }
121
+ onEnterPress() {
122
+ this.onBlur();
123
+ this.enterKeyPress.emit();
124
+ }
125
+ onBackSpacePress() {
126
+ this.onBlur();
127
+ this.backSpaceKeyPress.emit();
128
+ }
129
+ onFocus($event) {
130
+ const target = $event.target;
131
+ if (this.mask) {
132
+ const firstUnderscore = target?.value.indexOf('_');
133
+ const selectionIndex = (firstUnderscore >= 0 ? firstUnderscore : target?.value.length) || 0;
134
+ target?.setSelectionRange(selectionIndex, selectionIndex);
135
+ }
136
+ this.focusEvent.emit(target?.value);
137
+ }
138
+ toggleShowPassword() {
139
+ this.isPasswordVisible = !this.isPasswordVisible;
140
+ }
141
+ handleDocumentTypeChange() {
142
+ if (this.selectedDocumentType.code === DocumentType.CNPJ) {
143
+ this.setDocumentType(DocumentType.CPF);
144
+ }
145
+ else {
146
+ this.setDocumentType(DocumentType.CNPJ);
147
+ }
148
+ }
149
+ handleInitialDocumentTypeState() {
150
+ if (this.control?.value) {
151
+ if (this.control.value.length === 11) {
152
+ this.setDocumentType(DocumentType.CPF);
153
+ }
154
+ else {
155
+ this.setDocumentType(DocumentType.CNPJ);
156
+ }
157
+ }
158
+ else {
159
+ this.setDocumentType(DocumentType.CPF);
160
+ }
161
+ }
162
+ setDocumentType(documentType) {
163
+ switch (documentType) {
164
+ case DocumentType.CNPJ:
165
+ this.selectedDocumentType = this.documentTypes[1];
166
+ this.mask = MaskUtil.CNPJ_TEXT_FIELD_PATTERN;
167
+ break;
168
+ case DocumentType.CPF:
169
+ this.selectedDocumentType = this.documentTypes[0];
170
+ this.mask = MaskUtil.CPF_TEXT_FIELD_PATTERN;
171
+ break;
172
+ }
173
+ this.onDocumentTypeChange.emit(this.selectedDocumentType);
174
+ }
175
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
176
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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", readonly: "readonly", rightIcon: "rightIcon", centered: "centered", enableDocumentTypeChoice: "enableDocumentTypeChoice", hiddenErrorMessage: "hiddenErrorMessage", leftLabel: "leftLabel", control: "control", inputId: "inputId", slotChar: "slotChar" }, outputs: { blurEvent: "blurEvent", enterKeyPress: "enterKeyPress", backSpaceKeyPress: "backSpaceKeyPress", 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 [id]=\"inputId\"\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 (blur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (keydown.backspace)=\"onBackSpacePress()\"\r\n (click)=\"onFocus($event)\"\r\n [readonly]=\"readonly ? true : null\"\r\n />\r\n <p-inputMask\r\n *ngIf=\"mask\"\r\n type=\"text\"\r\n [inputId]=\"inputId || 'mask-field'\"\r\n [formControl]=\"control\"\r\n [mask]=\"mask\"\r\n [placeholder]=\"placeholder\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (keydown.backspace)=\"onBackSpacePress()\"\r\n [autoClear]=\"autoClear\"\r\n [unmask]=\"true\"\r\n [styleClass]=\"centered ? 'text-centered' : ''\"\r\n [slotChar]=\"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"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "component", type: i6.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "rightIcon", "noShadow", "style"], outputs: ["onClick"] }, { kind: "component", type: i7.FieldErrorMessageComponent, selector: "vector-field-error-message", inputs: ["control"] }] }); }
177
+ }
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextFieldComponent, decorators: [{
179
+ type: Component,
180
+ 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 [id]=\"inputId\"\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 (blur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (keydown.backspace)=\"onBackSpacePress()\"\r\n (click)=\"onFocus($event)\"\r\n [readonly]=\"readonly ? true : null\"\r\n />\r\n <p-inputMask\r\n *ngIf=\"mask\"\r\n type=\"text\"\r\n [inputId]=\"inputId || 'mask-field'\"\r\n [formControl]=\"control\"\r\n [mask]=\"mask\"\r\n [placeholder]=\"placeholder\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (keydown.backspace)=\"onBackSpacePress()\"\r\n [autoClear]=\"autoClear\"\r\n [unmask]=\"true\"\r\n [styleClass]=\"centered ? 'text-centered' : ''\"\r\n [slotChar]=\"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"] }]
181
+ }], propDecorators: { isRequired: [{
182
+ type: Input
183
+ }], label: [{
184
+ type: Input
185
+ }], maxlength: [{
186
+ type: Input
187
+ }], isPassword: [{
188
+ type: Input
189
+ }], numeric: [{
190
+ type: Input
191
+ }], decimal: [{
192
+ type: Input
193
+ }], onlyText: [{
194
+ type: Input
195
+ }], alphaNumeric: [{
196
+ type: Input
197
+ }], alphaNumericAndWhitespace: [{
198
+ type: Input
199
+ }], mask: [{
200
+ type: Input
201
+ }], autoClear: [{
202
+ type: Input
203
+ }], readonly: [{
204
+ type: Input
205
+ }], rightIcon: [{
206
+ type: Input
207
+ }], centered: [{
208
+ type: Input
209
+ }], enableDocumentTypeChoice: [{
210
+ type: Input
211
+ }], hiddenErrorMessage: [{
212
+ type: Input
213
+ }], leftLabel: [{
214
+ type: Input
215
+ }], control: [{
216
+ type: Input
217
+ }], inputId: [{
218
+ type: Input
219
+ }], slotChar: [{
220
+ type: Input
221
+ }], blurEvent: [{
222
+ type: Output
223
+ }], enterKeyPress: [{
224
+ type: Output
225
+ }], backSpaceKeyPress: [{
226
+ type: Output
227
+ }], focusEvent: [{
228
+ type: Output
229
+ }], onDocumentTypeChange: [{
230
+ type: Output
231
+ }] } });
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy90ZXh0LWZpZWxkL3RleHQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvdGV4dC1maWVsZC90ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPUyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbkIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUV2QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUlsQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLGFBQVEsR0FBRyxLQUFLLENB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UTtzQkFEZCxLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxRQUFRO3NCQURkLEtBQUs7Z0JBR0Msd0JBQXdCO3NCQUQ5QixLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0YsT0FBTztzQkFEVixLQUFLO2dCQXFCQyxPQUFPO3NCQURiLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLFNBQVM7c0JBRGYsTUFBTTtnQkFHQSxhQUFhO3NCQURuQixNQUFNO2dCQUdBLGlCQUFpQjtzQkFEdkIsTUFBTTtnQkFHQSxVQUFVO3NCQURoQixNQUFNO2dCQUdBLG9CQUFvQjtzQkFEMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRG9jdW1lbnRUeXBlLCBMaXN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE1hc2tVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd2ZWN0b3ItdGV4dC1maWVsZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RleHQtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG1heGxlbmd0aDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNQYXNzd29yZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG51bWVyaWMgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNpbWFsID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb25seVRleHQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhbHBoYU51bWVyaWMgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhbHBoYU51bWVyaWNBbmRXaGl0ZXNwYWNlID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWFzaz86IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhdXRvQ2xlYXIgPSB0cnVlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmlnaHRJY29uID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY2VudGVyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBlbmFibGVEb2N1bWVudFR5cGVDaG9pY2UgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoaWRkZW5FcnJvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsZWZ0TGFiZWw/OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBzZXQgY29udHJvbChfY29udHJvbDogYW55KSB7XHJcbiAgICB0aGlzLl9jb250cm9sID0gX2NvbnRyb2w7XHJcbiAgICBpZiAodGhpcy5lbmFibGVEb2N1bWVudFR5cGVDaG9pY2UpIHtcclxuICAgICAgdGhpcy5oYW5kbGVJbml0aWFsRG9jdW1lbnRUeXBlU3RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb250cm9sU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZURvY3VtZW50VHlwZUNob2ljZSAmJiAhdGhpcy5sYXN0VHlwZWRWYWx1ZSAmJiB2YWx1ZT8ubGVuZ3RoID4gMTEpIHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlSW5pdGlhbERvY3VtZW50VHlwZVN0YXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdFR5cGVkVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlucHV0SWQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2xvdENoYXIgPSAnXyc7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGJsdXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZW50ZXJLZXlQcmVzcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYmFja1NwYWNlS2V5UHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uRG9jdW1lbnRUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0SXRlbT4oKTtcclxuXHJcbiAgcHVibGljIGlzUGFzc3dvcmRWaXNpYmxlID0gZmFsc2U7XHJcbiAgcHVibGljIHZhbGlkYXRlT25seSA9IGZhbHNlO1xyXG5cclxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMubGFiZWwpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3RoaXMubGFiZWx9JHt0aGlzLmlzUmVxdWlyZWQgPyAnKicgOiAnJ31gO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGtleWZpbHRlcigpIHtcclxuICAgIHRoaXMudmFsaWRhdGVPbmx5ID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5udW1lcmljKSB7XHJcbiAgICAgIHJldHVybiAnaW50JztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRlY2ltYWwpIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZU9ubHkgPSB0cnVlO1xyXG4gICAgICByZXR1cm4gL14oXFxkKyg/OltcXCxdXFxkezJ9KT8pJC87XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vbmx5VGV4dCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlT25seSA9IHRydWU7XHJcbiAgICAgIHJldHVybiAvXlthLXpBLVrDgC3Dulxcc10qJC9nbTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFscGhhTnVtZXJpYykge1xyXG4gICAgICByZXR1cm4gJ2FscGhhbnVtJztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFscGhhTnVtZXJpY0FuZFdoaXRlc3BhY2UpIHtcclxuICAgICAgcmV0dXJuIC9eW0EtWmEtesOALcO6MC05IF0qJC9nbTtcclxuICAgIH1cclxuICAgIHJldHVybiAvW1xcc1xcU10qLztcclxuICB9XHJcblxyXG4gIGdldCBjb250cm9sKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd1Bhc3N3b3JkSWNvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmlzUGFzc3dvcmRWaXNpYmxlID8gJ2ZhcyBmYS1leWUnIDogJ2ZhcyBmYS1leWUtc2xhc2gnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvY3VtZW50VHlwZXM6IExpc3RJdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdDUEYnLFxyXG4gICAgICBjb2RlOiBEb2N1bWVudFR5cGUuQ1BGLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ0NOUEonLFxyXG4gICAgICBjb2RlOiBEb2N1bWVudFR5cGUuQ05QSixcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkRG9jdW1lbnRUeXBlID0gdGhpcy5kb2N1bWVudFR5cGVzWzFdO1xyXG5cclxuICBwcml2YXRlIGxhc3RCbHVyVmFsdWUgPSAnJztcclxuICBwcml2YXRlIGxhc3RUeXBlZFZhbHVlID0gJyc7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSBjb250cm9sU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgX2NvbnRyb2w6IGFueTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5lbmFibGVEb2N1bWVudFR5cGVDaG9pY2UpIHtcclxuICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZS5jb2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQmx1cigpIHtcclxuICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAodGhpcy5sYXN0Qmx1clZhbHVlICE9PSB0aGlzLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5sYXN0Qmx1clZhbHVlID0gdGhpcy5jb250cm9sLnZhbHVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmJsdXJFdmVudC5lbWl0KHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRW50ZXJQcmVzcygpIHtcclxuICAgIHRoaXMub25CbHVyKCk7XHJcbiAgICB0aGlzLmVudGVyS2V5UHJlc3MuZW1pdCgpO1xyXG4gIH1cclxuICBwdWJsaWMgb25CYWNrU3BhY2VQcmVzcygpIHtcclxuICAgIHRoaXMub25CbHVyKCk7XHJcbiAgICB0aGlzLmJhY2tTcGFjZUtleVByZXNzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZvY3VzKCRldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9ICRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICh0aGlzLm1hc2spIHtcclxuICAgICAgY29uc3QgZmlyc3RVbmRlcnNjb3JlID0gdGFyZ2V0Py52YWx1ZS5pbmRleE9mKCdfJyk7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGlvbkluZGV4ID0gKGZpcnN0VW5kZXJzY29yZSA+PSAwID8gZmlyc3RVbmRlcnNjb3JlIDogdGFyZ2V0Py52YWx1ZS5sZW5ndGgpIHx8IDA7XHJcbiAgICAgIHRhcmdldD8uc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uSW5kZXgsIHNlbGVjdGlvbkluZGV4KTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9jdXNFdmVudC5lbWl0KHRhcmdldD8udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVNob3dQYXNzd29yZCgpIHtcclxuICAgIHRoaXMuaXNQYXNzd29yZFZpc2libGUgPSAhdGhpcy5pc1Bhc3N3b3JkVmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEb2N1bWVudFR5cGVDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZS5jb2RlID09PSBEb2N1bWVudFR5cGUuQ05QSikge1xyXG4gICAgICB0aGlzLnNldERvY3VtZW50VHlwZShEb2N1bWVudFR5cGUuQ1BGKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0RG9jdW1lbnRUeXBlKERvY3VtZW50VHlwZS5DTlBKKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSW5pdGlhbERvY3VtZW50VHlwZVN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbD8udmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZS5sZW5ndGggPT09IDExKSB7XHJcbiAgICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUoRG9jdW1lbnRUeXBlLkNQRik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXREb2N1bWVudFR5cGUoRG9jdW1lbnRUeXBlLkNOUEopO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldERvY3VtZW50VHlwZShEb2N1bWVudFR5cGUuQ1BGKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RG9jdW1lbnRUeXBlKGRvY3VtZW50VHlwZTogRG9jdW1lbnRUeXBlKSB7XHJcbiAgICBzd2l0Y2ggKGRvY3VtZW50VHlwZSkge1xyXG4gICAgICBjYXNlIERvY3VtZW50VHlwZS5DTlBKOlxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZXNbMV07XHJcbiAgICAgICAgdGhpcy5tYXNrID0gTWFza1V0aWwuQ05QSl9URVhUX0ZJRUxEX1BBVFRFUk47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRG9jdW1lbnRUeXBlLkNQRjpcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlID0gdGhpcy5kb2N1bWVudFR5cGVzWzBdO1xyXG4gICAgICAgIHRoaXMubWFzayA9IE1hc2tVdGlsLkNQRl9URVhUX0ZJRUxEX1BBVFRFUk47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRG9jdW1lbnRUeXBlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIHAtaW5wdXQtaWNvbi1yaWdodFwiPlxyXG4gIDxpICpuZ0lmPVwicmlnaHRJY29uXCIgW2NsYXNzXT1cInJpZ2h0SWNvblwiPjwvaT5cclxuICA8aSAqbmdJZj1cImlzUGFzc3dvcmRcIiBjbGFzcz1cInNob3ctcGFzc3dvcmQtaWNvbiB7eyBzaG93UGFzc3dvcmRJY29uIH19XCIgKGNsaWNrKT1cInRvZ2dsZVNob3dQYXNzd29yZCgpXCI+PC9pPlxyXG4gIDxkaXYgY2xhc3M9XCJwLWlucHV0Z3JvdXBcIj5cclxuICAgIDx2ZWN0b3ItYnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiZW5hYmxlRG9jdW1lbnRUeXBlQ2hvaWNlXCJcclxuICAgICAgbGVmdEljb249XCJmYXMgZmEtZXhjaGFuZ2UtYWx0XCJcclxuICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxyXG4gICAgICBbbGFiZWxdPVwic2VsZWN0ZWREb2N1bWVudFR5cGUubmFtZVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJjb250cm9sLmRpc2FibGVkXCJcclxuICAgICAgW25vU2hhZG93XT1cInRydWVcIlxyXG4gICAgICAob25DbGljayk9XCJoYW5kbGVEb2N1bWVudFR5cGVDaGFuZ2UoKVwiXHJcbiAgICA+PC92ZWN0b3ItYnV0dG9uPlxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwibGVmdExhYmVsXCIgY2xhc3M9XCJsZWZ0LWxhYmVsXCI+XHJcbiAgICAgIHt7IGxlZnRMYWJlbCB9fVxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICAqbmdJZj1cIiFtYXNrXCJcclxuICAgICAgW2lkXT1cImlucHV0SWRcIlxyXG4gICAgICBwSW5wdXRUZXh0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgW3BWYWxpZGF0ZU9ubHldPVwidmFsaWRhdGVPbmx5XCJcclxuICAgICAgW3BLZXlGaWx0ZXJdPVwia2V5ZmlsdGVyXCJcclxuICAgICAgW25nQ2xhc3NdPVwieyAncGFzc3dvcmQtZmllbGQnOiBpc1Bhc3N3b3JkICYmICFpc1Bhc3N3b3JkVmlzaWJsZSwgJ3RleHQtY2VudGVyZWQnOiBjZW50ZXJlZCB9XCJcclxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyUHJlc3MoKVwiXHJcbiAgICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJvbkJhY2tTcGFjZVByZXNzKClcIlxyXG4gICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5ID8gdHJ1ZSA6IG51bGxcIlxyXG4gICAgLz5cclxuICAgIDxwLWlucHV0TWFza1xyXG4gICAgICAqbmdJZj1cIm1hc2tcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIFtpbnB1dElkXT1cImlucHV0SWQgfHwgJ21hc2stZmllbGQnXCJcclxuICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICBbbWFza109XCJtYXNrXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXJQcmVzcygpXCJcclxuICAgICAgKGtleWRvd24uYmFja3NwYWNlKT1cIm9uQmFja1NwYWNlUHJlc3MoKVwiXHJcbiAgICAgIFthdXRvQ2xlYXJdPVwiYXV0b0NsZWFyXCJcclxuICAgICAgW3VubWFza109XCJ0cnVlXCJcclxuICAgICAgW3N0eWxlQ2xhc3NdPVwiY2VudGVyZWQgPyAndGV4dC1jZW50ZXJlZCcgOiAnJ1wiXHJcbiAgICAgIFtzbG90Q2hhcl09XCJzbG90Q2hhclwiXHJcbiAgICAgIChjbGljayk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgPjwvcC1pbnB1dE1hc2s+XHJcbiAgPC9kaXY+XHJcbiAgPHZlY3Rvci1maWVsZC1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIWhpZGRlbkVycm9yTWVzc2FnZVwiIFtjb250cm9sXT1cImNvbnRyb2xcIj48L3ZlY3Rvci1maWVsZC1lcnJvci1tZXNzYWdlPlxyXG48L2Zvcm0+XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export * from './textarea-field.component';
1
+ export * from './textarea-field.component';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy90ZXh0YXJlYS1maWVsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQnO1xyXG4iXX0=
@@ -1,81 +1,81 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/forms";
4
- import * as i2 from "primeng/inputtextarea";
5
- export class TextareaFieldComponent {
6
- constructor() {
7
- this.isRequired = false;
8
- this.label = '';
9
- this.maxlength = '';
10
- this.rows = 5;
11
- this.cols = 10;
12
- this.blurEvent = new EventEmitter();
13
- this.enterKeyPress = new EventEmitter();
14
- this.focusEvent = new EventEmitter();
15
- this.lastBlurValue = '';
16
- }
17
- get placeholder() {
18
- if (!this.label) {
19
- return '';
20
- }
21
- return `${this.label}${this.isRequired ? '*' : ''}`;
22
- }
23
- ngOnInit() { }
24
- fieldErrorLabel() {
25
- if (this.control && this.control.invalid && this.control.touched) {
26
- if (this.control.hasError('required')) {
27
- return 'Campo obrigatório';
28
- }
29
- if (this.control.hasError('minlength')) {
30
- return `Tamanho mínimo: ${this.control.errors['minlength'].requiredLength}`;
31
- }
32
- if (this.control.hasError('maxlength')) {
33
- return `Tamanho máximo permitido: ${this.control.errors['maxlength'].requiredLength}`;
34
- }
35
- return typeof this.control.errors['invalid'] === 'string' ? this.control.errors['invalid'] : 'Campo inválido';
36
- }
37
- return '';
38
- }
39
- onBlur() {
40
- this.control.markAsTouched();
41
- if (this.lastBlurValue !== this.control.value) {
42
- this.lastBlurValue = this.control.value;
43
- setTimeout(() => {
44
- this.blurEvent.emit(this.control.value);
45
- });
46
- }
47
- }
48
- onEnterPress() {
49
- this.onBlur();
50
- this.enterKeyPress.emit();
51
- }
52
- onFocus($event) {
53
- const target = $event.target;
54
- this.focusEvent.emit(target?.value);
55
- }
56
- }
57
- TextareaFieldComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: TextareaFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
58
- TextareaFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: TextareaFieldComponent, selector: "vector-textarea-field", inputs: { isRequired: "isRequired", label: "label", maxlength: "maxlength", rows: "rows", cols: "cols", control: "control" }, outputs: { blurEvent: "blurEvent", enterKeyPress: "enterKeyPress", focusEvent: "focusEvent" }, ngImport: i0, template: "<form class=\"input-container\">\r\n <textarea\r\n pInputTextarea\r\n [rows]=\"rows\"\r\n [cols]=\"cols\"\r\n [formControl]=\"control\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n [autoResize]=\"false\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (click)=\"onFocus($event)\"\r\n >\r\n </textarea>\r\n <span class=\"length-control\">{{ control?.value?.length || 0 }} / {{ maxlength }}</span>\r\n</form>\r\n", styles: [".input-container{width:100%;position:relative}.input-container .length-control{position:absolute;right:15px;bottom:15px;opacity:.8;font-size:.6rem}\n"], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.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: i2.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }] });
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: TextareaFieldComponent, decorators: [{
60
- type: Component,
61
- args: [{ selector: 'vector-textarea-field', template: "<form class=\"input-container\">\r\n <textarea\r\n pInputTextarea\r\n [rows]=\"rows\"\r\n [cols]=\"cols\"\r\n [formControl]=\"control\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n [autoResize]=\"false\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (click)=\"onFocus($event)\"\r\n >\r\n </textarea>\r\n <span class=\"length-control\">{{ control?.value?.length || 0 }} / {{ maxlength }}</span>\r\n</form>\r\n", styles: [".input-container{width:100%;position:relative}.input-container .length-control{position:absolute;right:15px;bottom:15px;opacity:.8;font-size:.6rem}\n"] }]
62
- }], propDecorators: { isRequired: [{
63
- type: Input
64
- }], label: [{
65
- type: Input
66
- }], maxlength: [{
67
- type: Input
68
- }], rows: [{
69
- type: Input
70
- }], cols: [{
71
- type: Input
72
- }], control: [{
73
- type: Input
74
- }], blurEvent: [{
75
- type: Output
76
- }], enterKeyPress: [{
77
- type: Output
78
- }], focusEvent: [{
79
- type: Output
80
- }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvdGV4dGFyZWEtZmllbGQvdGV4dGFyZWEtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvdGV4dGFyZWEtZmllbGQvdGV4dGFyZWEtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU8vRSxNQUFNLE9BQU8sc0JBQXNCO0lBTG5DO1FBT1MsZUFBVSxHQUF3QixLQUFLLENBQUM7UUFFeEMsVUFBSyxHQUF1QixFQUFFLENBQUM7UUFFL0IsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUV2QixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBRWpCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFJbEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUy9CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO0tBMkM1QjtJQWxEQyxJQUFJLFdBQVc7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFJRCxRQUFRLEtBQUksQ0FBQztJQUVOLGVBQWU7UUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ2hFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3JDLE9BQU8sbUJBQW1CLENBQUM7YUFDNUI7WUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN0QyxPQUFPLG1CQUFtQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUM3RTtZQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3RDLE9BQU8sNkJBQTZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3ZGO1lBRUQsT0FBTyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1NBQy9HO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPLENBQUMsTUFBYTtRQUMxQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBNkIsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7bUhBckVVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDBSQ1BuQywrZUFnQkE7MkZEVGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHVCQUF1Qjs4QkFNMUIsVUFBVTtzQkFEaEIsS0FBSztnQkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLElBQUk7c0JBRFYsS0FBSztnQkFHQyxJQUFJO3NCQURWLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsTUFBTTtnQkFHQSxhQUFhO3NCQURuQixNQUFNO2dCQUdBLFVBQVU7c0JBRGhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ZlY3Rvci10ZXh0YXJlYS1maWVsZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHRhcmVhLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dGFyZWFGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNSZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXhsZW5ndGg6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJvd3M6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29sczogbnVtYmVyID0gMTA7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29udHJvbDogYW55O1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBibHVyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVudGVyS2V5UHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcclxuICAgIGlmICghdGhpcy5sYWJlbCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0ke3RoaXMuaXNSZXF1aXJlZCA/ICcqJyA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxhc3RCbHVyVmFsdWUgPSAnJztcclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBwdWJsaWMgZmllbGRFcnJvckxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5pbnZhbGlkICYmIHRoaXMuY29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcclxuICAgICAgICByZXR1cm4gJ0NhbXBvIG9icmlnYXTDs3Jpbyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wuaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSB7XHJcbiAgICAgICAgcmV0dXJuIGBUYW1hbmhvIG3DrW5pbW86ICR7dGhpcy5jb250cm9sLmVycm9yc1snbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29udHJvbC5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcclxuICAgICAgICByZXR1cm4gYFRhbWFuaG8gbcOheGltbyBwZXJtaXRpZG86ICR7dGhpcy5jb250cm9sLmVycm9yc1snbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmNvbnRyb2wuZXJyb3JzWydpbnZhbGlkJ10gPT09ICdzdHJpbmcnID8gdGhpcy5jb250cm9sLmVycm9yc1snaW52YWxpZCddIDogJ0NhbXBvIGludsOhbGlkbyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQmx1cigpIHtcclxuICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAodGhpcy5sYXN0Qmx1clZhbHVlICE9PSB0aGlzLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5sYXN0Qmx1clZhbHVlID0gdGhpcy5jb250cm9sLnZhbHVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmJsdXJFdmVudC5lbWl0KHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRW50ZXJQcmVzcygpIHtcclxuICAgIHRoaXMub25CbHVyKCk7XHJcbiAgICB0aGlzLmVudGVyS2V5UHJlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoJGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gJGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xyXG4gICAgdGhpcy5mb2N1c0V2ZW50LmVtaXQodGFyZ2V0Py52YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgPHRleHRhcmVhXHJcbiAgICBwSW5wdXRUZXh0YXJlYVxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbY29sc109XCJjb2xzXCJcclxuICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgIFthdXRvUmVzaXplXT1cImZhbHNlXCJcclxuICAgIChvbkJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlclByZXNzKClcIlxyXG4gICAgKGNsaWNrKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvdGV4dGFyZWE+XHJcbiAgPHNwYW4gY2xhc3M9XCJsZW5ndGgtY29udHJvbFwiPnt7IGNvbnRyb2w/LnZhbHVlPy5sZW5ndGggfHwgMCB9fSAvIHt7IG1heGxlbmd0aCB9fTwvc3Bhbj5cclxuPC9mb3JtPlxyXG4iXX0=
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ import * as i2 from "primeng/inputtextarea";
5
+ export class TextareaFieldComponent {
6
+ constructor() {
7
+ this.isRequired = false;
8
+ this.label = '';
9
+ this.maxlength = '';
10
+ this.rows = 5;
11
+ this.cols = 10;
12
+ this.blurEvent = new EventEmitter();
13
+ this.enterKeyPress = new EventEmitter();
14
+ this.focusEvent = new EventEmitter();
15
+ this.lastBlurValue = '';
16
+ }
17
+ get placeholder() {
18
+ if (!this.label) {
19
+ return '';
20
+ }
21
+ return `${this.label}${this.isRequired ? '*' : ''}`;
22
+ }
23
+ ngOnInit() { }
24
+ fieldErrorLabel() {
25
+ if (this.control && this.control.invalid && this.control.touched) {
26
+ if (this.control.hasError('required')) {
27
+ return 'Campo obrigatório';
28
+ }
29
+ if (this.control.hasError('minlength')) {
30
+ return `Tamanho mínimo: ${this.control.errors['minlength'].requiredLength}`;
31
+ }
32
+ if (this.control.hasError('maxlength')) {
33
+ return `Tamanho máximo permitido: ${this.control.errors['maxlength'].requiredLength}`;
34
+ }
35
+ return typeof this.control.errors['invalid'] === 'string' ? this.control.errors['invalid'] : 'Campo inválido';
36
+ }
37
+ return '';
38
+ }
39
+ onBlur() {
40
+ this.control.markAsTouched();
41
+ if (this.lastBlurValue !== this.control.value) {
42
+ this.lastBlurValue = this.control.value;
43
+ setTimeout(() => {
44
+ this.blurEvent.emit(this.control.value);
45
+ });
46
+ }
47
+ }
48
+ onEnterPress() {
49
+ this.onBlur();
50
+ this.enterKeyPress.emit();
51
+ }
52
+ onFocus($event) {
53
+ const target = $event.target;
54
+ this.focusEvent.emit(target?.value);
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextareaFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextareaFieldComponent, selector: "vector-textarea-field", inputs: { isRequired: "isRequired", label: "label", maxlength: "maxlength", rows: "rows", cols: "cols", control: "control" }, outputs: { blurEvent: "blurEvent", enterKeyPress: "enterKeyPress", focusEvent: "focusEvent" }, ngImport: i0, template: "<form class=\"input-container\">\r\n <textarea\r\n pInputTextarea\r\n [rows]=\"rows\"\r\n [cols]=\"cols\"\r\n [formControl]=\"control\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n [autoResize]=\"false\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (click)=\"onFocus($event)\"\r\n >\r\n </textarea>\r\n <span class=\"length-control\">{{ control?.value?.length || 0 }} / {{ maxlength }}</span>\r\n</form>\r\n", styles: [".input-container{width:100%;position:relative}.input-container .length-control{position:absolute;right:15px;bottom:15px;opacity:.8;font-size:.6rem}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }] }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextareaFieldComponent, decorators: [{
60
+ type: Component,
61
+ args: [{ selector: 'vector-textarea-field', template: "<form class=\"input-container\">\r\n <textarea\r\n pInputTextarea\r\n [rows]=\"rows\"\r\n [cols]=\"cols\"\r\n [formControl]=\"control\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n [autoResize]=\"false\"\r\n (onBlur)=\"onBlur()\"\r\n (keydown.enter)=\"onEnterPress()\"\r\n (click)=\"onFocus($event)\"\r\n >\r\n </textarea>\r\n <span class=\"length-control\">{{ control?.value?.length || 0 }} / {{ maxlength }}</span>\r\n</form>\r\n", styles: [".input-container{width:100%;position:relative}.input-container .length-control{position:absolute;right:15px;bottom:15px;opacity:.8;font-size:.6rem}\n"] }]
62
+ }], propDecorators: { isRequired: [{
63
+ type: Input
64
+ }], label: [{
65
+ type: Input
66
+ }], maxlength: [{
67
+ type: Input
68
+ }], rows: [{
69
+ type: Input
70
+ }], cols: [{
71
+ type: Input
72
+ }], control: [{
73
+ type: Input
74
+ }], blurEvent: [{
75
+ type: Output
76
+ }], enterKeyPress: [{
77
+ type: Output
78
+ }], focusEvent: [{
79
+ type: Output
80
+ }] } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvdGV4dGFyZWEtZmllbGQvdGV4dGFyZWEtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvdGV4dGFyZWEtZmllbGQvdGV4dGFyZWEtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU8vRSxNQUFNLE9BQU8sc0JBQXNCO0lBTG5DO1FBT1MsZUFBVSxHQUF3QixLQUFLLENBQUM7UUFFeEMsVUFBSyxHQUF1QixFQUFFLENBQUM7UUFFL0IsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUV2QixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBRWpCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFJbEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUy9CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO0tBMkM1QjtJQWxEQyxJQUFJLFdBQVc7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFJRCxRQUFRLEtBQUksQ0FBQztJQUVOLGVBQWU7UUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ2hFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3JDLE9BQU8sbUJBQW1CLENBQUM7YUFDNUI7WUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN0QyxPQUFPLG1CQUFtQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUM3RTtZQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3RDLE9BQU8sNkJBQTZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3ZGO1lBRUQsT0FBTyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1NBQy9HO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPLENBQUMsTUFBYTtRQUMxQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBNkIsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs4R0FyRVUsc0JBQXNCO2tHQUF0QixzQkFBc0IsMFJDUG5DLCtlQWdCQTs7MkZEVGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHVCQUF1Qjs4QkFNMUIsVUFBVTtzQkFEaEIsS0FBSztnQkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLElBQUk7c0JBRFYsS0FBSztnQkFHQyxJQUFJO3NCQURWLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsTUFBTTtnQkFHQSxhQUFhO3NCQURuQixNQUFNO2dCQUdBLFVBQVU7c0JBRGhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ZlY3Rvci10ZXh0YXJlYS1maWVsZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHRhcmVhLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dGFyZWFGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNSZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXhsZW5ndGg6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJvd3M6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29sczogbnVtYmVyID0gMTA7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29udHJvbDogYW55O1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBibHVyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVudGVyS2V5UHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcclxuICAgIGlmICghdGhpcy5sYWJlbCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0ke3RoaXMuaXNSZXF1aXJlZCA/ICcqJyA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxhc3RCbHVyVmFsdWUgPSAnJztcclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBwdWJsaWMgZmllbGRFcnJvckxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5pbnZhbGlkICYmIHRoaXMuY29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcclxuICAgICAgICByZXR1cm4gJ0NhbXBvIG9icmlnYXTDs3Jpbyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wuaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSB7XHJcbiAgICAgICAgcmV0dXJuIGBUYW1hbmhvIG3DrW5pbW86ICR7dGhpcy5jb250cm9sLmVycm9yc1snbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29udHJvbC5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcclxuICAgICAgICByZXR1cm4gYFRhbWFuaG8gbcOheGltbyBwZXJtaXRpZG86ICR7dGhpcy5jb250cm9sLmVycm9yc1snbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmNvbnRyb2wuZXJyb3JzWydpbnZhbGlkJ10gPT09ICdzdHJpbmcnID8gdGhpcy5jb250cm9sLmVycm9yc1snaW52YWxpZCddIDogJ0NhbXBvIGludsOhbGlkbyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQmx1cigpIHtcclxuICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAodGhpcy5sYXN0Qmx1clZhbHVlICE9PSB0aGlzLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5sYXN0Qmx1clZhbHVlID0gdGhpcy5jb250cm9sLnZhbHVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmJsdXJFdmVudC5lbWl0KHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRW50ZXJQcmVzcygpIHtcclxuICAgIHRoaXMub25CbHVyKCk7XHJcbiAgICB0aGlzLmVudGVyS2V5UHJlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoJGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gJGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xyXG4gICAgdGhpcy5mb2N1c0V2ZW50LmVtaXQodGFyZ2V0Py52YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgPHRleHRhcmVhXHJcbiAgICBwSW5wdXRUZXh0YXJlYVxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbY29sc109XCJjb2xzXCJcclxuICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgIFthdXRvUmVzaXplXT1cImZhbHNlXCJcclxuICAgIChvbkJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlclByZXNzKClcIlxyXG4gICAgKGNsaWNrKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvdGV4dGFyZWE+XHJcbiAgPHNwYW4gY2xhc3M9XCJsZW5ndGgtY29udHJvbFwiPnt7IGNvbnRyb2w/LnZhbHVlPy5sZW5ndGggfHwgMCB9fSAvIHt7IG1heGxlbmd0aCB9fTwvc3Bhbj5cclxuPC9mb3JtPlxyXG4iXX0=