monkey-style-guide 2.0.178 → 2.0.180

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 (603) hide show
  1. package/README.md +1283 -1281
  2. package/assets/data/country-codes.json +1466 -1466
  3. package/assets/icons/add-plus.svg +5 -5
  4. package/assets/icons/address-book.svg +4 -4
  5. package/assets/icons/arrow-down.svg +3 -3
  6. package/assets/icons/arrow-left.svg +3 -3
  7. package/assets/icons/arrow-line-right.svg +5 -5
  8. package/assets/icons/arrow-right.svg +3 -3
  9. package/assets/icons/arrow-up.svg +3 -3
  10. package/assets/icons/arrows.svg +6 -6
  11. package/assets/icons/auction.svg +7 -7
  12. package/assets/icons/average-tax.svg +6 -6
  13. package/assets/icons/bank-account.svg +12 -12
  14. package/assets/icons/bank-agency.svg +8 -8
  15. package/assets/icons/bank.svg +3 -3
  16. package/assets/icons/banknote-search.svg +8 -8
  17. package/assets/icons/bell.svg +4 -4
  18. package/assets/icons/block.svg +4 -4
  19. package/assets/icons/book-open-text.svg +10 -10
  20. package/assets/icons/book.svg +4 -4
  21. package/assets/icons/box.svg +6 -6
  22. package/assets/icons/build-approved.svg +9 -9
  23. package/assets/icons/build-person.svg +9 -9
  24. package/assets/icons/build-refused.svg +9 -9
  25. package/assets/icons/build-waiting.svg +8 -8
  26. package/assets/icons/calendar-box.svg +10 -10
  27. package/assets/icons/calendar.svg +6 -6
  28. package/assets/icons/camera.svg +4 -4
  29. package/assets/icons/card-machine.svg +14 -14
  30. package/assets/icons/card.svg +4 -4
  31. package/assets/icons/cash-banknote-invoice.svg +8 -8
  32. package/assets/icons/chat.svg +4 -4
  33. package/assets/icons/check-circle-out.svg +4 -4
  34. package/assets/icons/check-circle.svg +4 -4
  35. package/assets/icons/check-grey.svg +3 -3
  36. package/assets/icons/check-white.svg +4 -4
  37. package/assets/icons/check.svg +3 -3
  38. package/assets/icons/clipboard.svg +4 -4
  39. package/assets/icons/clock-closed.svg +6 -6
  40. package/assets/icons/clock.svg +4 -4
  41. package/assets/icons/close-circle.svg +5 -5
  42. package/assets/icons/close.svg +4 -4
  43. package/assets/icons/cnpj.svg +9 -9
  44. package/assets/icons/codepen.svg +7 -7
  45. package/assets/icons/company-name.svg +12 -12
  46. package/assets/icons/contract-pen.svg +7 -7
  47. package/assets/icons/contract.svg +14 -14
  48. package/assets/icons/delete.svg +5 -5
  49. package/assets/icons/document.svg +7 -7
  50. package/assets/icons/dollar-sign-circle.svg +7 -7
  51. package/assets/icons/dollar-sign.svg +5 -5
  52. package/assets/icons/domain.svg +9 -9
  53. package/assets/icons/dots-menu.svg +5 -5
  54. package/assets/icons/double-arrow-left.svg +4 -4
  55. package/assets/icons/double-arrow-right.svg +4 -4
  56. package/assets/icons/download.svg +5 -5
  57. package/assets/icons/drag-drop.svg +8 -8
  58. package/assets/icons/edit-square.svg +4 -4
  59. package/assets/icons/edit.svg +3 -3
  60. package/assets/icons/email-send-fast.svg +8 -8
  61. package/assets/icons/email.svg +4 -4
  62. package/assets/icons/empty-doc.svg +4 -4
  63. package/assets/icons/error.svg +5 -5
  64. package/assets/icons/eye-closed.svg +11 -11
  65. package/assets/icons/eye-open.svg +4 -4
  66. package/assets/icons/filter-add.svg +6 -6
  67. package/assets/icons/filter.svg +3 -3
  68. package/assets/icons/grid.svg +6 -6
  69. package/assets/icons/hands-clap.svg +10 -10
  70. package/assets/icons/help.svg +5 -5
  71. package/assets/icons/hexagon.svg +3 -3
  72. package/assets/icons/home.svg +4 -4
  73. package/assets/icons/image.svg +5 -5
  74. package/assets/icons/info.svg +6 -6
  75. package/assets/icons/invoice.svg +5 -5
  76. package/assets/icons/invoices-anticipated.svg +8 -8
  77. package/assets/icons/invoices-approval.svg +8 -8
  78. package/assets/icons/invoices-refused.svg +8 -8
  79. package/assets/icons/lighting-circle.svg +5 -5
  80. package/assets/icons/list.svg +8 -8
  81. package/assets/icons/location-pin.svg +4 -4
  82. package/assets/icons/login.svg +5 -5
  83. package/assets/icons/logout.svg +5 -5
  84. package/assets/icons/mail-box-upload.svg +6 -0
  85. package/assets/icons/mail-letter-fast-circle.svg +7 -0
  86. package/assets/icons/mail-open-document.svg +6 -6
  87. package/assets/icons/medal.svg +12 -12
  88. package/assets/icons/menu.svg +5 -5
  89. package/assets/icons/money-cedule.svg +6 -6
  90. package/assets/icons/money-discount.svg +8 -8
  91. package/assets/icons/money-hand.svg +6 -6
  92. package/assets/icons/money-net.svg +8 -8
  93. package/assets/icons/money-new.svg +7 -7
  94. package/assets/icons/money-percent.svg +10 -10
  95. package/assets/icons/money-refused.svg +9 -9
  96. package/assets/icons/money-sign.svg +4 -4
  97. package/assets/icons/money-waiting.svg +8 -8
  98. package/assets/icons/money.svg +6 -6
  99. package/assets/icons/more-circle.svg +5 -5
  100. package/assets/icons/more.svg +4 -4
  101. package/assets/icons/new-company.svg +10 -10
  102. package/assets/icons/offered.svg +5 -5
  103. package/assets/icons/office-work.svg +10 -10
  104. package/assets/icons/open-external.svg +5 -5
  105. package/assets/icons/password.svg +4 -4
  106. package/assets/icons/people.svg +6 -6
  107. package/assets/icons/percent-box.svg +6 -6
  108. package/assets/icons/percent.svg +5 -5
  109. package/assets/icons/person-document.svg +10 -10
  110. package/assets/icons/person-sad.svg +6 -6
  111. package/assets/icons/phone-call.svg +4 -4
  112. package/assets/icons/phone.svg +3 -3
  113. package/assets/icons/pin-navigation.svg +5 -5
  114. package/assets/icons/pork.svg +5 -5
  115. package/assets/icons/radio.svg +4 -4
  116. package/assets/icons/refresh.svg +5 -5
  117. package/assets/icons/registration.svg +8 -8
  118. package/assets/icons/repeat.svg +4 -4
  119. package/assets/icons/search.svg +4 -4
  120. package/assets/icons/second-warning.svg +5 -5
  121. package/assets/icons/settings.svg +4 -4
  122. package/assets/icons/shield-chekmark.svg +3 -3
  123. package/assets/icons/star-shining.svg +13 -13
  124. package/assets/icons/star.svg +3 -3
  125. package/assets/icons/store.svg +8 -8
  126. package/assets/icons/target-dart-arrow.svg +6 -6
  127. package/assets/icons/today.svg +9 -9
  128. package/assets/icons/trash.svg +6 -6
  129. package/assets/icons/trophy.svg +8 -8
  130. package/assets/icons/unfold-more.svg +4 -4
  131. package/assets/icons/upload.svg +5 -5
  132. package/assets/icons/user-group.svg +8 -8
  133. package/assets/icons/user.svg +4 -4
  134. package/assets/icons/waiting.svg +17 -17
  135. package/assets/icons/wallet.svg +5 -5
  136. package/assets/icons/warning.svg +5 -5
  137. package/assets/scss/partials/_breakpoints.scss +35 -35
  138. package/assets/scss/partials/_forms.scss +350 -350
  139. package/assets/scss/partials/_index.scss +11 -11
  140. package/assets/scss/partials/_radio-button.scss +35 -35
  141. package/assets/scss/partials/_style-reset.scss +185 -185
  142. package/assets/scss/partials/_typography.scss +149 -149
  143. package/assets/scss/partials/_variables.scss +184 -184
  144. package/assets/scss/partials/components/_badge.scss +55 -55
  145. package/assets/scss/partials/components/_buttons.scss +831 -831
  146. package/assets/scss/partials/components/_checkbox.scss +69 -69
  147. package/assets/scss/partials/components/_date-range-picker.scss +265 -265
  148. package/assets/scss/partials/components/_expansion.scss +96 -96
  149. package/assets/scss/partials/components/_image-crop.scss +305 -305
  150. package/assets/scss/partials/components/_index.scss +23 -23
  151. package/assets/scss/partials/components/_input-phone.scss +36 -36
  152. package/assets/scss/partials/components/_input.scss +65 -65
  153. package/assets/scss/partials/components/_modal.scss +282 -282
  154. package/assets/scss/partials/components/_progressbar.scss +112 -112
  155. package/assets/scss/partials/components/_radiobutton.scss +66 -66
  156. package/assets/scss/partials/components/_select.scss +356 -356
  157. package/assets/scss/partials/components/_snackbar.scss +204 -204
  158. package/assets/scss/partials/components/_stepper.scss +86 -86
  159. package/assets/scss/partials/components/_tab.scss +82 -82
  160. package/assets/scss/partials/components/_table.scss +148 -148
  161. package/assets/scss/partials/components/_toggle.scss +103 -103
  162. package/assets/scss/partials/components/_wizard.scss +112 -112
  163. package/esm2020/lib/components/badge/badge.component.mjs +43 -43
  164. package/esm2020/lib/components/badge/badge.module.mjs +19 -19
  165. package/esm2020/lib/components/badge/index.mjs +3 -3
  166. package/esm2020/lib/components/button/button-avatar.component.mjs +53 -53
  167. package/esm2020/lib/components/button/button-dropdown.component.mjs +121 -121
  168. package/esm2020/lib/components/button/button.component.mjs +154 -154
  169. package/esm2020/lib/components/button/button.module.mjs +23 -23
  170. package/esm2020/lib/components/button/index.mjs +5 -5
  171. package/esm2020/lib/components/checkbox/checkbox.component.mjs +165 -165
  172. package/esm2020/lib/components/checkbox/checkbox.module.mjs +20 -20
  173. package/esm2020/lib/components/checkbox/index.mjs +3 -3
  174. package/esm2020/lib/components/date-range-picker/date-range-picker.component.mjs +660 -660
  175. package/esm2020/lib/components/date-range-picker/date-range-picker.module.mjs +22 -22
  176. package/esm2020/lib/components/date-range-picker/index.mjs +3 -3
  177. package/esm2020/lib/components/expansion/expansion.component.mjs +115 -115
  178. package/esm2020/lib/components/expansion/expansion.module.mjs +20 -20
  179. package/esm2020/lib/components/expansion/index.mjs +3 -3
  180. package/esm2020/lib/components/file-upload/file-upload.component.mjs +294 -294
  181. package/esm2020/lib/components/file-upload/file-upload.module.mjs +37 -37
  182. package/esm2020/lib/components/file-upload/index.mjs +3 -3
  183. package/esm2020/lib/components/icon/icon-add-plus.component.mjs +15 -15
  184. package/esm2020/lib/components/icon/icon-address-book.component.mjs +15 -15
  185. package/esm2020/lib/components/icon/icon-arrow-down.component.mjs +15 -15
  186. package/esm2020/lib/components/icon/icon-arrow-left.component.mjs +15 -15
  187. package/esm2020/lib/components/icon/icon-arrow-line-right.component.mjs +15 -15
  188. package/esm2020/lib/components/icon/icon-arrow-right.component.mjs +15 -15
  189. package/esm2020/lib/components/icon/icon-arrow-up.component.mjs +15 -15
  190. package/esm2020/lib/components/icon/icon-arrows.component.mjs +15 -15
  191. package/esm2020/lib/components/icon/icon-auction.component.mjs +15 -15
  192. package/esm2020/lib/components/icon/icon-average-tax.component.mjs +15 -15
  193. package/esm2020/lib/components/icon/icon-bank-account.component.mjs +15 -15
  194. package/esm2020/lib/components/icon/icon-bank-agency.component.mjs +15 -15
  195. package/esm2020/lib/components/icon/icon-bank.component.mjs +15 -15
  196. package/esm2020/lib/components/icon/icon-banknote-search.component.mjs +15 -15
  197. package/esm2020/lib/components/icon/icon-bell.component.mjs +15 -15
  198. package/esm2020/lib/components/icon/icon-block.component.mjs +15 -15
  199. package/esm2020/lib/components/icon/icon-book-open-text.component.mjs +15 -15
  200. package/esm2020/lib/components/icon/icon-book.component.mjs +15 -15
  201. package/esm2020/lib/components/icon/icon-box.component.mjs +15 -15
  202. package/esm2020/lib/components/icon/icon-build-approved.component.mjs +15 -15
  203. package/esm2020/lib/components/icon/icon-build-person.component.mjs +15 -15
  204. package/esm2020/lib/components/icon/icon-build-refused.component.mjs +15 -15
  205. package/esm2020/lib/components/icon/icon-build-waiting.component.mjs +15 -15
  206. package/esm2020/lib/components/icon/icon-calendar-box.component.mjs +15 -15
  207. package/esm2020/lib/components/icon/icon-calendar.component.mjs +15 -15
  208. package/esm2020/lib/components/icon/icon-camera.component.mjs +15 -15
  209. package/esm2020/lib/components/icon/icon-card-machine.component.mjs +15 -15
  210. package/esm2020/lib/components/icon/icon-card.component.mjs +15 -15
  211. package/esm2020/lib/components/icon/icon-cash-banknote-invoice.component.mjs +15 -15
  212. package/esm2020/lib/components/icon/icon-chat.component.mjs +15 -15
  213. package/esm2020/lib/components/icon/icon-check-circle-out.component.mjs +15 -15
  214. package/esm2020/lib/components/icon/icon-check-circle.component.mjs +15 -15
  215. package/esm2020/lib/components/icon/icon-check-grey.component.mjs +15 -15
  216. package/esm2020/lib/components/icon/icon-check-white.component.mjs +15 -15
  217. package/esm2020/lib/components/icon/icon-check.component.mjs +15 -15
  218. package/esm2020/lib/components/icon/icon-clipboard.component.mjs +15 -15
  219. package/esm2020/lib/components/icon/icon-clock-closed.component.mjs +15 -15
  220. package/esm2020/lib/components/icon/icon-clock.component.mjs +15 -15
  221. package/esm2020/lib/components/icon/icon-close-circle.component.mjs +15 -15
  222. package/esm2020/lib/components/icon/icon-close.component.mjs +15 -15
  223. package/esm2020/lib/components/icon/icon-cnpj.component.mjs +15 -15
  224. package/esm2020/lib/components/icon/icon-codepen.component.mjs +15 -15
  225. package/esm2020/lib/components/icon/icon-company-name.component.mjs +15 -15
  226. package/esm2020/lib/components/icon/icon-contract-pen.component.mjs +15 -15
  227. package/esm2020/lib/components/icon/icon-contract.component.mjs +15 -15
  228. package/esm2020/lib/components/icon/icon-delete.component.mjs +15 -15
  229. package/esm2020/lib/components/icon/icon-document.component.mjs +15 -15
  230. package/esm2020/lib/components/icon/icon-dollar-sign-circle.component.mjs +15 -15
  231. package/esm2020/lib/components/icon/icon-dollar-sign.component.mjs +15 -15
  232. package/esm2020/lib/components/icon/icon-domain.component.mjs +15 -15
  233. package/esm2020/lib/components/icon/icon-dots-menu.component.mjs +15 -15
  234. package/esm2020/lib/components/icon/icon-double-arrow-left.component.mjs +15 -15
  235. package/esm2020/lib/components/icon/icon-double-arrow-right.component.mjs +15 -15
  236. package/esm2020/lib/components/icon/icon-download.component.mjs +15 -15
  237. package/esm2020/lib/components/icon/icon-drag-drop.component.mjs +15 -15
  238. package/esm2020/lib/components/icon/icon-edit-square.component.mjs +15 -15
  239. package/esm2020/lib/components/icon/icon-edit.component.mjs +15 -15
  240. package/esm2020/lib/components/icon/icon-email-send-fast.component.mjs +15 -15
  241. package/esm2020/lib/components/icon/icon-email.component.mjs +15 -15
  242. package/esm2020/lib/components/icon/icon-empty-doc.component.mjs +15 -15
  243. package/esm2020/lib/components/icon/icon-error.component.mjs +15 -15
  244. package/esm2020/lib/components/icon/icon-eye-closed.component.mjs +15 -15
  245. package/esm2020/lib/components/icon/icon-eye-open.component.mjs +15 -15
  246. package/esm2020/lib/components/icon/icon-filter-add.component.mjs +15 -15
  247. package/esm2020/lib/components/icon/icon-filter.component.mjs +15 -15
  248. package/esm2020/lib/components/icon/icon-grid.component.mjs +15 -15
  249. package/esm2020/lib/components/icon/icon-hands-clap.component.mjs +15 -15
  250. package/esm2020/lib/components/icon/icon-help.component.mjs +15 -15
  251. package/esm2020/lib/components/icon/icon-hexagon.component.mjs +15 -15
  252. package/esm2020/lib/components/icon/icon-home.component.mjs +15 -15
  253. package/esm2020/lib/components/icon/icon-image.component.mjs +15 -15
  254. package/esm2020/lib/components/icon/icon-info.component.mjs +15 -15
  255. package/esm2020/lib/components/icon/icon-invoice.component.mjs +15 -15
  256. package/esm2020/lib/components/icon/icon-invoices-anticipated.component.mjs +15 -15
  257. package/esm2020/lib/components/icon/icon-invoices-approval.component.mjs +15 -15
  258. package/esm2020/lib/components/icon/icon-invoices-refused.component.mjs +15 -15
  259. package/esm2020/lib/components/icon/icon-lighting-circle.component.mjs +15 -15
  260. package/esm2020/lib/components/icon/icon-list.component.mjs +15 -15
  261. package/esm2020/lib/components/icon/icon-location-pin.component.mjs +15 -15
  262. package/esm2020/lib/components/icon/icon-login.component.mjs +15 -15
  263. package/esm2020/lib/components/icon/icon-logout.component.mjs +15 -15
  264. package/esm2020/lib/components/icon/icon-mail-box-upload.component.mjs +15 -0
  265. package/esm2020/lib/components/icon/icon-mail-letter-fast-circle.component.mjs +15 -0
  266. package/esm2020/lib/components/icon/icon-mail-open-document.component.mjs +15 -15
  267. package/esm2020/lib/components/icon/icon-medal.component.mjs +15 -15
  268. package/esm2020/lib/components/icon/icon-menu.component.mjs +15 -15
  269. package/esm2020/lib/components/icon/icon-money-cedule.component.mjs +15 -15
  270. package/esm2020/lib/components/icon/icon-money-discount.component.mjs +15 -15
  271. package/esm2020/lib/components/icon/icon-money-hand.component.mjs +15 -15
  272. package/esm2020/lib/components/icon/icon-money-net.component.mjs +15 -15
  273. package/esm2020/lib/components/icon/icon-money-new.component.mjs +15 -15
  274. package/esm2020/lib/components/icon/icon-money-percent.component.mjs +15 -15
  275. package/esm2020/lib/components/icon/icon-money-refused.component.mjs +15 -15
  276. package/esm2020/lib/components/icon/icon-money-sign.component.mjs +15 -15
  277. package/esm2020/lib/components/icon/icon-money-waiting.component.mjs +15 -15
  278. package/esm2020/lib/components/icon/icon-money.component.mjs +15 -15
  279. package/esm2020/lib/components/icon/icon-more-circle.component.mjs +15 -15
  280. package/esm2020/lib/components/icon/icon-more.component.mjs +15 -15
  281. package/esm2020/lib/components/icon/icon-new-company.component.mjs +15 -15
  282. package/esm2020/lib/components/icon/icon-offered.component.mjs +15 -15
  283. package/esm2020/lib/components/icon/icon-open-external.component.mjs +15 -15
  284. package/esm2020/lib/components/icon/icon-password.component.mjs +15 -15
  285. package/esm2020/lib/components/icon/icon-people.component.mjs +15 -15
  286. package/esm2020/lib/components/icon/icon-percent-box.component.mjs +15 -15
  287. package/esm2020/lib/components/icon/icon-percent.component.mjs +15 -15
  288. package/esm2020/lib/components/icon/icon-person-document.component.mjs +15 -15
  289. package/esm2020/lib/components/icon/icon-person-sad.component.mjs +15 -15
  290. package/esm2020/lib/components/icon/icon-phone-call.component.mjs +15 -15
  291. package/esm2020/lib/components/icon/icon-phone.component.mjs +15 -15
  292. package/esm2020/lib/components/icon/icon-pin-navigation.component.mjs +15 -15
  293. package/esm2020/lib/components/icon/icon-pork.component.mjs +15 -15
  294. package/esm2020/lib/components/icon/icon-radio.component.mjs +15 -15
  295. package/esm2020/lib/components/icon/icon-refresh.component.mjs +15 -15
  296. package/esm2020/lib/components/icon/icon-registration.component.mjs +15 -15
  297. package/esm2020/lib/components/icon/icon-repeat.component.mjs +15 -15
  298. package/esm2020/lib/components/icon/icon-search.component.mjs +15 -15
  299. package/esm2020/lib/components/icon/icon-second-warning.component.mjs +15 -15
  300. package/esm2020/lib/components/icon/icon-settings.component.mjs +15 -15
  301. package/esm2020/lib/components/icon/icon-shield-chekmark.component.mjs +15 -15
  302. package/esm2020/lib/components/icon/icon-star-shining.component.mjs +15 -15
  303. package/esm2020/lib/components/icon/icon-star.component.mjs +15 -15
  304. package/esm2020/lib/components/icon/icon-store.component.mjs +15 -15
  305. package/esm2020/lib/components/icon/icon-target-dart-arrow.component.mjs +15 -15
  306. package/esm2020/lib/components/icon/icon-today.component.mjs +15 -15
  307. package/esm2020/lib/components/icon/icon-trash.component.mjs +15 -15
  308. package/esm2020/lib/components/icon/icon-trophy.component.mjs +15 -15
  309. package/esm2020/lib/components/icon/icon-unfold-more.component.mjs +15 -15
  310. package/esm2020/lib/components/icon/icon-upload.component.mjs +15 -15
  311. package/esm2020/lib/components/icon/icon-user-group.component.mjs +15 -15
  312. package/esm2020/lib/components/icon/icon-user.component.mjs +15 -15
  313. package/esm2020/lib/components/icon/icon-waiting.component.mjs +15 -15
  314. package/esm2020/lib/components/icon/icon-wallet.component.mjs +15 -15
  315. package/esm2020/lib/components/icon/icon-warning.component.mjs +15 -15
  316. package/esm2020/lib/components/icon/icon.component.mjs +1822 -1796
  317. package/esm2020/lib/components/icon/icon.module.mjs +287 -283
  318. package/esm2020/lib/components/icon/index.mjs +137 -135
  319. package/esm2020/lib/components/image-crop/image-crop.component.mjs +516 -516
  320. package/esm2020/lib/components/image-crop/image-crop.module.mjs +41 -41
  321. package/esm2020/lib/components/image-crop/index.mjs +3 -3
  322. package/esm2020/lib/components/index.mjs +20 -20
  323. package/esm2020/lib/components/input/index.mjs +4 -4
  324. package/esm2020/lib/components/input/input-filter.component.mjs +286 -286
  325. package/esm2020/lib/components/input/input.component.mjs +384 -384
  326. package/esm2020/lib/components/input/input.module.mjs +38 -38
  327. package/esm2020/lib/components/input-phone/index.mjs +3 -3
  328. package/esm2020/lib/components/input-phone/input-phone.component.mjs +307 -307
  329. package/esm2020/lib/components/input-phone/input-phone.module.mjs +45 -45
  330. package/esm2020/lib/components/modal/index.mjs +3 -3
  331. package/esm2020/lib/components/modal/modal.component.mjs +236 -236
  332. package/esm2020/lib/components/modal/modal.module.mjs +21 -21
  333. package/esm2020/lib/components/option/index.mjs +3 -3
  334. package/esm2020/lib/components/option/option.component.mjs +131 -131
  335. package/esm2020/lib/components/option/option.module.mjs +29 -29
  336. package/esm2020/lib/components/radiobutton/index.mjs +3 -3
  337. package/esm2020/lib/components/radiobutton/radiobutton.component.mjs +165 -165
  338. package/esm2020/lib/components/radiobutton/radiobutton.module.mjs +36 -36
  339. package/esm2020/lib/components/select/index.mjs +6 -6
  340. package/esm2020/lib/components/select/select-filter.component.mjs +197 -197
  341. package/esm2020/lib/components/select/select-multiple.component.mjs +304 -304
  342. package/esm2020/lib/components/select/select-search.component.mjs +306 -306
  343. package/esm2020/lib/components/select/select.component.mjs +245 -245
  344. package/esm2020/lib/components/select/select.module.mjs +61 -61
  345. package/esm2020/lib/components/stepper/index.mjs +3 -3
  346. package/esm2020/lib/components/stepper/stepper.component.mjs +57 -57
  347. package/esm2020/lib/components/stepper/stepper.module.mjs +20 -20
  348. package/esm2020/lib/components/tab/index.mjs +3 -3
  349. package/esm2020/lib/components/tab/tab.component.mjs +100 -100
  350. package/esm2020/lib/components/tab/tab.module.mjs +21 -21
  351. package/esm2020/lib/components/table/index.mjs +4 -4
  352. package/esm2020/lib/components/table/table-column.component.mjs +34 -34
  353. package/esm2020/lib/components/table/table.component.mjs +267 -267
  354. package/esm2020/lib/components/table/table.module.mjs +23 -23
  355. package/esm2020/lib/components/toggle/index.mjs +3 -3
  356. package/esm2020/lib/components/toggle/toggle.component.mjs +56 -56
  357. package/esm2020/lib/components/toggle/toggle.module.mjs +19 -19
  358. package/esm2020/lib/components/wizard/index.mjs +3 -3
  359. package/esm2020/lib/components/wizard/wizard.component.mjs +61 -61
  360. package/esm2020/lib/components/wizard/wizard.module.mjs +33 -33
  361. package/esm2020/lib/core/index.mjs +4 -4
  362. package/esm2020/lib/core/interfaces/index.mjs +3 -3
  363. package/esm2020/lib/core/interfaces/monkey-modal-settings.mjs +2 -2
  364. package/esm2020/lib/core/interfaces/monkey-style-settings.mjs +2 -2
  365. package/esm2020/lib/core/services/index.mjs +4 -4
  366. package/esm2020/lib/core/services/modal/index.mjs +3 -3
  367. package/esm2020/lib/core/services/modal/monkey-style-guide-modal-fixed.service.mjs +52 -52
  368. package/esm2020/lib/core/services/modal/monkey-style-guide-modal.service.mjs +55 -55
  369. package/esm2020/lib/core/services/monkey-style-guide.service.mjs +17 -17
  370. package/esm2020/lib/core/services/settings/index.mjs +1 -1
  371. package/esm2020/lib/core/services/settings/monkey-style-guide-settings.service.mjs +41 -41
  372. package/esm2020/lib/core/services/settings/monkey-style-guide-theme-settings.service.mjs +80 -80
  373. package/esm2020/lib/core/services/snackbar/index.mjs +1 -1
  374. package/esm2020/lib/core/services/snackbar/mokey-style-guide-snackbar.service.mjs +226 -226
  375. package/esm2020/lib/core/utils/index.mjs +1 -1
  376. package/esm2020/lib/core/utils/utils.mjs +240 -240
  377. package/esm2020/lib/monkey-style-guide.module.mjs +31 -31
  378. package/esm2020/monkey-style-guide.mjs +4 -4
  379. package/esm2020/public-api.mjs +9 -9
  380. package/fesm2015/monkey-style-guide.mjs +9885 -9831
  381. package/fesm2015/monkey-style-guide.mjs.map +1 -1
  382. package/fesm2020/monkey-style-guide.mjs +9874 -9820
  383. package/fesm2020/monkey-style-guide.mjs.map +1 -1
  384. package/lib/components/badge/badge.component.d.ts +8 -8
  385. package/lib/components/badge/badge.module.d.ts +8 -8
  386. package/lib/components/badge/index.d.ts +2 -2
  387. package/lib/components/button/button-avatar.component.d.ts +19 -19
  388. package/lib/components/button/button-dropdown.component.d.ts +23 -23
  389. package/lib/components/button/button.component.d.ts +22 -22
  390. package/lib/components/button/button.module.d.ts +12 -12
  391. package/lib/components/button/index.d.ts +4 -4
  392. package/lib/components/checkbox/checkbox.component.d.ts +32 -32
  393. package/lib/components/checkbox/checkbox.module.d.ts +9 -9
  394. package/lib/components/checkbox/index.d.ts +2 -2
  395. package/lib/components/date-range-picker/date-range-picker.component.d.ts +69 -69
  396. package/lib/components/date-range-picker/date-range-picker.module.d.ts +11 -11
  397. package/lib/components/date-range-picker/index.d.ts +2 -2
  398. package/lib/components/expansion/expansion.component.d.ts +20 -20
  399. package/lib/components/expansion/expansion.module.d.ts +9 -9
  400. package/lib/components/expansion/index.d.ts +2 -2
  401. package/lib/components/file-upload/file-upload.component.d.ts +51 -51
  402. package/lib/components/file-upload/file-upload.module.d.ts +11 -11
  403. package/lib/components/file-upload/index.d.ts +2 -2
  404. package/lib/components/icon/icon-add-plus.component.d.ts +7 -7
  405. package/lib/components/icon/icon-address-book.component.d.ts +7 -7
  406. package/lib/components/icon/icon-arrow-down.component.d.ts +7 -7
  407. package/lib/components/icon/icon-arrow-left.component.d.ts +7 -7
  408. package/lib/components/icon/icon-arrow-line-right.component.d.ts +7 -7
  409. package/lib/components/icon/icon-arrow-right.component.d.ts +7 -7
  410. package/lib/components/icon/icon-arrow-up.component.d.ts +7 -7
  411. package/lib/components/icon/icon-arrows.component.d.ts +7 -7
  412. package/lib/components/icon/icon-auction.component.d.ts +7 -7
  413. package/lib/components/icon/icon-average-tax.component.d.ts +7 -7
  414. package/lib/components/icon/icon-bank-account.component.d.ts +7 -7
  415. package/lib/components/icon/icon-bank-agency.component.d.ts +7 -7
  416. package/lib/components/icon/icon-bank.component.d.ts +7 -7
  417. package/lib/components/icon/icon-banknote-search.component.d.ts +7 -7
  418. package/lib/components/icon/icon-bell.component.d.ts +7 -7
  419. package/lib/components/icon/icon-block.component.d.ts +7 -7
  420. package/lib/components/icon/icon-book-open-text.component.d.ts +7 -7
  421. package/lib/components/icon/icon-book.component.d.ts +7 -7
  422. package/lib/components/icon/icon-box.component.d.ts +7 -7
  423. package/lib/components/icon/icon-build-approved.component.d.ts +7 -7
  424. package/lib/components/icon/icon-build-person.component.d.ts +7 -7
  425. package/lib/components/icon/icon-build-refused.component.d.ts +7 -7
  426. package/lib/components/icon/icon-build-waiting.component.d.ts +7 -7
  427. package/lib/components/icon/icon-calendar-box.component.d.ts +7 -7
  428. package/lib/components/icon/icon-calendar.component.d.ts +7 -7
  429. package/lib/components/icon/icon-camera.component.d.ts +7 -7
  430. package/lib/components/icon/icon-card-machine.component.d.ts +7 -7
  431. package/lib/components/icon/icon-card.component.d.ts +7 -7
  432. package/lib/components/icon/icon-cash-banknote-invoice.component.d.ts +7 -7
  433. package/lib/components/icon/icon-chat.component.d.ts +7 -7
  434. package/lib/components/icon/icon-check-circle-out.component.d.ts +7 -7
  435. package/lib/components/icon/icon-check-circle.component.d.ts +7 -7
  436. package/lib/components/icon/icon-check-grey.component.d.ts +7 -7
  437. package/lib/components/icon/icon-check-white.component.d.ts +7 -7
  438. package/lib/components/icon/icon-check.component.d.ts +7 -7
  439. package/lib/components/icon/icon-clipboard.component.d.ts +7 -7
  440. package/lib/components/icon/icon-clock-closed.component.d.ts +7 -7
  441. package/lib/components/icon/icon-clock.component.d.ts +7 -7
  442. package/lib/components/icon/icon-close-circle.component.d.ts +7 -7
  443. package/lib/components/icon/icon-close.component.d.ts +7 -7
  444. package/lib/components/icon/icon-cnpj.component.d.ts +7 -7
  445. package/lib/components/icon/icon-codepen.component.d.ts +7 -7
  446. package/lib/components/icon/icon-company-name.component.d.ts +7 -7
  447. package/lib/components/icon/icon-contract-pen.component.d.ts +7 -7
  448. package/lib/components/icon/icon-contract.component.d.ts +7 -7
  449. package/lib/components/icon/icon-delete.component.d.ts +7 -7
  450. package/lib/components/icon/icon-document.component.d.ts +7 -7
  451. package/lib/components/icon/icon-dollar-sign-circle.component.d.ts +7 -7
  452. package/lib/components/icon/icon-dollar-sign.component.d.ts +7 -7
  453. package/lib/components/icon/icon-domain.component.d.ts +7 -7
  454. package/lib/components/icon/icon-dots-menu.component.d.ts +7 -7
  455. package/lib/components/icon/icon-double-arrow-left.component.d.ts +7 -7
  456. package/lib/components/icon/icon-double-arrow-right.component.d.ts +7 -7
  457. package/lib/components/icon/icon-download.component.d.ts +7 -7
  458. package/lib/components/icon/icon-drag-drop.component.d.ts +7 -7
  459. package/lib/components/icon/icon-edit-square.component.d.ts +7 -7
  460. package/lib/components/icon/icon-edit.component.d.ts +7 -7
  461. package/lib/components/icon/icon-email-send-fast.component.d.ts +7 -7
  462. package/lib/components/icon/icon-email.component.d.ts +7 -7
  463. package/lib/components/icon/icon-empty-doc.component.d.ts +7 -7
  464. package/lib/components/icon/icon-error.component.d.ts +7 -7
  465. package/lib/components/icon/icon-eye-closed.component.d.ts +7 -7
  466. package/lib/components/icon/icon-eye-open.component.d.ts +7 -7
  467. package/lib/components/icon/icon-filter-add.component.d.ts +7 -7
  468. package/lib/components/icon/icon-filter.component.d.ts +7 -7
  469. package/lib/components/icon/icon-grid.component.d.ts +7 -7
  470. package/lib/components/icon/icon-hands-clap.component.d.ts +7 -7
  471. package/lib/components/icon/icon-help.component.d.ts +7 -7
  472. package/lib/components/icon/icon-hexagon.component.d.ts +7 -7
  473. package/lib/components/icon/icon-home.component.d.ts +7 -7
  474. package/lib/components/icon/icon-image.component.d.ts +7 -7
  475. package/lib/components/icon/icon-info.component.d.ts +7 -7
  476. package/lib/components/icon/icon-invoice.component.d.ts +7 -7
  477. package/lib/components/icon/icon-invoices-anticipated.component.d.ts +7 -7
  478. package/lib/components/icon/icon-invoices-approval.component.d.ts +7 -7
  479. package/lib/components/icon/icon-invoices-refused.component.d.ts +7 -7
  480. package/lib/components/icon/icon-lighting-circle.component.d.ts +7 -7
  481. package/lib/components/icon/icon-list.component.d.ts +7 -7
  482. package/lib/components/icon/icon-location-pin.component.d.ts +7 -7
  483. package/lib/components/icon/icon-login.component.d.ts +7 -7
  484. package/lib/components/icon/icon-logout.component.d.ts +7 -7
  485. package/lib/components/icon/icon-mail-box-upload.component.d.ts +7 -0
  486. package/lib/components/icon/icon-mail-letter-fast-circle.component.d.ts +7 -0
  487. package/lib/components/icon/icon-mail-open-document.component.d.ts +7 -7
  488. package/lib/components/icon/icon-medal.component.d.ts +7 -7
  489. package/lib/components/icon/icon-menu.component.d.ts +7 -7
  490. package/lib/components/icon/icon-money-cedule.component.d.ts +7 -7
  491. package/lib/components/icon/icon-money-discount.component.d.ts +7 -7
  492. package/lib/components/icon/icon-money-hand.component.d.ts +7 -7
  493. package/lib/components/icon/icon-money-net.component.d.ts +7 -7
  494. package/lib/components/icon/icon-money-new.component.d.ts +7 -7
  495. package/lib/components/icon/icon-money-percent.component.d.ts +7 -7
  496. package/lib/components/icon/icon-money-refused.component.d.ts +7 -7
  497. package/lib/components/icon/icon-money-sign.component.d.ts +7 -7
  498. package/lib/components/icon/icon-money-waiting.component.d.ts +7 -7
  499. package/lib/components/icon/icon-money.component.d.ts +7 -7
  500. package/lib/components/icon/icon-more-circle.component.d.ts +7 -7
  501. package/lib/components/icon/icon-more.component.d.ts +7 -7
  502. package/lib/components/icon/icon-new-company.component.d.ts +7 -7
  503. package/lib/components/icon/icon-offered.component.d.ts +7 -7
  504. package/lib/components/icon/icon-open-external.component.d.ts +7 -7
  505. package/lib/components/icon/icon-password.component.d.ts +7 -7
  506. package/lib/components/icon/icon-people.component.d.ts +7 -7
  507. package/lib/components/icon/icon-percent-box.component.d.ts +7 -7
  508. package/lib/components/icon/icon-percent.component.d.ts +7 -7
  509. package/lib/components/icon/icon-person-document.component.d.ts +7 -7
  510. package/lib/components/icon/icon-person-sad.component.d.ts +7 -7
  511. package/lib/components/icon/icon-phone-call.component.d.ts +7 -7
  512. package/lib/components/icon/icon-phone.component.d.ts +7 -7
  513. package/lib/components/icon/icon-pin-navigation.component.d.ts +7 -7
  514. package/lib/components/icon/icon-pork.component.d.ts +7 -7
  515. package/lib/components/icon/icon-radio.component.d.ts +7 -7
  516. package/lib/components/icon/icon-refresh.component.d.ts +7 -7
  517. package/lib/components/icon/icon-registration.component.d.ts +7 -7
  518. package/lib/components/icon/icon-repeat.component.d.ts +7 -7
  519. package/lib/components/icon/icon-search.component.d.ts +7 -7
  520. package/lib/components/icon/icon-second-warning.component.d.ts +7 -7
  521. package/lib/components/icon/icon-settings.component.d.ts +7 -7
  522. package/lib/components/icon/icon-shield-chekmark.component.d.ts +7 -7
  523. package/lib/components/icon/icon-star-shining.component.d.ts +7 -7
  524. package/lib/components/icon/icon-star.component.d.ts +7 -7
  525. package/lib/components/icon/icon-store.component.d.ts +7 -7
  526. package/lib/components/icon/icon-target-dart-arrow.component.d.ts +7 -7
  527. package/lib/components/icon/icon-today.component.d.ts +7 -7
  528. package/lib/components/icon/icon-trash.component.d.ts +7 -7
  529. package/lib/components/icon/icon-trophy.component.d.ts +7 -7
  530. package/lib/components/icon/icon-unfold-more.component.d.ts +7 -7
  531. package/lib/components/icon/icon-upload.component.d.ts +7 -7
  532. package/lib/components/icon/icon-user-group.component.d.ts +7 -7
  533. package/lib/components/icon/icon-user.component.d.ts +7 -7
  534. package/lib/components/icon/icon-waiting.component.d.ts +7 -7
  535. package/lib/components/icon/icon-wallet.component.d.ts +7 -7
  536. package/lib/components/icon/icon-warning.component.d.ts +7 -7
  537. package/lib/components/icon/icon.component.d.ts +27 -27
  538. package/lib/components/icon/icon.module.d.ts +141 -139
  539. package/lib/components/icon/index.d.ts +136 -134
  540. package/lib/components/image-crop/image-crop.component.d.ts +77 -77
  541. package/lib/components/image-crop/image-crop.module.d.ts +12 -12
  542. package/lib/components/image-crop/index.d.ts +2 -2
  543. package/lib/components/index.d.ts +19 -19
  544. package/lib/components/input/index.d.ts +3 -3
  545. package/lib/components/input/input-filter.component.d.ts +55 -55
  546. package/lib/components/input/input.component.d.ts +64 -64
  547. package/lib/components/input/input.module.d.ts +12 -12
  548. package/lib/components/input-phone/index.d.ts +2 -2
  549. package/lib/components/input-phone/input-phone.component.d.ts +62 -62
  550. package/lib/components/input-phone/input-phone.module.d.ts +13 -13
  551. package/lib/components/modal/index.d.ts +2 -2
  552. package/lib/components/modal/modal.component.d.ts +24 -24
  553. package/lib/components/modal/modal.module.d.ts +10 -10
  554. package/lib/components/option/index.d.ts +2 -2
  555. package/lib/components/option/option.component.d.ts +22 -22
  556. package/lib/components/option/option.module.d.ts +8 -8
  557. package/lib/components/radiobutton/index.d.ts +2 -2
  558. package/lib/components/radiobutton/radiobutton.component.d.ts +39 -39
  559. package/lib/components/radiobutton/radiobutton.module.d.ts +9 -9
  560. package/lib/components/select/index.d.ts +5 -5
  561. package/lib/components/select/select-filter.component.d.ts +41 -41
  562. package/lib/components/select/select-multiple.component.d.ts +48 -48
  563. package/lib/components/select/select-search.component.d.ts +56 -56
  564. package/lib/components/select/select.component.d.ts +48 -48
  565. package/lib/components/select/select.module.d.ts +15 -15
  566. package/lib/components/stepper/index.d.ts +2 -2
  567. package/lib/components/stepper/stepper.component.d.ts +18 -18
  568. package/lib/components/stepper/stepper.module.d.ts +9 -9
  569. package/lib/components/tab/index.d.ts +2 -2
  570. package/lib/components/tab/tab.component.d.ts +24 -24
  571. package/lib/components/tab/tab.module.d.ts +10 -10
  572. package/lib/components/table/index.d.ts +3 -3
  573. package/lib/components/table/table-column.component.d.ts +5 -5
  574. package/lib/components/table/table.component.d.ts +59 -59
  575. package/lib/components/table/table.module.d.ts +12 -12
  576. package/lib/components/toggle/index.d.ts +2 -2
  577. package/lib/components/toggle/toggle.component.d.ts +18 -18
  578. package/lib/components/toggle/toggle.module.d.ts +8 -8
  579. package/lib/components/wizard/index.d.ts +2 -2
  580. package/lib/components/wizard/wizard.component.d.ts +18 -18
  581. package/lib/components/wizard/wizard.module.d.ts +9 -9
  582. package/lib/core/index.d.ts +3 -3
  583. package/lib/core/interfaces/index.d.ts +2 -2
  584. package/lib/core/interfaces/monkey-modal-settings.d.ts +58 -58
  585. package/lib/core/interfaces/monkey-style-settings.d.ts +59 -59
  586. package/lib/core/services/index.d.ts +3 -3
  587. package/lib/core/services/modal/index.d.ts +2 -2
  588. package/lib/core/services/modal/monkey-style-guide-modal-fixed.service.d.ts +16 -16
  589. package/lib/core/services/modal/monkey-style-guide-modal.service.d.ts +18 -18
  590. package/lib/core/services/monkey-style-guide.service.d.ts +10 -10
  591. package/lib/core/services/settings/index.d.ts +1 -1
  592. package/lib/core/services/settings/monkey-style-guide-settings.service.d.ts +15 -15
  593. package/lib/core/services/settings/monkey-style-guide-theme-settings.service.d.ts +12 -12
  594. package/lib/core/services/snackbar/index.d.ts +1 -1
  595. package/lib/core/services/snackbar/mokey-style-guide-snackbar.service.d.ts +58 -58
  596. package/lib/core/utils/index.d.ts +1 -1
  597. package/lib/core/utils/utils.d.ts +29 -29
  598. package/lib/monkey-style-guide.module.d.ts +8 -8
  599. package/monkey-style-guide-2.0.180.tgz +0 -0
  600. package/monkey-style-guide.d.ts +5 -5
  601. package/package.json +1 -1
  602. package/public-api.d.ts +8 -8
  603. package/monkey-style-guide-2.0.178.tgz +0 -0
