@testgorilla/tgo-ui 3.14.13 → 4.0.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 (247) hide show
  1. package/components/donut-chart/donut-chart.component.d.ts +2 -2
  2. package/components/filter-button/filter-button.component.d.ts +2 -2
  3. package/components/icon/icon-svg-content.d.ts +1 -1
  4. package/components/table/table.component.d.ts +1 -1
  5. package/fesm2022/testgorilla-tgo-ui.mjs +731 -715
  6. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  7. package/package.json +17 -20
  8. package/projects/tgo-canopy-ui/theme/_palette.scss +2 -1
  9. package/utils/color-contrast.d.ts +1 -1
  10. package/esm2022/assets/i18n/da-dk.json +0 -820
  11. package/esm2022/assets/i18n/de.json +0 -820
  12. package/esm2022/assets/i18n/en.json +0 -827
  13. package/esm2022/assets/i18n/es.json +0 -820
  14. package/esm2022/assets/i18n/fr.json +0 -820
  15. package/esm2022/assets/i18n/it-it.json +0 -820
  16. package/esm2022/assets/i18n/ja-jp.json +0 -820
  17. package/esm2022/assets/i18n/nb-no.json +0 -820
  18. package/esm2022/assets/i18n/nl.json +0 -820
  19. package/esm2022/assets/i18n/pl-pl.json +0 -820
  20. package/esm2022/assets/i18n/pt-br.json +0 -820
  21. package/esm2022/assets/i18n/sv-se.json +0 -820
  22. package/esm2022/components/accordion/accordion.component.mjs +0 -135
  23. package/esm2022/components/accordion/accordion.component.module.mjs +0 -40
  24. package/esm2022/components/accordion/accordion.model.mjs +0 -2
  25. package/esm2022/components/ai-feedback/ai-feedback.component.mjs +0 -35
  26. package/esm2022/components/ai-feedback/ai-feedback.model.mjs +0 -2
  27. package/esm2022/components/ai-feedback/ai-feedback.module.mjs +0 -20
  28. package/esm2022/components/alert-banner/alert-banner.component.mjs +0 -198
  29. package/esm2022/components/alert-banner/alert-banner.component.module.mjs +0 -21
  30. package/esm2022/components/alert-banner/alert-banner.model.mjs +0 -2
  31. package/esm2022/components/autocomplete/autocomplete.component.mjs +0 -837
  32. package/esm2022/components/autocomplete/autocomplete.component.module.mjs +0 -77
  33. package/esm2022/components/autocomplete/autocomplete.model.mjs +0 -25
  34. package/esm2022/components/autocomplete/includes.pipe.mjs +0 -25
  35. package/esm2022/components/autocomplete/prevent-input.directive.mjs +0 -27
  36. package/esm2022/components/autocomplete/transform-Item.pipe.mjs +0 -32
  37. package/esm2022/components/avatar/avatar.component.mjs +0 -104
  38. package/esm2022/components/avatar/avatar.component.module.mjs +0 -23
  39. package/esm2022/components/avatar/avatar.model.mjs +0 -21
  40. package/esm2022/components/badge/badge.component.mjs +0 -118
  41. package/esm2022/components/badge/badge.component.module.mjs +0 -20
  42. package/esm2022/components/badge/badge.model.mjs +0 -39
  43. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +0 -191
  44. package/esm2022/components/breadcrumb/breadcrumb.component.module.mjs +0 -45
  45. package/esm2022/components/breadcrumb/breadcrumb.model.mjs +0 -2
  46. package/esm2022/components/button/button.component.mjs +0 -452
  47. package/esm2022/components/button/button.component.module.mjs +0 -51
  48. package/esm2022/components/button/button.model.mjs +0 -2
  49. package/esm2022/components/card/card.component.mjs +0 -141
  50. package/esm2022/components/card/card.component.module.mjs +0 -19
  51. package/esm2022/components/card/card.model.mjs +0 -2
  52. package/esm2022/components/checkbox/checkbox.component.mjs +0 -336
  53. package/esm2022/components/checkbox/checkbox.component.module.mjs +0 -28
  54. package/esm2022/components/checkbox/focus-visible.directive.mjs +0 -40
  55. package/esm2022/components/checklist/checklist.component.mjs +0 -157
  56. package/esm2022/components/checklist/checklist.model.mjs +0 -2
  57. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +0 -73
  58. package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +0 -29
  59. package/esm2022/components/confirm-dialog/confirm-dialog.model.mjs +0 -2
  60. package/esm2022/components/datepicker/date-adapter.mjs +0 -39
  61. package/esm2022/components/datepicker/datepicker.component.mjs +0 -353
  62. package/esm2022/components/datepicker/datepicker.component.module.mjs +0 -60
  63. package/esm2022/components/datepicker/datepicker.service.mjs +0 -20
  64. package/esm2022/components/datepicker/no-date-format.directive.mjs +0 -56
  65. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +0 -55
  66. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +0 -20
  67. package/esm2022/components/dialog/dialog.component.mjs +0 -275
  68. package/esm2022/components/dialog/dialog.component.module.mjs +0 -23
  69. package/esm2022/components/dialog/dialog.model.mjs +0 -2
  70. package/esm2022/components/dialog/dialog.service.mjs +0 -36
  71. package/esm2022/components/divider/divider.component.mjs +0 -65
  72. package/esm2022/components/divider/divider.component.module.mjs +0 -19
  73. package/esm2022/components/divider/divider.model.mjs +0 -2
  74. package/esm2022/components/donut-chart/donut-chart.component.mjs +0 -122
  75. package/esm2022/components/donut-chart/donut-chart.component.model.mjs +0 -2
  76. package/esm2022/components/donut-chart/donut-chart.component.module.mjs +0 -20
  77. package/esm2022/components/dropdown/dropdown.component.mjs +0 -378
  78. package/esm2022/components/dropdown/dropdown.component.module.mjs +0 -57
  79. package/esm2022/components/dropdown/dropdown.model.mjs +0 -2
  80. package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +0 -45
  81. package/esm2022/components/elevation-shadow/elevation-shadow.component.module.mjs +0 -18
  82. package/esm2022/components/elevation-shadow/elevation-shadow.constant.mjs +0 -9
  83. package/esm2022/components/empty-state/empty-state.component.mjs +0 -301
  84. package/esm2022/components/empty-state/empty-state.component.module.mjs +0 -21
  85. package/esm2022/components/empty-state/empty-state.model.mjs +0 -2
  86. package/esm2022/components/field/field.component.mjs +0 -574
  87. package/esm2022/components/field/field.component.module.mjs +0 -64
  88. package/esm2022/components/field/field.model.mjs +0 -2
  89. package/esm2022/components/file-upload/file-upload.component.mjs +0 -307
  90. package/esm2022/components/file-upload/file-upload.component.module.mjs +0 -40
  91. package/esm2022/components/filter-button/filter-button.component.mjs +0 -255
  92. package/esm2022/components/filter-button/filter-button.component.module.mjs +0 -58
  93. package/esm2022/components/filter-button/filter-button.model.mjs +0 -2
  94. package/esm2022/components/gaussian-chart/gaussian-chart.component.mjs +0 -254
  95. package/esm2022/components/gaussian-chart/gaussian-chart.module.mjs +0 -42
  96. package/esm2022/components/icon/icon-svg-content.mjs +0 -491
  97. package/esm2022/components/icon/icon.component.mjs +0 -178
  98. package/esm2022/components/icon/icon.component.module.mjs +0 -21
  99. package/esm2022/components/icon/icon.config.mjs +0 -780
  100. package/esm2022/components/icon/icon.model.mjs +0 -2
  101. package/esm2022/components/icon-label/icon-label.component.mjs +0 -74
  102. package/esm2022/components/icon-label/icon-label.component.module.mjs +0 -20
  103. package/esm2022/components/inline-field/inline-field.component.mjs +0 -320
  104. package/esm2022/components/inline-field/inline-field.component.module.mjs +0 -43
  105. package/esm2022/components/inline-field/inline-field.model.mjs +0 -2
  106. package/esm2022/components/logo/logo.component.mjs +0 -165
  107. package/esm2022/components/logo/logo.component.module.mjs +0 -18
  108. package/esm2022/components/logo/logo.model.mjs +0 -32
  109. package/esm2022/components/media-card/media-card.component.mjs +0 -47
  110. package/esm2022/components/media-dialog/media-dialog.component.mjs +0 -75
  111. package/esm2022/components/media-dialog/media-dialog.model.mjs +0 -2
  112. package/esm2022/components/multi-input/multi-input.component.mjs +0 -271
  113. package/esm2022/components/multi-input/multi-input.component.module.mjs +0 -58
  114. package/esm2022/components/multi-input/multi-input.model.mjs +0 -2
  115. package/esm2022/components/multi-input/required-multi-input.validator.mjs +0 -14
  116. package/esm2022/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.mjs +0 -86
  117. package/esm2022/components/navbar/navbar.component.mjs +0 -212
  118. package/esm2022/components/navbar/navbar.component.module.mjs +0 -71
  119. package/esm2022/components/navbar/navbar.model.mjs +0 -2
  120. package/esm2022/components/overflow-menu/overflow-menu.component.mjs +0 -254
  121. package/esm2022/components/overflow-menu/overflow-menu.component.module.mjs +0 -25
  122. package/esm2022/components/overflow-menu/overflow-menu.model.mjs +0 -2
  123. package/esm2022/components/page-header/page-header.component.mjs +0 -71
  124. package/esm2022/components/page-header/page-header.component.module.mjs +0 -20
  125. package/esm2022/components/paginator/paginator.component.mjs +0 -87
  126. package/esm2022/components/paginator/paginator.component.module.mjs +0 -19
  127. package/esm2022/components/password-criteria/password.component.mjs +0 -111
  128. package/esm2022/components/password-criteria/password.component.module.mjs +0 -39
  129. package/esm2022/components/password-strength/password-strength.component.mjs +0 -93
  130. package/esm2022/components/password-strength/password-strength.component.module.mjs +0 -21
  131. package/esm2022/components/phone-input/join-strings.pipe.mjs +0 -14
  132. package/esm2022/components/phone-input/phone-input.component.mjs +0 -354
  133. package/esm2022/components/phone-input/phone-input.component.module.mjs +0 -63
  134. package/esm2022/components/phone-input/phone-input.model.mjs +0 -2
  135. package/esm2022/components/progress-bar/progress-bar.component.mjs +0 -103
  136. package/esm2022/components/progress-bar/progress-bar.component.module.mjs +0 -21
  137. package/esm2022/components/prompt/prompt.component.mjs +0 -187
  138. package/esm2022/components/prompt/prompt.model.mjs +0 -2
  139. package/esm2022/components/prompt/prompt.module.mjs +0 -62
  140. package/esm2022/components/radial-progress/radial-progress.component.mjs +0 -118
  141. package/esm2022/components/radial-progress/radial-progress.component.module.mjs +0 -20
  142. package/esm2022/components/radial-progress/radial-progress.model.mjs +0 -11
  143. package/esm2022/components/radio-button/radio-button.component.mjs +0 -344
  144. package/esm2022/components/radio-button/radio-button.component.module.mjs +0 -25
  145. package/esm2022/components/radio-button/radio-button.model.mjs +0 -2
  146. package/esm2022/components/rating/half-star.pipe.mjs +0 -23
  147. package/esm2022/components/rating/rating.component.mjs +0 -106
  148. package/esm2022/components/rating/rating.component.module.mjs +0 -20
  149. package/esm2022/components/scale/scale.component.mjs +0 -136
  150. package/esm2022/components/scale/scale.component.module.mjs +0 -18
  151. package/esm2022/components/scale-table/scale-table.component.mjs +0 -61
  152. package/esm2022/components/scale-table/scale-table.model.mjs +0 -2
  153. package/esm2022/components/segmented-bar/segmented-bar.component.mjs +0 -111
  154. package/esm2022/components/segmented-bar/segmented-bar.component.module.mjs +0 -22
  155. package/esm2022/components/segmented-bar/segmented-bar.model.mjs +0 -2
  156. package/esm2022/components/segmented-button/segmented-button.component.mjs +0 -104
  157. package/esm2022/components/segmented-button/segmented-button.component.module.mjs +0 -21
  158. package/esm2022/components/segmented-button/segmented-button.model.mjs +0 -2
  159. package/esm2022/components/selectable-card/selectable-card.component.mjs +0 -53
  160. package/esm2022/components/selectable-card/selectable-card.component.module.mjs +0 -20
  161. package/esm2022/components/side-panel/side-panel-data-injection-token.mjs +0 -3
  162. package/esm2022/components/side-panel/side-panel.animations.mjs +0 -26
  163. package/esm2022/components/side-panel/side-panel.component.mjs +0 -55
  164. package/esm2022/components/side-panel/side-panel.model.mjs +0 -54
  165. package/esm2022/components/side-panel/side-panel.service.mjs +0 -98
  166. package/esm2022/components/side-sheet/side-sheet.component.mjs +0 -105
  167. package/esm2022/components/side-sheet/side-sheet.component.module.mjs +0 -43
  168. package/esm2022/components/side-sheet/side-sheet.model.mjs +0 -2
  169. package/esm2022/components/side-sheet/side-sheet.service.mjs +0 -31
  170. package/esm2022/components/skeleton/skeleton.component.mjs +0 -74
  171. package/esm2022/components/skeleton/skeleton.model.mjs +0 -2
  172. package/esm2022/components/slider/slider.component.mjs +0 -256
  173. package/esm2022/components/slider/slider.component.module.mjs +0 -16
  174. package/esm2022/components/slider/slider.model.mjs +0 -2
  175. package/esm2022/components/snackbar/snackbar.component.mjs +0 -235
  176. package/esm2022/components/snackbar/snackbar.component.module.mjs +0 -25
  177. package/esm2022/components/snackbar/snackbar.model.mjs +0 -2
  178. package/esm2022/components/snackbar/snackbar.service.mjs +0 -42
  179. package/esm2022/components/spider-chart/spider-chart.component.mjs +0 -443
  180. package/esm2022/components/spider-chart/spider-chart.model.mjs +0 -4
  181. package/esm2022/components/spider-chart/spider-chart.module.mjs +0 -44
  182. package/esm2022/components/spinner/spinner.component.mjs +0 -84
  183. package/esm2022/components/spinner/spinner.model.mjs +0 -2
  184. package/esm2022/components/spinner/spinner.module.mjs +0 -20
  185. package/esm2022/components/step/step.component.mjs +0 -209
  186. package/esm2022/components/step/step.component.module.mjs +0 -21
  187. package/esm2022/components/stepper/stepper.component.mjs +0 -198
  188. package/esm2022/components/stepper/stepper.component.module.mjs +0 -44
  189. package/esm2022/components/stepper/stepper.model.mjs +0 -2
  190. package/esm2022/components/table/sentence-case.pipe.mjs +0 -19
  191. package/esm2022/components/table/table.component.mjs +0 -273
  192. package/esm2022/components/table/table.component.module.mjs +0 -61
  193. package/esm2022/components/table/table.model.mjs +0 -25
  194. package/esm2022/components/tabs/tab.directive.mjs +0 -63
  195. package/esm2022/components/tabs/tabs.component.mjs +0 -219
  196. package/esm2022/components/tabs/tabs.component.module.mjs +0 -23
  197. package/esm2022/components/tabs/tabs.model.mjs +0 -2
  198. package/esm2022/components/tag/tag.component.mjs +0 -212
  199. package/esm2022/components/tag/tag.component.module.mjs +0 -24
  200. package/esm2022/components/tag/tag.model.mjs +0 -2
  201. package/esm2022/components/toggle/toggle.component.mjs +0 -190
  202. package/esm2022/components/toggle/toggle.component.module.mjs +0 -24
  203. package/esm2022/components/toggle/toggle.model.mjs +0 -2
  204. package/esm2022/components/tooltip/tooltip-template.directive.mjs +0 -133
  205. package/esm2022/components/tooltip/tooltip.component.mjs +0 -108
  206. package/esm2022/components/tooltip/tooltip.component.module.mjs +0 -27
  207. package/esm2022/components/tooltip/tooltip.model.mjs +0 -8
  208. package/esm2022/components/universal-skills-report/universal-skills-report.component.mjs +0 -80
  209. package/esm2022/components/universal-skills-report/universal-skills-report.component.module.mjs +0 -43
  210. package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.mjs +0 -109
  211. package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.module.mjs +0 -52
  212. package/esm2022/components/validation-error/validation-error.component.mjs +0 -55
  213. package/esm2022/components/validation-error/validation-error.model.mjs +0 -2
  214. package/esm2022/components/validation-error/validation-error.module.mjs +0 -20
  215. package/esm2022/directives/digits-only.directive.mjs +0 -77
  216. package/esm2022/directives/drag-drop.directive.mjs +0 -55
  217. package/esm2022/directives/dynamic-component.directive.mjs +0 -40
  218. package/esm2022/directives/ellipse-text.directive.mjs +0 -51
  219. package/esm2022/directives/select-text.directive.mjs +0 -40
  220. package/esm2022/directives/step-line-element.directive.mjs +0 -51
  221. package/esm2022/models/application-theme.model.mjs +0 -2
  222. package/esm2022/models/checkbox.model.mjs +0 -2
  223. package/esm2022/models/colors.model.mjs +0 -78
  224. package/esm2022/models/keyboard-events.model.mjs +0 -13
  225. package/esm2022/models/screen-breakpoints.model.mjs +0 -7
  226. package/esm2022/models/universal-skills-report.model.mjs +0 -33
  227. package/esm2022/pipes/data-property-getter.mjs +0 -33
  228. package/esm2022/pipes/has-validation-error.pipe.mjs +0 -27
  229. package/esm2022/pipes/memoize-func.pipe.mjs +0 -39
  230. package/esm2022/pipes/name-initials.pipe.mjs +0 -25
  231. package/esm2022/pipes/truncate.pipe.mjs +0 -34
  232. package/esm2022/pipes/ui-ordinal-suffix.pipe.mjs +0 -31
  233. package/esm2022/pipes/ui-translate.pipe.mjs +0 -81
  234. package/esm2022/providers/is-large-tablet.mjs +0 -11
  235. package/esm2022/providers/is-mobile.mjs +0 -11
  236. package/esm2022/public-api.mjs +0 -259
  237. package/esm2022/services/icons.service.mjs +0 -22
  238. package/esm2022/services/universal-skills.service.mjs +0 -85
  239. package/esm2022/testgorilla-tgo-ui.mjs +0 -5
  240. package/esm2022/utils/alert-bar.model.mjs +0 -2
  241. package/esm2022/utils/alert-bars.utils.mjs +0 -34
  242. package/esm2022/utils/autocomplete-utils.mjs +0 -78
  243. package/esm2022/utils/color-contrast.mjs +0 -131
  244. package/esm2022/utils/hex-to-rgb.mjs +0 -9
  245. package/esm2022/utils/localization/language.model.mjs +0 -16
  246. package/esm2022/utils/localization/language.service.mjs +0 -44
  247. package/esm2022/utils/table.utils.mjs +0 -25
