ngx-vector-components 4.130.0 → 4.131.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 (320) hide show
  1. package/CHANGELOG.md +1472 -1467
  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 +1105 -1101
  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 +40 -40
  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 +98 -98
  52. package/esm2020/lib/components/fields/currency-field/index.mjs +2 -2
  53. package/esm2020/lib/components/fields/data-table/data-table.component.mjs +388 -388
  54. package/esm2020/lib/components/fields/data-table/index.mjs +2 -2
  55. package/esm2020/lib/components/fields/dropdown-field/dropdown-field.component.mjs +204 -204
  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 +222 -222
  60. package/esm2020/lib/components/fields/filters/filters.component.mjs +209 -209
  61. package/esm2020/lib/components/fields/filters/index.mjs +2 -2
  62. package/esm2020/lib/components/fields/index.mjs +20 -20
  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 +86 -86
  65. package/esm2020/lib/components/fields/input-switch-field/index.mjs +2 -2
  66. package/esm2020/lib/components/fields/input-switch-field/input-switch-field.component.mjs +16 -16
  67. package/esm2020/lib/components/fields/multiselect-field/index.mjs +2 -2
  68. package/esm2020/lib/components/fields/multiselect-field/multiselect-field.component.mjs +154 -154
  69. package/esm2020/lib/components/fields/percentage-field/index.mjs +2 -2
  70. package/esm2020/lib/components/fields/percentage-field/percentage-field.component.mjs +54 -54
  71. package/esm2020/lib/components/fields/radio-button-field/index.mjs +2 -2
  72. package/esm2020/lib/components/fields/radio-button-field/radio-button-field.component.mjs +48 -48
  73. package/esm2020/lib/components/fields/range-value/index.mjs +2 -2
  74. package/esm2020/lib/components/fields/range-value/range-value.component.mjs +72 -72
  75. package/esm2020/lib/components/fields/search-field/index.mjs +2 -2
  76. package/esm2020/lib/components/fields/search-field/search-field.component.mjs +33 -33
  77. package/esm2020/lib/components/fields/select-button-field/index.mjs +2 -2
  78. package/esm2020/lib/components/fields/select-button-field/select-button-field.component.mjs +20 -20
  79. package/esm2020/lib/components/fields/text-field/index.mjs +2 -2
  80. package/esm2020/lib/components/fields/text-field/text-field.component.mjs +238 -238
  81. package/esm2020/lib/components/fields/textarea-field/index.mjs +2 -2
  82. package/esm2020/lib/components/fields/textarea-field/textarea-field.component.mjs +81 -81
  83. package/esm2020/lib/components/generic-error-modal/generic-error-modal.component.mjs +36 -36
  84. package/esm2020/lib/components/generic-error-modal/generic-error-modal.module.mjs +20 -20
  85. package/esm2020/lib/components/generic-error-modal/index.mjs +3 -3
  86. package/esm2020/lib/components/generic-modal/generic-modal.component.mjs +66 -66
  87. package/esm2020/lib/components/generic-modal/generic-modal.module.mjs +20 -20
  88. package/esm2020/lib/components/generic-modal/index.mjs +3 -3
  89. package/esm2020/lib/components/index.mjs +15 -15
  90. package/esm2020/lib/components/menu/index.mjs +4 -4
  91. package/esm2020/lib/components/menu/menu.component.mjs +305 -305
  92. package/esm2020/lib/components/menu/menu.module.mjs +20 -20
  93. package/esm2020/lib/components/menu/sub-menus-list/sub-menus-list.component.mjs +42 -42
  94. package/esm2020/lib/components/panel/index.mjs +3 -3
  95. package/esm2020/lib/components/panel/panel.component.mjs +15 -15
  96. package/esm2020/lib/components/panel/panel.module.mjs +19 -19
  97. package/esm2020/lib/components/score/index.mjs +3 -3
  98. package/esm2020/lib/components/score/score.component.mjs +17 -17
  99. package/esm2020/lib/components/score/score.module.mjs +16 -16
  100. package/esm2020/lib/components/stepper/index.mjs +3 -3
  101. package/esm2020/lib/components/stepper/stepper.component.mjs +47 -47
  102. package/esm2020/lib/components/stepper/stepper.module.mjs +19 -19
  103. package/esm2020/lib/components/top-bar/index.mjs +3 -3
  104. package/esm2020/lib/components/top-bar/top-bar.component.mjs +147 -147
  105. package/esm2020/lib/components/top-bar/top-bar.module.mjs +20 -20
  106. package/esm2020/lib/guards/crud-list-has-items.guard.mjs +22 -22
  107. package/esm2020/lib/guards/get-token-by-guid.guard.mjs +54 -54
  108. package/esm2020/lib/guards/has-permission.guard.mjs +27 -27
  109. package/esm2020/lib/guards/index.mjs +6 -6
  110. package/esm2020/lib/guards/role.guard.mjs +24 -24
  111. package/esm2020/lib/guards/token-is-present.guard.mjs +26 -26
  112. package/esm2020/lib/interceptors/http-interceptor.mjs +185 -185
  113. package/esm2020/lib/interceptors/index.mjs +2 -2
  114. package/esm2020/lib/models/app-name.enum.mjs +10 -10
  115. package/esm2020/lib/models/boolean-type.enum.mjs +6 -6
  116. package/esm2020/lib/models/crud-history.model.mjs +3 -3
  117. package/esm2020/lib/models/crud-mode.enum.mjs +7 -7
  118. package/esm2020/lib/models/currency.enum.mjs +7 -7
  119. package/esm2020/lib/models/data-table.model.mjs +23 -23
  120. package/esm2020/lib/models/document-type.enum.mjs +6 -6
  121. package/esm2020/lib/models/filters.model.mjs +2 -2
  122. package/esm2020/lib/models/generic-modal.model.mjs +2 -2
  123. package/esm2020/lib/models/http-response.model.mjs +2 -2
  124. package/esm2020/lib/models/index.mjs +18 -18
  125. package/esm2020/lib/models/ip-info.enum.mjs +2 -2
  126. package/esm2020/lib/models/list-item.model.mjs +2 -2
  127. package/esm2020/lib/models/locale.enum.mjs +7 -7
  128. package/esm2020/lib/models/menu-item.model.mjs +2 -2
  129. package/esm2020/lib/models/message-status.enum.mjs +8 -8
  130. package/esm2020/lib/models/profile.model.mjs +338 -338
  131. package/esm2020/lib/models/role.enum.mjs +5 -5
  132. package/esm2020/lib/models/status.enum.mjs +8 -8
  133. package/esm2020/lib/models/topbar.model.mjs +2 -2
  134. package/esm2020/lib/models/vector-app.model.mjs +2 -2
  135. package/esm2020/lib/models/vector-notification.model.mjs +2 -2
  136. package/esm2020/lib/models/view.enum.mjs +8 -8
  137. package/esm2020/lib/pipes/currency-brl.pipe.mjs +18 -18
  138. package/esm2020/lib/pipes/format-document.pipe.mjs +17 -17
  139. package/esm2020/lib/pipes/index.mjs +9 -9
  140. package/esm2020/lib/pipes/mask.pipe.mjs +21 -21
  141. package/esm2020/lib/pipes/not-hidden.pipe.mjs +16 -16
  142. package/esm2020/lib/pipes/only-active.pipe.mjs +16 -16
  143. package/esm2020/lib/pipes/pipes.module.mjs +50 -50
  144. package/esm2020/lib/pipes/remove-last-child.pipe.mjs +18 -18
  145. package/esm2020/lib/pipes/unread-notifications.pipe.mjs +15 -15
  146. package/esm2020/lib/resolvers/get-selected-crud-item.resolver.mjs +28 -28
  147. package/esm2020/lib/resolvers/index.mjs +2 -2
  148. package/esm2020/lib/services/auth.service.mjs +77 -77
  149. package/esm2020/lib/services/base-dropdown.mjs +2 -2
  150. package/esm2020/lib/services/crud-base.service.mjs +14 -14
  151. package/esm2020/lib/services/enum.service.mjs +43 -43
  152. package/esm2020/lib/services/error-message.service.mjs +16 -16
  153. package/esm2020/lib/services/geolocation.service.mjs +23 -23
  154. package/esm2020/lib/services/index.mjs +13 -13
  155. package/esm2020/lib/services/loading.service.mjs +15 -15
  156. package/esm2020/lib/services/menu.service.mjs +152 -152
  157. package/esm2020/lib/services/modal.service.mjs +15 -15
  158. package/esm2020/lib/services/notifications.service.mjs +64 -64
  159. package/esm2020/lib/services/profile.service.mjs +112 -112
  160. package/esm2020/lib/services/storage.service.mjs +108 -108
  161. package/esm2020/lib/shared/shared.module.mjs +19 -19
  162. package/esm2020/lib/utils/cpf-cnpj-validator.util.mjs +116 -116
  163. package/esm2020/lib/utils/file.util.mjs +15 -15
  164. package/esm2020/lib/utils/index.mjs +8 -8
  165. package/esm2020/lib/utils/mask.util.mjs +76 -76
  166. package/esm2020/lib/utils/object.util.mjs +27 -27
  167. package/esm2020/lib/utils/string.util.mjs +30 -30
  168. package/esm2020/lib/utils/validation.util.mjs +234 -234
  169. package/esm2020/lib/utils/window.util.mjs +9 -9
  170. package/esm2020/ngx-vector-components.mjs +4 -4
  171. package/esm2020/public-api.mjs +9 -9
  172. package/fesm2015/ngx-vector-components.mjs +4866 -4866
  173. package/fesm2015/ngx-vector-components.mjs.map +1 -1
  174. package/fesm2020/ngx-vector-components.mjs +4842 -4842
  175. package/fesm2020/ngx-vector-components.mjs.map +1 -1
  176. package/lib/components/badge/badge.component.d.ts +15 -15
  177. package/lib/components/badge/badge.module.d.ts +9 -9
  178. package/lib/components/badge/index.d.ts +2 -2
  179. package/lib/components/breadcrumb/breadcrumb.component.d.ts +19 -19
  180. package/lib/components/breadcrumb/breadcrumb.module.d.ts +8 -8
  181. package/lib/components/breadcrumb/index.d.ts +2 -2
  182. package/lib/components/crud-base/crud-base.component.d.ts +20 -20
  183. package/lib/components/crud-base/index.d.ts +1 -1
  184. package/lib/components/crud-footer/crud-footer.component.d.ts +19 -19
  185. package/lib/components/crud-footer/crud-footer.module.d.ts +10 -10
  186. package/lib/components/crud-footer/index.d.ts +2 -2
  187. package/lib/components/crud-header/crud-header.component.d.ts +11 -11
  188. package/lib/components/crud-header/crud-header.module.d.ts +9 -9
  189. package/lib/components/crud-header/index.d.ts +2 -2
  190. package/lib/components/crud-history/crud-history.component.d.ts +12 -12
  191. package/lib/components/crud-history/crud-history.module.d.ts +10 -10
  192. package/lib/components/crud-history/index.d.ts +2 -2
  193. package/lib/components/fields/button/button.component.d.ts +17 -17
  194. package/lib/components/fields/button/index.d.ts +1 -1
  195. package/lib/components/fields/calendar-field/calendar-field.component.d.ts +23 -23
  196. package/lib/components/fields/calendar-field/index.d.ts +1 -1
  197. package/lib/components/fields/checkbox-field/checkbox-field.component.d.ts +19 -19
  198. package/lib/components/fields/checkbox-field/index.d.ts +1 -1
  199. package/lib/components/fields/currency-field/currency-field.component.d.ts +32 -32
  200. package/lib/components/fields/currency-field/index.d.ts +1 -1
  201. package/lib/components/fields/data-table/data-table.component.d.ts +87 -87
  202. package/lib/components/fields/data-table/index.d.ts +1 -1
  203. package/lib/components/fields/dropdown-field/dropdown-field.component.d.ts +52 -52
  204. package/lib/components/fields/dropdown-field/index.d.ts +1 -1
  205. package/lib/components/fields/field-error-message/field-error-message.component.d.ts +10 -10
  206. package/lib/components/fields/field-error-message/index.d.ts +1 -1
  207. package/lib/components/fields/fields.module.d.ts +50 -50
  208. package/lib/components/fields/filters/filters.component.d.ts +65 -65
  209. package/lib/components/fields/filters/index.d.ts +1 -1
  210. package/lib/components/fields/index.d.ts +19 -19
  211. package/lib/components/fields/input-number-field/index.d.ts +1 -1
  212. package/lib/components/fields/input-number-field/input-number-field.component.d.ts +28 -28
  213. package/lib/components/fields/input-switch-field/index.d.ts +1 -1
  214. package/lib/components/fields/input-switch-field/input-switch-field.component.d.ts +8 -8
  215. package/lib/components/fields/multiselect-field/index.d.ts +1 -1
  216. package/lib/components/fields/multiselect-field/multiselect-field.component.d.ts +40 -40
  217. package/lib/components/fields/percentage-field/index.d.ts +1 -1
  218. package/lib/components/fields/percentage-field/percentage-field.component.d.ts +20 -20
  219. package/lib/components/fields/radio-button-field/index.d.ts +1 -1
  220. package/lib/components/fields/radio-button-field/radio-button-field.component.d.ts +25 -25
  221. package/lib/components/fields/range-value/index.d.ts +1 -1
  222. package/lib/components/fields/range-value/range-value.component.d.ts +18 -18
  223. package/lib/components/fields/search-field/index.d.ts +1 -1
  224. package/lib/components/fields/search-field/search-field.component.d.ts +14 -14
  225. package/lib/components/fields/select-button-field/index.d.ts +1 -1
  226. package/lib/components/fields/select-button-field/select-button-field.component.d.ts +9 -9
  227. package/lib/components/fields/text-field/index.d.ts +1 -1
  228. package/lib/components/fields/text-field/text-field.component.d.ts +56 -56
  229. package/lib/components/fields/textarea-field/index.d.ts +1 -1
  230. package/lib/components/fields/textarea-field/textarea-field.component.d.ts +22 -22
  231. package/lib/components/generic-error-modal/generic-error-modal.component.d.ts +15 -15
  232. package/lib/components/generic-error-modal/generic-error-modal.module.d.ts +10 -10
  233. package/lib/components/generic-error-modal/index.d.ts +2 -2
  234. package/lib/components/generic-modal/generic-modal.component.d.ts +24 -24
  235. package/lib/components/generic-modal/generic-modal.module.d.ts +10 -10
  236. package/lib/components/generic-modal/index.d.ts +2 -2
  237. package/lib/components/index.d.ts +14 -14
  238. package/lib/components/menu/index.d.ts +3 -3
  239. package/lib/components/menu/menu.component.d.ts +53 -53
  240. package/lib/components/menu/menu.module.d.ts +10 -10
  241. package/lib/components/menu/sub-menus-list/sub-menus-list.component.d.ts +14 -14
  242. package/lib/components/panel/index.d.ts +2 -2
  243. package/lib/components/panel/panel.component.d.ts +8 -8
  244. package/lib/components/panel/panel.module.d.ts +9 -9
  245. package/lib/components/score/index.d.ts +2 -2
  246. package/lib/components/score/score.component.d.ts +9 -9
  247. package/lib/components/score/score.module.d.ts +7 -7
  248. package/lib/components/stepper/index.d.ts +2 -2
  249. package/lib/components/stepper/stepper.component.d.ts +15 -15
  250. package/lib/components/stepper/stepper.module.d.ts +9 -9
  251. package/lib/components/top-bar/index.d.ts +2 -2
  252. package/lib/components/top-bar/top-bar.component.d.ts +49 -49
  253. package/lib/components/top-bar/top-bar.module.d.ts +10 -10
  254. package/lib/guards/crud-list-has-items.guard.d.ts +10 -10
  255. package/lib/guards/get-token-by-guid.guard.d.ts +15 -15
  256. package/lib/guards/has-permission.guard.d.ts +13 -13
  257. package/lib/guards/index.d.ts +5 -5
  258. package/lib/guards/role.guard.d.ts +11 -11
  259. package/lib/guards/token-is-present.guard.d.ts +11 -11
  260. package/lib/interceptors/http-interceptor.d.ts +31 -31
  261. package/lib/interceptors/index.d.ts +1 -1
  262. package/lib/models/app-name.enum.d.ts +8 -8
  263. package/lib/models/boolean-type.enum.d.ts +4 -4
  264. package/lib/models/crud-history.model.d.ts +13 -13
  265. package/lib/models/crud-mode.enum.d.ts +5 -5
  266. package/lib/models/currency.enum.d.ts +5 -5
  267. package/lib/models/data-table.model.d.ts +65 -65
  268. package/lib/models/document-type.enum.d.ts +4 -4
  269. package/lib/models/filters.model.d.ts +4 -4
  270. package/lib/models/generic-modal.model.d.ts +12 -12
  271. package/lib/models/http-response.model.d.ts +57 -57
  272. package/lib/models/index.d.ts +17 -17
  273. package/lib/models/ip-info.enum.d.ts +6 -6
  274. package/lib/models/list-item.model.d.ts +7 -7
  275. package/lib/models/locale.enum.d.ts +5 -5
  276. package/lib/models/menu-item.model.d.ts +16 -16
  277. package/lib/models/message-status.enum.d.ts +6 -6
  278. package/lib/models/profile.model.d.ts +358 -358
  279. package/lib/models/role.enum.d.ts +3 -3
  280. package/lib/models/status.enum.d.ts +6 -6
  281. package/lib/models/topbar.model.d.ts +5 -5
  282. package/lib/models/vector-app.model.d.ts +9 -9
  283. package/lib/models/vector-notification.model.d.ts +8 -8
  284. package/lib/models/view.enum.d.ts +6 -6
  285. package/lib/pipes/currency-brl.pipe.d.ts +7 -7
  286. package/lib/pipes/format-document.pipe.d.ts +7 -7
  287. package/lib/pipes/index.d.ts +8 -8
  288. package/lib/pipes/mask.pipe.d.ts +7 -7
  289. package/lib/pipes/not-hidden.pipe.d.ts +7 -7
  290. package/lib/pipes/only-active.pipe.d.ts +7 -7
  291. package/lib/pipes/pipes.module.d.ts +13 -13
  292. package/lib/pipes/remove-last-child.pipe.d.ts +7 -7
  293. package/lib/pipes/unread-notifications.pipe.d.ts +9 -9
  294. package/lib/resolvers/get-selected-crud-item.resolver.d.ts +10 -10
  295. package/lib/resolvers/index.d.ts +1 -1
  296. package/lib/services/auth.service.d.ts +24 -24
  297. package/lib/services/base-dropdown.d.ts +7 -7
  298. package/lib/services/crud-base.service.d.ts +7 -7
  299. package/lib/services/enum.service.d.ts +13 -13
  300. package/lib/services/error-message.service.d.ts +8 -8
  301. package/lib/services/geolocation.service.d.ts +13 -13
  302. package/lib/services/index.d.ts +12 -12
  303. package/lib/services/loading.service.d.ts +7 -7
  304. package/lib/services/menu.service.d.ts +35 -35
  305. package/lib/services/modal.service.d.ts +7 -7
  306. package/lib/services/notifications.service.d.ts +13 -13
  307. package/lib/services/profile.service.d.ts +27 -27
  308. package/lib/services/storage.service.d.ts +43 -43
  309. package/lib/shared/shared.module.d.ts +10 -10
  310. package/lib/utils/cpf-cnpj-validator.util.d.ts +5 -5
  311. package/lib/utils/file.util.d.ts +4 -4
  312. package/lib/utils/index.d.ts +7 -7
  313. package/lib/utils/mask.util.d.ts +21 -21
  314. package/lib/utils/object.util.d.ts +5 -5
  315. package/lib/utils/string.util.d.ts +6 -6
  316. package/lib/utils/validation.util.d.ts +17 -17
  317. package/lib/utils/window.util.d.ts +4 -4
  318. package/ngx-vector-components.d.ts +5 -5
  319. package/package.json +1 -1
  320. package/public-api.d.ts +8 -8