@@ -1,307 +1,307 @@
1
- /**************************
2
- * Copyright Monkey Exchange. All Rights Reserved
3
- * This style guide was developed by Monkey Exchange Team
4
- * MIT Licence
5
- **************************/
6
- import { Component, ViewEncapsulation, Input, HostListener, Output, EventEmitter, Directive, Self, Optional, } from '@angular/core';
7
- import { MonkeyUtils } from '../../core/utils';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- import * as i2 from "../icon/icon.component";
11
- import * as i3 from "../select/select.component";
12
- import * as i4 from "../option/option.component";
13
- import * as i5 from "@angular/common";
14
- export class PhoneNumberValidDirective {
15
- onValidate() {
16
- const { ctrl, destroyed, phoneNumber, internationalNumber } = this;
17
- if (destroyed || !phoneNumber || !ctrl)
18
- return;
19
- let isValid = false;
20
- try {
21
- isValid = MonkeyUtils.isPhoneNumberValid(phoneNumber, internationalNumber);
22
- }
23
- catch (e) {
24
- //not to do
25
- }
26
- if (!isValid) {
27
- setTimeout(() => {
28
- ctrl.markAsDirty();
29
- ctrl.markAsTouched();
30
- ctrl.setErrors({ phone: true });
31
- }, 0);
32
- }
33
- }
34
- ngOnChanges({ ctrl, phoneNumber, internationalNumber }) {
35
- if ((phoneNumber && !phoneNumber.firstChange) ||
36
- (internationalNumber && !internationalNumber.firstChange) ||
37
- (ctrl && !ctrl.firstChange)) {
38
- this.onValidate();
39
- }
40
- }
41
- ngOnDestroy() {
42
- this.destroyed = true;
43
- this.onValidate();
44
- }
45
- }
46
- PhoneNumberValidDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PhoneNumberValidDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
47
- PhoneNumberValidDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: PhoneNumberValidDirective, selector: "[phoneNumberValidate]", inputs: { phoneNumber: "phoneNumber", internationalNumber: "internationalNumber", ctrl: "ctrl" }, usesOnChanges: true, ngImport: i0 });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PhoneNumberValidDirective, decorators: [{
49
- type: Directive,
50
- args: [{
51
- selector: '[phoneNumberValidate]',
52
- }]
53
- }], propDecorators: { phoneNumber: [{
54
- type: Input
55
- }], internationalNumber: [{
56
- type: Input
57
- }], ctrl: [{
58
- type: Input
59
- }] } });
60
- export class MonkeyInputPhoneComponent {
61
- constructor(ngControl, cdr) {
62
- this.ngControl = ngControl;
63
- this.cdr = cdr;
64
- this.name = `mecx-input-phone-${MonkeyUtils.getRandomString(10)}`;
65
- this.helperMessage = '';
66
- this.placeholder = '';
67
- this.maxLength = 255;
68
- this.internationalNumber = 55;
69
- this.onChange = new EventEmitter();
70
- this.onModelChange = (value) => { };
71
- this.onModelTouched = (value) => { };
72
- this._id = `mecx-input-phone-${MonkeyUtils.getRandomString(10)}`;
73
- this._disabled = false;
74
- this._regionCodes = [];
75
- this._countryCodes = [];
76
- this._formControl = null;
77
- if (this.ngControl != null) {
78
- this.ngControl.valueAccessor = this;
79
- }
80
- }
81
- handleValue(value) {
82
- return MonkeyUtils.handleOnlyNumbers(`${value}`);
83
- }
84
- replaceZero(value) {
85
- return `${value}`.replace(new RegExp(/0/, 'g'), '');
86
- }
87
- formatValue(value) {
88
- return MonkeyUtils.getPhoneNumberFormated(value, this.internationalNumber);
89
- }
90
- getValue() {
91
- const { internationalNumber, _handledValue } = this;
92
- if (_handledValue) {
93
- const handled = `${_handledValue}`.replace(new RegExp(`\\+${internationalNumber}`, 'g'), '');
94
- if (handled)
95
- return `+${internationalNumber}${handled}`;
96
- }
97
- return '';
98
- }
99
- ngOnInit() {
100
- this._countryCodes = MonkeyUtils.getPhoneRegions();
101
- this.onHandleInternationalNumber();
102
- this.onHandleCountryCode(this.internationalNumber);
103
- this._formControl =
104
- this.ngControl && (this.ngControl?.form || this.ngControl?.control);
105
- }
106
- onHandleInternationalNumber(value) {
107
- this.internationalNumber =
108
- MonkeyUtils.getPhoneCountryCode(value || this._handledValue) || this.internationalNumber;
109
- }
110
- onHandleInternationalNumberFormated() {
111
- const { internationalNumber } = this;
112
- return `+${internationalNumber}`;
113
- }
114
- onHandleCountryCode(event) {
115
- const { maxLength } = MonkeyUtils.getPhoneHandle(event);
116
- if (maxLength) {
117
- this.maxLength = maxLength;
118
- this.onChangeValue();
119
- }
120
- }
121
- registerOnChange(fn) {
122
- this.onModelChange = fn;
123
- }
124
- registerOnTouched(fn) {
125
- this.onModelTouched = fn;
126
- }
127
- setDisabledState(isDisabled) {
128
- this._disabled = isDisabled;
129
- }
130
- set value(value) {
131
- this._handledValue = value;
132
- this._formatedValue = this.formatValue(value);
133
- this.cdr.detectChanges();
134
- this.onModelChange(this.getValue());
135
- this.onModelTouched(this.getValue());
136
- }
137
- get value() {
138
- return this.getValue();
139
- }
140
- writeValue(value) {
141
- this.value = value;
142
- }
143
- onChangeValue(event) {
144
- const value = this._formatedValue;
145
- event?.preventDefault();
146
- event?.stopPropagation();
147
- const handled = this.handleValue(value);
148
- this.writeValue(handled);
149
- this.onChange.next(handled);
150
- }
151
- onClick() {
152
- document?.getElementById(this._id)?.getElementsByTagName('input')?.[0]?.focus();
153
- }
154
- onKeyPress(event) {
155
- let pattern = null;
156
- const cmp = event?.target?.value;
157
- const inputChar = String.fromCharCode(event.charCode);
158
- pattern = /[0-9]/;
159
- if (inputChar === '0' && !this.replaceZero(cmp)) {
160
- event.preventDefault();
161
- return;
162
- }
163
- if (pattern && !pattern.test(inputChar)) {
164
- event.preventDefault();
165
- }
166
- }
167
- }
168
- MonkeyInputPhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeyInputPhoneComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
169
- MonkeyInputPhoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MonkeyInputPhoneComponent, selector: "monkey-input-phone", inputs: { name: "name", label: "label", helperMessage: "helperMessage", placeholder: "placeholder", icon: "icon", infoMessage: "infoMessage", errorMessage: "errorMessage", maxLength: "maxLength", internationalNumber: "internationalNumber", value: "value" }, outputs: { onChange: "onChange" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: `
170
- <mecx-form-field [ngClass]="{ disabled: _disabled }" [id]="_id">
171
- <mecx-form-field-header>
172
- <label>
173
- {{ label }}
174
- </label>
175
- <helper>
176
- {{ helperMessage }}
177
- </helper>
178
- </mecx-form-field-header>
179
- <mecx-form-field-body [class.error]="errorMessage?.trim()">
180
- <monkey-icon
181
- [icon]="icon"
182
- [color]="errorMessage?.trim() ? '#fa3838' : '#4B4A53'"
183
- *ngIf="icon"
184
- ></monkey-icon>
185
- <monkey-select
186
- [(ngModel)]="internationalNumber"
187
- [labelSelect]="onHandleInternationalNumberFormated()"
188
- (onChange)="onHandleCountryCode($event)"
189
- >
190
- <monkey-option *ngFor="let cc of _countryCodes" [label]="'+' + cc" [value]="cc">
191
- </monkey-option>
192
- </monkey-select>
193
- <input
194
- [name]="name"
195
- type="string"
196
- [placeholder]="placeholder"
197
- (input)="onChangeValue($event)"
198
- [id]="name"
199
- [(ngModel)]="_formatedValue"
200
- (keypress)="onKeyPress($event)"
201
- [disabled]="_disabled"
202
- [maxLength]="maxLength"
203
- phoneNumberValidate
204
- [ctrl]="_formControl"
205
- [phoneNumber]="_handledValue"
206
- [internationalNumber]="internationalNumber"
207
- #monkeyInput
208
- />
209
- </mecx-form-field-body>
210
- <mecx-form-field-footer>
211
- <info>
212
- {{ infoMessage }}
213
- </info>
214
- <error>
215
- {{ errorMessage }}
216
- </error>
217
- </mecx-form-field-footer>
218
- </mecx-form-field>
219
- `, isInline: true, components: [{ type: i2.MonkeyIconComponent, selector: "monkey-icon", inputs: ["icon", "color", "contrast", "disabled"] }, { type: i3.MonkeySelectComponent, selector: "monkey-select", inputs: ["label", "helperMessage", "placeholder", "icon", "infoMessage", "errorMessage", "labelSelect", "onHandleOptions", "value"], outputs: ["onChange"] }, { type: i4.MonkeyOptionComponent, selector: "monkey-option", inputs: ["type", "label", "value", "selectAll", "selected", "enableClick"], outputs: ["onSelectOption"] }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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: PhoneNumberValidDirective, selector: "[phoneNumberValidate]", inputs: ["phoneNumber", "internationalNumber", "ctrl"] }], encapsulation: i0.ViewEncapsulation.None });
220
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeyInputPhoneComponent, decorators: [{
221
- type: Component,
222
- args: [{
223
- selector: 'monkey-input-phone',
224
- template: `
225
- <mecx-form-field [ngClass]="{ disabled: _disabled }" [id]="_id">
226
- <mecx-form-field-header>
227
- <label>
228
- {{ label }}
229
- </label>
230
- <helper>
231
- {{ helperMessage }}
232
- </helper>
233
- </mecx-form-field-header>
234
- <mecx-form-field-body [class.error]="errorMessage?.trim()">
235
- <monkey-icon
236
- [icon]="icon"
237
- [color]="errorMessage?.trim() ? '#fa3838' : '#4B4A53'"
238
- *ngIf="icon"
239
- ></monkey-icon>
240
- <monkey-select
241
- [(ngModel)]="internationalNumber"
242
- [labelSelect]="onHandleInternationalNumberFormated()"
243
- (onChange)="onHandleCountryCode($event)"
244
- >
245
- <monkey-option *ngFor="let cc of _countryCodes" [label]="'+' + cc" [value]="cc">
246
- </monkey-option>
247
- </monkey-select>
248
- <input
249
- [name]="name"
250
- type="string"
251
- [placeholder]="placeholder"
252
- (input)="onChangeValue($event)"
253
- [id]="name"
254
- [(ngModel)]="_formatedValue"
255
- (keypress)="onKeyPress($event)"
256
- [disabled]="_disabled"
257
- [maxLength]="maxLength"
258
- phoneNumberValidate
259
- [ctrl]="_formControl"
260
- [phoneNumber]="_handledValue"
261
- [internationalNumber]="internationalNumber"
262
- #monkeyInput
263
- />
264
- </mecx-form-field-body>
265
- <mecx-form-field-footer>
266
- <info>
267
- {{ infoMessage }}
268
- </info>
269
- <error>
270
- {{ errorMessage }}
271
- </error>
272
- </mecx-form-field-footer>
273
- </mecx-form-field>
274
- `,
275
- encapsulation: ViewEncapsulation.None,
276
- }]
277
- }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
278
- type: Optional
279
- }, {
280
- type: Self
281
- }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { name: [{
282
- type: Input
283
- }], label: [{
284
- type: Input
285
- }], helperMessage: [{
286
- type: Input
287
- }], placeholder: [{
288
- type: Input
289
- }], icon: [{
290
- type: Input
291
- }], infoMessage: [{
292
- type: Input
293
- }], errorMessage: [{
294
- type: Input
295
- }], maxLength: [{
296
- type: Input
297
- }], internationalNumber: [{
298
- type: Input
299
- }], onChange: [{
300
- type: Output
301
- }], value: [{
302
- type: Input
303
- }], onClick: [{
304
- type: HostListener,
305
- args: ['click']
306
- }] } });
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1waG9uZS9pbnB1dC1waG9uZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NEJBSTRCO0FBQzVCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxZQUFZLEVBRVosTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBSVQsSUFBSSxFQUNKLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFLL0MsTUFBTSxPQUFPLHlCQUF5QjtJQU81QixVQUFVO1FBQ2hCLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNuRSxJQUFJLFNBQVMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQy9DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJO1lBQ0YsT0FBTyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztTQUM1RTtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsV0FBVztTQUNaO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsQyxDQUFDLEVBQUUsQ0FBQyxDQUFD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Q0ksUUFBUTtzQkFBakIsTUFBTTtnQkFnRkgsS0FBSztzQkFEUixLQUFLO2dCQTJCTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IE1vbmtleSBFeGNoYW5nZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZFxuICogVGhpcyBzdHlsZSBndWlkZSB3YXMgZGV2ZWxvcGVkIGJ5IE1vbmtleSBFeGNoYW5nZSBUZWFtXG4gKiBNSVQgTGljZW5jZVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5wdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNlbGYsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgRm9ybUNvbnRyb2xOYW1lLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNb25rZXlVdGlscyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcGhvbmVOdW1iZXJWYWxpZGF0ZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQaG9uZU51bWJlclZhbGlkRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwaG9uZU51bWJlcjogc3RyaW5nO1xuICBASW5wdXQoKSBpbnRlcm5hdGlvbmFsTnVtYmVyOiBudW1iZXI7XG4gIEBJbnB1dCgpIGN0cmw6IEZvcm1Db250cm9sO1xuXG4gIHByaXZhdGUgZGVzdHJveWVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgb25WYWxpZGF0ZSgpIHtcbiAgICBjb25zdCB7IGN0cmwsIGRlc3Ryb3llZCwgcGhvbmVOdW1iZXIsIGludGVybmF0aW9uYWxOdW1iZXIgfSA9IHRoaXM7XG4gICAgaWYgKGRlc3Ryb3llZCB8fCAhcGhvbmVOdW1iZXIgfHwgIWN0cmwpIHJldHVybjtcbiAgICBsZXQgaXNWYWxpZCA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBpc1ZhbGlkID0gTW9ua2V5VXRpbHMuaXNQaG9uZU51bWJlclZhbGlkKHBob25lTnVtYmVyLCBpbnRlcm5hdGlvbmFsTnVtYmVyKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvL25vdCB0byBkb1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjdHJsLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIGN0cmwubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICBjdHJsLnNldEVycm9ycyh7IHBob25lOiB0cnVlIH0pO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoeyBjdHJsLCBwaG9uZU51bWJlciwgaW50ZXJuYXRpb25hbE51bWJlciB9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgKHBob25lTnVtYmVyICYmICFwaG9uZU51bWJlci5maXJzdENoYW5nZSkgfHxcbiAgICAgIChpbnRlcm5hdGlvbmFsTnVtYmVyICYmICFpbnRlcm5hdGlvbmFsTnVtYmVyLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgKGN0cmwgJiYgIWN0cmwuZmlyc3RDaGFuZ2UpXG4gICAgKSB7XG4gICAgICB0aGlzLm9uVmFsaWRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5vblZhbGlkYXRlKCk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9ua2V5LWlucHV0LXBob25lJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWVjeC1mb3JtLWZpZWxkIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IF9kaXNhYmxlZCB9XCIgW2lkXT1cIl9pZFwiPlxuICAgICAgPG1lY3gtZm9ybS1maWVsZC1oZWFkZXI+XG4gICAgICAgIDxsYWJlbD5cbiAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8aGVscGVyPlxuICAgICAgICAgIHt7IGhlbHBlck1lc3NhZ2UgfX1cbiAgICAgICAgPC9oZWxwZXI+XG4gICAgICA8L21lY3gtZm9ybS1maWVsZC1oZWFkZXI+XG4gICAgICA8bWVjeC1mb3JtLWZpZWxkLWJvZHkgW2NsYXNzLmVycm9yXT1cImVycm9yTWVzc2FnZT8udHJpbSgpXCI+XG4gICAgICAgIDxtb25rZXktaWNvblxuICAgICAgICAgIFtpY29uXT1cImljb25cIlxuICAgICAgICAgIFtjb2xvcl09XCJlcnJvck1lc3NhZ2U/LnRyaW0oKSA/ICcjZmEzODM4JyA6ICcjNEI0QTUzJ1wiXG4gICAgICAgICAgKm5nSWY9XCJpY29uXCJcbiAgICAgICAgPjwvbW9ua2V5LWljb24+XG4gICAgICAgIDxtb25rZXktc2VsZWN0XG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnRlcm5hdGlvbmFsTnVtYmVyXCJcbiAgICAgICAgICBbbGFiZWxTZWxlY3RdPVwib25IYW5kbGVJbnRlcm5hdGlvbmFsTnVtYmVyRm9ybWF0ZWQoKVwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uSGFuZGxlQ291bnRyeUNvZGUoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bW9ua2V5LW9wdGlvbiAqbmdGb3I9XCJsZXQgY2Mgb2YgX2NvdW50cnlDb2Rlc1wiIFtsYWJlbF09XCInKycgKyBjY1wiIFt2YWx1ZV09XCJjY1wiPlxuICAgICAgICAgIDwvbW9ua2V5LW9wdGlvbj5cbiAgICAgICAgPC9tb25rZXktc2VsZWN0PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICB0eXBlPVwic3RyaW5nXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbkNoYW5nZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIFtpZF09XCJuYW1lXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9mb3JtYXRlZFZhbHVlXCJcbiAgICAgICAgICAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgcGhvbmVOdW1iZXJWYWxpZGF0ZVxuICAgICAgICAgIFtjdHJsXT1cIl9mb3JtQ29udHJvbFwiXG4gICAgICAgICAgW3Bob25lTnVtYmVyXT1cIl9oYW5kbGVkVmFsdWVcIlxuICAgICAgICAgIFtpbnRlcm5hdGlvbmFsTnVtYmVyXT1cImludGVybmF0aW9uYWxOdW1iZXJcIlxuICAgICAgICAgICNtb25rZXlJbnB1dFxuICAgICAgICAvPlxuICAgICAgPC9tZWN4LWZvcm0tZmllbGQtYm9keT5cbiAgICAgIDxtZWN4LWZvcm0tZmllbGQtZm9vdGVyPlxuICAgICAgICA8aW5mbz5cbiAgICAgICAgICB7eyBpbmZvTWVzc2FnZSB9fVxuICAgICAgICA8L2luZm8+XG4gICAgICAgIDxlcnJvcj5cbiAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgICAgPC9lcnJvcj5cbiAgICAgIDwvbWVjeC1mb3JtLWZpZWxkLWZvb3Rlcj5cbiAgICA8L21lY3gtZm9ybS1maWVsZD5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTW9ua2V5SW5wdXRQaG9uZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSBgbWVjeC1pbnB1dC1waG9uZS0ke01vbmtleVV0aWxzLmdldFJhbmRvbVN0cmluZygxMCl9YDtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgaGVscGVyTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBpbmZvTWVzc2FnZTogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXIgPSAyNTU7XG4gIEBJbnB1dCgpIGludGVybmF0aW9uYWxOdW1iZXIgPSA1NTtcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJpdmF0ZSBvbk1vZGVsQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xuICBwcml2YXRlIG9uTW9kZWxUb3VjaGVkID0gKHZhbHVlOiBhbnkpID0+IHt9O1xuXG4gIHB1YmxpYyBfaGFuZGxlZFZhbHVlOiBhbnk7XG4gIHB1YmxpYyBfaWQ6IHN0cmluZyA9IGBtZWN4LWlucHV0LXBob25lLSR7TW9ua2V5VXRpbHMuZ2V0UmFuZG9tU3RyaW5nKDEwKX1gO1xuICBwdWJsaWMgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBfZm9ybWF0ZWRWYWx1ZTogYW55O1xuICBwdWJsaWMgX3JlZ2lvbkNvZGVzID0gW107XG4gIHB1YmxpYyBfY291bnRyeUNvZGVzID0gW107XG4gIHB1YmxpYyBfZm9ybUNvbnRyb2wgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICByZXR1cm4gTW9ua2V5VXRpbHMuaGFuZGxlT25seU51bWJlcnMoYCR7dmFsdWV9YCk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VaZXJvKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gYCR7dmFsdWV9YC5yZXBsYWNlKG5ldyBSZWdFeHAoLzAvLCAnZycpLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBNb25rZXlVdGlscy5nZXRQaG9uZU51bWJlckZvcm1hdGVkKHZhbHVlLCB0aGlzLmludGVybmF0aW9uYWxOdW1iZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZSgpIHtcbiAgICBjb25zdCB7IGludGVybmF0aW9uYWxOdW1iZXIsIF9oYW5kbGVkVmFsdWUgfSA9IHRoaXM7XG4gICAgaWYoX2hhbmRsZWRWYWx1ZSl7XG4gICAgICBjb25zdCBoYW5kbGVkID0gYCR7X2hhbmRsZWRWYWx1ZX1gLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCske2ludGVybmF0aW9uYWxOdW1iZXJ9YCwnZycpLCcnKTtcbiAgICAgIGlmIChoYW5kbGVkKSByZXR1cm4gYCske2ludGVybmF0aW9uYWxOdW1iZXJ9JHtoYW5kbGVkfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fY291bnRyeUNvZGVzID0gTW9ua2V5VXRpbHMuZ2V0UGhvbmVSZWdpb25zKCk7XG4gICAgdGhpcy5vbkhhbmRsZUludGVybmF0aW9uYWxOdW1iZXIoKTtcbiAgICB0aGlzLm9uSGFuZGxlQ291bnRyeUNvZGUodGhpcy5pbnRlcm5hdGlvbmFsTnVtYmVyKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbCA9XG4gICAgICB0aGlzLm5nQ29udHJvbCAmJiAoKHRoaXMubmdDb250cm9sIGFzIGFueSk/LmZvcm0gfHwgKHRoaXMubmdDb250cm9sIGFzIGFueSk/LmNvbnRyb2wpO1xuICB9XG5cbiAgb25IYW5kbGVJbnRlcm5hdGlvbmFsTnVtYmVyKHZhbHVlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnRlcm5hdGlvbmFsTnVtYmVyID1cbiAgICAgIE1vbmtleVV0aWxzLmdldFBob25lQ291bnRyeUNvZGUodmFsdWUgfHwgdGhpcy5faGFuZGxlZFZhbHVlKSB8fCB0aGlzLmludGVybmF0aW9uYWxOdW1iZXI7XG4gIH1cblxuICBvbkhhbmRsZUludGVybmF0aW9uYWxOdW1iZXJGb3JtYXRlZCgpIHtcbiAgICBjb25zdCB7IGludGVybmF0aW9uYWxOdW1iZXIgfSA9IHRoaXM7XG4gICAgcmV0dXJuIGArJHtpbnRlcm5hdGlvbmFsTnVtYmVyfWA7XG4gIH1cblxuICBvbkhhbmRsZUNvdW50cnlDb2RlKGV2ZW50OiBudW1iZXIpIHtcbiAgICBjb25zdCB7IG1heExlbmd0aCB9ID0gTW9ua2V5VXRpbHMuZ2V0UGhvbmVIYW5kbGUoZXZlbnQpO1xuICAgIGlmIChtYXhMZW5ndGgpIHtcbiAgICAgIHRoaXMubWF4TGVuZ3RoID0gbWF4TGVuZ3RoO1xuICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5faGFuZGxlZFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fZm9ybWF0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5nZXRWYWx1ZSgpKTtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKHRoaXMuZ2V0VmFsdWUoKSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgb25DaGFuZ2VWYWx1ZShldmVudD86IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZm9ybWF0ZWRWYWx1ZTtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaGFuZGxlZCA9IHRoaXMuaGFuZGxlVmFsdWUodmFsdWUpO1xuICAgIHRoaXMud3JpdGVWYWx1ZShoYW5kbGVkKTtcbiAgICB0aGlzLm9uQ2hhbmdlLm5leHQoaGFuZGxlZCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIG9uQ2xpY2soKSB7XG4gICAgZG9jdW1lbnQ/LmdldEVsZW1lbnRCeUlkKHRoaXMuX2lkKT8uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk/LlswXT8uZm9jdXMoKTtcbiAgfVxuXG4gIG9uS2V5UHJlc3MoZXZlbnQ6IGFueSkge1xuICAgIGxldCBwYXR0ZXJuID0gbnVsbDtcbiAgICBjb25zdCBjbXAgPSBldmVudD8udGFyZ2V0Py52YWx1ZTtcbiAgICBjb25zdCBpbnB1dENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlKTtcblxuICAgIHBhdHRlcm4gPSAvWzAtOV0vO1xuICAgIGlmIChpbnB1dENoYXIgPT09ICcwJyAmJiAhdGhpcy5yZXBsYWNlWmVybyhjbXApKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwYXR0ZXJuICYmICFwYXR0ZXJuLnRlc3QoaW5wdXRDaGFyKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
1
+ /**************************
2
+ * Copyright Monkey Exchange. All Rights Reserved
3
+ * This style guide was developed by Monkey Exchange Team
4
+ * MIT Licence
5
+ **************************/
6
+ import { Component, ViewEncapsulation, Input, HostListener, Output, EventEmitter, Directive, Self, Optional, } from '@angular/core';
7
+ import { MonkeyUtils } from '../../core/utils';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/forms";
10
+ import * as i2 from "../icon/icon.component";
11
+ import * as i3 from "../select/select.component";
12
+ import * as i4 from "../option/option.component";
13
+ import * as i5 from "@angular/common";
14
+ export class PhoneNumberValidDirective {
15
+ onValidate() {
16
+ const { ctrl, destroyed, phoneNumber, internationalNumber } = this;
17
+ if (destroyed || !phoneNumber || !ctrl)
18
+ return;
19
+ let isValid = false;
20
+ try {
21
+ isValid = MonkeyUtils.isPhoneNumberValid(phoneNumber, internationalNumber);
22
+ }
23
+ catch (e) {
24
+ //not to do
25
+ }
26
+ if (!isValid) {
27
+ setTimeout(() => {
28
+ ctrl.markAsDirty();
29
+ ctrl.markAsTouched();
30
+ ctrl.setErrors({ phone: true });
31
+ }, 0);
32
+ }
33
+ }
34
+ ngOnChanges({ ctrl, phoneNumber, internationalNumber }) {
35
+ if ((phoneNumber && !phoneNumber.firstChange) ||
36
+ (internationalNumber && !internationalNumber.firstChange) ||
37
+ (ctrl && !ctrl.firstChange)) {
38
+ this.onValidate();
39
+ }
40
+ }
41
+ ngOnDestroy() {
42
+ this.destroyed = true;
43
+ this.onValidate();
44
+ }
45
+ }
46
+ PhoneNumberValidDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PhoneNumberValidDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
47
+ PhoneNumberValidDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: PhoneNumberValidDirective, selector: "[phoneNumberValidate]", inputs: { phoneNumber: "phoneNumber", internationalNumber: "internationalNumber", ctrl: "ctrl" }, usesOnChanges: true, ngImport: i0 });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PhoneNumberValidDirective, decorators: [{
49
+ type: Directive,
50
+ args: [{
51
+ selector: '[phoneNumberValidate]',
52
+ }]
53
+ }], propDecorators: { phoneNumber: [{
54
+ type: Input
55
+ }], internationalNumber: [{
56
+ type: Input
57
+ }], ctrl: [{
58
+ type: Input
59
+ }] } });
60
+ export class MonkeyInputPhoneComponent {
61
+ constructor(ngControl, cdr) {
62
+ this.ngControl = ngControl;
63
+ this.cdr = cdr;
64
+ this.name = `mecx-input-phone-${MonkeyUtils.getRandomString(10)}`;
65
+ this.helperMessage = '';
66
+ this.placeholder = '';
67
+ this.maxLength = 255;
68
+ this.internationalNumber = 55;
69
+ this.onChange = new EventEmitter();
70
+ this.onModelChange = (value) => { };
71
+ this.onModelTouched = (value) => { };
72
+ this._id = `mecx-input-phone-${MonkeyUtils.getRandomString(10)}`;
73
+ this._disabled = false;
74
+ this._regionCodes = [];
75
+ this._countryCodes = [];
76
+ this._formControl = null;
77
+ if (this.ngControl != null) {
78
+ this.ngControl.valueAccessor = this;
79
+ }
80
+ }
81
+ handleValue(value) {
82
+ return MonkeyUtils.handleOnlyNumbers(`${value}`);
83
+ }
84
+ replaceZero(value) {
85
+ return `${value}`.replace(new RegExp(/0/, 'g'), '');
86
+ }
87
+ formatValue(value) {
88
+ return MonkeyUtils.getPhoneNumberFormated(value, this.internationalNumber);
89
+ }
90
+ getValue() {
91
+ const { internationalNumber, _handledValue } = this;
92
+ if (_handledValue) {
93
+ const handled = `${_handledValue}`.replace(new RegExp(`\\+${internationalNumber}`, 'g'), '');
94
+ if (handled)
95
+ return `+${internationalNumber}${handled}`;
96
+ }
97
+ return '';
98
+ }
99
+ ngOnInit() {
100
+ this._countryCodes = MonkeyUtils.getPhoneRegions();
101
+ this.onHandleInternationalNumber();
102
+ this.onHandleCountryCode(this.internationalNumber);
103
+ this._formControl =
104
+ this.ngControl && (this.ngControl?.form || this.ngControl?.control);
105
+ }
106
+ onHandleInternationalNumber(value) {
107
+ this.internationalNumber =
108
+ MonkeyUtils.getPhoneCountryCode(value || this._handledValue) || this.internationalNumber;
109
+ }
110
+ onHandleInternationalNumberFormated() {
111
+ const { internationalNumber } = this;
112
+ return `+${internationalNumber}`;
113
+ }
114
+ onHandleCountryCode(event) {
115
+ const { maxLength } = MonkeyUtils.getPhoneHandle(event);
116
+ if (maxLength) {
117
+ this.maxLength = maxLength;
118
+ this.onChangeValue();
119
+ }
120
+ }
121
+ registerOnChange(fn) {
122
+ this.onModelChange = fn;
123
+ }
124
+ registerOnTouched(fn) {
125
+ this.onModelTouched = fn;
126
+ }
127
+ setDisabledState(isDisabled) {
128
+ this._disabled = isDisabled;
129
+ }
130
+ set value(value) {
131
+ this._handledValue = value;
132
+ this._formatedValue = this.formatValue(value);
133
+ this.cdr.detectChanges();
134
+ this.onModelChange(this.getValue());
135
+ this.onModelTouched(this.getValue());
136
+ }
137
+ get value() {
138
+ return this.getValue();
139
+ }
140
+ writeValue(value) {
141
+ this.value = value;
142
+ }
143
+ onChangeValue(event) {
144
+ const value = this._formatedValue;
145
+ event?.preventDefault();
146
+ event?.stopPropagation();
147
+ const handled = this.handleValue(value);
148
+ this.writeValue(handled);
149
+ this.onChange.next(handled);
150
+ }
151
+ onClick() {
152
+ document?.getElementById(this._id)?.getElementsByTagName('input')?.[0]?.focus();
153
+ }
154
+ onKeyPress(event) {
155
+ let pattern = null;
156
+ const cmp = event?.target?.value;
157
+ const inputChar = String.fromCharCode(event.charCode);
158
+ pattern = /[0-9]/;
159
+ if (inputChar === '0' && !this.replaceZero(cmp)) {
160
+ event.preventDefault();
161
+ return;
162
+ }
163
+ if (pattern && !pattern.test(inputChar)) {
164
+ event.preventDefault();
165
+ }
166
+ }
167
+ }
168
+ MonkeyInputPhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeyInputPhoneComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
169
+ MonkeyInputPhoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MonkeyInputPhoneComponent, selector: "monkey-input-phone", inputs: { name: "name", label: "label", helperMessage: "helperMessage", placeholder: "placeholder", icon: "icon", infoMessage: "infoMessage", errorMessage: "errorMessage", maxLength: "maxLength", internationalNumber: "internationalNumber", value: "value" }, outputs: { onChange: "onChange" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: `
170
+ <mecx-form-field [ngClass]="{ disabled: _disabled }" [id]="_id">
171
+ <mecx-form-field-header>
172
+ <label>
173
+ {{ label }}
174
+ </label>
175
+ <helper>
176
+ {{ helperMessage }}
177
+ </helper>
178
+ </mecx-form-field-header>
179
+ <mecx-form-field-body [class.error]="errorMessage?.trim()">
180
+ <monkey-icon
181
+ [icon]="icon"
182
+ [color]="errorMessage?.trim() ? '#fa3838' : '#4B4A53'"
183
+ *ngIf="icon"
184
+ ></monkey-icon>
185
+ <monkey-select
186
+ [(ngModel)]="internationalNumber"
187
+ [labelSelect]="onHandleInternationalNumberFormated()"
188
+ (onChange)="onHandleCountryCode($event)"
189
+ >
190
+ <monkey-option *ngFor="let cc of _countryCodes" [label]="'+' + cc" [value]="cc">
191
+ </monkey-option>
192
+ </monkey-select>
193
+ <input
194
+ [name]="name"
195
+ type="string"
196
+ [placeholder]="placeholder"
197
+ (input)="onChangeValue($event)"
198
+ [id]="name"
199
+ [(ngModel)]="_formatedValue"
200
+ (keypress)="onKeyPress($event)"
201
+ [disabled]="_disabled"
202
+ [maxLength]="maxLength"
203
+ phoneNumberValidate
204
+ [ctrl]="_formControl"
205
+ [phoneNumber]="_handledValue"
206
+ [internationalNumber]="internationalNumber"
207
+ #monkeyInput
208
+ />
209
+ </mecx-form-field-body>
210
+ <mecx-form-field-footer>
211
+ <info>
212
+ {{ infoMessage }}
213
+ </info>
214
+ <error>
215
+ {{ errorMessage }}
216
+ </error>
217
+ </mecx-form-field-footer>
218
+ </mecx-form-field>
219
+ `, isInline: true, components: [{ type: i2.MonkeyIconComponent, selector: "monkey-icon", inputs: ["icon", "color", "contrast", "disabled"] }, { type: i3.MonkeySelectComponent, selector: "monkey-select", inputs: ["label", "helperMessage", "placeholder", "icon", "infoMessage", "errorMessage", "labelSelect", "onHandleOptions", "value"], outputs: ["onChange"] }, { type: i4.MonkeyOptionComponent, selector: "monkey-option", inputs: ["type", "label", "value", "selectAll", "selected", "enableClick"], outputs: ["onSelectOption"] }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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: PhoneNumberValidDirective, selector: "[phoneNumberValidate]", inputs: ["phoneNumber", "internationalNumber", "ctrl"] }], encapsulation: i0.ViewEncapsulation.None });
220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeyInputPhoneComponent, decorators: [{
221
+ type: Component,
222
+ args: [{
223
+ selector: 'monkey-input-phone',
224
+ template: `
225
+ <mecx-form-field [ngClass]="{ disabled: _disabled }" [id]="_id">
226
+ <mecx-form-field-header>
227
+ <label>
228
+ {{ label }}
229
+ </label>
230
+ <helper>
231
+ {{ helperMessage }}
232
+ </helper>
233
+ </mecx-form-field-header>
234
+ <mecx-form-field-body [class.error]="errorMessage?.trim()">
235
+ <monkey-icon
236
+ [icon]="icon"
237
+ [color]="errorMessage?.trim() ? '#fa3838' : '#4B4A53'"
238
+ *ngIf="icon"
239
+ ></monkey-icon>
240
+ <monkey-select
241
+ [(ngModel)]="internationalNumber"
242
+ [labelSelect]="onHandleInternationalNumberFormated()"
243
+ (onChange)="onHandleCountryCode($event)"
244
+ >
245
+ <monkey-option *ngFor="let cc of _countryCodes" [label]="'+' + cc" [value]="cc">
246
+ </monkey-option>
247
+ </monkey-select>
248
+ <input
249
+ [name]="name"
250
+ type="string"
251
+ [placeholder]="placeholder"
252
+ (input)="onChangeValue($event)"
253
+ [id]="name"
254
+ [(ngModel)]="_formatedValue"
255
+ (keypress)="onKeyPress($event)"
256
+ [disabled]="_disabled"
257
+ [maxLength]="maxLength"
258
+ phoneNumberValidate
259
+ [ctrl]="_formControl"
260
+ [phoneNumber]="_handledValue"
261
+ [internationalNumber]="internationalNumber"
262
+ #monkeyInput
263
+ />
264
+ </mecx-form-field-body>
265
+ <mecx-form-field-footer>
266
+ <info>
267
+ {{ infoMessage }}
268
+ </info>
269
+ <error>
270
+ {{ errorMessage }}
271
+ </error>
272
+ </mecx-form-field-footer>
273
+ </mecx-form-field>
274
+ `,
275
+ encapsulation: ViewEncapsulation.None,
276
+ }]
277
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
278
+ type: Optional
279
+ }, {
280
+ type: Self
281
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { name: [{
282
+ type: Input
283
+ }], label: [{
284
+ type: Input
285
+ }], helperMessage: [{
286
+ type: Input
287
+ }], placeholder: [{
288
+ type: Input
289
+ }], icon: [{
290
+ type: Input
291
+ }], infoMessage: [{
292
+ type: Input
293
+ }], errorMessage: [{
294
+ type: Input
295
+ }], maxLength: [{
296
+ type: Input
297
+ }], internationalNumber: [{
298
+ type: Input
299
+ }], onChange: [{
300
+ type: Output
301
+ }], value: [{
302
+ type: Input
303
+ }], onClick: [{
304
+ type: HostListener,
305
+ args: ['click']
306
+ }] } });
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1waG9uZS9pbnB1dC1waG9uZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NEJBSTRCO0FBQzVCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxZQUFZLEVBRVosTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBSVQsSUFBSSxFQUNKLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFLL0MsTUFBTSxPQUFPLHlCQUF5QjtJQU81QixVQUFVO1FBQ2hCLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNuRSxJQUFJLFNBQVMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQy9DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJO1lBQ0YsT0FBTyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztTQUM1RTtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsV0FBVztTQUNaO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsQyxDQUFDLEVBQUUsQ0FBQyxDQUFD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Q0ksUUFBUTtzQkFBakIsTUFBTTtnQkFnRkgsS0FBSztzQkFEUixLQUFLO2dCQTJCTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gKiBDb3B5cmlnaHQgTW9ua2V5IEV4Y2hhbmdlLiBBbGwgUmlnaHRzIFJlc2VydmVkXHJcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxyXG4gKiBNSVQgTGljZW5jZVxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIElucHV0LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBEaXJlY3RpdmUsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFNlbGYsXHJcbiAgT3B0aW9uYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgRm9ybUNvbnRyb2xOYW1lLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1vbmtleVV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1twaG9uZU51bWJlclZhbGlkYXRlXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZU51bWJlclZhbGlkRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHBob25lTnVtYmVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW50ZXJuYXRpb25hbE51bWJlcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGN0cmw6IEZvcm1Db250cm9sO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3llZDogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBvblZhbGlkYXRlKCkge1xyXG4gICAgY29uc3QgeyBjdHJsLCBkZXN0cm95ZWQsIHBob25lTnVtYmVyLCBpbnRlcm5hdGlvbmFsTnVtYmVyIH0gPSB0aGlzO1xyXG4gICAgaWYgKGRlc3Ryb3llZCB8fCAhcGhvbmVOdW1iZXIgfHwgIWN0cmwpIHJldHVybjtcclxuICAgIGxldCBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICB0cnkge1xyXG4gICAgICBpc1ZhbGlkID0gTW9ua2V5VXRpbHMuaXNQaG9uZU51bWJlclZhbGlkKHBob25lTnVtYmVyLCBpbnRlcm5hdGlvbmFsTnVtYmVyKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy9ub3QgdG8gZG9cclxuICAgIH1cclxuICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjdHJsLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgY3RybC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgY3RybC5zZXRFcnJvcnMoeyBwaG9uZTogdHJ1ZSB9KTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyh7IGN0cmwsIHBob25lTnVtYmVyLCBpbnRlcm5hdGlvbmFsTnVtYmVyIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgKHBob25lTnVtYmVyICYmICFwaG9uZU51bWJlci5maXJzdENoYW5nZSkgfHxcclxuICAgICAgKGludGVybmF0aW9uYWxOdW1iZXIgJiYgIWludGVybmF0aW9uYWxOdW1iZXIuZmlyc3RDaGFuZ2UpIHx8XHJcbiAgICAgIChjdHJsICYmICFjdHJsLmZpcnN0Q2hhbmdlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMub25WYWxpZGF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGUoKTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbW9ua2V5LWlucHV0LXBob25lJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG1lY3gtZm9ybS1maWVsZCBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBfZGlzYWJsZWQgfVwiIFtpZF09XCJfaWRcIj5cclxuICAgICAgPG1lY3gtZm9ybS1maWVsZC1oZWFkZXI+XHJcbiAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAge3sgbGFiZWwgfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxoZWxwZXI+XHJcbiAgICAgICAgICB7eyBoZWxwZXJNZXNzYWdlIH19XHJcbiAgICAgICAgPC9oZWxwZXI+XHJcbiAgICAgIDwvbWVjeC1mb3JtLWZpZWxkLWhlYWRlcj5cclxuICAgICAgPG1lY3gtZm9ybS1maWVsZC1ib2R5IFtjbGFzcy5lcnJvcl09XCJlcnJvck1lc3NhZ2U/LnRyaW0oKVwiPlxyXG4gICAgICAgIDxtb25rZXktaWNvblxyXG4gICAgICAgICAgW2ljb25dPVwiaWNvblwiXHJcbiAgICAgICAgICBbY29sb3JdPVwiZXJyb3JNZXNzYWdlPy50cmltKCkgPyAnI2ZhMzgzOCcgOiAnIzRCNEE1MydcIlxyXG4gICAgICAgICAgKm5nSWY9XCJpY29uXCJcclxuICAgICAgICA+PC9tb25rZXktaWNvbj5cclxuICAgICAgICA8bW9ua2V5LXNlbGVjdFxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnRlcm5hdGlvbmFsTnVtYmVyXCJcclxuICAgICAgICAgIFtsYWJlbFNlbGVjdF09XCJvbkhhbmRsZUludGVybmF0aW9uYWxOdW1iZXJGb3JtYXRlZCgpXCJcclxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkhhbmRsZUNvdW50cnlDb2RlKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtb25rZXktb3B0aW9uICpuZ0Zvcj1cImxldCBjYyBvZiBfY291bnRyeUNvZGVzXCIgW2xhYmVsXT1cIicrJyArIGNjXCIgW3ZhbHVlXT1cImNjXCI+XHJcbiAgICAgICAgICA8L21vbmtleS1vcHRpb24+XHJcbiAgICAgICAgPC9tb25rZXktc2VsZWN0PlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICB0eXBlPVwic3RyaW5nXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25DaGFuZ2VWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFtpZF09XCJuYW1lXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiX2Zvcm1hdGVkVmFsdWVcIlxyXG4gICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgICAgIHBob25lTnVtYmVyVmFsaWRhdGVcclxuICAgICAgICAgIFtjdHJsXT1cIl9mb3JtQ29udHJvbFwiXHJcbiAgICAgICAgICBbcGhvbmVOdW1iZXJdPVwiX2hhbmRsZWRWYWx1ZVwiXHJcbiAgICAgICAgICBbaW50ZXJuYXRpb25hbE51bWJlcl09XCJpbnRlcm5hdGlvbmFsTnVtYmVyXCJcclxuICAgICAgICAgICNtb25rZXlJbnB1dFxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWVjeC1mb3JtLWZpZWxkLWJvZHk+XHJcbiAgICAgIDxtZWN4LWZvcm0tZmllbGQtZm9vdGVyPlxyXG4gICAgICAgIDxpbmZvPlxyXG4gICAgICAgICAge3sgaW5mb01lc3NhZ2UgfX1cclxuICAgICAgICA8L2luZm8+XHJcbiAgICAgICAgPGVycm9yPlxyXG4gICAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgPC9lcnJvcj5cclxuICAgICAgPC9tZWN4LWZvcm0tZmllbGQtZm9vdGVyPlxyXG4gICAgPC9tZWN4LWZvcm0tZmllbGQ+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9ua2V5SW5wdXRQaG9uZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyA9IGBtZWN4LWlucHV0LXBob25lLSR7TW9ua2V5VXRpbHMuZ2V0UmFuZG9tU3RyaW5nKDEwKX1gO1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGVscGVyTWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcclxuICBASW5wdXQoKSBpbmZvTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyID0gMjU1O1xyXG4gIEBJbnB1dCgpIGludGVybmF0aW9uYWxOdW1iZXIgPSA1NTtcclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBvbk1vZGVsQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xyXG4gIHByaXZhdGUgb25Nb2RlbFRvdWNoZWQgPSAodmFsdWU6IGFueSkgPT4ge307XHJcblxyXG4gIHB1YmxpYyBfaGFuZGxlZFZhbHVlOiBhbnk7XHJcbiAgcHVibGljIF9pZDogc3RyaW5nID0gYG1lY3gtaW5wdXQtcGhvbmUtJHtNb25rZXlVdGlscy5nZXRSYW5kb21TdHJpbmcoMTApfWA7XHJcbiAgcHVibGljIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBfZm9ybWF0ZWRWYWx1ZTogYW55O1xyXG4gIHB1YmxpYyBfcmVnaW9uQ29kZXMgPSBbXTtcclxuICBwdWJsaWMgX2NvdW50cnlDb2RlcyA9IFtdO1xyXG4gIHB1YmxpYyBfZm9ybUNvbnRyb2wgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlVmFsdWUodmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gTW9ua2V5VXRpbHMuaGFuZGxlT25seU51bWJlcnMoYCR7dmFsdWV9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlcGxhY2VaZXJvKHZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiBgJHt2YWx1ZX1gLnJlcGxhY2UobmV3IFJlZ0V4cCgvMC8sICdnJyksICcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0VmFsdWUodmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gTW9ua2V5VXRpbHMuZ2V0UGhvbmVOdW1iZXJGb3JtYXRlZCh2YWx1ZSwgdGhpcy5pbnRlcm5hdGlvbmFsTnVtYmVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFsdWUoKSB7XHJcbiAgICBjb25zdCB7IGludGVybmF0aW9uYWxOdW1iZXIsIF9oYW5kbGVkVmFsdWUgfSA9IHRoaXM7XHJcbiAgICBpZihfaGFuZGxlZFZhbHVlKXtcclxuICAgICAgY29uc3QgaGFuZGxlZCA9IGAke19oYW5kbGVkVmFsdWV9YC5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFwrJHtpbnRlcm5hdGlvbmFsTnVtYmVyfWAsJ2cnKSwnJyk7XHJcbiAgICAgIGlmIChoYW5kbGVkKSByZXR1cm4gYCske2ludGVybmF0aW9uYWxOdW1iZXJ9JHtoYW5kbGVkfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9jb3VudHJ5Q29kZXMgPSBNb25rZXlVdGlscy5nZXRQaG9uZVJlZ2lvbnMoKTtcclxuICAgIHRoaXMub25IYW5kbGVJbnRlcm5hdGlvbmFsTnVtYmVyKCk7XHJcbiAgICB0aGlzLm9uSGFuZGxlQ291bnRyeUNvZGUodGhpcy5pbnRlcm5hdGlvbmFsTnVtYmVyKTtcclxuICAgIHRoaXMuX2Zvcm1Db250cm9sID1cclxuICAgICAgdGhpcy5uZ0NvbnRyb2wgJiYgKCh0aGlzLm5nQ29udHJvbCBhcyBhbnkpPy5mb3JtIHx8ICh0aGlzLm5nQ29udHJvbCBhcyBhbnkpPy5jb250cm9sKTtcclxuICB9XHJcblxyXG4gIG9uSGFuZGxlSW50ZXJuYXRpb25hbE51bWJlcih2YWx1ZT86IHN0cmluZykge1xyXG4gICAgdGhpcy5pbnRlcm5hdGlvbmFsTnVtYmVyID1cclxuICAgICAgTW9ua2V5VXRpbHMuZ2V0UGhvbmVDb3VudHJ5Q29kZSh2YWx1ZSB8fCB0aGlzLl9oYW5kbGVkVmFsdWUpIHx8IHRoaXMuaW50ZXJuYXRpb25hbE51bWJlcjtcclxuICB9XHJcblxyXG4gIG9uSGFuZGxlSW50ZXJuYXRpb25hbE51bWJlckZvcm1hdGVkKCkge1xyXG4gICAgY29uc3QgeyBpbnRlcm5hdGlvbmFsTnVtYmVyIH0gPSB0aGlzO1xyXG4gICAgcmV0dXJuIGArJHtpbnRlcm5hdGlvbmFsTnVtYmVyfWA7XHJcbiAgfVxyXG5cclxuICBvbkhhbmRsZUNvdW50cnlDb2RlKGV2ZW50OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHsgbWF4TGVuZ3RoIH0gPSBNb25rZXlVdGlscy5nZXRQaG9uZUhhbmRsZShldmVudCk7XHJcbiAgICBpZiAobWF4TGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubWF4TGVuZ3RoID0gbWF4TGVuZ3RoO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9oYW5kbGVkVmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2Zvcm1hdGVkVmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLmdldFZhbHVlKCkpO1xyXG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCh0aGlzLmdldFZhbHVlKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVZhbHVlKGV2ZW50PzogYW55KSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2Zvcm1hdGVkVmFsdWU7XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGNvbnN0IGhhbmRsZWQgPSB0aGlzLmhhbmRsZVZhbHVlKHZhbHVlKTtcclxuICAgIHRoaXMud3JpdGVWYWx1ZShoYW5kbGVkKTtcclxuICAgIHRoaXMub25DaGFuZ2UubmV4dChoYW5kbGVkKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcclxuICBvbkNsaWNrKCkge1xyXG4gICAgZG9jdW1lbnQ/LmdldEVsZW1lbnRCeUlkKHRoaXMuX2lkKT8uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk/LlswXT8uZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIG9uS2V5UHJlc3MoZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IHBhdHRlcm4gPSBudWxsO1xyXG4gICAgY29uc3QgY21wID0gZXZlbnQ/LnRhcmdldD8udmFsdWU7XHJcbiAgICBjb25zdCBpbnB1dENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlKTtcclxuXHJcbiAgICBwYXR0ZXJuID0gL1swLTldLztcclxuICAgIGlmIChpbnB1dENoYXIgPT09ICcwJyAmJiAhdGhpcy5yZXBsYWNlWmVybyhjbXApKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGF0dGVybiAmJiAhcGF0dGVybi50ZXN0KGlucHV0Q2hhcikpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19