@@ -1,354 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
2
- import { UntypedFormControl, } from '@angular/forms';
3
- import { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
4
- import { MatInput } from '@angular/material/input';
5
- import { MatSelect } from '@angular/material/select';
6
- import { parsePhoneNumber } from 'libphonenumber-js';
7
- import { BehaviorSubject, combineLatest, debounceTime, delay, filter, first, map, startWith, Subject, take, tap, } from 'rxjs';
8
- import { takeUntil } from 'rxjs/operators';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/forms";
11
- import * as i2 from "@angular/material/core";
12
- import * as i3 from "@angular/cdk/a11y";
13
- import * as i4 from "@angular/platform-browser";
14
- import * as i5 from "@angular/common";
15
- import * as i6 from "@angular/material/form-field";
16
- import * as i7 from "@angular/material/select";
17
- import * as i8 from "@angular/material/input";
18
- import * as i9 from "ngx-mat-select-search";
19
- import * as i10 from "../icon/icon.component";
20
- import * as i11 from "../validation-error/validation-error.component";
21
- import * as i12 from "../../pipes/ui-translate.pipe";
22
- import * as i13 from "../../pipes/has-validation-error.pipe";
23
- import * as i14 from "./join-strings.pipe";
24
- export class PhoneInputComponent {
25
- /**
26
- * Phone number
27
- *
28
- * @type {string}
29
- * @memberof PhoneInputComponent
30
- */
31
- set value(value) {
32
- this.initialValue = this.initialValue || value;
33
- try {
34
- const parsed = parsePhoneNumber(value);
35
- const formatted = parsed.formatInternational();
36
- this.selectedCountry = this.getCountryByAlpha2Code(parsed.country) || this.selectedCountry;
37
- this.form.patchValue({ phone_number: formatted.replace(this.selectedCountry.callingCode, '') });
38
- }
39
- catch (err) {
40
- if (value?.length <= 4) {
41
- this.selectedCountry = this.getCountryByCallingCode(value) || this.selectedCountry;
42
- }
43
- this.form.patchValue({ phone_number: value?.replace(this.selectedCountry?.callingCode, '') });
44
- }
45
- this.stateChanges.next();
46
- }
47
- /**
48
- * Country list for select
49
- *
50
- * @type {UICountry[]}
51
- * @memberof PhoneInputComponent
52
- */
53
- set countryList(countryList) {
54
- this.loadCountries$.next(countryList);
55
- this.selectedCountry = this.selectedCountry ?? countryList[0];
56
- }
57
- /**
58
- * Placeholder input
59
- *
60
- * @type {text}
61
- * @memberof PhoneInputComponent
62
- */
63
- set placeholder(value) {
64
- this.internalPlaceholder = value;
65
- this.stateChanges.next();
66
- }
67
- /**
68
- * Input field errors
69
- *
70
- * @type {string}
71
- * @memberof PhoneInputComponent
72
- */
73
- set errors(errors) {
74
- if (errors) {
75
- this._errors = errors?.filter(Boolean).map(error => this.sanitizer.bypassSecurityTrustHtml(error));
76
- this.errorsLength = this.setErrorsLength();
77
- }
78
- }
79
- static { this.nextId = 0; }
80
- get shouldLabelFloat() {
81
- return true;
82
- }
83
- get empty() {
84
- return !!this.form.value;
85
- }
86
- get errorState() {
87
- return this.errorMatcher.isErrorState(this.ngControl.control, null);
88
- }
89
- get value() {
90
- return this.getNumberWithCountryCode();
91
- }
92
- get placeholder() {
93
- return this.internalPlaceholder;
94
- }
95
- constructor(ngControl, errorMatcher, fb, focusMonitor, ref, sanitizer, defaultAppTheme) {
96
- this.ngControl = ngControl;
97
- this.errorMatcher = errorMatcher;
98
- this.fb = fb;
99
- this.focusMonitor = focusMonitor;
100
- this.ref = ref;
101
- this.sanitizer = sanitizer;
102
- this.defaultAppTheme = defaultAppTheme;
103
- /**
104
- *
105
- * Defines the application theme
106
- *
107
- * @type {ApplicationTheme}
108
- * @memberof PhoneInputComponent
109
- */
110
- this.applicationTheme = 'light';
111
- /**
112
- * Indicator of the phone input width
113
- * @property fullWidth
114
- * @type {boolean}
115
- * @memberof PhoneInputComponent
116
- */
117
- this.fullWidth = false;
118
- /**
119
- * Hide in build errors for Reactive Forms
120
- *
121
- * @type {number}
122
- * @memberof PhoneInputComponent
123
- */
124
- this.hideBuiltInErrors = false;
125
- /**
126
- * Hide label in errors
127
- *
128
- * @type {number}
129
- * @memberof PhoneInputComponent
130
- */
131
- this.hideLabelInErrors = false;
132
- this.countries = new BehaviorSubject([]);
133
- this.countries$ = this.countries.asObservable();
134
- this.form = this.fb.group({
135
- phone_number: new UntypedFormControl(),
136
- });
137
- this.controlType = 'phone-number';
138
- this.loadCountries$ = new BehaviorSubject([]);
139
- this.countryCode = new BehaviorSubject('US');
140
- this.stateChanges = new Subject();
141
- this.selectFilterCtrl = new UntypedFormControl('');
142
- this.countryFlagSrc = 'assets/svg-country-flags/';
143
- this.id = `phone-number${PhoneInputComponent.nextId++}`;
144
- this.describedBy = '';
145
- this.DEFAULT_COUNTRY_CODE = 'US';
146
- this.unsubscribeAll$ = new Subject();
147
- this.trackByFn = (index, value) => value.changingThisBreaksApplicationSecurity;
148
- if (this.ngControl != null) {
149
- this.ngControl.valueAccessor = this;
150
- }
151
- if (defaultAppTheme) {
152
- this.applicationTheme = defaultAppTheme;
153
- }
154
- }
155
- /**
156
- * Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors
157
- * to display validation errors that might happen (e.g. required)
158
- */
159
- ngDoCheck() {
160
- if (this.ngControl?.touched || this.ngControl?.errors) {
161
- this.ref.markForCheck();
162
- }
163
- }
164
- ngOnInit() {
165
- this.loadCountries();
166
- this.preSelectCountry();
167
- this.subscribeToFocusEvents();
168
- }
169
- setErrorsLength() {
170
- if (!!this._errors) {
171
- return this._errors.filter(err => !!err).length > 0;
172
- }
173
- return false;
174
- }
175
- setDescribedByIds(ids) {
176
- this.userAriaDescribedBy = ids.join(' ');
177
- }
178
- writeValue(phoneNumber) {
179
- if (phoneNumber) {
180
- this.value = phoneNumber;
181
- }
182
- }
183
- registerOnChange(fn) {
184
- this.onChange = fn;
185
- }
186
- registerOnTouched(fn) {
187
- this.onTouch = fn;
188
- }
189
- setDisabledState(isDisabled) {
190
- if (isDisabled) {
191
- this.form.disable();
192
- }
193
- else {
194
- this.form.enable();
195
- }
196
- this.disabled = isDisabled;
197
- this.stateChanges.next();
198
- this.ref.markForCheck();
199
- }
200
- ngOnDestroy() {
201
- this.focusMonitor.stopMonitoring(this.input);
202
- this.focusMonitor.stopMonitoring(this.select);
203
- this.stateChanges.complete();
204
- this.unsubscribeAll$.next();
205
- this.unsubscribeAll$.complete();
206
- }
207
- onOptionsSelected(value) {
208
- this.setCountry(value);
209
- }
210
- onInput(value) {
211
- this.value = (this.selectedCountry?.callingCode ?? '') + value;
212
- this.onChange(this.value);
213
- }
214
- filteredCountryTrackByMethod(index, el) {
215
- return el.alpha2Code;
216
- }
217
- setCountry(country) {
218
- if (country) {
219
- this.selectedCountry = country;
220
- }
221
- this.value = this.getNumberWithCountryCode();
222
- this.onChange(this.value);
223
- }
224
- getNumberWithCountryCode() {
225
- const nationalNumber = this.form.value?.phone_number;
226
- return nationalNumber ? (this.selectedCountry?.callingCode ?? '') + nationalNumber : '';
227
- }
228
- subscribeToFocusEvents() {
229
- const selectAndInputFocus$ = combineLatest([
230
- this.focusMonitor.monitor(this.select),
231
- this.focusMonitor.monitor(this.input),
232
- ]).pipe(takeUntil(this.unsubscribeAll$), debounceTime(10));
233
- selectAndInputFocus$.subscribe(([selectFocus, inputFocus]) => {
234
- this.focused = !!(selectFocus || inputFocus);
235
- this.stateChanges.next();
236
- });
237
- selectAndInputFocus$.pipe(take(1)).subscribe(() => {
238
- this.onTouch();
239
- });
240
- }
241
- preSelectCountry() {
242
- this.setDisabledState(true);
243
- combineLatest([
244
- this.countries$.pipe(filter(countries => countries.length > 0), first()),
245
- this.countryCode,
246
- ])
247
- .pipe(map(([countries, selectedCountry]) => {
248
- if (!this.initialValue) {
249
- const country = this.getCountryByAlpha2Code(selectedCountry) || this.getCountryByAlpha2Code(this.DEFAULT_COUNTRY_CODE);
250
- this.setCountry(country);
251
- }
252
- else {
253
- this.value = this.initialValue;
254
- }
255
- this.setDisabledState(false);
256
- this.ref.markForCheck();
257
- }))
258
- .subscribe();
259
- }
260
- getCountryByAlpha2Code(alpha2Code) {
261
- return this.countries.value.find(country => country.alpha2Code === alpha2Code);
262
- }
263
- getCountryByCallingCode(callingCode) {
264
- return this.countries.value.find(country => country.callingCode === callingCode);
265
- }
266
- loadCountries() {
267
- const searchText$ = this.selectFilterCtrl.valueChanges.pipe(debounceTime(100), startWith(''));
268
- combineLatest([this.loadCountries$, searchText$])
269
- .pipe(takeUntil(this.unsubscribeAll$), tap(([countries, searchText]) => {
270
- const searchTextLowerCase = searchText.toLowerCase();
271
- const filteredCountries = countries
272
- .filter(option => option.name.toLowerCase().includes(searchTextLowerCase) ||
273
- option.alpha2Code.toLowerCase().includes(searchTextLowerCase) ||
274
- option.callingCode.toLowerCase().includes(searchTextLowerCase))
275
- .sort((optionA, optionB) => (optionB.name.startsWith(searchText) ? 1 : -1));
276
- this.countries.next(filteredCountries);
277
- }), delay(1), tap(() => {
278
- const countryFound = this.getCountryByAlpha2Code(this.selectedCountry?.alpha2Code);
279
- this.selectedCountry = countryFound || this.selectedCountry;
280
- this.ref.markForCheck();
281
- }))
282
- .subscribe();
283
- }
284
- disableClick(ev) {
285
- ev.preventDefault();
286
- ev.stopPropagation();
287
- }
288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneInputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.ErrorStateMatcher }, { token: i1.UntypedFormBuilder }, { token: i3.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i4.DomSanitizer }, { token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
289
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PhoneInputComponent, selector: "ui-phone-input", inputs: { value: "value", countryList: "countryList", placeholder: "placeholder", disabled: "disabled", required: "required", applicationTheme: "applicationTheme", fullWidth: "fullWidth", errors: "errors", hideBuiltInErrors: "hideBuiltInErrors", hideLabelInErrors: "hideLabelInErrors" }, host: { properties: { "attr.disabled": "this.disabled", "attr.theme": "this.applicationTheme", "id": "this.id", "class.floated": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy" } }, providers: [
290
- {
291
- provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
292
- useValue: { overlayPanelClass: 'phone-number-autocomplete' },
293
- },
294
- ], viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true, read: ElementRef, static: true }, { propertyName: "select", first: true, predicate: MatSelect, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-form-field\n [formGroup]=\"form\"\n appearance=\"outline\"\n [color]=\"(errorsLength || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [ngClass]=\"{ disabled: form.disabled || disabled, 'full-width': fullWidth }\"\n>\n <mat-label>{{ 'COMMON.PHONE_NUMBER' | uiTranslate | async }} <span *ngIf=\"required\">*</span></mat-label>\n\n <div matPrefix class=\"country\">\n <button class=\"selected-flag\" matPrefix *ngIf=\"selectedCountry\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + selectedCountry?.alpha2Code?.toLowerCase() + '.svg'\"\n [alt]=\"'Country flag ' + selectedCountry?.alpha2Code?.toLowerCase()\">\n </button>\n <mat-select\n #select\n (selectionChange)=\"onOptionsSelected($event.value)\"\n [value]=\"selectedCountry\"\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'phone-number-select' + ' ' + applicationTheme\"\n [ngClass]=\"{ opened: select.panelOpen }\"\n >\n <mat-select-trigger>{{ selectedCountry?.callingCode }}</mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search\n [formControl]=\"selectFilterCtrl\"\n ngDefaultControl\n placeholderLabel=\"\"\n noEntriesFoundLabel=\"\"\n >\n <ui-icon ngxMatSelectSearchClear size=\"24\" [name]=\"'Close-in-line'\"></ui-icon>\n </ngx-mat-select-search>\n </mat-option>\n <mat-option *ngFor=\"let country of countries$ | async; trackBy: filteredCountryTrackByMethod\" [value]=\"country\">\n <div class=\"country-option\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + country?.alpha2Code?.toLowerCase()! + '.svg'\"\n [alt]=\"'Country flag ' + country?.alpha2Code?.toLowerCase()!\">\n <small>{{ $any([country?.name, '(' + country?.callingCode + ')']) | joinStrings : ' ' }}</small>\n </div>\n </mat-option>\n </mat-select>\n </div>\n\n <input\n (input)=\"onInput(form.get('phone_number')!.value)\"\n formControlName=\"phone_number\"\n (click)=\"disableClick($event)\"\n [ngStyle]=\"{ opacity: disabled ? 0.5 : 1 }\"\n [required]=\"required\"\n matInput\n type=\"text\"\n />\n\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : ('COMMON.PHONE_NUMBER' | uiTranslate | async)\"></ui-validation-error>\n\n </mat-hint>\n</mat-form-field>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;align-items:center}:host .selected-flag{display:flex;position:relative;margin-right:1rem;align-items:center}:host mat-spinner{padding:0 20px}:host .country{cursor:pointer!important;display:flex;align-items:center;margin:-8px 12px 0 16px}:host .country button{margin:0 8px 0 0;background:transparent;border:unset;padding:0}:host ::ng-deep .mat-mdc-select-trigger{display:flex;gap:8px}:host mat-select{flex:0}:host .mat-mdc-form-field{min-width:320px}:host .mat-mdc-form-field.full-width{width:100%}:host .mat-mdc-form-field.disabled ::ng-deep *{border-color:#d3d3d3;color:#d3d3d3;pointer-events:none}:host .mat-mdc-form-field.disabled ::ng-deep * .mat-mdc-select-arrow{opacity:.1}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow{background:url('data:image/svg+xml,<svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<path d=\"M12 17.025L6 11.025L7.4 9.625L12 14.225L16.6 9.625L18 11.025L12 17.025Z\" fill=\"currentColor\"/>%0A</svg>%0A');background-size:cover;width:16px;height:16px}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow svg,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow svg{display:none}:host[theme=dark] mat-select.opened ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select.opened ::ng-deep .mat-mdc-select-arrow{background:url('data:image/svg+xml,<svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<path d=\"M12 9.6249L18 15.6249L16.6 17.0249L12 12.4249L7.4 17.0249L6 15.6249L12 9.6249Z\" fill=\"currentColor\"/>%0A</svg>%0A');background-size:cover;width:16px;height:16px}::ng-deep .mat-form-field-appearance-outline mat-select .mat-select-arrow-wrapper{transform:none}::ng-deep .mat-select-panel.phone-number-select{margin-top:36px;margin-left:45px}::ng-deep .mat-select-search-inner{box-shadow:none!important;height:48px;background-color:#fff!important;border-bottom:none!important}::ng-deep .mat-select-search-inner .mat-select-search-inner-row{width:100%}::ng-deep .mat-select-search-inner button.mat-select-search-clear{right:35px}::ng-deep .mat-select-search-inner button.mat-select-search-clear mat-icon{font-size:20px}@media screen and (min-width: 599px){::ng-deep .mat-select-panel.phone-number-select{margin-left:-33px;min-width:510px}::ng-deep .mat-select-search-inner{min-width:calc(100% + 33px)!important}}ngx-mat-select-search ::ng-deep button .mat-mdc-button-persistent-ripple,ngx-mat-select-search ::ng-deep button .mat-ripple,ngx-mat-select-search ::ng-deep button .mat-mdc-button-ripple{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i7.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatSelectSearchComponent, selector: "ngx-mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti", "recreateValuesArray"], outputs: ["toggleAll"] }, { kind: "directive", type: i9.MatSelectSearchClearDirective, selector: "[ngxMatSelectSearchClear]" }, { kind: "component", type: i10.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i11.ValidationErrorComponent, selector: "ui-validation-error", inputs: ["ngControl", "touchedOn", "errorMessage", "label", "applicationTheme"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i13.HasValidationErrorPipe, name: "hasValidationError" }, { kind: "pipe", type: i14.JoinStringsPipe, name: "joinStrings" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
295
- }
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneInputComponent, decorators: [{
297
- type: Component,
298
- args: [{ selector: 'ui-phone-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
299
- {
300
- provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
301
- useValue: { overlayPanelClass: 'phone-number-autocomplete' },
302
- },
303
- ], template: "<mat-form-field\n [formGroup]=\"form\"\n appearance=\"outline\"\n [color]=\"(errorsLength || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [ngClass]=\"{ disabled: form.disabled || disabled, 'full-width': fullWidth }\"\n>\n <mat-label>{{ 'COMMON.PHONE_NUMBER' | uiTranslate | async }} <span *ngIf=\"required\">*</span></mat-label>\n\n <div matPrefix class=\"country\">\n <button class=\"selected-flag\" matPrefix *ngIf=\"selectedCountry\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + selectedCountry?.alpha2Code?.toLowerCase() + '.svg'\"\n [alt]=\"'Country flag ' + selectedCountry?.alpha2Code?.toLowerCase()\">\n </button>\n <mat-select\n #select\n (selectionChange)=\"onOptionsSelected($event.value)\"\n [value]=\"selectedCountry\"\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'phone-number-select' + ' ' + applicationTheme\"\n [ngClass]=\"{ opened: select.panelOpen }\"\n >\n <mat-select-trigger>{{ selectedCountry?.callingCode }}</mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search\n [formControl]=\"selectFilterCtrl\"\n ngDefaultControl\n placeholderLabel=\"\"\n noEntriesFoundLabel=\"\"\n >\n <ui-icon ngxMatSelectSearchClear size=\"24\" [name]=\"'Close-in-line'\"></ui-icon>\n </ngx-mat-select-search>\n </mat-option>\n <mat-option *ngFor=\"let country of countries$ | async; trackBy: filteredCountryTrackByMethod\" [value]=\"country\">\n <div class=\"country-option\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + country?.alpha2Code?.toLowerCase()! + '.svg'\"\n [alt]=\"'Country flag ' + country?.alpha2Code?.toLowerCase()!\">\n <small>{{ $any([country?.name, '(' + country?.callingCode + ')']) | joinStrings : ' ' }}</small>\n </div>\n </mat-option>\n </mat-select>\n </div>\n\n <input\n (input)=\"onInput(form.get('phone_number')!.value)\"\n formControlName=\"phone_number\"\n (click)=\"disableClick($event)\"\n [ngStyle]=\"{ opacity: disabled ? 0.5 : 1 }\"\n [required]=\"required\"\n matInput\n type=\"text\"\n />\n\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : ('COMMON.PHONE_NUMBER' | uiTranslate | async)\"></ui-validation-error>\n\n </mat-hint>\n</mat-form-field>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;align-items:center}:host .selected-flag{display:flex;position:relative;margin-right:1rem;align-items:center}:host mat-spinner{padding:0 20px}:host .country{cursor:pointer!important;display:flex;align-items:center;margin:-8px 12px 0 16px}:host .country button{margin:0 8px 0 0;background:transparent;border:unset;padding:0}:host ::ng-deep .mat-mdc-select-trigger{display:flex;gap:8px}:host mat-select{flex:0}:host .mat-mdc-form-field{min-width:320px}:host .mat-mdc-form-field.full-width{width:100%}:host .mat-mdc-form-field.disabled ::ng-deep *{border-color:#d3d3d3;color:#d3d3d3;pointer-events:none}:host .mat-mdc-form-field.disabled ::ng-deep * .mat-mdc-select-arrow{opacity:.1}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow{background:url('data:image/svg+xml,<svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<path d=\"M12 17.025L6 11.025L7.4 9.625L12 14.225L16.6 9.625L18 11.025L12 17.025Z\" fill=\"currentColor\"/>%0A</svg>%0A');background-size:cover;width:16px;height:16px}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow svg,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow svg{display:none}:host[theme=dark] mat-select.opened ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select.opened ::ng-deep .mat-mdc-select-arrow{background:url('data:image/svg+xml,<svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<path d=\"M12 9.6249L18 15.6249L16.6 17.0249L12 12.4249L7.4 17.0249L6 15.6249L12 9.6249Z\" fill=\"currentColor\"/>%0A</svg>%0A');background-size:cover;width:16px;height:16px}::ng-deep .mat-form-field-appearance-outline mat-select .mat-select-arrow-wrapper{transform:none}::ng-deep .mat-select-panel.phone-number-select{margin-top:36px;margin-left:45px}::ng-deep .mat-select-search-inner{box-shadow:none!important;height:48px;background-color:#fff!important;border-bottom:none!important}::ng-deep .mat-select-search-inner .mat-select-search-inner-row{width:100%}::ng-deep .mat-select-search-inner button.mat-select-search-clear{right:35px}::ng-deep .mat-select-search-inner button.mat-select-search-clear mat-icon{font-size:20px}@media screen and (min-width: 599px){::ng-deep .mat-select-panel.phone-number-select{margin-left:-33px;min-width:510px}::ng-deep .mat-select-search-inner{min-width:calc(100% + 33px)!important}}ngx-mat-select-search ::ng-deep button .mat-mdc-button-persistent-ripple,ngx-mat-select-search ::ng-deep button .mat-ripple,ngx-mat-select-search ::ng-deep button .mat-mdc-button-ripple{display:none}\n"] }]
304
- }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
305
- type: Optional
306
- }, {
307
- type: Self
308
- }] }, { type: i2.ErrorStateMatcher }, { type: i1.UntypedFormBuilder }, { type: i3.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: i4.DomSanitizer }, { type: undefined, decorators: [{
309
- type: Optional
310
- }, {
311
- type: Inject,
312
- args: ['CANOPYUI_DEFAULT_APPLICATION_THEME']
313
- }] }], propDecorators: { value: [{
314
- type: Input
315
- }], countryList: [{
316
- type: Input
317
- }], placeholder: [{
318
- type: Input
319
- }], disabled: [{
320
- type: HostBinding,
321
- args: ['attr.disabled']
322
- }, {
323
- type: Input
324
- }], required: [{
325
- type: Input
326
- }], applicationTheme: [{
327
- type: HostBinding,
328
- args: ['attr.theme']
329
- }, {
330
- type: Input
331
- }], fullWidth: [{
332
- type: Input
333
- }], errors: [{
334
- type: Input
335
- }], hideBuiltInErrors: [{
336
- type: Input
337
- }], hideLabelInErrors: [{
338
- type: Input
339
- }], input: [{
340
- type: ViewChild,
341
- args: [MatInput, { read: ElementRef, static: true }]
342
- }], select: [{
343
- type: ViewChild,
344
- args: [MatSelect, { read: ElementRef, static: true }]
345
- }], id: [{
346
- type: HostBinding
347
- }], shouldLabelFloat: [{
348
- type: HostBinding,
349
- args: ['class.floated']
350
- }], describedBy: [{
351
- type: HostBinding,
352
- args: ['attr.aria-describedby']
353
- }] } });
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3Bob25lLWlucHV0L3Bob25lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9waG9uZS1pbnB1dC9waG9uZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sS0FBSyxFQUNMLEdBQUcsRUFFSCxTQUFTLEVBQ1QsT0FBTyxFQUNQLElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQjNDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7Ozs7O09BS0c7SUFDSCxJQUNJLEtBQUssQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxZ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LEVBQUUsZ0NBQWdDOzRCQUN6QyxRQUFRLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSwyQkFBMkIsRUFBRTt5QkFDN0Q7cUJBQ0Y7OzBCQTJLRSxRQUFROzswQkFBSSxJQUFJOzswQkFNaEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7eUNBdkt0RCxLQUFLO3NCQURSLEtBQUs7Z0JBdUJPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQWNOLFFBQVE7c0JBRlAsV0FBVzt1QkFBQyxlQUFlOztzQkFDM0IsS0FBSztnQkFTRyxRQUFRO3NCQUFoQixLQUFLO2dCQVdOLGdCQUFnQjtzQkFGZixXQUFXO3VCQUFDLFlBQVk7O3NCQUN4QixLQUFLO2dCQVNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBU08sTUFBTTtzQkFBbEIsS0FBSztnQkFhRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQW9CQyxLQUFLO3NCQURYLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdoRCxNQUFNO3NCQURaLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl4RCxFQUFFO3NCQURELFdBQVc7Z0JBSVIsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLGVBQWU7Z0JBS1UsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOZ0NvbnRyb2wsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBVbnR5cGVkRm9ybUdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgcGFyc2VQaG9uZU51bWJlciB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBkZWxheSxcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IFVJQ291bnRyeSB9IGZyb20gJy4vcGhvbmUtaW5wdXQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1waG9uZS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9waG9uZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bob25lLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUyxcbiAgICAgIHVzZVZhbHVlOiB7IG92ZXJsYXlQYW5lbENsYXNzOiAncGhvbmUtbnVtYmVyLWF1dG9jb21wbGV0ZScgfSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrIHtcbiAgLyoqXG4gICAqIFBob25lIG51bWJlclxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IHRoaXMuaW5pdGlhbFZhbHVlIHx8IHZhbHVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVBob25lTnVtYmVyKHZhbHVlKTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHBhcnNlZC5mb3JtYXRJbnRlcm5hdGlvbmFsKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IHRoaXMuZ2V0Q291bnRyeUJ5QWxwaGEyQ29kZShwYXJzZWQuY291bnRyeSEpIHx8IHRoaXMuc2VsZWN0ZWRDb3VudHJ5O1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBwaG9uZV9udW1iZXI6IGZvcm1hdHRlZC5yZXBsYWNlKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmNhbGxpbmdDb2RlLCAnJykgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodmFsdWU/Lmxlbmd0aCA8PSA0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5nZXRDb3VudHJ5QnlDYWxsaW5nQ29kZSh2YWx1ZSkgfHwgdGhpcy5zZWxlY3RlZENvdW50cnk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHBob25lX251bWJlcjogdmFsdWU/LnJlcGxhY2UodGhpcy5zZWxlY3RlZENvdW50cnk/LmNhbGxpbmdDb2RlLCAnJykgfSk7XG4gICAgfVxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudHJ5IGxpc3QgZm9yIHNlbGVjdFxuICAgKlxuICAgKiBAdHlwZSB7VUlDb3VudHJ5W119XG4gICAqIEBtZW1iZXJvZiBQaG9uZUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzZXQgY291bnRyeUxpc3QoY291bnRyeUxpc3Q6IFVJQ291bnRyeVtdKSB7XG4gICAgdGhpcy5sb2FkQ291bnRyaWVzJC5uZXh0KGNvdW50cnlMaXN0KTtcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID8/IGNvdW50cnlMaXN0WzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIGlucHV0XG4gICAqXG4gICAqIEB0eXBlIHt0ZXh0fVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmludGVybmFsUGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBpbnB1dCBpcyBkaXNhYmxlZFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBpcyByZXF1aXJlZCBvciBub3RcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBQaG9uZUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcbiAgICpcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBQaG9uZUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudGhlbWUnKVxuICBASW5wdXQoKVxuICBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICogSW5kaWNhdG9yIG9mIHRoZSBwaG9uZSBpbnB1dCB3aWR0aFxuICAgKiBAcHJvcGVydHkgZnVsbFdpZHRoXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZnVsbFdpZHRoID0gZmFsc2U7XG5cbiAgX2Vycm9yczogU2FmZUh0bWxbXTtcbiAgLyoqXG4gICAqIElucHV0IGZpZWxkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IGVycm9ycyhlcnJvcnM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGVycm9ycykge1xuICAgICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzPy5maWx0ZXIoQm9vbGVhbikubWFwKGVycm9yID0+IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGVycm9yKSk7XG4gICAgICB0aGlzLmVycm9yc0xlbmd0aCA9IHRoaXMuc2V0RXJyb3JzTGVuZ3RoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhpZGUgaW4gYnVpbGQgZXJyb3JzIGZvciBSZWFjdGl2ZSBGb3Jtc1xuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaGlkZUJ1aWx0SW5FcnJvcnMgPSBmYWxzZTtcblxuICAvKipcbiAgICogSGlkZSBsYWJlbCBpbiBlcnJvcnNcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGhpZGVMYWJlbEluRXJyb3JzID0gZmFsc2U7XG5cbiAgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgcHJpdmF0ZSBjb3VudHJpZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVJQ291bnRyeVtdPihbXSk7XG4gIHByb3RlY3RlZCBjb3VudHJpZXMkID0gdGhpcy5jb3VudHJpZXMuYXNPYnNlcnZhYmxlKCk7XG4gIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICBwaG9uZV9udW1iZXI6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKSxcbiAgfSk7XG4gIHByb3RlY3RlZCBjb250cm9sVHlwZSA9ICdwaG9uZS1udW1iZXInO1xuICBwcm90ZWN0ZWQgdXNlckFyaWFEZXNjcmliZWRCeT86IHN0cmluZztcbiAgcHJvdGVjdGVkIGxvYWRDb3VudHJpZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVSUNvdW50cnlbXT4oW10pO1xuICBwcm90ZWN0ZWQgY291bnRyeUNvZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ1VTJyk7XG4gIHByb3RlY3RlZCBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcm90ZWN0ZWQgZm9jdXNlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHNlbGVjdEZpbHRlckN0cmwgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKTtcbiAgcHJvdGVjdGVkIGVycm9yc0xlbmd0aDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvdW50cnlGbGFnU3JjID0gJ2Fzc2V0cy9zdmctY291bnRyeS1mbGFncy8nO1xuXG4gIEBWaWV3Q2hpbGQoTWF0SW5wdXQsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoTWF0U2VsZWN0LCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgc2VsZWN0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBASG9zdEJpbmRpbmcoKVxuICBpZCA9IGBwaG9uZS1udW1iZXIke1Bob25lSW5wdXRDb21wb25lbnQubmV4dElkKyt9YDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZsb2F0ZWQnKVxuICBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgZGVzY3JpYmVkQnkgPSAnJztcblxuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5mb3JtLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JNYXRjaGVyLmlzRXJyb3JTdGF0ZSh0aGlzLm5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbCwgbnVsbCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJXaXRoQ291bnRyeUNvZGUoKTtcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFBsYWNlaG9sZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsVmFsdWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0NPVU5UUllfQ09ERSA9ICdVUyc7XG4gIHByaXZhdGUgaW50ZXJuYWxQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDb3VudHJ5OiBVSUNvdW50cnk7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmVBbGwkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIGVycm9yTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lXG4gICkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWFyayBjb21wb25lbnQgdmlldyBhcyBkaXJ0eSB3aGVuIHRvdWNoZWQgcHJvZ3JhbW1hdGljYWxseSB3aXRoIG1hcmtBc1RvdWNoZWQvbWFya0FsbEFzVG91Y2hlZCBvciBlcnJvcnNcbiAgICogdG8gZGlzcGxheSB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IG1pZ2h0IGhhcHBlbiAoZS5nLiByZXF1aXJlZClcbiAgICovXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2w/LmVycm9ycykge1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkQ291bnRyaWVzKCk7XG4gICAgdGhpcy5wcmVTZWxlY3RDb3VudHJ5KCk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0ZvY3VzRXZlbnRzKCk7XG4gIH1cblxuICBzZXRFcnJvcnNMZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgaWYgKCEhdGhpcy5fZXJyb3JzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZXJyb3JzLmZpbHRlcihlcnIgPT4gISFlcnIpLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJBcmlhRGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xuICB9XG5cbiAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvblRvdWNoOiAoKSA9PiB2b2lkO1xuXG4gIHdyaXRlVmFsdWUocGhvbmVOdW1iZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChwaG9uZU51bWJlcikge1xuICAgICAgdGhpcy52YWx1ZSA9IHBob25lTnVtYmVyO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuaW5wdXQpO1xuICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuc2VsZWN0KTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb25PcHRpb25zU2VsZWN0ZWQodmFsdWU6IFVJQ291bnRyeSkge1xuICAgIHRoaXMuc2V0Q291bnRyeSh2YWx1ZSk7XG4gIH1cblxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gKHRoaXMuc2VsZWN0ZWRDb3VudHJ5Py5jYWxsaW5nQ29kZSA/PyAnJykgKyB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZmlsdGVyZWRDb3VudHJ5VHJhY2tCeU1ldGhvZChpbmRleDogbnVtYmVyLCBlbDogVUlDb3VudHJ5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZWwuYWxwaGEyQ29kZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q291bnRyeShjb3VudHJ5OiBVSUNvdW50cnkgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKGNvdW50cnkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0TnVtYmVyV2l0aENvdW50cnlDb2RlKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TnVtYmVyV2l0aENvdW50cnlDb2RlKCkge1xuICAgIGNvbnN0IG5hdGlvbmFsTnVtYmVyID0gdGhpcy5mb3JtLnZhbHVlPy5waG9uZV9udW1iZXIgYXMgc3RyaW5nO1xuICAgIHJldHVybiBuYXRpb25hbE51bWJlciA/ICh0aGlzLnNlbGVjdGVkQ291bnRyeT8uY2FsbGluZ0NvZGUgPz8gJycpICsgbmF0aW9uYWxOdW1iZXIgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9Gb2N1c0V2ZW50cygpIHtcbiAgICBjb25zdCBzZWxlY3RBbmRJbnB1dEZvY3VzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLnNlbGVjdCksXG4gICAgICB0aGlzLmZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuaW5wdXQpLFxuICAgIF0pLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSwgZGVib3VuY2VUaW1lKDEwKSk7XG5cbiAgICBzZWxlY3RBbmRJbnB1dEZvY3VzJC5zdWJzY3JpYmUoKFtzZWxlY3RGb2N1cywgaW5wdXRGb2N1c10pID0+IHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9ICEhKHNlbGVjdEZvY3VzIHx8IGlucHV0Rm9jdXMpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH0pO1xuXG4gICAgc2VsZWN0QW5kSW5wdXRGb2N1cyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByZVNlbGVjdENvdW50cnkoKSB7XG4gICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRydWUpO1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jb3VudHJpZXMkLnBpcGUoXG4gICAgICAgIGZpbHRlcihjb3VudHJpZXMgPT4gY291bnRyaWVzLmxlbmd0aCA+IDApLFxuICAgICAgICBmaXJzdCgpXG4gICAgICApLFxuICAgICAgdGhpcy5jb3VudHJ5Q29kZSxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoW2NvdW50cmllcywgc2VsZWN0ZWRDb3VudHJ5XSkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5pbml0aWFsVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cnkgPVxuICAgICAgICAgICAgICB0aGlzLmdldENvdW50cnlCeUFscGhhMkNvZGUoc2VsZWN0ZWRDb3VudHJ5KSB8fCB0aGlzLmdldENvdW50cnlCeUFscGhhMkNvZGUodGhpcy5ERUZBVUxUX0NPVU5UUllfQ09ERSk7XG4gICAgICAgICAgICB0aGlzLnNldENvdW50cnkoY291bnRyeSBhcyBVSUNvdW50cnkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q291bnRyeUJ5QWxwaGEyQ29kZShhbHBoYTJDb2RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudHJpZXMudmFsdWUuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuYWxwaGEyQ29kZSA9PT0gYWxwaGEyQ29kZSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvdW50cnlCeUNhbGxpbmdDb2RlKGNhbGxpbmdDb2RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudHJpZXMudmFsdWUuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuY2FsbGluZ0NvZGUgPT09IGNhbGxpbmdDb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZENvdW50cmllcygpOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hUZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5zZWxlY3RGaWx0ZXJDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgxMDApLCBzdGFydFdpdGgoJycpKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubG9hZENvdW50cmllcyQsIHNlYXJjaFRleHQkXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCQpLFxuICAgICAgICB0YXAoKFtjb3VudHJpZXMsIHNlYXJjaFRleHRdKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VhcmNoVGV4dExvd2VyQ2FzZSA9IHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZENvdW50cmllcyA9IGNvdW50cmllc1xuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgb3B0aW9uID0+XG4gICAgICAgICAgICAgICAgb3B0aW9uLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0TG93ZXJDYXNlKSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5hbHBoYTJDb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dExvd2VyQ2FzZSkgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uY2FsbGluZ0NvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0TG93ZXJDYXNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNvcnQoKG9wdGlvbkEsIG9wdGlvbkIpID0+IChvcHRpb25CLm5hbWUuc3RhcnRzV2l0aChzZWFyY2hUZXh0KSA/IDEgOiAtMSkpO1xuICAgICAgICAgIHRoaXMuY291bnRyaWVzLm5leHQoZmlsdGVyZWRDb3VudHJpZXMpO1xuICAgICAgICB9KSxcbiAgICAgICAgZGVsYXkoMSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY291bnRyeUZvdW5kID0gdGhpcy5nZXRDb3VudHJ5QnlBbHBoYTJDb2RlKHRoaXMuc2VsZWN0ZWRDb3VudHJ5Py5hbHBoYTJDb2RlKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGNvdW50cnlGb3VuZCB8fCB0aGlzLnNlbGVjdGVkQ291bnRyeTtcbiAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGRpc2FibGVDbGljayhldjogRXZlbnQpIHtcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgdHJhY2tCeUZuID0gKGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkpID0+IHZhbHVlLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7XG59XG4iLCI8bWF0LWZvcm0tZmllbGRcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxuICBbY29sb3JdPVwiKGVycm9yc0xlbmd0aCB8fCAobmdDb250cm9sPy5lcnJvcnMgJiYgbmdDb250cm9sPy50b3VjaGVkICkpID8gJ3dhcm4nIDogJ2FjY2VudCdcIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBmb3JtLmRpc2FibGVkIHx8IGRpc2FibGVkLCAnZnVsbC13aWR0aCc6IGZ1bGxXaWR0aCB9XCJcbj5cbiAgPG1hdC1sYWJlbD57eyAnQ09NTU9OLlBIT05FX05VTUJFUicgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19IDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbWF0LWxhYmVsPlxuXG4gIDxkaXYgbWF0UHJlZml4IGNsYXNzPVwiY291bnRyeVwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzZWxlY3RlZC1mbGFnXCIgbWF0UHJlZml4ICpuZ0lmPVwic2VsZWN0ZWRDb3VudHJ5XCI+XG4gICAgICA8aW1nIFtoZWlnaHRdPVwiMjBcIiBbd2lkdGhdPVwiMjRcIiBbYXR0ci5zcmNdPVwiY291bnRyeUZsYWdTcmMgKyBzZWxlY3RlZENvdW50cnk/LmFscGhhMkNvZGU/LnRvTG93ZXJDYXNlKCkgKyAnLnN2ZydcIlxuICAgICAgICAgICBbYWx0XT1cIidDb3VudHJ5IGZsYWcgJyArIHNlbGVjdGVkQ291bnRyeT8uYWxwaGEyQ29kZT8udG9Mb3dlckNhc2UoKVwiPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtc2VsZWN0XG4gICAgICAjc2VsZWN0XG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uT3B0aW9uc1NlbGVjdGVkKCRldmVudC52YWx1ZSlcIlxuICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkQ291bnRyeVwiXG4gICAgICBbZGlzYWJsZU9wdGlvbkNlbnRlcmluZ109XCJ0cnVlXCJcbiAgICAgIFtwYW5lbENsYXNzXT1cIidwaG9uZS1udW1iZXItc2VsZWN0JyArICcgJyArIGFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IHNlbGVjdC5wYW5lbE9wZW4gfVwiXG4gICAgPlxuICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj57eyBzZWxlY3RlZENvdW50cnk/LmNhbGxpbmdDb2RlIH19PC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICA8bWF0LW9wdGlvbj5cbiAgICAgICAgPG5neC1tYXQtc2VsZWN0LXNlYXJjaFxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWxlY3RGaWx0ZXJDdHJsXCJcbiAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgICAgcGxhY2Vob2xkZXJMYWJlbD1cIlwiXG4gICAgICAgICAgbm9FbnRyaWVzRm91bmRMYWJlbD1cIlwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktaWNvbiBuZ3hNYXRTZWxlY3RTZWFyY2hDbGVhciBzaXplPVwiMjRcIiBbbmFtZV09XCInQ2xvc2UtaW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgIDwvbmd4LW1hdC1zZWxlY3Qtc2VhcmNoPlxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgY291bnRyeSBvZiBjb3VudHJpZXMkIHwgYXN5bmM7IHRyYWNrQnk6IGZpbHRlcmVkQ291bnRyeVRyYWNrQnlNZXRob2RcIiBbdmFsdWVdPVwiY291bnRyeVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudHJ5LW9wdGlvblwiPlxuICAgICAgICAgICAgPGltZyBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjI0XCIgW2F0dHIuc3JjXT1cImNvdW50cnlGbGFnU3JjICsgY291bnRyeT8uYWxwaGEyQ29kZT8udG9Mb3dlckNhc2UoKSEgKyAnLnN2ZydcIlxuICAgICAgICAgICAgICAgICBbYWx0XT1cIidDb3VudHJ5IGZsYWcgJyArIGNvdW50cnk/LmFscGhhMkNvZGU/LnRvTG93ZXJDYXNlKCkhXCI+XG4gICAgICAgICAgICA8c21hbGw+e3sgJGFueShbY291bnRyeT8ubmFtZSwgJygnICsgY291bnRyeT8uY2FsbGluZ0NvZGUgKyAnKSddKSB8IGpvaW5TdHJpbmdzIDogJyAnIH19PC9zbWFsbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGlucHV0XG4gICAgKGlucHV0KT1cIm9uSW5wdXQoZm9ybS5nZXQoJ3Bob25lX251bWJlcicpIS52YWx1ZSlcIlxuICAgIGZvcm1Db250cm9sTmFtZT1cInBob25lX251bWJlclwiXG4gICAgKGNsaWNrKT1cImRpc2FibGVDbGljaygkZXZlbnQpXCJcbiAgICBbbmdTdHlsZV09XCJ7IG9wYWNpdHk6IGRpc2FibGVkID8gMC41IDogMSB9XCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIG1hdElucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAvPlxuXG4gIDxtYXQtaGludCBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzIHwgaGFzVmFsaWRhdGlvbkVycm9yKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvcnNMZW5ndGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvcnNcIiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgX2Vycm9yczsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCInRXJyb3InXCI+PC91aS1pY29uPlxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVycm9yXCI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dWktdmFsaWRhdGlvbi1lcnJvciAqbmdJZj1cIm5nQ29udHJvbCAmJiAhaGlkZUJ1aWx0SW5FcnJvcnNcIiBbbmdDb250cm9sXT1cIm5nQ29udHJvbFwiIFtsYWJlbF09XCJoaWRlTGFiZWxJbkVycm9ycyA/IG51bGwgOiAoJ0NPTU1PTi5QSE9ORV9OVU1CRVInIHwgdWlUcmFuc2xhdGUgfCBhc3luYylcIj48L3VpLXZhbGlkYXRpb24tZXJyb3I+XG5cbiAgPC9tYXQtaGludD5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=
@@ -1,63 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { PhoneInputComponent } from './phone-input.component';
4
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
5
- import { ReactiveFormsModule } from '@angular/forms';
6
- import { MatSelectModule } from '@angular/material/select';
7
- import { MatIconModule } from '@angular/material/icon';
8
- import { JoinStringsPipe } from './join-strings.pipe';
9
- import { MatInputModule } from '@angular/material/input';
10
- import { NgxMatSelectSearchModule } from 'ngx-mat-select-search';
11
- import { IconComponentModule } from '../icon/icon.component.module';
12
- import { SpinnerComponentModule } from '../spinner/spinner.module';
13
- import { UiTranslatePipe } from '../../pipes/ui-translate.pipe';
14
- import { ValidationErrorModule } from '../validation-error/validation-error.module';
15
- import { HasValidationErrorPipe } from '../../pipes/has-validation-error.pipe';
16
- import * as i0 from "@angular/core";
17
- export class PhoneInputComponentModule {
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneInputComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: PhoneInputComponentModule, declarations: [PhoneInputComponent, JoinStringsPipe], imports: [CommonModule,
20
- MatProgressSpinnerModule,
21
- ReactiveFormsModule,
22
- MatSelectModule,
23
- MatIconModule,
24
- MatInputModule,
25
- NgxMatSelectSearchModule,
26
- IconComponentModule,
27
- SpinnerComponentModule,
28
- UiTranslatePipe,
29
- ValidationErrorModule,
30
- HasValidationErrorPipe], exports: [PhoneInputComponent] }); }
31
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneInputComponentModule, imports: [CommonModule,
32
- MatProgressSpinnerModule,
33
- ReactiveFormsModule,
34
- MatSelectModule,
35
- MatIconModule,
36
- MatInputModule,
37
- NgxMatSelectSearchModule,
38
- IconComponentModule,
39
- SpinnerComponentModule,
40
- ValidationErrorModule] }); }
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneInputComponentModule, decorators: [{
43
- type: NgModule,
44
- args: [{
45
- declarations: [PhoneInputComponent, JoinStringsPipe],
46
- exports: [PhoneInputComponent],
47
- imports: [
48
- CommonModule,
49
- MatProgressSpinnerModule,
50
- ReactiveFormsModule,
51
- MatSelectModule,
52
- MatIconModule,
53
- MatInputModule,
54
- NgxMatSelectSearchModule,
55
- IconComponentModule,
56
- SpinnerComponentModule,
57
- UiTranslatePipe,
58
- ValidationErrorModule,
59
- HasValidationErrorPipe,
60
- ],
61
- }]
62
- }] });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9waG9uZS1pbnB1dC9waG9uZS1pbnB1dC5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBb0IvRSxNQUFNLE9BQU8seUJBQXlCOytHQUF6Qix5QkFBeUI7Z0hBQXpCLHlCQUF5QixpQkFqQnJCLG1CQUFtQixFQUFFLGVBQWUsYUFHakQsWUFBWTtZQUNaLHdCQUF3QjtZQUN4QixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWE7WUFDYixjQUFjO1lBQ2Qsd0JBQXdCO1lBQ3hCLG1CQUFtQjtZQUNuQixzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLHFCQUFxQjtZQUNyQixzQkFBc0IsYUFiZCxtQkFBbUI7Z0hBZ0JsQix5QkFBeUIsWUFkbEMsWUFBWTtZQUNaLHdCQUF3QjtZQUN4QixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWE7WUFDYixjQUFjO1lBQ2Qsd0JBQXdCO1lBQ3hCLG1CQUFtQjtZQUNuQixzQkFBc0I7WUFFdEIscUJBQXFCOzs0RkFJWix5QkFBeUI7a0JBbEJyQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQztvQkFDcEQsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQzlCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCx3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsc0JBQXNCO3FCQUN2QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGhvbmVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vcGhvbmUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBKb2luU3RyaW5nc1BpcGUgfSBmcm9tICcuL2pvaW4tc3RyaW5ncy5waXBlJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTmd4TWF0U2VsZWN0U2VhcmNoTW9kdWxlIH0gZnJvbSAnbmd4LW1hdC1zZWxlY3Qtc2VhcmNoJztcbmltcG9ydCB7IEljb25Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vc3Bpbm5lci9zcGlubmVyLm1vZHVsZSc7XG5pbXBvcnQgeyBVaVRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91aS10cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JNb2R1bGUgfSBmcm9tICcuLi92YWxpZGF0aW9uLWVycm9yL3ZhbGlkYXRpb24tZXJyb3IubW9kdWxlJztcbmltcG9ydCB7IEhhc1ZhbGlkYXRpb25FcnJvclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9oYXMtdmFsaWRhdGlvbi1lcnJvci5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbUGhvbmVJbnB1dENvbXBvbmVudCwgSm9pblN0cmluZ3NQaXBlXSxcbiAgZXhwb3J0czogW1Bob25lSW5wdXRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE5neE1hdFNlbGVjdFNlYXJjaE1vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50TW9kdWxlLFxuICAgIFNwaW5uZXJDb21wb25lbnRNb2R1bGUsXG4gICAgVWlUcmFuc2xhdGVQaXBlLFxuICAgIFZhbGlkYXRpb25FcnJvck1vZHVsZSxcbiAgICBIYXNWYWxpZGF0aW9uRXJyb3JQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0Q29tcG9uZW50TW9kdWxlIHt9XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvcGhvbmUtaW5wdXQvcGhvbmUtaW5wdXQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ291bnRyeSBpbnRlcmZhY2UgSVNPIDMxNjYgKG1pbnVzIG51bWVyaWMgY29kZSBhbmQgYWxwaGEzQ29kZSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVSUNvdW50cnkge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFscGhhMkNvZGU6IHN0cmluZztcbiAgY2FsbGluZ0NvZGU6IHN0cmluZztcbn1cbiJdfQ==