@@ -1,154 +1,154 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { ObjectUtil } from '../../../utils';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "primeng/multiselect";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/forms";
7
- export class MultiselectFieldComponent {
8
- constructor(renderer) {
9
- this.renderer = renderer;
10
- this.isRequired = false;
11
- this.label = '';
12
- this.options = [];
13
- this.filter = false;
14
- this.showSelectAllOption = true;
15
- this.display = 'comma';
16
- this.paged = true;
17
- this.minLengthToService = 0;
18
- this.initialLoad = true;
19
- this.filterVirtualScrool = false;
20
- this.onChange = new EventEmitter();
21
- this.onClosePanel = new EventEmitter();
22
- this.currentSearchQuery = '';
23
- this.currentScrollPage = -1;
24
- this.currentScrollIndex = 0;
25
- this.unlistenAutocompleteVirtualScroll = () => { };
26
- this._pagedSugestion = [];
27
- }
28
- set pagedSugestion(_pagedSugestion) {
29
- this._pagedSugestion = _pagedSugestion;
30
- this.options = this.pagedSugestion || [];
31
- }
32
- get placeholder() {
33
- if (!this.label) {
34
- return '';
35
- }
36
- return `${this.label}${this.isRequired ? '*' : ''}`;
37
- }
38
- get pagedSugestion() {
39
- return this._pagedSugestion;
40
- }
41
- ngOnInit() {
42
- if (this.initialLoad && this.filterVirtualScrool) {
43
- this.search(null, true);
44
- }
45
- }
46
- fieldErrorLabel() {
47
- if (this.control && this.control.invalid && this.control.touched) {
48
- if (this.control.hasError('required')) {
49
- return 'Campo obrigatório';
50
- }
51
- return typeof this.control.errors['invalid'] === 'string' ? this.control.errors['invalid'] : 'Campo inválido';
52
- }
53
- return '';
54
- }
55
- onOpenAutocompletePanel() {
56
- this.search();
57
- const multiSelectPanel = document.querySelector('.p-multiselect-items-wrapper');
58
- if (multiSelectPanel && this.paged && this.currentSearchQuery.length >= this.minLengthToService) {
59
- this.unlistenAutocompleteVirtualScroll = this.renderer.listen(multiSelectPanel, 'scroll', (event) => {
60
- const eventHeight = event.target.scrollHeight - event.target.clientHeight - 150;
61
- if (Math.round(event.target.scrollTop) >= eventHeight) {
62
- this.pageResults();
63
- }
64
- });
65
- }
66
- }
67
- onHideAutocompletePanel() {
68
- if (this.paged) {
69
- this.unlistenAutocompleteVirtualScroll();
70
- }
71
- }
72
- search($event, forceSearch = false) {
73
- this.currentSearchQuery = $event?.filter.toUpperCase() || '';
74
- this.currentScrollPage = -1;
75
- this.currentScrollIndex = 0;
76
- if (forceSearch || this.currentSearchQuery.length >= this.minLengthToService) {
77
- this.pageResults();
78
- }
79
- else {
80
- this.options = [];
81
- }
82
- }
83
- pageResults() {
84
- const filteredOptions = this.filterListByQuery(this.pagedSugestion, this.currentSearchQuery.toUpperCase());
85
- this.options = filteredOptions.slice(0, this.currentScrollIndex + 20);
86
- if (this.pagedSugestion?.length && this.pagedSugestion.length > 20) {
87
- this.currentScrollIndex = this.currentScrollIndex + 20;
88
- }
89
- this.setControlValueFromSuggestions();
90
- }
91
- filterListByQuery(list = [], query) {
92
- return list.filter((opt) => String(opt.code).toUpperCase().includes(query) || opt.name.toUpperCase().includes(query));
93
- }
94
- setControlValueFromSuggestions() {
95
- const code = (ObjectUtil.isValid(this.control.value?.code) && `${this.control.value?.code}`) || `${this.control.value}`;
96
- if (this.control.value && this.options?.length) {
97
- let itemsArray = this.options;
98
- if (this.options?.length) {
99
- itemsArray = this.options;
100
- }
101
- const itemFromSuggestions = itemsArray.find((opt) => `${opt.code}`.toUpperCase() === code.toUpperCase());
102
- if (itemFromSuggestions) {
103
- this.control.setValue(itemFromSuggestions, { emitEvent: false });
104
- }
105
- else {
106
- this.service?.getById(+code).subscribe((response) => {
107
- this.control.setValue(response, { emitEvent: false });
108
- });
109
- }
110
- }
111
- else if (this.control.value && !this.options?.length) {
112
- this.service?.getById(+code).subscribe((response) => {
113
- this.control.setValue(response, { emitEvent: false });
114
- });
115
- }
116
- }
117
- }
118
- MultiselectFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MultiselectFieldComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
119
- MultiselectFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MultiselectFieldComponent, selector: "vector-multiselect-field", inputs: { pagedSugestion: "pagedSugestion", isRequired: "isRequired", control: "control", label: "label", options: "options", filter: "filter", showSelectAllOption: "showSelectAllOption", display: "display", paged: "paged", minLengthToService: "minLengthToService", initialLoad: "initialLoad", service: "service", filterVirtualScrool: "filterVirtualScrool" }, outputs: { onChange: "onChange", onClosePanel: "onClosePanel" }, ngImport: i0, template: "<div class=\"multiselect-field-input-container\">\r\n <p-multiSelect\r\n *ngIf=\"!filterVirtualScrool\"\r\n #multiselect\r\n appendTo=\"body\"\r\n optionLabel=\"name\"\r\n optionValue=\"code\"\r\n dropdownIcon=\"fas fa-sort-down\"\r\n selectedItemsLabel=\"Selecionar todos\"\r\n [panelStyleClass]=\"filter ? 'has-filter' : ''\"\r\n [options]=\"options\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [filter]=\"filter\"\r\n [maxSelectedLabels]=\"options.length - 1\"\r\n [showHeader]=\"true\"\r\n [showToggleAll]=\"showSelectAllOption\"\r\n [dropdownIcon]=\"'pi pi-chevron-down'\"\r\n [display]=\"display\"\r\n (onChange)=\"onChange.emit($event)\"\r\n (onPanelHide)=\"onClosePanel.emit($event)\"\r\n >\r\n </p-multiSelect>\r\n <p-multiSelect\r\n *ngIf=\"filterVirtualScrool\"\r\n #multiselect\r\n appendTo=\"body\"\r\n optionLabel=\"name\"\r\n optionValue=\"code\"\r\n dropdownIcon=\"fas fa-sort-down\"\r\n selectedItemsLabel=\"Selecionar todos\"\r\n [panelStyleClass]=\"filter ? 'has-filter' : ''\"\r\n [options]=\"options\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [filter]=\"filter\"\r\n [maxSelectedLabels]=\"options.length - 1\"\r\n [showHeader]=\"true\"\r\n [showToggleAll]=\"showSelectAllOption\"\r\n [dropdownIcon]=\"'pi pi-chevron-down'\"\r\n [display]=\"display\"\r\n (onChange)=\"onChange.emit($event)\"\r\n (onFilter)=\"search($event)\"\r\n (onPanelShow)=\"onOpenAutocompletePanel()\"\r\n (onPanelHide)=\"onHideAutocompletePanel()\"\r\n >\r\n </p-multiSelect>\r\n <span class=\"input-error\">{{ fieldErrorLabel() }}</span>\r\n</div>\r\n", styles: [".multiselect-field-input-container{height:62px}.multiselect-field-input-container .input-error{font-size:.7em;color:var(--error-color)}.multiselect-field-input-container div.p-multiselect-token{padding:auto 1em!important;background:#eff0f6!important}\n"], components: [{ type: i1.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "autoZIndex", "baseZIndex", "filterBy", "virtualScroll", "itemSize", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "scrollHeight", "defaultLabel", "placeholder", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onPanelShow", "onPanelHide"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MultiselectFieldComponent, decorators: [{
121
- type: Component,
122
- args: [{ selector: 'vector-multiselect-field', template: "<div class=\"multiselect-field-input-container\">\r\n <p-multiSelect\r\n *ngIf=\"!filterVirtualScrool\"\r\n #multiselect\r\n appendTo=\"body\"\r\n optionLabel=\"name\"\r\n optionValue=\"code\"\r\n dropdownIcon=\"fas fa-sort-down\"\r\n selectedItemsLabel=\"Selecionar todos\"\r\n [panelStyleClass]=\"filter ? 'has-filter' : ''\"\r\n [options]=\"options\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [filter]=\"filter\"\r\n [maxSelectedLabels]=\"options.length - 1\"\r\n [showHeader]=\"true\"\r\n [showToggleAll]=\"showSelectAllOption\"\r\n [dropdownIcon]=\"'pi pi-chevron-down'\"\r\n [display]=\"display\"\r\n (onChange)=\"onChange.emit($event)\"\r\n (onPanelHide)=\"onClosePanel.emit($event)\"\r\n >\r\n </p-multiSelect>\r\n <p-multiSelect\r\n *ngIf=\"filterVirtualScrool\"\r\n #multiselect\r\n appendTo=\"body\"\r\n optionLabel=\"name\"\r\n optionValue=\"code\"\r\n dropdownIcon=\"fas fa-sort-down\"\r\n selectedItemsLabel=\"Selecionar todos\"\r\n [panelStyleClass]=\"filter ? 'has-filter' : ''\"\r\n [options]=\"options\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [filter]=\"filter\"\r\n [maxSelectedLabels]=\"options.length - 1\"\r\n [showHeader]=\"true\"\r\n [showToggleAll]=\"showSelectAllOption\"\r\n [dropdownIcon]=\"'pi pi-chevron-down'\"\r\n [display]=\"display\"\r\n (onChange)=\"onChange.emit($event)\"\r\n (onFilter)=\"search($event)\"\r\n (onPanelShow)=\"onOpenAutocompletePanel()\"\r\n (onPanelHide)=\"onHideAutocompletePanel()\"\r\n >\r\n </p-multiSelect>\r\n <span class=\"input-error\">{{ fieldErrorLabel() }}</span>\r\n</div>\r\n", styles: [".multiselect-field-input-container{height:62px}.multiselect-field-input-container .input-error{font-size:.7em;color:var(--error-color)}.multiselect-field-input-container div.p-multiselect-token{padding:auto 1em!important;background:#eff0f6!important}\n"] }]
123
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { pagedSugestion: [{
124
- type: Input
125
- }], isRequired: [{
126
- type: Input
127
- }], control: [{
128
- type: Input
129
- }], label: [{
130
- type: Input
131
- }], options: [{
132
- type: Input
133
- }], filter: [{
134
- type: Input
135
- }], showSelectAllOption: [{
136
- type: Input
137
- }], display: [{
138
- type: Input
139
- }], paged: [{
140
- type: Input
141
- }], minLengthToService: [{
142
- type: Input
143
- }], initialLoad: [{
144
- type: Input
145
- }], service: [{
146
- type: Input
147
- }], filterVirtualScrool: [{
148
- type: Input
149
- }], onChange: [{
150
- type: Output
151
- }], onClosePanel: [{
152
- type: Output
153
- }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvbXVsdGlzZWxlY3QtZmllbGQvbXVsdGlzZWxlY3QtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvbXVsdGlzZWxlY3QtZmllbGQvbXVsdGlzZWxlY3QtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBTzVDLE1BQU0sT0FBTyx5QkFBeUI7SUFzRHBDLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUEvQ2hDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFJNUIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUVuQixZQUFPLEdBQWUsRUFBRSxDQUFDO1FBRXpCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZix3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFFcEMsWUFBTyxHQUFXLE9BQU8sQ0FBQztRQUUxQixVQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWIsdUJBQWtCLEdBQVcsQ0FBQyxDQUFDO1FBRS9CLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBSW5CLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUU1QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFakMsdUJBQWtC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WUFDdEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O3NIQS9JVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qix5ZUNWdEMsOHJEQWlEQTsyRkR2Q2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLDBCQUEwQjtnR0FNaEMsY0FBYztzQkFEakIsS0FBSztnQkFNQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSztnQkFHQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7Z0JBR0MsbUJBQW1CO3NCQUR6QixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsTUFBTTtnQkFHQSxZQUFZO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEJhc2VEcm9wZG93biB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndmVjdG9yLW11bHRpc2VsZWN0LWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGlzZWxlY3QtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL211bHRpc2VsZWN0LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aXNlbGVjdEZpZWxkQ29tcG9uZW50IHtcclxuICBASW5wdXQoKVxyXG4gIHNldCBwYWdlZFN1Z2VzdGlvbihfcGFnZWRTdWdlc3Rpb246IExpc3RJdGVtW10pIHtcclxuICAgIHRoaXMuX3BhZ2VkU3VnZXN0aW9uID0gX3BhZ2VkU3VnZXN0aW9uO1xyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5wYWdlZFN1Z2VzdGlvbiB8fCBbXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNvbnRyb2w6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb3B0aW9uczogTGlzdEl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZpbHRlciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dTZWxlY3RBbGxPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRpc3BsYXk6IHN0cmluZyA9ICdjb21tYSc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGFnZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG1pbkxlbmd0aFRvU2VydmljZTogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbml0aWFsTG9hZCA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2VydmljZTogQmFzZURyb3Bkb3duIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZpbHRlclZpcnR1YWxTY3Jvb2wgPSBmYWxzZTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uQ2xvc2VQYW5lbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50U2VhcmNoUXVlcnkgPSAnJztcclxuICBwcml2YXRlIGN1cnJlbnRTY3JvbGxQYWdlID0gLTE7XHJcbiAgcHJpdmF0ZSBjdXJyZW50U2Nyb2xsSW5kZXggPSAwO1xyXG5cclxuICBwdWJsaWMgdW5saXN0ZW5BdXRvY29tcGxldGVWaXJ0dWFsU2Nyb2xsID0gKCkgPT4ge307XHJcblxyXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcclxuICAgIGlmICghdGhpcy5sYWJlbCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0ke3RoaXMuaXNSZXF1aXJlZCA/ICcqJyA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFnZWRTdWdlc3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFnZWRTdWdlc3Rpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wYWdlZFN1Z2VzdGlvbjogTGlzdEl0ZW1bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5pdGlhbExvYWQgJiYgdGhpcy5maWx0ZXJWaXJ0dWFsU2Nyb29sKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoKG51bGwsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpZWxkRXJyb3JMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLmNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICBpZiAodGhpcy5jb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XHJcbiAgICAgICAgcmV0dXJuICdDYW1wbyBvYnJpZ2F0w7NyaW8nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdHlwZW9mIHRoaXMuY29udHJvbC5lcnJvcnNbJ2ludmFsaWQnXSA9PT0gJ3N0cmluZycgPyB0aGlzLmNvbnRyb2wuZXJyb3JzWydpbnZhbGlkJ10gOiAnQ2FtcG8gaW52w6FsaWRvJztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25PcGVuQXV0b2NvbXBsZXRlUGFuZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaCgpO1xyXG4gICAgY29uc3QgbXVsdGlTZWxlY3RQYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wLW11bHRpc2VsZWN0LWl0ZW1zLXdyYXBwZXInKTtcclxuXHJcbiAgICBpZiAobXVsdGlTZWxlY3RQYW5lbCAmJiB0aGlzLnBhZ2VkICYmIHRoaXMuY3VycmVudFNlYXJjaFF1ZXJ5Lmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aFRvU2VydmljZSkge1xyXG4gICAgICB0aGlzLnVubGlzdGVuQXV0b2NvbXBsZXRlVmlydHVhbFNjcm9sbCA9IHRoaXMucmVuZGVyZXIubGlzdGVuKG11bHRpU2VsZWN0UGFuZWwsICdzY3JvbGwnLCAoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCBldmVudEhlaWdodCA9IGV2ZW50LnRhcmdldC5zY3JvbGxIZWlnaHQgLSBldmVudC50YXJnZXQuY2xpZW50SGVpZ2h0IC0gMTUwO1xyXG5cclxuICAgICAgICBpZiAoTWF0aC5yb3VuZChldmVudC50YXJnZXQuc2Nyb2xsVG9wKSA+PSBldmVudEhlaWdodCkge1xyXG4gICAgICAgICAgdGhpcy5wYWdlUmVzdWx0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25IaWRlQXV0b2NvbXBsZXRlUGFuZWwoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wYWdlZCkge1xyXG4gICAgICB0aGlzLnVubGlzdGVuQXV0b2NvbXBsZXRlVmlydHVhbFNjcm9sbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlYXJjaCgkZXZlbnQ/OiBhbnksIGZvcmNlU2VhcmNoID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFNlYXJjaFF1ZXJ5ID0gJGV2ZW50Py5maWx0ZXIudG9VcHBlckNhc2UoKSB8fCAnJztcclxuICAgIHRoaXMuY3VycmVudFNjcm9sbFBhZ2UgPSAtMTtcclxuICAgIHRoaXMuY3VycmVudFNjcm9sbEluZGV4ID0gMDtcclxuICAgIGlmIChmb3JjZVNlYXJjaCB8fCB0aGlzLmN1cnJlbnRTZWFyY2hRdWVyeS5sZW5ndGggPj0gdGhpcy5taW5MZW5ndGhUb1NlcnZpY2UpIHtcclxuICAgICAgdGhpcy5wYWdlUmVzdWx0cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhZ2VSZXN1bHRzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gdGhpcy5maWx0ZXJMaXN0QnlRdWVyeSh0aGlzLnBhZ2VkU3VnZXN0aW9uLCB0aGlzLmN1cnJlbnRTZWFyY2hRdWVyeS50b1VwcGVyQ2FzZSgpKTtcclxuICAgIHRoaXMub3B0aW9ucyA9IGZpbHRlcmVkT3B0aW9ucy5zbGljZSgwLCB0aGlzLmN1cnJlbnRTY3JvbGxJbmRleCArIDIwKTtcclxuXHJcbiAgICBpZiAodGhpcy5wYWdlZFN1Z2VzdGlvbj8ubGVuZ3RoICYmIHRoaXMucGFnZWRTdWdlc3Rpb24ubGVuZ3RoID4gMjApIHtcclxuICAgICAgdGhpcy5jdXJyZW50U2Nyb2xsSW5kZXggPSB0aGlzLmN1cnJlbnRTY3JvbGxJbmRleCArIDIwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlRnJvbVN1Z2dlc3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckxpc3RCeVF1ZXJ5KGxpc3Q6IExpc3RJdGVtW10gPSBbXSwgcXVlcnk6IHN0cmluZyk6IExpc3RJdGVtW10ge1xyXG4gICAgcmV0dXJuIGxpc3QuZmlsdGVyKFxyXG4gICAgICAob3B0KSA9PiBTdHJpbmcob3B0LmNvZGUpLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpIHx8IG9wdC5uYW1lLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIHNldENvbnRyb2xWYWx1ZUZyb21TdWdnZXN0aW9ucygpIHtcclxuICAgIGNvbnN0IGNvZGUgPVxyXG4gICAgICAoT2JqZWN0VXRpbC5pc1ZhbGlkKHRoaXMuY29udHJvbC52YWx1ZT8uY29kZSkgJiYgYCR7dGhpcy5jb250cm9sLnZhbHVlPy5jb2RlfWApIHx8IGAke3RoaXMuY29udHJvbC52YWx1ZX1gO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSAmJiB0aGlzLm9wdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICBsZXQgaXRlbXNBcnJheSA9IHRoaXMub3B0aW9ucztcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgaXRlbXNBcnJheSA9IHRoaXMub3B0aW9ucztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpdGVtRnJvbVN1Z2dlc3Rpb25zID0gaXRlbXNBcnJheS5maW5kKChvcHQpID0+IGAke29wdC5jb2RlfWAudG9VcHBlckNhc2UoKSA9PT0gY29kZS50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgaWYgKGl0ZW1Gcm9tU3VnZ2VzdGlvbnMpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoaXRlbUZyb21TdWdnZXN0aW9ucywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VydmljZT8uZ2V0QnlJZCgrY29kZSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHJlc3BvbnNlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sLnZhbHVlICYmICF0aGlzLm9wdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNlcnZpY2U/LmdldEJ5SWQoK2NvZGUpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUocmVzcG9uc2UsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1maWVsZC1pbnB1dC1jb250YWluZXJcIj5cclxuICA8cC1tdWx0aVNlbGVjdFxyXG4gICAgKm5nSWY9XCIhZmlsdGVyVmlydHVhbFNjcm9vbFwiXHJcbiAgICAjbXVsdGlzZWxlY3RcclxuICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBvcHRpb25MYWJlbD1cIm5hbWVcIlxyXG4gICAgb3B0aW9uVmFsdWU9XCJjb2RlXCJcclxuICAgIGRyb3Bkb3duSWNvbj1cImZhcyBmYS1zb3J0LWRvd25cIlxyXG4gICAgc2VsZWN0ZWRJdGVtc0xhYmVsPVwiU2VsZWNpb25hciB0b2Rvc1wiXHJcbiAgICBbcGFuZWxTdHlsZUNsYXNzXT1cImZpbHRlciA/ICdoYXMtZmlsdGVyJyA6ICcnXCJcclxuICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgIFtmaWx0ZXJdPVwiZmlsdGVyXCJcclxuICAgIFttYXhTZWxlY3RlZExhYmVsc109XCJvcHRpb25zLmxlbmd0aCAtIDFcIlxyXG4gICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXHJcbiAgICBbc2hvd1RvZ2dsZUFsbF09XCJzaG93U2VsZWN0QWxsT3B0aW9uXCJcclxuICAgIFtkcm9wZG93bkljb25dPVwiJ3BpIHBpLWNoZXZyb24tZG93bidcIlxyXG4gICAgW2Rpc3BsYXldPVwiZGlzcGxheVwiXHJcbiAgICAob25DaGFuZ2UpPVwib25DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgIChvblBhbmVsSGlkZSk9XCJvbkNsb3NlUGFuZWwuZW1pdCgkZXZlbnQpXCJcclxuICA+XHJcbiAgPC9wLW11bHRpU2VsZWN0PlxyXG4gIDxwLW11bHRpU2VsZWN0XHJcbiAgICAqbmdJZj1cImZpbHRlclZpcnR1YWxTY3Jvb2xcIlxyXG4gICAgI211bHRpc2VsZWN0XHJcbiAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcclxuICAgIG9wdGlvblZhbHVlPVwiY29kZVwiXHJcbiAgICBkcm9wZG93bkljb249XCJmYXMgZmEtc29ydC1kb3duXCJcclxuICAgIHNlbGVjdGVkSXRlbXNMYWJlbD1cIlNlbGVjaW9uYXIgdG9kb3NcIlxyXG4gICAgW3BhbmVsU3R5bGVDbGFzc109XCJmaWx0ZXIgPyAnaGFzLWZpbHRlcicgOiAnJ1wiXHJcbiAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcclxuICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICBbZmlsdGVyXT1cImZpbHRlclwiXHJcbiAgICBbbWF4U2VsZWN0ZWRMYWJlbHNdPVwib3B0aW9ucy5sZW5ndGggLSAxXCJcclxuICAgIFtzaG93SGVhZGVyXT1cInRydWVcIlxyXG4gICAgW3Nob3dUb2dnbGVBbGxdPVwic2hvd1NlbGVjdEFsbE9wdGlvblwiXHJcbiAgICBbZHJvcGRvd25JY29uXT1cIidwaSBwaS1jaGV2cm9uLWRvd24nXCJcclxuICAgIFtkaXNwbGF5XT1cImRpc3BsYXlcIlxyXG4gICAgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAob25GaWx0ZXIpPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgKG9uUGFuZWxTaG93KT1cIm9uT3BlbkF1dG9jb21wbGV0ZVBhbmVsKClcIlxyXG4gICAgKG9uUGFuZWxIaWRlKT1cIm9uSGlkZUF1dG9jb21wbGV0ZVBhbmVsKClcIlxyXG4gID5cclxuICA8L3AtbXVsdGlTZWxlY3Q+XHJcbiAgPHNwYW4gY2xhc3M9XCJpbnB1dC1lcnJvclwiPnt7IGZpZWxkRXJyb3JMYWJlbCgpIH19PC9zcGFuPlxyXG48L2Rpdj5cclxuIl19
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { ObjectUtil } from '../../../utils';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "primeng/multiselect";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/forms";
7
+ export class MultiselectFieldComponent {
8
+ constructor(renderer) {
9
+ this.renderer = renderer;
10
+ this.isRequired = false;
11
+ this.label = '';
12
+ this.options = [];
13
+ this.filter = false;
14
+ this.showSelectAllOption = true;
15
+ this.display = 'comma';
16
+ this.paged = true;
17
+ this.minLengthToService = 0;
18
+ this.initialLoad = true;
19
+ this.filterVirtualScrool = false;
20
+ this.onChange = new EventEmitter();
21
+ this.onClosePanel = new EventEmitter();
22
+ this.currentSearchQuery = '';
23
+ this.currentScrollPage = -1;
24
+ this.currentScrollIndex = 0;
25
+ this.unlistenAutocompleteVirtualScroll = () => { };
26
+ this._pagedSugestion = [];
27
+ }
28
+ set pagedSugestion(_pagedSugestion) {
29
+ this._pagedSugestion = _pagedSugestion;
30
+ this.options = this.pagedSugestion || [];
31
+ }
32
+ get placeholder() {
33
+ if (!this.label) {
34
+ return '';
35
+ }
36
+ return `${this.label}${this.isRequired ? '*' : ''}`;
37
+ }
38
+ get pagedSugestion() {
39
+ return this._pagedSugestion;
40
+ }
41
+ ngOnInit() {
42
+ if (this.initialLoad && this.filterVirtualScrool) {
43
+ this.search(null, true);
44
+ }
45
+ }
46
+ fieldErrorLabel() {
47
+ if (this.control && this.control.invalid && this.control.touched) {
48
+ if (this.control.hasError('required')) {
49
+ return 'Campo obrigatório';
50
+ }
51
+ return typeof this.control.errors['invalid'] === 'string' ? this.control.errors['invalid'] : 'Campo inválido';
52
+ }
53
+ return '';
54
+ }
55
+ onOpenAutocompletePanel() {
56
+ this.search();
57
+ const multiSelectPanel = document.querySelector('.p-multiselect-items-wrapper');
58
+ if (multiSelectPanel && this.paged && this.currentSearchQuery.length >= this.minLengthToService) {
59
+ this.unlistenAutocompleteVirtualScroll = this.renderer.listen(multiSelectPanel, 'scroll', (event) => {
60
+ const eventHeight = event.target.scrollHeight - event.target.clientHeight - 150;
61
+ if (Math.round(event.target.scrollTop) >= eventHeight) {
62
+ this.pageResults();
63
+ }
64
+ });
65
+ }
66
+ }
67
+ onHideAutocompletePanel() {
68
+ if (this.paged) {
69
+ this.unlistenAutocompleteVirtualScroll();
70
+ }
71
+ }
72
+ search($event, forceSearch = false) {
73
+ this.currentSearchQuery = $event?.filter.toUpperCase() || '';
74
+ this.currentScrollPage = -1;
75
+ this.currentScrollIndex = 0;
76
+ if (forceSearch || this.currentSearchQuery.length >= this.minLengthToService) {
77
+ this.pageResults();
78
+ }
79
+ else {
80
+ this.options = [];
81
+ }
82
+ }
83
+ pageResults() {
84
+ const filteredOptions = this.filterListByQuery(this.pagedSugestion, this.currentSearchQuery.toUpperCase());
85
+ this.options = filteredOptions.slice(0, this.currentScrollIndex + 20);
86
+ if (this.pagedSugestion?.length && this.pagedSugestion.length > 20) {
87
+ this.currentScrollIndex = this.currentScrollIndex + 20;
88
+ }
89
+ this.setControlValueFromSuggestions();
90
+ }
91
+ filterListByQuery(list = [], query) {
92
+ return list.filter((opt) => String(opt.code).toUpperCase().includes(query) || opt.name.toUpperCase().includes(query));
93
+ }
94
+ setControlValueFromSuggestions() {
95
+ const code = (ObjectUtil.isValid(this.control.value?.code) && `${this.control.value?.code}`) || `${this.control.value}`;
96
+ if (this.control.value && this.options?.length) {
97
+ let itemsArray = this.options;
98
+ if (this.options?.length) {
99
+ itemsArray = this.options;
100
+ }
101
+ const itemFromSuggestions = itemsArray.find((opt) => `${opt.code}`.toUpperCase() === code.toUpperCase());
102
+ if (itemFromSuggestions) {
103
+ this.control.setValue(itemFromSuggestions, { emitEvent: false });
104
+ }
105
+ else {
106
+ this.service?.getById(+code).subscribe((response) => {
107
+ this.control.setValue(response, { emitEvent: false });
108
+ });
109
+ }
110
+ }
111
+ else if (this.control.value && !this.options?.length) {
112
+ this.service?.getById(+code).subscribe((response) => {
113
+ this.control.setValue(response, { emitEvent: false });
114
+ });
115
+ }
116
+ }
117
+ }
118
+ MultiselectFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MultiselectFieldComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
119
+ MultiselectFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MultiselectFieldComponent, selector: "vector-multiselect-field", inputs: { pagedSugestion: "pagedSugestion", isRequired: "isRequired", control: "control", label: "label", options: "options", filter: "filter", showSelectAllOption: "showSelectAllOption", display: "display", paged: "paged", minLengthToService: "minLengthToService", initialLoad: "initialLoad", service: "service", filterVirtualScrool: "filterVirtualScrool" }, outputs: { onChange: "onChange", onClosePanel: "onClosePanel" }, ngImport: i0, template: "<div class=\"multiselect-field-input-container\">\n <p-multiSelect\n *ngIf=\"!filterVirtualScrool\"\n #multiselect\n appendTo=\"body\"\n optionLabel=\"name\"\n optionValue=\"code\"\n dropdownIcon=\"fas fa-sort-down\"\n selectedItemsLabel=\"Selecionar todos\"\n [panelStyleClass]=\"filter ? 'has-filter' : ''\"\n [options]=\"options\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [filter]=\"filter\"\n [maxSelectedLabels]=\"options.length - 1\"\n [showHeader]=\"true\"\n [showToggleAll]=\"showSelectAllOption\"\n [dropdownIcon]=\"'pi pi-chevron-down'\"\n [display]=\"display\"\n (onChange)=\"onChange.emit($event)\"\n (onPanelHide)=\"onClosePanel.emit($event)\"\n >\n </p-multiSelect>\n <p-multiSelect\n *ngIf=\"filterVirtualScrool\"\n #multiselect\n appendTo=\"body\"\n optionLabel=\"name\"\n optionValue=\"code\"\n dropdownIcon=\"fas fa-sort-down\"\n selectedItemsLabel=\"Selecionar todos\"\n [panelStyleClass]=\"filter ? 'has-filter' : ''\"\n [options]=\"options\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [filter]=\"filter\"\n [maxSelectedLabels]=\"options.length - 1\"\n [showHeader]=\"true\"\n [showToggleAll]=\"showSelectAllOption\"\n [dropdownIcon]=\"'pi pi-chevron-down'\"\n [display]=\"display\"\n (onChange)=\"onChange.emit($event)\"\n (onFilter)=\"search($event)\"\n (onPanelShow)=\"onOpenAutocompletePanel()\"\n (onPanelHide)=\"onHideAutocompletePanel()\"\n >\n </p-multiSelect>\n <span class=\"input-error\">{{ fieldErrorLabel() }}</span>\n</div>\n", styles: [".multiselect-field-input-container{height:62px}.multiselect-field-input-container .input-error{font-size:.7em;color:var(--error-color)}.multiselect-field-input-container div.p-multiselect-token{padding:auto 1em!important;background:#eff0f6!important}\n"], components: [{ type: i1.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "autoZIndex", "baseZIndex", "filterBy", "virtualScroll", "itemSize", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "scrollHeight", "defaultLabel", "placeholder", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onPanelShow", "onPanelHide"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MultiselectFieldComponent, decorators: [{
121
+ type: Component,
122
+ args: [{ selector: 'vector-multiselect-field', template: "<div class=\"multiselect-field-input-container\">\n <p-multiSelect\n *ngIf=\"!filterVirtualScrool\"\n #multiselect\n appendTo=\"body\"\n optionLabel=\"name\"\n optionValue=\"code\"\n dropdownIcon=\"fas fa-sort-down\"\n selectedItemsLabel=\"Selecionar todos\"\n [panelStyleClass]=\"filter ? 'has-filter' : ''\"\n [options]=\"options\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [filter]=\"filter\"\n [maxSelectedLabels]=\"options.length - 1\"\n [showHeader]=\"true\"\n [showToggleAll]=\"showSelectAllOption\"\n [dropdownIcon]=\"'pi pi-chevron-down'\"\n [display]=\"display\"\n (onChange)=\"onChange.emit($event)\"\n (onPanelHide)=\"onClosePanel.emit($event)\"\n >\n </p-multiSelect>\n <p-multiSelect\n *ngIf=\"filterVirtualScrool\"\n #multiselect\n appendTo=\"body\"\n optionLabel=\"name\"\n optionValue=\"code\"\n dropdownIcon=\"fas fa-sort-down\"\n selectedItemsLabel=\"Selecionar todos\"\n [panelStyleClass]=\"filter ? 'has-filter' : ''\"\n [options]=\"options\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [filter]=\"filter\"\n [maxSelectedLabels]=\"options.length - 1\"\n [showHeader]=\"true\"\n [showToggleAll]=\"showSelectAllOption\"\n [dropdownIcon]=\"'pi pi-chevron-down'\"\n [display]=\"display\"\n (onChange)=\"onChange.emit($event)\"\n (onFilter)=\"search($event)\"\n (onPanelShow)=\"onOpenAutocompletePanel()\"\n (onPanelHide)=\"onHideAutocompletePanel()\"\n >\n </p-multiSelect>\n <span class=\"input-error\">{{ fieldErrorLabel() }}</span>\n</div>\n", styles: [".multiselect-field-input-container{height:62px}.multiselect-field-input-container .input-error{font-size:.7em;color:var(--error-color)}.multiselect-field-input-container div.p-multiselect-token{padding:auto 1em!important;background:#eff0f6!important}\n"] }]
123
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { pagedSugestion: [{
124
+ type: Input
125
+ }], isRequired: [{
126
+ type: Input
127
+ }], control: [{
128
+ type: Input
129
+ }], label: [{
130
+ type: Input
131
+ }], options: [{
132
+ type: Input
133
+ }], filter: [{
134
+ type: Input
135
+ }], showSelectAllOption: [{
136
+ type: Input
137
+ }], display: [{
138
+ type: Input
139
+ }], paged: [{
140
+ type: Input
141
+ }], minLengthToService: [{
142
+ type: Input
143
+ }], initialLoad: [{
144
+ type: Input
145
+ }], service: [{
146
+ type: Input
147
+ }], filterVirtualScrool: [{
148
+ type: Input
149
+ }], onChange: [{
150
+ type: Output
151
+ }], onClosePanel: [{
152
+ type: Output
153
+ }] } });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvbXVsdGlzZWxlY3QtZmllbGQvbXVsdGlzZWxlY3QtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvbXVsdGlzZWxlY3QtZmllbGQvbXVsdGlzZWxlY3QtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBTzVDLE1BQU0sT0FBTyx5QkFBeUI7SUFzRHBDLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUEvQ2hDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFJNUIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUVuQixZQUFPLEdBQWUsRUFBRSxDQUFDO1FBRXpCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZix3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFFcEMsWUFBTyxHQUFXLE9BQU8sQ0FBQztRQUUxQixVQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWIsdUJBQWtCLEdBQVcsQ0FBQyxDQUFDO1FBRS9CLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBSW5CLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUU1QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFakMsdUJBQWtC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WUFDdEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O3NIQS9JVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qix5ZUNWdEMsNGxEQWlEQTsyRkR2Q2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLDBCQUEwQjtnR0FNaEMsY0FBYztzQkFEakIsS0FBSztnQkFNQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSztnQkFHQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7Z0JBR0MsbUJBQW1CO3NCQUR6QixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsTUFBTTtnQkFHQSxZQUFZO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQmFzZURyb3Bkb3duIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVjdG9yLW11bHRpc2VsZWN0LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpc2VsZWN0LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGlzZWxlY3QtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlzZWxlY3RGaWVsZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHNldCBwYWdlZFN1Z2VzdGlvbihfcGFnZWRTdWdlc3Rpb246IExpc3RJdGVtW10pIHtcbiAgICB0aGlzLl9wYWdlZFN1Z2VzdGlvbiA9IF9wYWdlZFN1Z2VzdGlvbjtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnBhZ2VkU3VnZXN0aW9uIHx8IFtdO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb250cm9sOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcHRpb25zOiBMaXN0SXRlbVtdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWx0ZXIgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dTZWxlY3RBbGxPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGlzcGxheTogc3RyaW5nID0gJ2NvbW1hJztcbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2VkID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcHVibGljIG1pbkxlbmd0aFRvU2VydmljZTogbnVtYmVyID0gMDtcbiAgQElucHV0KClcbiAgcHVibGljIGluaXRpYWxMb2FkID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcHVibGljIHNlcnZpY2U6IEJhc2VEcm9wZG93biB8IHVuZGVmaW5lZDtcbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlclZpcnR1YWxTY3Jvb2wgPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkNsb3NlUGFuZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBjdXJyZW50U2VhcmNoUXVlcnkgPSAnJztcbiAgcHJpdmF0ZSBjdXJyZW50U2Nyb2xsUGFnZSA9IC0xO1xuICBwcml2YXRlIGN1cnJlbnRTY3JvbGxJbmRleCA9IDA7XG5cbiAgcHVibGljIHVubGlzdGVuQXV0b2NvbXBsZXRlVmlydHVhbFNjcm9sbCA9ICgpID0+IHt9O1xuXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICBpZiAoIXRoaXMubGFiZWwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMubGFiZWx9JHt0aGlzLmlzUmVxdWlyZWQgPyAnKicgOiAnJ31gO1xuICB9XG5cbiAgZ2V0IHBhZ2VkU3VnZXN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9wYWdlZFN1Z2VzdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX3BhZ2VkU3VnZXN0aW9uOiBMaXN0SXRlbVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluaXRpYWxMb2FkICYmIHRoaXMuZmlsdGVyVmlydHVhbFNjcm9vbCkge1xuICAgICAgdGhpcy5zZWFyY2gobnVsbCwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpZWxkRXJyb3JMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmludmFsaWQgJiYgdGhpcy5jb250cm9sLnRvdWNoZWQpIHtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgcmV0dXJuICdDYW1wbyBvYnJpZ2F0w7NyaW8nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHlwZW9mIHRoaXMuY29udHJvbC5lcnJvcnNbJ2ludmFsaWQnXSA9PT0gJ3N0cmluZycgPyB0aGlzLmNvbnRyb2wuZXJyb3JzWydpbnZhbGlkJ10gOiAnQ2FtcG8gaW52w6FsaWRvJztcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgb25PcGVuQXV0b2NvbXBsZXRlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2goKTtcbiAgICBjb25zdCBtdWx0aVNlbGVjdFBhbmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnAtbXVsdGlzZWxlY3QtaXRlbXMtd3JhcHBlcicpO1xuXG4gICAgaWYgKG11bHRpU2VsZWN0UGFuZWwgJiYgdGhpcy5wYWdlZCAmJiB0aGlzLmN1cnJlbnRTZWFyY2hRdWVyeS5sZW5ndGggPj0gdGhpcy5taW5MZW5ndGhUb1NlcnZpY2UpIHtcbiAgICAgIHRoaXMudW5saXN0ZW5BdXRvY29tcGxldGVWaXJ0dWFsU2Nyb2xsID0gdGhpcy5yZW5kZXJlci5saXN0ZW4obXVsdGlTZWxlY3RQYW5lbCwgJ3Njcm9sbCcsIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBldmVudEhlaWdodCA9IGV2ZW50LnRhcmdldC5zY3JvbGxIZWlnaHQgLSBldmVudC50YXJnZXQuY2xpZW50SGVpZ2h0IC0gMTUwO1xuXG4gICAgICAgIGlmIChNYXRoLnJvdW5kKGV2ZW50LnRhcmdldC5zY3JvbGxUb3ApID49IGV2ZW50SGVpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5wYWdlUmVzdWx0cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25IaWRlQXV0b2NvbXBsZXRlUGFuZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnZWQpIHtcbiAgICAgIHRoaXMudW5saXN0ZW5BdXRvY29tcGxldGVWaXJ0dWFsU2Nyb2xsKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlYXJjaCgkZXZlbnQ/OiBhbnksIGZvcmNlU2VhcmNoID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTZWFyY2hRdWVyeSA9ICRldmVudD8uZmlsdGVyLnRvVXBwZXJDYXNlKCkgfHwgJyc7XG4gICAgdGhpcy5jdXJyZW50U2Nyb2xsUGFnZSA9IC0xO1xuICAgIHRoaXMuY3VycmVudFNjcm9sbEluZGV4ID0gMDtcbiAgICBpZiAoZm9yY2VTZWFyY2ggfHwgdGhpcy5jdXJyZW50U2VhcmNoUXVlcnkubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoVG9TZXJ2aWNlKSB7XG4gICAgICB0aGlzLnBhZ2VSZXN1bHRzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFnZVJlc3VsdHMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gdGhpcy5maWx0ZXJMaXN0QnlRdWVyeSh0aGlzLnBhZ2VkU3VnZXN0aW9uLCB0aGlzLmN1cnJlbnRTZWFyY2hRdWVyeS50b1VwcGVyQ2FzZSgpKTtcbiAgICB0aGlzLm9wdGlvbnMgPSBmaWx0ZXJlZE9wdGlvbnMuc2xpY2UoMCwgdGhpcy5jdXJyZW50U2Nyb2xsSW5kZXggKyAyMCk7XG5cbiAgICBpZiAodGhpcy5wYWdlZFN1Z2VzdGlvbj8ubGVuZ3RoICYmIHRoaXMucGFnZWRTdWdlc3Rpb24ubGVuZ3RoID4gMjApIHtcbiAgICAgIHRoaXMuY3VycmVudFNjcm9sbEluZGV4ID0gdGhpcy5jdXJyZW50U2Nyb2xsSW5kZXggKyAyMDtcbiAgICB9XG5cbiAgICB0aGlzLnNldENvbnRyb2xWYWx1ZUZyb21TdWdnZXN0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJMaXN0QnlRdWVyeShsaXN0OiBMaXN0SXRlbVtdID0gW10sIHF1ZXJ5OiBzdHJpbmcpOiBMaXN0SXRlbVtdIHtcbiAgICByZXR1cm4gbGlzdC5maWx0ZXIoXG4gICAgICAob3B0KSA9PiBTdHJpbmcob3B0LmNvZGUpLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpIHx8IG9wdC5uYW1lLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgKTtcbiAgfVxuICBwcml2YXRlIHNldENvbnRyb2xWYWx1ZUZyb21TdWdnZXN0aW9ucygpIHtcbiAgICBjb25zdCBjb2RlID1cbiAgICAgIChPYmplY3RVdGlsLmlzVmFsaWQodGhpcy5jb250cm9sLnZhbHVlPy5jb2RlKSAmJiBgJHt0aGlzLmNvbnRyb2wudmFsdWU/LmNvZGV9YCkgfHwgYCR7dGhpcy5jb250cm9sLnZhbHVlfWA7XG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSAmJiB0aGlzLm9wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgbGV0IGl0ZW1zQXJyYXkgPSB0aGlzLm9wdGlvbnM7XG4gICAgICBpZiAodGhpcy5vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgaXRlbXNBcnJheSA9IHRoaXMub3B0aW9ucztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGl0ZW1Gcm9tU3VnZ2VzdGlvbnMgPSBpdGVtc0FycmF5LmZpbmQoKG9wdCkgPT4gYCR7b3B0LmNvZGV9YC50b1VwcGVyQ2FzZSgpID09PSBjb2RlLnRvVXBwZXJDYXNlKCkpO1xuICAgICAgaWYgKGl0ZW1Gcm9tU3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGl0ZW1Gcm9tU3VnZ2VzdGlvbnMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VydmljZT8uZ2V0QnlJZCgrY29kZSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShyZXNwb25zZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udHJvbC52YWx1ZSAmJiAhdGhpcy5vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VydmljZT8uZ2V0QnlJZCgrY29kZSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUocmVzcG9uc2UsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm11bHRpc2VsZWN0LWZpZWxkLWlucHV0LWNvbnRhaW5lclwiPlxuICA8cC1tdWx0aVNlbGVjdFxuICAgICpuZ0lmPVwiIWZpbHRlclZpcnR1YWxTY3Jvb2xcIlxuICAgICNtdWx0aXNlbGVjdFxuICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICBvcHRpb25WYWx1ZT1cImNvZGVcIlxuICAgIGRyb3Bkb3duSWNvbj1cImZhcyBmYS1zb3J0LWRvd25cIlxuICAgIHNlbGVjdGVkSXRlbXNMYWJlbD1cIlNlbGVjaW9uYXIgdG9kb3NcIlxuICAgIFtwYW5lbFN0eWxlQ2xhc3NdPVwiZmlsdGVyID8gJ2hhcy1maWx0ZXInIDogJydcIlxuICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtmaWx0ZXJdPVwiZmlsdGVyXCJcbiAgICBbbWF4U2VsZWN0ZWRMYWJlbHNdPVwib3B0aW9ucy5sZW5ndGggLSAxXCJcbiAgICBbc2hvd0hlYWRlcl09XCJ0cnVlXCJcbiAgICBbc2hvd1RvZ2dsZUFsbF09XCJzaG93U2VsZWN0QWxsT3B0aW9uXCJcbiAgICBbZHJvcGRvd25JY29uXT1cIidwaSBwaS1jaGV2cm9uLWRvd24nXCJcbiAgICBbZGlzcGxheV09XCJkaXNwbGF5XCJcbiAgICAob25DaGFuZ2UpPVwib25DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAob25QYW5lbEhpZGUpPVwib25DbG9zZVBhbmVsLmVtaXQoJGV2ZW50KVwiXG4gID5cbiAgPC9wLW11bHRpU2VsZWN0PlxuICA8cC1tdWx0aVNlbGVjdFxuICAgICpuZ0lmPVwiZmlsdGVyVmlydHVhbFNjcm9vbFwiXG4gICAgI211bHRpc2VsZWN0XG4gICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICBvcHRpb25MYWJlbD1cIm5hbWVcIlxuICAgIG9wdGlvblZhbHVlPVwiY29kZVwiXG4gICAgZHJvcGRvd25JY29uPVwiZmFzIGZhLXNvcnQtZG93blwiXG4gICAgc2VsZWN0ZWRJdGVtc0xhYmVsPVwiU2VsZWNpb25hciB0b2Rvc1wiXG4gICAgW3BhbmVsU3R5bGVDbGFzc109XCJmaWx0ZXIgPyAnaGFzLWZpbHRlcicgOiAnJ1wiXG4gICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2ZpbHRlcl09XCJmaWx0ZXJcIlxuICAgIFttYXhTZWxlY3RlZExhYmVsc109XCJvcHRpb25zLmxlbmd0aCAtIDFcIlxuICAgIFtzaG93SGVhZGVyXT1cInRydWVcIlxuICAgIFtzaG93VG9nZ2xlQWxsXT1cInNob3dTZWxlY3RBbGxPcHRpb25cIlxuICAgIFtkcm9wZG93bkljb25dPVwiJ3BpIHBpLWNoZXZyb24tZG93bidcIlxuICAgIFtkaXNwbGF5XT1cImRpc3BsYXlcIlxuICAgIChvbkNoYW5nZSk9XCJvbkNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgIChvbkZpbHRlcik9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgKG9uUGFuZWxTaG93KT1cIm9uT3BlbkF1dG9jb21wbGV0ZVBhbmVsKClcIlxuICAgIChvblBhbmVsSGlkZSk9XCJvbkhpZGVBdXRvY29tcGxldGVQYW5lbCgpXCJcbiAgPlxuICA8L3AtbXVsdGlTZWxlY3Q+XG4gIDxzcGFuIGNsYXNzPVwiaW5wdXQtZXJyb3JcIj57eyBmaWVsZEVycm9yTGFiZWwoKSB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
@@ -1,2 +1,2 @@
1
- export * from './percentage-field.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9wZXJjZW50YWdlLWZpZWxkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BlcmNlbnRhZ2UtZmllbGQuY29tcG9uZW50JztcclxuIl19
1
+ export * from './percentage-field.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9wZXJjZW50YWdlLWZpZWxkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BlcmNlbnRhZ2UtZmllbGQuY29tcG9uZW50JztcbiJdfQ==
@@ -1,54 +1,54 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "primeng/inputnumber";
4
- import * as i2 from "@angular/forms";
5
- export class PercentageFieldComponent {
6
- constructor() {
7
- this.min = 0;
8
- this.max = 100;
9
- this.minFractionDigits = 0;
10
- this.maxFractionDigits = 0;
11
- this.step = 0;
12
- this.blurEvent = new EventEmitter();
13
- this.enterKeyPress = new EventEmitter();
14
- this.focusEvent = new EventEmitter();
15
- this.percentageRegex = `^(100(\\.0{1,2})?|[1-9]?\\d(\\.\\d{1,2})?)$`;
16
- this.lastBlurValue = '';
17
- }
18
- ngOnInit() { }
19
- ngOnDestroy() { }
20
- onBlur() {
21
- this.control.markAsTouched();
22
- if (this.lastBlurValue !== this.control.value) {
23
- this.lastBlurValue = this.control.value;
24
- setTimeout(() => {
25
- this.blurEvent.emit(this.control.value);
26
- });
27
- }
28
- }
29
- }
30
- PercentageFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: PercentageFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- PercentageFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: PercentageFieldComponent, selector: "vector-percentage-field", inputs: { control: "control", min: "min", max: "max", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", step: "step" }, outputs: { blurEvent: "blurEvent", enterKeyPress: "enterKeyPress", focusEvent: "focusEvent" }, ngImport: i0, template: "<form class=\"input-container\">\r\n <p-inputNumber\r\n [formControl]=\"control\"\r\n suffix=\"%\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [minFractionDigits]=\"minFractionDigits\"\r\n [maxFractionDigits]=\"maxFractionDigits\"\r\n [step]=\"step\"\r\n [showButtons]=\"step > 1\"\r\n buttonLayout=\"horizontal\"\r\n decrementButtonIcon=\"pi pi-minus-circle\"\r\n incrementButtonIcon=\"pi pi-plus-circle\"\r\n (onBlur)=\"onBlur()\"\r\n ></p-inputNumber>\r\n</form>\r\n", styles: [".input-container{width:100%}\n"], components: [{ type: i1.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: PercentageFieldComponent, decorators: [{
33
- type: Component,
34
- args: [{ selector: 'vector-percentage-field', template: "<form class=\"input-container\">\r\n <p-inputNumber\r\n [formControl]=\"control\"\r\n suffix=\"%\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [minFractionDigits]=\"minFractionDigits\"\r\n [maxFractionDigits]=\"maxFractionDigits\"\r\n [step]=\"step\"\r\n [showButtons]=\"step > 1\"\r\n buttonLayout=\"horizontal\"\r\n decrementButtonIcon=\"pi pi-minus-circle\"\r\n incrementButtonIcon=\"pi pi-plus-circle\"\r\n (onBlur)=\"onBlur()\"\r\n ></p-inputNumber>\r\n</form>\r\n", styles: [".input-container{width:100%}\n"] }]
35
- }], propDecorators: { control: [{
36
- type: Input
37
- }], min: [{
38
- type: Input
39
- }], max: [{
40
- type: Input
41
- }], minFractionDigits: [{
42
- type: Input
43
- }], maxFractionDigits: [{
44
- type: Input
45
- }], step: [{
46
- type: Input
47
- }], blurEvent: [{
48
- type: Output
49
- }], enterKeyPress: [{
50
- type: Output
51
- }], focusEvent: [{
52
- type: Output
53
- }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyY2VudGFnZS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9wZXJjZW50YWdlLWZpZWxkL3BlcmNlbnRhZ2UtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvcGVyY2VudGFnZS1maWVsZC9wZXJjZW50YWdlLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzFGLE1BQU0sT0FBTyx3QkFBd0I7SUFMckM7UUFTUyxRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBRWhCLFFBQUcsR0FBVyxHQUFHLENBQUM7UUFFbEIsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBRTlCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUU5QixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRVQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZCLG9CQUFlLEdBQUcsNkNBQTZDLENBQUM7UUFFeEUsa0JBQWEsR0FBRyxFQUFFLENBQUM7S0FlNUI7SUFiQyxRQUFRLEtBQUksQ0FBQztJQUViLFdBQVcsS0FBSSxDQUFDO0lBRVQsTUFBTTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztxSEFwQ1Usd0JBQXdCO3lHQUF4Qix3QkFBd0Isb1RDUHJDLHlmQWdCQTsyRkRUYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UseUJBQXlCOzhCQU01QixPQUFPO3NCQURiLEtBQUs7Z0JBR0MsR0FBRztzQkFEVCxLQUFLO2dCQUdDLEdBQUc7c0JBRFQsS0FBSztnQkFHQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBR0MsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUdDLElBQUk7c0JBRFYsS0FBSztnQkFHQyxTQUFTO3NCQURmLE1BQU07Z0JBR0EsYUFBYTtzQkFEbkIsTUFBTTtnQkFHQSxVQUFVO3NCQURoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ZlY3Rvci1wZXJjZW50YWdlLWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGVyY2VudGFnZS1maWVsZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGVyY2VudGFnZS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVyY2VudGFnZUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNvbnRyb2w6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtaW46IG51bWJlciA9IDA7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWF4OiBudW1iZXIgPSAxMDA7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWluRnJhY3Rpb25EaWdpdHM6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWF4RnJhY3Rpb25EaWdpdHM6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc3RlcCA9IDA7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGJsdXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZW50ZXJLZXlQcmVzcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZm9jdXNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHBlcmNlbnRhZ2VSZWdleCA9IGBeKDEwMChcXFxcLjB7MSwyfSk/fFsxLTldP1xcXFxkKFxcXFwuXFxcXGR7MSwyfSk/KSRgO1xyXG5cclxuICBwcml2YXRlIGxhc3RCbHVyVmFsdWUgPSAnJztcclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHt9XHJcblxyXG4gIHB1YmxpYyBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgaWYgKHRoaXMubGFzdEJsdXJWYWx1ZSAhPT0gdGhpcy5jb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMubGFzdEJsdXJWYWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ibHVyRXZlbnQuZW1pdCh0aGlzLmNvbnRyb2wudmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGZvcm0gY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICA8cC1pbnB1dE51bWJlclxyXG4gICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgc3VmZml4PVwiJVwiXHJcbiAgICBbbWluXT1cIm1pblwiXHJcbiAgICBbbWF4XT1cIm1heFwiXHJcbiAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwibWluRnJhY3Rpb25EaWdpdHNcIlxyXG4gICAgW21heEZyYWN0aW9uRGlnaXRzXT1cIm1heEZyYWN0aW9uRGlnaXRzXCJcclxuICAgIFtzdGVwXT1cInN0ZXBcIlxyXG4gICAgW3Nob3dCdXR0b25zXT1cInN0ZXAgPiAxXCJcclxuICAgIGJ1dHRvbkxheW91dD1cImhvcml6b250YWxcIlxyXG4gICAgZGVjcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLW1pbnVzLWNpcmNsZVwiXHJcbiAgICBpbmNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktcGx1cy1jaXJjbGVcIlxyXG4gICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgPjwvcC1pbnB1dE51bWJlcj5cclxuPC9mb3JtPlxyXG4iXX0=
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "primeng/inputnumber";
4
+ import * as i2 from "@angular/forms";
5
+ export class PercentageFieldComponent {
6
+ constructor() {
7
+ this.min = 0;
8
+ this.max = 100;
9
+ this.minFractionDigits = 0;
10
+ this.maxFractionDigits = 0;
11
+ this.step = 0;
12
+ this.blurEvent = new EventEmitter();
13
+ this.enterKeyPress = new EventEmitter();
14
+ this.focusEvent = new EventEmitter();
15
+ this.percentageRegex = `^(100(\\.0{1,2})?|[1-9]?\\d(\\.\\d{1,2})?)$`;
16
+ this.lastBlurValue = '';
17
+ }
18
+ ngOnInit() { }
19
+ ngOnDestroy() { }
20
+ onBlur() {
21
+ this.control.markAsTouched();
22
+ if (this.lastBlurValue !== this.control.value) {
23
+ this.lastBlurValue = this.control.value;
24
+ setTimeout(() => {
25
+ this.blurEvent.emit(this.control.value);
26
+ });
27
+ }
28
+ }
29
+ }
30
+ PercentageFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: PercentageFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
+ PercentageFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: PercentageFieldComponent, selector: "vector-percentage-field", inputs: { control: "control", min: "min", max: "max", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", step: "step" }, outputs: { blurEvent: "blurEvent", enterKeyPress: "enterKeyPress", focusEvent: "focusEvent" }, ngImport: i0, template: "<form class=\"input-container\">\n <p-inputNumber\n [formControl]=\"control\"\n suffix=\"%\"\n [min]=\"min\"\n [max]=\"max\"\n [minFractionDigits]=\"minFractionDigits\"\n [maxFractionDigits]=\"maxFractionDigits\"\n [step]=\"step\"\n [showButtons]=\"step > 1\"\n buttonLayout=\"horizontal\"\n decrementButtonIcon=\"pi pi-minus-circle\"\n incrementButtonIcon=\"pi pi-plus-circle\"\n (onBlur)=\"onBlur()\"\n ></p-inputNumber>\n</form>\n", styles: [".input-container{width:100%}\n"], components: [{ type: i1.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: PercentageFieldComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'vector-percentage-field', template: "<form class=\"input-container\">\n <p-inputNumber\n [formControl]=\"control\"\n suffix=\"%\"\n [min]=\"min\"\n [max]=\"max\"\n [minFractionDigits]=\"minFractionDigits\"\n [maxFractionDigits]=\"maxFractionDigits\"\n [step]=\"step\"\n [showButtons]=\"step > 1\"\n buttonLayout=\"horizontal\"\n decrementButtonIcon=\"pi pi-minus-circle\"\n incrementButtonIcon=\"pi pi-plus-circle\"\n (onBlur)=\"onBlur()\"\n ></p-inputNumber>\n</form>\n", styles: [".input-container{width:100%}\n"] }]
35
+ }], propDecorators: { control: [{
36
+ type: Input
37
+ }], min: [{
38
+ type: Input
39
+ }], max: [{
40
+ type: Input
41
+ }], minFractionDigits: [{
42
+ type: Input
43
+ }], maxFractionDigits: [{
44
+ type: Input
45
+ }], step: [{
46
+ type: Input
47
+ }], blurEvent: [{
48
+ type: Output
49
+ }], enterKeyPress: [{
50
+ type: Output
51
+ }], focusEvent: [{
52
+ type: Output
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyY2VudGFnZS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9wZXJjZW50YWdlLWZpZWxkL3BlcmNlbnRhZ2UtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvcGVyY2VudGFnZS1maWVsZC9wZXJjZW50YWdlLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzFGLE1BQU0sT0FBTyx3QkFBd0I7SUFMckM7UUFTUyxRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBRWhCLFFBQUcsR0FBVyxHQUFHLENBQUM7UUFFbEIsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBRTlCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUU5QixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRVQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZCLG9CQUFlLEdBQUcsNkNBQTZDLENBQUM7UUFFeEUsa0JBQWEsR0FBRyxFQUFFLENBQUM7S0FlNUI7SUFiQyxRQUFRLEtBQUksQ0FBQztJQUViLFdBQVcsS0FBSSxDQUFDO0lBRVQsTUFBTTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztxSEFwQ1Usd0JBQXdCO3lHQUF4Qix3QkFBd0Isb1RDUHJDLHlkQWdCQTsyRkRUYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UseUJBQXlCOzhCQU01QixPQUFPO3NCQURiLEtBQUs7Z0JBR0MsR0FBRztzQkFEVCxLQUFLO2dCQUdDLEdBQUc7c0JBRFQsS0FBSztnQkFHQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBR0MsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUdDLElBQUk7c0JBRFYsS0FBSztnQkFHQyxTQUFTO3NCQURmLE1BQU07Z0JBR0EsYUFBYTtzQkFEbkIsTUFBTTtnQkFHQSxVQUFVO3NCQURoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlY3Rvci1wZXJjZW50YWdlLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BlcmNlbnRhZ2UtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wZXJjZW50YWdlLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBlcmNlbnRhZ2VGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIGNvbnRyb2w6IGFueTtcbiAgQElucHV0KClcbiAgcHVibGljIG1pbjogbnVtYmVyID0gMDtcbiAgQElucHV0KClcbiAgcHVibGljIG1heDogbnVtYmVyID0gMTAwO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluRnJhY3Rpb25EaWdpdHM6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhGcmFjdGlvbkRpZ2l0czogbnVtYmVyID0gMDtcbiAgQElucHV0KClcbiAgcHVibGljIHN0ZXAgPSAwO1xuICBAT3V0cHV0KClcbiAgcHVibGljIGJsdXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBlbnRlcktleVByZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBlcmNlbnRhZ2VSZWdleCA9IGBeKDEwMChcXFxcLjB7MSwyfSk/fFsxLTldP1xcXFxkKFxcXFwuXFxcXGR7MSwyfSk/KSRgO1xuXG4gIHByaXZhdGUgbGFzdEJsdXJWYWx1ZSA9ICcnO1xuXG4gIG5nT25Jbml0KCkge31cblxuICBuZ09uRGVzdHJveSgpIHt9XG5cbiAgcHVibGljIG9uQmx1cigpIHtcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmxhc3RCbHVyVmFsdWUgIT09IHRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgdGhpcy5sYXN0Qmx1clZhbHVlID0gdGhpcy5jb250cm9sLnZhbHVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYmx1ckV2ZW50LmVtaXQodGhpcy5jb250cm9sLnZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgPHAtaW5wdXROdW1iZXJcbiAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgc3VmZml4PVwiJVwiXG4gICAgW21pbl09XCJtaW5cIlxuICAgIFttYXhdPVwibWF4XCJcbiAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwibWluRnJhY3Rpb25EaWdpdHNcIlxuICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJtYXhGcmFjdGlvbkRpZ2l0c1wiXG4gICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgW3Nob3dCdXR0b25zXT1cInN0ZXAgPiAxXCJcbiAgICBidXR0b25MYXlvdXQ9XCJob3Jpem9udGFsXCJcbiAgICBkZWNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktbWludXMtY2lyY2xlXCJcbiAgICBpbmNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktcGx1cy1jaXJjbGVcIlxuICAgIChvbkJsdXIpPVwib25CbHVyKClcIlxuICA+PC9wLWlucHV0TnVtYmVyPlxuPC9mb3JtPlxuIl19
@@ -1,2 +1,2 @@
1
- export * from './radio-button-field.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9yYWRpby1idXR0b24tZmllbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmFkaW8tYnV0dG9uLWZpZWxkLmNvbXBvbmVudCc7XHJcbiJdfQ==
1
+ export * from './radio-button-field.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9yYWRpby1idXR0b24tZmllbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmFkaW8tYnV0dG9uLWZpZWxkLmNvbXBvbmVudCc7XG4iXX0=