@onemrvapublic/design-system 18.2.10-develop.2 → 18.2.11-alpha.1

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 (186) hide show
  1. package/assets/i18n/de.json +10 -4
  2. package/assets/i18n/en.json +10 -4
  3. package/assets/i18n/fr.json +10 -4
  4. package/assets/i18n/nl.json +10 -4
  5. package/esm2022/core/src/lib/core.module.mjs +4 -4
  6. package/esm2022/core/src/lib/services/onemrva-error-handler.service.mjs +3 -3
  7. package/esm2022/flag-icon/src/flag-icon.component.mjs +3 -3
  8. package/esm2022/layout/src/components/layout/layout.component.mjs +5 -5
  9. package/esm2022/layout/src/components/layout-after-nav/layout-after-nav.component.mjs +3 -3
  10. package/esm2022/layout/src/components/layout-content/layout-content.component.mjs +3 -3
  11. package/esm2022/layout/src/components/layout-drawer-actions/layout-drawer-actions.component.mjs +3 -3
  12. package/esm2022/layout/src/components/layout-drawer-content/layout-drawer-content.component.mjs +3 -3
  13. package/esm2022/layout/src/components/layout-drawer-title/layout-drawer-title.component.mjs +3 -3
  14. package/esm2022/layout/src/components/layout-footer/layout-footer.component.mjs +3 -3
  15. package/esm2022/layout/src/components/layout-login-menu/layout-login-menu.component.mjs +3 -3
  16. package/esm2022/layout/src/components/layout-route/layout-route.component.mjs +5 -5
  17. package/esm2022/layout/src/components/layout-sidenav/layout-sidenav.component.mjs +3 -3
  18. package/esm2022/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.mjs +3 -3
  19. package/esm2022/layout/src/components/layout-subroute/layout-subroute.component.mjs +4 -4
  20. package/esm2022/layout/src/components/layout-title/layout-title.component.mjs +3 -3
  21. package/esm2022/layout/src/directives/drawer-host.directive.mjs +3 -3
  22. package/esm2022/layout/src/layout.module.mjs +4 -4
  23. package/esm2022/layout/src/services/drawer.service.mjs +3 -3
  24. package/esm2022/layout/src/striphtml.pipe.mjs +3 -3
  25. package/esm2022/mat-avatar/src/onemrva-mat-avatar.component.mjs +3 -3
  26. package/esm2022/mat-avatar/src/onemrva-mat-avatar.module.mjs +4 -4
  27. package/esm2022/mat-badge/src/onemrva-mat-badge.component.mjs +3 -3
  28. package/esm2022/mat-badge/src/onemrva-mat-badge.module.mjs +4 -4
  29. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.mjs +3 -3
  30. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.mjs +4 -4
  31. package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.service.mjs +3 -3
  32. package/esm2022/mat-carousel/src/mat-carousel-item/onemrva-mat-carousel-item.component.mjs +3 -3
  33. package/esm2022/mat-carousel/src/onemrva-mat-carousel.component.mjs +7 -4
  34. package/esm2022/mat-copy-to-clipboard/src/components/copy-to-clipboard.component.mjs +3 -3
  35. package/esm2022/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.mjs +3 -3
  36. package/esm2022/mat-empty-row/src/onemrva-mat-empty-row.component.mjs +3 -3
  37. package/esm2022/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.mjs +3 -3
  38. package/esm2022/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.mjs +3 -3
  39. package/esm2022/mat-file-upload/src/directives/dnd.directive.mjs +3 -3
  40. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.module.mjs +4 -4
  41. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.service.mjs +3 -3
  42. package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.store.mjs +3 -3
  43. package/esm2022/mat-input-birthplace/src/country-item.component.mjs +3 -3
  44. package/esm2022/mat-input-birthplace/src/onemrva-mat-input-birthplace.component.mjs +3 -3
  45. package/esm2022/mat-input-country/src/onemrva-mat-input-country.component.mjs +3 -3
  46. package/esm2022/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.mjs +3 -3
  47. package/esm2022/mat-input-iban/index.mjs +5 -0
  48. package/esm2022/mat-input-iban/onemrvapublic-design-system-mat-input-iban.mjs +5 -0
  49. package/esm2022/mat-input-iban/src/onemrva-mat-input-iban.component.mjs +278 -0
  50. package/esm2022/mat-input-phone/src/onemrva-mat-input-phone.component.mjs +3 -3
  51. package/esm2022/mat-input-phone/src/phone-number.directive.mjs +3 -3
  52. package/esm2022/mat-message-box/src/onemrva-mat-message-box.component.mjs +3 -3
  53. package/esm2022/mat-message-box/src/onemrva-mat-message-box.module.mjs +4 -4
  54. package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.component.mjs +3 -3
  55. package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.module.mjs +4 -4
  56. package/esm2022/mat-notification/src/onemrva-mat-notification.component.mjs +3 -3
  57. package/esm2022/mat-paginator/src/onemrva-mat-paginator.component.mjs +3 -3
  58. package/esm2022/mat-paginator/src/onemrva-mat-paginator.module.mjs +4 -4
  59. package/esm2022/mat-panel/src/onemrva-mat-panel-content.component.mjs +3 -3
  60. package/esm2022/mat-panel/src/onemrva-mat-panel-icon.component.mjs +3 -3
  61. package/esm2022/mat-panel/src/onemrva-mat-panel-title-action.component.mjs +3 -3
  62. package/esm2022/mat-panel/src/onemrva-mat-panel-title.component.mjs +3 -3
  63. package/esm2022/mat-panel/src/onemrva-mat-panel.component.mjs +3 -3
  64. package/esm2022/mat-panel/src/onemrva-mat-panel.module.mjs +4 -4
  65. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-content.component.mjs +3 -3
  66. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.mjs +3 -3
  67. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.component.mjs +3 -3
  68. package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.module.mjs +4 -4
  69. package/esm2022/mat-progress-bar/src/onemrva-mat-progress-bar.component.mjs +3 -3
  70. package/esm2022/mat-select-search/src/mat-select-no-entries-found.directive.mjs +3 -3
  71. package/esm2022/mat-select-search/src/mat-select-search-clear.directive.mjs +3 -3
  72. package/esm2022/mat-select-search/src/mat-select-search.component.mjs +3 -3
  73. package/esm2022/mat-select-search/src/mat-select-search.module.mjs +4 -4
  74. package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.component.mjs +3 -3
  75. package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.module.mjs +4 -4
  76. package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.component.mjs +3 -3
  77. package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.module.mjs +4 -4
  78. package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.component.mjs +3 -3
  79. package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.module.mjs +4 -4
  80. package/esm2022/mat-spinner/src/onemrva-mat-loading.directive.mjs +3 -3
  81. package/esm2022/mat-spinner/src/onemrva-mat-spinner.component.mjs +3 -3
  82. package/esm2022/mat-spinner/src/onemrva-mat-spinner.module.mjs +4 -4
  83. package/esm2022/mat-stepper/src/onemrva-mat-stepper.component.mjs +3 -3
  84. package/esm2022/mat-stepper/src/onemrva-mat-stepper.module.mjs +4 -4
  85. package/esm2022/mat-sticker/src/onemrva-mat-sticker.component.mjs +3 -3
  86. package/esm2022/mat-sticker/src/onemrva-mat-sticker.module.mjs +4 -4
  87. package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.component.mjs +3 -3
  88. package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.directive.mjs +3 -3
  89. package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.service.mjs +3 -3
  90. package/esm2022/mat-task-list/src/onemrva-mat-task-content.component.mjs +3 -3
  91. package/esm2022/mat-task-list/src/onemrva-mat-task-list.component.mjs +3 -3
  92. package/esm2022/mat-task-list/src/onemrva-mat-task-list.module.mjs +4 -4
  93. package/esm2022/mat-task-list/src/onemrva-mat-task-title.component.mjs +3 -3
  94. package/esm2022/mat-task-list/src/onemrva-mat-task.component.mjs +3 -3
  95. package/esm2022/mat-timepicker/src/clock/clock.component.mjs +3 -3
  96. package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.component.mjs +3 -3
  97. package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.module.mjs +4 -4
  98. package/esm2022/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.mjs +3 -3
  99. package/esm2022/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.mjs +6 -6
  100. package/esm2022/mat-timepicker/src/timepicker.directive.mjs +3 -3
  101. package/esm2022/mat-toast/src/onemrva-mat-toast.component.mjs +3 -3
  102. package/esm2022/mat-toast/src/onemrva-mat-toast.module.mjs +4 -4
  103. package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.component.mjs +3 -3
  104. package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.directive.mjs +3 -3
  105. package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.module.mjs +4 -4
  106. package/esm2022/page-not-found/src/page-not-found-action.component.mjs +3 -3
  107. package/esm2022/page-not-found/src/page-not-found-extra.component.mjs +3 -3
  108. package/esm2022/page-not-found/src/page-not-found-invader.component.mjs +3 -3
  109. package/esm2022/page-not-found/src/page-not-found.component.mjs +3 -3
  110. package/esm2022/page-not-found/src/page-not-found.module.mjs +4 -4
  111. package/esm2022/shared/src/lib/adapters/date.adapter.mjs +3 -3
  112. package/esm2022/shared/src/lib/components/clipboard-icon/clipboard-icon.component.mjs +3 -3
  113. package/esm2022/shared/src/lib/containers/WebComponentOverlayContainer.mjs +3 -3
  114. package/esm2022/shared/src/lib/directives/clipboard.directive.mjs +3 -3
  115. package/esm2022/shared/src/lib/directives/color.directive.mjs +3 -3
  116. package/esm2022/shared/src/lib/directives/digit-only.directive.mjs +3 -3
  117. package/esm2022/shared/src/lib/directives/iconRight.directive.mjs +3 -3
  118. package/esm2022/shared/src/lib/directives/if-width-is.directive.mjs +3 -3
  119. package/esm2022/shared/src/lib/directives/mask.directive.mjs +3 -3
  120. package/esm2022/shared/src/lib/directives/mat-row-clickable.directive.mjs +3 -3
  121. package/esm2022/shared/src/lib/pipes/onemrva-bce.pipe.mjs +3 -3
  122. package/esm2022/shared/src/lib/pipes/onemrva-niss.pipe.mjs +3 -3
  123. package/esm2022/shared/src/lib/services/cache.service.mjs +3 -3
  124. package/esm2022/shared/src/lib/services/cdn.service.mjs +3 -3
  125. package/esm2022/shared/src/lib/services/country-cdn.service.mjs +8 -5
  126. package/esm2022/shared/src/lib/services/country-lookup.service.mjs +3 -3
  127. package/esm2022/shared/src/lib/shared.datepicker.module.mjs +4 -4
  128. package/esm2022/shared/src/lib/shared.module.mjs +4 -4
  129. package/esm2022/shared/src/lib/validators/bank-account.validator.utils.mjs +18 -7
  130. package/fesm2022/onemrvapublic-design-system-core.mjs +7 -7
  131. package/fesm2022/onemrvapublic-design-system-flag-icon.mjs +3 -3
  132. package/fesm2022/onemrvapublic-design-system-layout.mjs +54 -54
  133. package/fesm2022/onemrvapublic-design-system-layout.mjs.map +1 -1
  134. package/fesm2022/onemrvapublic-design-system-mat-avatar.mjs +7 -7
  135. package/fesm2022/onemrvapublic-design-system-mat-badge.mjs +7 -7
  136. package/fesm2022/onemrvapublic-design-system-mat-breadcrumb.mjs +10 -10
  137. package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs +9 -6
  138. package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs.map +1 -1
  139. package/fesm2022/onemrvapublic-design-system-mat-copy-to-clipboard.mjs +3 -3
  140. package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs +3 -3
  141. package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs +3 -3
  142. package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs +19 -19
  143. package/fesm2022/onemrvapublic-design-system-mat-input-birthplace.mjs +6 -6
  144. package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs +3 -3
  145. package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs +3 -3
  146. package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs +289 -0
  147. package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs.map +1 -0
  148. package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs +6 -6
  149. package/fesm2022/onemrvapublic-design-system-mat-message-box.mjs +7 -7
  150. package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs +7 -7
  151. package/fesm2022/onemrvapublic-design-system-mat-notification.mjs +3 -3
  152. package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs +7 -7
  153. package/fesm2022/onemrvapublic-design-system-mat-panel.mjs +19 -19
  154. package/fesm2022/onemrvapublic-design-system-mat-pop-over.mjs +13 -13
  155. package/fesm2022/onemrvapublic-design-system-mat-progress-bar.mjs +3 -3
  156. package/fesm2022/onemrvapublic-design-system-mat-select-search.mjs +13 -13
  157. package/fesm2022/onemrvapublic-design-system-mat-selectable-box.mjs +7 -7
  158. package/fesm2022/onemrvapublic-design-system-mat-side-menu.mjs +7 -7
  159. package/fesm2022/onemrvapublic-design-system-mat-skeleton.mjs +7 -7
  160. package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs +10 -10
  161. package/fesm2022/onemrvapublic-design-system-mat-stepper.mjs +7 -7
  162. package/fesm2022/onemrvapublic-design-system-mat-sticker.mjs +7 -7
  163. package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs +9 -9
  164. package/fesm2022/onemrvapublic-design-system-mat-task-list.mjs +16 -16
  165. package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs +22 -22
  166. package/fesm2022/onemrvapublic-design-system-mat-toast.mjs +7 -7
  167. package/fesm2022/onemrvapublic-design-system-mat-tooltip.mjs +10 -10
  168. package/fesm2022/onemrvapublic-design-system-page-not-found.mjs +16 -16
  169. package/fesm2022/onemrvapublic-design-system-shared.mjs +77 -63
  170. package/fesm2022/onemrvapublic-design-system-shared.mjs.map +1 -1
  171. package/layout/src/components/layout/layout.component.scss +11 -0
  172. package/mat-input-iban/index.d.ts +1 -0
  173. package/{mat-input-bank-account/src/bank-account.component.d.ts → mat-input-iban/src/onemrva-mat-input-iban.component.d.ts} +39 -28
  174. package/mat-input-iban/src/onemrva-mat-input-iban.component.scss +10 -0
  175. package/package.json +7 -7
  176. package/shared/src/lib/services/country-cdn.service.d.ts +5 -65
  177. package/esm2022/mat-input-bank-account/index.mjs +0 -5
  178. package/esm2022/mat-input-bank-account/onemrvapublic-design-system-mat-input-bank-account.mjs +0 -5
  179. package/esm2022/mat-input-bank-account/src/bank-account.component.mjs +0 -223
  180. package/esm2022/mat-input-bank-account/src/onemrva-mat-input-bank-account.component.mjs +0 -66
  181. package/fesm2022/onemrvapublic-design-system-mat-input-bank-account.mjs +0 -286
  182. package/fesm2022/onemrvapublic-design-system-mat-input-bank-account.mjs.map +0 -1
  183. package/mat-input-bank-account/index.d.ts +0 -1
  184. package/mat-input-bank-account/src/bank-account.component.scss +0 -42
  185. package/mat-input-bank-account/src/onemrva-mat-input-bank-account.component.d.ts +0 -15
  186. package/mat-input-bank-account/src/onemrva-mat-input-bank-account.component.scss +0 -14
@@ -0,0 +1,278 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Inject, Input, Optional, Output, Self, ViewChild, ViewEncapsulation, } from '@angular/core';
3
+ import { FormControl, ReactiveFormsModule, Validators, } from '@angular/forms';
4
+ import { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule, MatPrefix, } from '@angular/material/form-field';
5
+ import { MatInputModule } from '@angular/material/input';
6
+ import { MatSelectModule } from '@angular/material/select';
7
+ import { TranslateModule } from '@ngx-translate/core';
8
+ import { combineLatestWith, distinctUntilChanged, of, pairwise, startWith, Subject, takeUntil, } from 'rxjs';
9
+ import { MatSelectSearchModule } from '@onemrvapublic/design-system/mat-select-search';
10
+ import { IBAN_SUPPORTED_COUNTRIES } from '@onemrvapublic/design-system/shared';
11
+ import { map } from 'rxjs/operators';
12
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
13
+ import { countrySpecs, extractIBAN, friendlyFormatIBAN, isValidIBAN, } from 'ibantools';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "@angular/forms";
16
+ import * as i2 from "@angular/cdk/a11y";
17
+ import * as i3 from "@angular/common";
18
+ import * as i4 from "@angular/material/input";
19
+ import * as i5 from "@angular/material/select";
20
+ import * as i6 from "@angular/material/core";
21
+ import * as i7 from "@onemrvapublic/design-system/mat-select-search";
22
+ import * as i8 from "@angular/material/form-field";
23
+ export class OnemrvaMatInputIbanComponent {
24
+ static { this.nextId = 0; }
25
+ get bbanField() {
26
+ return this.parts.get('bban');
27
+ }
28
+ get countryCodeField() {
29
+ return this.parts.get('countryCode');
30
+ }
31
+ constructor(formBuilder, _focusMonitor, _elementRef, _cd, _formField, ngControl) {
32
+ this._focusMonitor = _focusMonitor;
33
+ this._elementRef = _elementRef;
34
+ this._cd = _cd;
35
+ this._formField = _formField;
36
+ this.ngControl = ngControl;
37
+ this.noEntriesFoundLabel = 'Not found';
38
+ this.placeholderLabel = 'Search';
39
+ this.searchAriaLabel = 'Search';
40
+ this.getCountry = new EventEmitter();
41
+ this.countryCodes$ = of([]);
42
+ this.filterCtrl = new FormControl('');
43
+ this.destroyNotifier$ = new Subject();
44
+ this.placeholderIban = '';
45
+ this.controlType = 'bank-account-input';
46
+ this.stateChanges = new Subject();
47
+ this.focused = false;
48
+ this.id = `bank-account-input-${OnemrvaMatInputIbanComponent.nextId++}`;
49
+ this.touched = false;
50
+ this.onChange = (_) => {
51
+ //
52
+ };
53
+ this.onTouched = () => {
54
+ //
55
+ };
56
+ this.readonly = false;
57
+ this._disabled = false;
58
+ this._placeholder = '';
59
+ this._required = false;
60
+ this.ngControl.valueAccessor = this;
61
+ this.parts = formBuilder.group({
62
+ countryCode: ['', [Validators.maxLength(2)]],
63
+ bban: ['', []],
64
+ });
65
+ }
66
+ errors() {
67
+ return this.parts.errors;
68
+ }
69
+ get errorState() {
70
+ const control = this.ngControl?.control;
71
+ return !!(control && control.invalid && (control.dirty || control.touched));
72
+ }
73
+ get shouldLabelFloat() {
74
+ return this.focused || !this.empty;
75
+ }
76
+ get empty() {
77
+ const { value: { countryCode, bban }, } = this.parts;
78
+ return !countryCode && !bban;
79
+ }
80
+ get value() {
81
+ const { value: { countryCode, bban }, } = this.parts;
82
+ return `${countryCode ?? ''}${bban ?? ''}`;
83
+ }
84
+ set value(iban) {
85
+ const { countryCode, bban } = extractIBAN(iban || '');
86
+ this.parts.setValue({
87
+ countryCode: countryCode || null,
88
+ bban: bban || null,
89
+ });
90
+ this.stateChanges.next();
91
+ }
92
+ get disabled() {
93
+ return this._disabled;
94
+ }
95
+ set disabled(value) {
96
+ this._disabled = coerceBooleanProperty(value);
97
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
98
+ this._disabled ? this.parts.disable() : this.parts.enable();
99
+ this.stateChanges.next();
100
+ }
101
+ get placeholder() {
102
+ return this._placeholder;
103
+ }
104
+ set placeholder(value) {
105
+ this._placeholder = value;
106
+ this.stateChanges.next();
107
+ }
108
+ get required() {
109
+ return this._required;
110
+ }
111
+ set required(value) {
112
+ this._required = coerceBooleanProperty(value);
113
+ this.stateChanges.next();
114
+ }
115
+ updateNumber(number) {
116
+ let shownValue = number.replace(/[^a-zA-Z0-9]/g, '');
117
+ // BE45063712751789
118
+ const fullNumber = this.countryCodeField.value + number;
119
+ if (isValidIBAN(fullNumber)) {
120
+ const formattedValue = friendlyFormatIBAN(fullNumber);
121
+ if (formattedValue !== null) {
122
+ shownValue = formattedValue.substring(2);
123
+ }
124
+ }
125
+ this.bbanField.patchValue(shownValue, { emitEvent: false });
126
+ }
127
+ ngOnInit() {
128
+ this.countryCodes$ = this.getCountryCodes();
129
+ this.bbanField.valueChanges
130
+ .pipe(startWith(this.bbanField.getRawValue()), takeUntil(this.destroyNotifier$))
131
+ .subscribe(number => {
132
+ if (number !== null && number !== '') {
133
+ if (this.firstTwoCharsAreLetters(number)) {
134
+ const code = number?.substring(0, 2).toUpperCase();
135
+ const country = IBAN_SUPPORTED_COUNTRIES.find(country => country == code);
136
+ this.countryCodeField.setValue(country);
137
+ number = number.substring(2);
138
+ }
139
+ this.updateNumber(number);
140
+ }
141
+ });
142
+ this.countryCodeField.valueChanges
143
+ .pipe(startWith(''), pairwise(), distinctUntilChanged(), takeUntil(this.destroyNotifier$))
144
+ .subscribe(([_prevIban, countryCode]) => {
145
+ this.placeholderIban = '';
146
+ this.touched = true;
147
+ if (!countryCode || countryCode.length < 2) {
148
+ return;
149
+ }
150
+ if (this.firstTwoCharsAreLetters(countryCode)) {
151
+ const r = countrySpecs[countryCode]?.chars;
152
+ if (r !== undefined)
153
+ this.placeholderIban = this.generatePlaceholder(r);
154
+ }
155
+ if (this.bbanField.value !== null) {
156
+ this.updateNumber(this.bbanField.value);
157
+ }
158
+ });
159
+ }
160
+ handleClick(e) {
161
+ e.stopPropagation();
162
+ }
163
+ ngOnDestroy() {
164
+ this.destroyNotifier$.next();
165
+ this.destroyNotifier$.complete();
166
+ }
167
+ getCountryCodes() {
168
+ return this.filterCtrl.valueChanges.pipe(startWith(''), combineLatestWith(of(IBAN_SUPPORTED_COUNTRIES)), map(([filterVal, countryCodes]) => {
169
+ return countryCodes.filter(code => {
170
+ if (!filterVal) {
171
+ return true;
172
+ }
173
+ return code.toLowerCase().includes(filterVal.toLowerCase());
174
+ });
175
+ }));
176
+ }
177
+ autoFocusNext(control, nextElement) {
178
+ if (!control.errors && nextElement) {
179
+ this._focusMonitor.focusVia(nextElement, 'program');
180
+ }
181
+ }
182
+ onContainerClick(event) {
183
+ if (event.target.tagName.toLowerCase() != 'input') {
184
+ this._elementRef.nativeElement.querySelector('input')?.focus();
185
+ }
186
+ }
187
+ setDescribedByIds(ids) {
188
+ const controlElement = this._elementRef.nativeElement.querySelector('.iban-fields');
189
+ controlElement.setAttribute('aria-describedby', ids.join(' '));
190
+ }
191
+ registerOnChange(fn) {
192
+ this.onChange = fn;
193
+ }
194
+ registerOnTouched(fn) {
195
+ this.onTouched = fn;
196
+ }
197
+ writeValue(iban) {
198
+ this.value = iban;
199
+ }
200
+ _handleInput(control, nextElement) {
201
+ this.autoFocusNext(control, nextElement);
202
+ this.onChange(this.value);
203
+ }
204
+ firstTwoCharsAreLetters(input) {
205
+ const regex = /^[a-zA-Z]{2}/;
206
+ return regex.test(input);
207
+ }
208
+ generatePlaceholder(chars) {
209
+ let placeholder = '';
210
+ for (let i = 0; i < chars; i++) {
211
+ placeholder += '0';
212
+ }
213
+ const ph = friendlyFormatIBAN(placeholder)?.substring(2);
214
+ if (ph)
215
+ return ph;
216
+ return placeholder.substring(2);
217
+ }
218
+ onKeyup(event) {
219
+ // Clear country when backspace on empty bban
220
+ if (this.bbanField.value === '' && event.key === 'Backspace') {
221
+ this.countryCodeField.setValue(null);
222
+ this.parts.clearValidators();
223
+ }
224
+ }
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatInputIbanComponent, deps: [{ token: i1.FormBuilder }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_FORM_FIELD, optional: true }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
226
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatInputIbanComponent, isStandalone: true, selector: "onemrva-mat-input-iban", inputs: { noEntriesFoundLabel: "noEntriesFoundLabel", placeholderLabel: "placeholderLabel", searchAriaLabel: "searchAriaLabel", value: "value", readonly: "readonly", disabled: "disabled", placeholder: "placeholder", required: "required" }, outputs: { getCountry: "getCountry" }, providers: [
227
+ { provide: MatFormFieldControl, useExisting: OnemrvaMatInputIbanComponent },
228
+ ], viewQueries: [{ propertyName: "countryCode", first: true, predicate: ["countryCode"], descendants: true }, { propertyName: "bban", first: true, predicate: ["bban"], descendants: true }], ngImport: i0, template: "<ng-container [formGroup]=\"parts\">\n <!-- <mat-form-field class=\"onemrva-input-iban\">-->\n <!-- <mat-label>{{ label }}</mat-label>-->\n <div class=\"iban-fields\">\n <div class=\"iban-prefix\">\n <mat-select\n class=\"onemrva-iban-select\"\n formControlName=\"countryCode\"\n (selectionChange)=\"_handleInput(parts.controls.countryCode)\"\n #countryCode\n >\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n\n <mat-option\n *ngFor=\"let country of countryCodes$ | async\"\n [value]=\"country\"\n >\n <span>{{ country }}</span>\n </mat-option>\n </mat-select>\n </div>\n <input\n (click)=\"handleClick($event)\"\n matInput\n [placeholder]=\"placeholderIban\"\n formControlName=\"bban\"\n class=\"onemrva-text-number\"\n [readOnly]=\"readonly\"\n (input)=\"_handleInput(parts.controls.bban)\"\n (keyup)=\"onKeyup($event)\"\n #bban\n />\n </div>\n <!-- <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>-->\n <!-- <mat-error >{{ 'error' | translate }}</mat-error>-->\n <!-- </mat-form-field>-->\n\n <!-- {{ parts.errors |json }}-->\n</ng-container>\n", styles: ["onemrva-mat-input-iban{width:100%}onemrva-mat-input-iban .iban-fields{display:flex}onemrva-mat-input-iban .iban-fields .iban-prefix{width:40px;margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.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: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSelectSearchModule }, { kind: "component", type: i7.MatSelectSearchComponent, selector: "mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.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: "ngmodule", type: TranslateModule }], encapsulation: i0.ViewEncapsulation.None }); }
229
+ }
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatInputIbanComponent, decorators: [{
231
+ type: Component,
232
+ args: [{ selector: 'onemrva-mat-input-iban', standalone: true, imports: [
233
+ CommonModule,
234
+ MatInputModule,
235
+ MatFormFieldModule,
236
+ MatSelectModule,
237
+ MatSelectSearchModule,
238
+ ReactiveFormsModule,
239
+ TranslateModule,
240
+ MatPrefix,
241
+ ], encapsulation: ViewEncapsulation.None, providers: [
242
+ { provide: MatFormFieldControl, useExisting: OnemrvaMatInputIbanComponent },
243
+ ], template: "<ng-container [formGroup]=\"parts\">\n <!-- <mat-form-field class=\"onemrva-input-iban\">-->\n <!-- <mat-label>{{ label }}</mat-label>-->\n <div class=\"iban-fields\">\n <div class=\"iban-prefix\">\n <mat-select\n class=\"onemrva-iban-select\"\n formControlName=\"countryCode\"\n (selectionChange)=\"_handleInput(parts.controls.countryCode)\"\n #countryCode\n >\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n\n <mat-option\n *ngFor=\"let country of countryCodes$ | async\"\n [value]=\"country\"\n >\n <span>{{ country }}</span>\n </mat-option>\n </mat-select>\n </div>\n <input\n (click)=\"handleClick($event)\"\n matInput\n [placeholder]=\"placeholderIban\"\n formControlName=\"bban\"\n class=\"onemrva-text-number\"\n [readOnly]=\"readonly\"\n (input)=\"_handleInput(parts.controls.bban)\"\n (keyup)=\"onKeyup($event)\"\n #bban\n />\n </div>\n <!-- <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>-->\n <!-- <mat-error >{{ 'error' | translate }}</mat-error>-->\n <!-- </mat-form-field>-->\n\n <!-- {{ parts.errors |json }}-->\n</ng-container>\n", styles: ["onemrva-mat-input-iban{width:100%}onemrva-mat-input-iban .iban-fields{display:flex}onemrva-mat-input-iban .iban-fields .iban-prefix{width:40px;margin-right:8px}\n"] }]
244
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.FocusMonitor }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i8.MatFormField, decorators: [{
245
+ type: Optional
246
+ }, {
247
+ type: Inject,
248
+ args: [MAT_FORM_FIELD]
249
+ }] }, { type: i1.NgControl, decorators: [{
250
+ type: Optional
251
+ }, {
252
+ type: Self
253
+ }] }], propDecorators: { countryCode: [{
254
+ type: ViewChild,
255
+ args: ['countryCode']
256
+ }], bban: [{
257
+ type: ViewChild,
258
+ args: ['bban']
259
+ }], noEntriesFoundLabel: [{
260
+ type: Input
261
+ }], placeholderLabel: [{
262
+ type: Input
263
+ }], searchAriaLabel: [{
264
+ type: Input
265
+ }], getCountry: [{
266
+ type: Output
267
+ }], value: [{
268
+ type: Input
269
+ }], readonly: [{
270
+ type: Input
271
+ }], disabled: [{
272
+ type: Input
273
+ }], placeholder: [{
274
+ type: Input
275
+ }], required: [{
276
+ type: Input
277
+ }] } });
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtaW5wdXQtaWJhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWlucHV0LWliYW4vc3JjL29uZW1ydmEtbWF0LWlucHV0LWliYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1pbnB1dC1pYmFuL3NyYy9vbmVtcnZhLW1hdC1pbnB1dC1pYmFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLFdBQVcsRUFHWCxtQkFBbUIsRUFFbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGNBQWMsRUFFZCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLFNBQVMsR0FDVixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsb0JBQW9CLEVBRXBCLEVBQUUsRUFDRixRQUFRLEVBQ1IsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFB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SUFnRGpCLGNBQWM7a0dBaER6Qiw0QkFBNEIsNFZBSjVCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFO1NBQzVFLHFOQzdFSCwyOENBOENBLDJORG1CSSxZQUFZLGdOQUNaLGNBQWMsMFdBQ2Qsa0JBQWtCLDhCQUNsQixlQUFlLG1yQkFDZixxQkFBcUIsaW5CQUNyQixtQkFBbUIsc2hDQUNuQixlQUFlOzsyRkFRTiw0QkFBNEI7a0JBcEJ4QyxTQUFTOytCQUNFLHdCQUF3QixjQUd0QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixTQUFTO3FCQUNWLGlCQUNjLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyw4QkFBOEIsRUFBRTtxQkFDNUU7OzBCQWtERSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7OzBCQUNqQyxRQUFROzswQkFBSSxJQUFJO3lDQTFDTyxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0wsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQUlSLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQXdFSCxLQUFLO3NCQURSLEtBQUs7Z0JBbUJOLFFBQVE7c0JBRFAsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBZUYsV0FBVztzQkFEZCxLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBOZ0NvbnRyb2wsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE1BVF9GT1JNX0ZJRUxELFxuICBNYXRGb3JtRmllbGQsXG4gIE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgTWF0UHJlZml4LFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdFdpdGgsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgcGFpcndpc2UsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdFNlbGVjdFNlYXJjaE1vZHVsZSB9IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vbWF0LXNlbGVjdC1zZWFyY2gnO1xuaW1wb3J0IHsgSUJBTl9TVVBQT1JURURfQ09VTlRSSUVTIH0gZnJvbSAnQG9uZW1ydmFwdWJsaWMvZGVzaWduLXN5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgY291bnRyeVNwZWNzLFxuICBleHRyYWN0SUJBTixcbiAgZnJpZW5kbHlGb3JtYXRJQkFOLFxuICBpc1ZhbGlkSUJBTixcbn0gZnJvbSAnaWJhbnRvb2xzJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb25lbXJ2YS1tYXQtaW5wdXQtaWJhbicsXG4gIHN0eWxlVXJsczogWydvbmVtcnZhLW1hdC1pbnB1dC1pYmFuLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtaW5wdXQtaWJhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRTZWxlY3RTZWFyY2hNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0UHJlZml4LFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBPbmVtcnZhTWF0SW5wdXRJYmFuQ29tcG9uZW50IH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRJbnB1dEliYW5Db21wb25lbnRcbiAgaW1wbGVtZW50c1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE1hdEZvcm1GaWVsZENvbnRyb2w8c3RyaW5nPixcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95XG57XG4gIEBWaWV3Q2hpbGQoJ2NvdW50cnlDb2RlJykgY291bnRyeUNvZGUhOiBIVE1MSW5wdXRFbGVtZW50O1xuICBAVmlld0NoaWxkKCdiYmFuJykgYmJhbiE6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgQElucHV0KCkgbm9FbnRyaWVzRm91bmRMYWJlbCA9ICdOb3QgZm91bmQnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlckxhYmVsID0gJ1NlYXJjaCc7XG4gIEBJbnB1dCgpIHNlYXJjaEFyaWFMYWJlbCA9ICdTZWFyY2gnO1xuXG4gIEBPdXRwdXQoKSBnZXRDb3VudHJ5ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY291bnRyeUNvZGVzJDogT2JzZXJ2YWJsZTxhbnk+ID0gb2YoW10pO1xuXG4gIHB1YmxpYyBmaWx0ZXJDdHJsOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcblxuICBkZXN0cm95Tm90aWZpZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcGxhY2Vob2xkZXJJYmFuID0gJyc7XG5cbiAgY29udHJvbFR5cGUgPSAnYmFuay1hY2NvdW50LWlucHV0JztcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBpZCA9IGBiYW5rLWFjY291bnQtaW5wdXQtJHtPbmVtcnZhTWF0SW5wdXRJYmFuQ29tcG9uZW50Lm5leHRJZCsrfWA7XG4gIHRvdWNoZWQgPSBmYWxzZTtcblxuICBwYXJ0czogRm9ybUdyb3VwPHtcbiAgICBjb3VudHJ5Q29kZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgYmJhbjogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gIH0+O1xuXG4gIGdldCBiYmFuRmllbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHMuZ2V0KCdiYmFuJykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cbiAgZ2V0IGNvdW50cnlDb2RlRmllbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydHMuZ2V0KCdjb3VudHJ5Q29kZScpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9GT1JNX0ZJRUxEKSBwdWJsaWMgX2Zvcm1GaWVsZDogTWF0Rm9ybUZpZWxkLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICApIHtcbiAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcblxuICAgIHRoaXMucGFydHMgPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBjb3VudHJ5Q29kZTogWycnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMildXSxcbiAgICAgIGJiYW46IFsnJywgW11dLFxuICAgIH0pO1xuICB9XG5cbiAgZXJyb3JzKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cy5lcnJvcnM7XG4gIH1cblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgICAvL1xuICB9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7XG4gICAgLy9cbiAgfTtcblxuICBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w7XG4gICAgcmV0dXJuICEhKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCkpO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgfVxuXG4gIGdldCBlbXB0eSgpIHtcbiAgICBjb25zdCB7XG4gICAgICB2YWx1ZTogeyBjb3VudHJ5Q29kZSwgYmJhbiB9LFxuICAgIH0gPSB0aGlzLnBhcnRzO1xuXG4gICAgcmV0dXJuICFjb3VudHJ5Q29kZSAmJiAhYmJhbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHtcbiAgICAgIHZhbHVlOiB7IGNvdW50cnlDb2RlLCBiYmFuIH0sXG4gICAgfSA9IHRoaXMucGFydHM7XG4gICAgcmV0dXJuIGAke2NvdW50cnlDb2RlID8/ICcnfSR7YmJhbiA/PyAnJ31gO1xuICB9XG5cbiAgc2V0IHZhbHVlKGliYW46IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCB7IGNvdW50cnlDb2RlLCBiYmFuIH0gPSBleHRyYWN0SUJBTihpYmFuIHx8ICcnKTtcblxuICAgIHRoaXMucGFydHMuc2V0VmFsdWUoe1xuICAgICAgY291bnRyeUNvZGU6IGNvdW50cnlDb2RlIHx8IG51bGwsXG4gICAgICBiYmFuOiBiYmFuIHx8IG51bGwsXG4gICAgfSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICB0aGlzLl9kaXNhYmxlZCA/IHRoaXMucGFydHMuZGlzYWJsZSgpIDogdGhpcy5wYXJ0cy5lbmFibGUoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9wbGFjZWhvbGRlciA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBzZXQgcmVxdWlyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcblxuICB1cGRhdGVOdW1iZXIobnVtYmVyOiBzdHJpbmcpIHtcbiAgICBsZXQgc2hvd25WYWx1ZSA9IG51bWJlci5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpO1xuICAgIC8vIEJFNDUwNjM3MTI3NTE3ODlcbiAgICBjb25zdCBmdWxsTnVtYmVyID0gdGhpcy5jb3VudHJ5Q29kZUZpZWxkLnZhbHVlICsgbnVtYmVyO1xuICAgIGlmIChpc1ZhbGlkSUJBTihmdWxsTnVtYmVyKSkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBmcmllbmRseUZvcm1hdElCQU4oZnVsbE51bWJlcik7XG4gICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgc2hvd25WYWx1ZSA9IGZvcm1hdHRlZFZhbHVlLnN1YnN0cmluZygyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5iYmFuRmllbGQucGF0Y2hWYWx1ZShzaG93blZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50cnlDb2RlcyQgPSB0aGlzLmdldENvdW50cnlDb2RlcygpO1xuXG4gICAgdGhpcy5iYmFuRmllbGQudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuYmJhbkZpZWxkLmdldFJhd1ZhbHVlKCkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95Tm90aWZpZXIkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUobnVtYmVyID0+IHtcbiAgICAgICAgaWYgKG51bWJlciAhPT0gbnVsbCAmJiBudW1iZXIgIT09ICcnKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZmlyc3RUd29DaGFyc0FyZUxldHRlcnMobnVtYmVyKSkge1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IG51bWJlcj8uc3Vic3RyaW5nKDAsIDIpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBjb3VudHJ5ID0gSUJBTl9TVVBQT1JURURfQ09VTlRSSUVTLmZpbmQoXG4gICAgICAgICAgICAgIGNvdW50cnkgPT4gY291bnRyeSA9PSBjb2RlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY291bnRyeUNvZGVGaWVsZC5zZXRWYWx1ZShjb3VudHJ5KTtcbiAgICAgICAgICAgIG51bWJlciA9IG51bWJlci5zdWJzdHJpbmcoMik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudXBkYXRlTnVtYmVyKG51bWJlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jb3VudHJ5Q29kZUZpZWxkLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lOb3RpZmllciQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW19wcmV2SWJhbiwgY291bnRyeUNvZGVdKSA9PiB7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXJJYmFuID0gJyc7XG4gICAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgICAgIGlmICghY291bnRyeUNvZGUgfHwgY291bnRyeUNvZGUubGVuZ3RoIDwgMikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZpcnN0VHdvQ2hhcnNBcmVMZXR0ZXJzKGNvdW50cnlDb2RlKSkge1xuICAgICAgICAgIGNvbnN0IHI6IG51bWJlciB8IHVuZGVmaW5lZCA9IGNvdW50cnlTcGVjc1tjb3VudHJ5Q29kZV0/LmNoYXJzO1xuICAgICAgICAgIGlmIChyICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVySWJhbiA9IHRoaXMuZ2VuZXJhdGVQbGFjZWhvbGRlcihyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5iYmFuRmllbGQudmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU51bWJlcih0aGlzLmJiYW5GaWVsZC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZTogYW55KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveU5vdGlmaWVyJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95Tm90aWZpZXIkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBnZXRDb3VudHJ5Q29kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQ3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aChvZihJQkFOX1NVUFBPUlRFRF9DT1VOVFJJRVMpKSxcbiAgICAgIG1hcCgoW2ZpbHRlclZhbCwgY291bnRyeUNvZGVzXSkgPT4ge1xuICAgICAgICByZXR1cm4gY291bnRyeUNvZGVzLmZpbHRlcihjb2RlID0+IHtcbiAgICAgICAgICBpZiAoIWZpbHRlclZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWwudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGF1dG9Gb2N1c05leHQoXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICAgIG5leHRFbGVtZW50PzogSFRNTElucHV0RWxlbWVudCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFjb250cm9sLmVycm9ycyAmJiBuZXh0RWxlbWVudCkge1xuICAgICAgdGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKG5leHRFbGVtZW50LCAncHJvZ3JhbScpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT0gJ2lucHV0Jykge1xuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGNvbnRyb2xFbGVtZW50ID1cbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuaWJhbi1maWVsZHMnKSE7XG4gICAgY29udHJvbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgaWRzLmpvaW4oJyAnKSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoaWJhbjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBpYmFuO1xuICB9XG5cbiAgX2hhbmRsZUlucHV0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgbmV4dEVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5hdXRvRm9jdXNOZXh0KGNvbnRyb2wsIG5leHRFbGVtZW50KTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZmlyc3RUd29DaGFyc0FyZUxldHRlcnMoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gL15bYS16QS1aXXsyfS87XG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QoaW5wdXQpO1xuICB9XG5cbiAgZ2VuZXJhdGVQbGFjZWhvbGRlcihjaGFyczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhcnM7IGkrKykge1xuICAgICAgcGxhY2Vob2xkZXIgKz0gJzAnO1xuICAgIH1cbiAgICBjb25zdCBwaCA9IGZyaWVuZGx5Rm9ybWF0SUJBTihwbGFjZWhvbGRlcik/LnN1YnN0cmluZygyKTtcbiAgICBpZiAocGgpIHJldHVybiBwaDtcblxuICAgIHJldHVybiBwbGFjZWhvbGRlci5zdWJzdHJpbmcoMik7XG4gIH1cblxuICBvbktleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgY291bnRyeSB3aGVuIGJhY2tzcGFjZSBvbiBlbXB0eSBiYmFuXG4gICAgaWYgKHRoaXMuYmJhbkZpZWxkLnZhbHVlID09PSAnJyAmJiBldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICB0aGlzLmNvdW50cnlDb2RlRmllbGQuc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLnBhcnRzLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInBhcnRzXCI+XG4gIDwhLS0gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm9uZW1ydmEtaW5wdXQtaWJhblwiPi0tPlxuICA8IS0tICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD4tLT5cbiAgPGRpdiBjbGFzcz1cImliYW4tZmllbGRzXCI+XG4gICAgPGRpdiBjbGFzcz1cImliYW4tcHJlZml4XCI+XG4gICAgICA8bWF0LXNlbGVjdFxuICAgICAgICBjbGFzcz1cIm9uZW1ydmEtaWJhbi1zZWxlY3RcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5Q29kZVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiX2hhbmRsZUlucHV0KHBhcnRzLmNvbnRyb2xzLmNvdW50cnlDb2RlKVwiXG4gICAgICAgICNjb3VudHJ5Q29kZVxuICAgICAgPlxuICAgICAgICA8bWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LXNlbGVjdC1zZWFyY2hcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJDdHJsXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwic2VhcmNoQXJpYUxhYmVsXCJcbiAgICAgICAgICAgIFtub0VudHJpZXNGb3VuZExhYmVsXT1cIm5vRW50cmllc0ZvdW5kTGFiZWxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyTGFiZWxdPVwicGxhY2Vob2xkZXJMYWJlbFwiXG4gICAgICAgICAgPjwvbWF0LXNlbGVjdC1zZWFyY2g+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGNvdW50cnlDb2RlcyQgfCBhc3luY1wiXG4gICAgICAgICAgW3ZhbHVlXT1cImNvdW50cnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4+e3sgY291bnRyeSB9fTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDxpbnB1dFxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIlxuICAgICAgbWF0SW5wdXRcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlckliYW5cIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYmJhblwiXG4gICAgICBjbGFzcz1cIm9uZW1ydmEtdGV4dC1udW1iZXJcIlxuICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIChpbnB1dCk9XCJfaGFuZGxlSW5wdXQocGFydHMuY29udHJvbHMuYmJhbilcIlxuICAgICAgKGtleXVwKT1cIm9uS2V5dXAoJGV2ZW50KVwiXG4gICAgICAjYmJhblxuICAgIC8+XG4gIDwvZGl2PlxuICA8IS0tICAgIDxtYXQtaGludCAqbmdJZj1cImhpbnQgIT09ICcnXCI+e3sgaGludCB9fTwvbWF0LWhpbnQ+LS0+XG4gIDwhLS0gICAgPG1hdC1lcnJvciA+e3sgJ2Vycm9yJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPi0tPlxuICA8IS0tICA8L21hdC1mb3JtLWZpZWxkPi0tPlxuXG4gIDwhLS0gIHt7IHBhcnRzLmVycm9ycyB8anNvbiB9fS0tPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -188,10 +188,10 @@ export class OnemrvaMatInputPhoneComponent {
188
188
  return { phoneNumber: { value: 'input.phone.invalid' } };
189
189
  };
190
190
  }
191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatInputPhoneComponent, deps: [{ token: i1.OnemRvaCDNCountryService }], target: i0.ɵɵFactoryTarget.Component }); }
192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: OnemrvaMatInputPhoneComponent, isStandalone: true, selector: "onemrva-mat-input-phone", inputs: { readonly: "readonly", phoneNumber: "phoneNumber", label: "label", noEntriesFoundLabel: "noEntriesFoundLabel", placeholderLabel: "placeholderLabel", defaultPrefix: "defaultPrefix", searchAriaLabel: "searchAriaLabel", hint: "hint" }, outputs: { getCountry: "getCountry" }, viewQueries: [{ propertyName: "numberInput", first: true, predicate: ["numberInput"], descendants: true }], ngImport: i0, template: "<ng-container>\n <mat-form-field class=\"onemrva-input-phone-number\">\n <mat-label>{{ label }}</mat-label>\n\n <input\n (click)=\"handleClick($event)\"\n type=\"tel\"\n matInput\n phoneNumber\n #numberInput\n placeholder=\"+32 475 12 34 56\"\n [formControl]=\"phoneNumber\"\n class=\"onemrva-text-number\"\n [readOnly]=\"readonly\"\n />\n <mat-select\n matTextPrefix\n class=\"onemrva-phone-number-select\"\n [formControl]=\"countryCode\"\n >\n <mat-select-trigger>\n <flag-icon [countryCode]=\"countryCode.getRawValue()\" />\n </mat-select-trigger>\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n <mat-option\n *ngFor=\"let country of filteredCountries$ | async\"\n [value]=\"country.code\"\n >\n <flag-icon [countryCode]=\"country.code\" />\n &nbsp;&nbsp;&nbsp;\n {{ country.name }}\n &nbsp;&nbsp;&nbsp;\n <span class=\"dialcode\">\n {{ country.dial_code }}\n </span>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"number.invalid\">{{ errors() | translate }}</mat-error>\n </mat-form-field>\n</ng-container>\n", styles: [".onemrva-input-phone-number mat-select .mat-mdc-select-placeholder{width:1em!important;display:block!important}.onemrva-input-phone-number mat-select .mat-mdc-select-placeholder:before{width:1em!important;height:1em!important;background:#eee!important;visibility:visible!important;margin:10px 0!important}.onemrva-input-phone-number mat-select .mat-mdc-select-value{padding-right:8px}.onemrva-input-phone-number .onemrva-text-number{padding-left:12px!important;vertical-align:middle}.onemrva-input-phone-number .mat-mdc-form-field-text-prefix mat-select{line-height:14px!important}.onemrva-input-phone-number span.dialcode{color:#acaab2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.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: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.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: i5.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSelectSearchModule }, { kind: "component", type: i7.MatSelectSearchComponent, selector: "mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }, { kind: "directive", type: PhoneNumberDirective, selector: "[phoneNumber]" }, { kind: "component", type: FlagIconComponent, selector: "flag-icon", inputs: ["countryCode", "mode", "width"] }], encapsulation: i0.ViewEncapsulation.None }); }
191
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatInputPhoneComponent, deps: [{ token: i1.OnemRvaCDNCountryService }], target: i0.ɵɵFactoryTarget.Component }); }
192
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatInputPhoneComponent, isStandalone: true, selector: "onemrva-mat-input-phone", inputs: { readonly: "readonly", phoneNumber: "phoneNumber", label: "label", noEntriesFoundLabel: "noEntriesFoundLabel", placeholderLabel: "placeholderLabel", defaultPrefix: "defaultPrefix", searchAriaLabel: "searchAriaLabel", hint: "hint" }, outputs: { getCountry: "getCountry" }, viewQueries: [{ propertyName: "numberInput", first: true, predicate: ["numberInput"], descendants: true }], ngImport: i0, template: "<ng-container>\n <mat-form-field class=\"onemrva-input-phone-number\">\n <mat-label>{{ label }}</mat-label>\n\n <input\n (click)=\"handleClick($event)\"\n type=\"tel\"\n matInput\n phoneNumber\n #numberInput\n placeholder=\"+32 475 12 34 56\"\n [formControl]=\"phoneNumber\"\n class=\"onemrva-text-number\"\n [readOnly]=\"readonly\"\n />\n <mat-select\n matTextPrefix\n class=\"onemrva-phone-number-select\"\n [formControl]=\"countryCode\"\n >\n <mat-select-trigger>\n <flag-icon [countryCode]=\"countryCode.getRawValue()\" />\n </mat-select-trigger>\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n <mat-option\n *ngFor=\"let country of filteredCountries$ | async\"\n [value]=\"country.code\"\n >\n <flag-icon [countryCode]=\"country.code\" />\n &nbsp;&nbsp;&nbsp;\n {{ country.name }}\n &nbsp;&nbsp;&nbsp;\n <span class=\"dialcode\">\n {{ country.dial_code }}\n </span>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"number.invalid\">{{ errors() | translate }}</mat-error>\n </mat-form-field>\n</ng-container>\n", styles: [".onemrva-input-phone-number mat-select .mat-mdc-select-placeholder{width:1em!important;display:block!important}.onemrva-input-phone-number mat-select .mat-mdc-select-placeholder:before{width:1em!important;height:1em!important;background:#eee!important;visibility:visible!important;margin:10px 0!important}.onemrva-input-phone-number mat-select .mat-mdc-select-value{padding-right:8px}.onemrva-input-phone-number .onemrva-text-number{padding-left:12px!important;vertical-align:middle}.onemrva-input-phone-number .mat-mdc-form-field-text-prefix mat-select{line-height:14px!important}.onemrva-input-phone-number span.dialcode{color:#acaab2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.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: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.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: i5.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSelectSearchModule }, { kind: "component", type: i7.MatSelectSearchComponent, selector: "mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }, { kind: "directive", type: PhoneNumberDirective, selector: "[phoneNumber]" }, { kind: "component", type: FlagIconComponent, selector: "flag-icon", inputs: ["countryCode", "mode", "width"] }], encapsulation: i0.ViewEncapsulation.None }); }
193
193
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatInputPhoneComponent, decorators: [{
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatInputPhoneComponent, decorators: [{
195
195
  type: Component,
196
196
  args: [{ selector: 'onemrva-mat-input-phone', standalone: true, imports: [
197
197
  CommonModule,
@@ -35,10 +35,10 @@ export class PhoneNumberDirective {
35
35
  return;
36
36
  e.preventDefault();
37
37
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PhoneNumberDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
39
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: PhoneNumberDirective, isStandalone: true, selector: "[phoneNumber]", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0 }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PhoneNumberDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
39
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: PhoneNumberDirective, isStandalone: true, selector: "[phoneNumber]", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0 }); }
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PhoneNumberDirective, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PhoneNumberDirective, decorators: [{
42
42
  type: Directive,
43
43
  args: [{
44
44
  selector: '[phoneNumber]',
@@ -122,10 +122,10 @@ export class OnemrvaMatMessageBoxComponent {
122
122
  this.mbcontent.nativeElement.insertAdjacentHTML('beforeend', this.messageCode);
123
123
  }
124
124
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMessageBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
126
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: OnemrvaMatMessageBoxComponent, selector: "onemrva-mat-message-box", inputs: { label: "label", messageCode: "messageCode", id: "id", dataCy: "dataCy", color: "color" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "attr.role": "this.role", "class.onemrva-mat-message-box": "this.cssClass", "attr.id": "this.id", "attr.data-cy": "this.dataCy", "class.mat-error": "this._isError", "class.mat-warn": "this._isWarn", "class.mat-success": "this._isSuccess", "class.mat-grayscale": "this.isGrayscale", "class.mat-info": "this._isInfo" } }, viewQueries: [{ propertyName: "mbcontent", first: true, predicate: ["mbcontent"], descendants: true }], ngImport: i0, template: "<div #mbcontent>\n <ng-content></ng-content>\n</div>\n" }); }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMessageBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
126
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatMessageBoxComponent, selector: "onemrva-mat-message-box", inputs: { label: "label", messageCode: "messageCode", id: "id", dataCy: "dataCy", color: "color" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "attr.role": "this.role", "class.onemrva-mat-message-box": "this.cssClass", "attr.id": "this.id", "attr.data-cy": "this.dataCy", "class.mat-error": "this._isError", "class.mat-warn": "this._isWarn", "class.mat-success": "this._isSuccess", "class.mat-grayscale": "this.isGrayscale", "class.mat-info": "this._isInfo" } }, viewQueries: [{ propertyName: "mbcontent", first: true, predicate: ["mbcontent"], descendants: true }], ngImport: i0, template: "<div #mbcontent>\n <ng-content></ng-content>\n</div>\n" }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMessageBoxComponent, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMessageBoxComponent, decorators: [{
129
129
  type: Component,
130
130
  args: [{ selector: 'onemrva-mat-message-box', template: "<div #mbcontent>\n <ng-content></ng-content>\n</div>\n" }]
131
131
  }], propDecorators: { label: [{
@@ -5,11 +5,11 @@ import { TranslateModule } from '@ngx-translate/core';
5
5
  import { OnemrvaMatMessageBoxComponent } from './onemrva-mat-message-box.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export class OnemrvaMatMessageBoxModule {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMessageBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMessageBoxModule, declarations: [OnemrvaMatMessageBoxComponent], imports: [CommonModule, MatIconModule, TranslateModule], exports: [OnemrvaMatMessageBoxComponent] }); }
10
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMessageBoxModule, imports: [CommonModule, MatIconModule, TranslateModule] }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMessageBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMessageBoxModule, declarations: [OnemrvaMatMessageBoxComponent], imports: [CommonModule, MatIconModule, TranslateModule], exports: [OnemrvaMatMessageBoxComponent] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMessageBoxModule, imports: [CommonModule, MatIconModule, TranslateModule] }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMessageBoxModule, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMessageBoxModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [OnemrvaMatMessageBoxComponent],
@@ -118,8 +118,8 @@ export class OnemrvaMatMultiSelectComponent extends MatFormFieldControl {
118
118
  this.searchFilter.updateValueAndValidity({ emitEvent: true });
119
119
  }
120
120
  }
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMultiSelectComponent, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: OnemrvaMatMultiSelectComponent, selector: "onemrva-mat-multi-select", inputs: { formControl: "formControl", role: ["attr.role", "role"], label: ["attr.aria-label", "label"], invalid: ["attr.aria-invalid", "invalid"], showFilter: "showFilter", selectionToggle: "selectionToggle", dataCy: ["attr.data-cy", "dataCy"] }, host: { properties: { "style.opacity": "this.opacity" } }, providers: [
121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMultiSelectComponent, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
122
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatMultiSelectComponent, selector: "onemrva-mat-multi-select", inputs: { formControl: "formControl", role: ["attr.role", "role"], label: ["attr.aria-label", "label"], invalid: ["attr.aria-invalid", "invalid"], showFilter: "showFilter", selectionToggle: "selectionToggle", dataCy: ["attr.data-cy", "dataCy"] }, host: { properties: { "style.opacity": "this.opacity" } }, providers: [
123
123
  {
124
124
  provide: MatFormFieldControl,
125
125
  useExisting: OnemrvaMatMultiSelectComponent,
@@ -140,7 +140,7 @@ export class OnemrvaMatMultiSelectComponent extends MatFormFieldControl {
140
140
  // },
141
141
  ], queries: [{ propertyName: "matOptions", predicate: MatOption }], usesInheritance: true, ngImport: i0, template: "<mat-select\n multiple=\"true\"\n [formControl]=\"formControl\"\n [attr.data-cy]=\"dataCy\"\n [attr.aria-label]=\"label\"\n>\n <div class=\"selection-choice\" *ngIf=\"selectionToggle\">\n <a\n tabindex=\"1\"\n class=\"small\"\n [ngClass]=\"{ disabled: isAllSelected() }\"\n (click)=\"selectAll()\"\n >{{ 'select.select.all' | translate }}</a\n ><span class=\"small grey\">&nbsp;&nbsp;|&nbsp;&nbsp;</span>\n <a\n tabindex=\"2\"\n class=\"small\"\n [ngClass]=\"{ disabled: isNoneSelected() }\"\n (click)=\"deselectAll($event)\"\n >{{ 'select.deselect.all' | translate }}</a\n >\n </div>\n <div class=\"option-list\">\n <mat-option *ngIf=\"showFilter\">\n <mat-select-search\n [formControl]=\"searchFilter\"\n ariaLabel=\"{{ 'select.search.filter' | translate }}\"\n noEntriesFoundLabel=\"{{ 'select.search.notFound' | translate }}\"\n placeholderLabel=\"{{ 'select.search.filter' | translate }}\"\n ></mat-select-search>\n </mat-option>\n <ng-container *ngFor=\"let matOption of matOptions$ | async\">\n <mat-option\n [disabled]=\"matOption.disabled\"\n [value]=\"matOption.value\"\n [attr.data-cy]=\"matOption._getHostElement().dataset['cy']\"\n >\n {{ matOption._text?.nativeElement?.innerHTML }}\n </mat-option>\n </ng-container>\n </div>\n</mat-select>\n<div class=\"mat-select-counter\" *ngIf=\"counter > 0\">\n <span class=\"text\">{{ counter }}</span\n ><mat-icon (click)=\"deselectAll($event)\">close</mat-icon>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.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: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatSelectSearchComponent, selector: "mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
142
142
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMultiSelectComponent, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMultiSelectComponent, decorators: [{
144
144
  type: Component,
145
145
  args: [{ selector: 'onemrva-mat-multi-select', providers: [
146
146
  {
@@ -10,8 +10,8 @@ import { MatIconModule } from '@angular/material/icon';
10
10
  import { MatSelectSearchModule } from '@onemrvapublic/design-system/mat-select-search';
11
11
  import * as i0 from "@angular/core";
12
12
  export class OnemrvaMatMultiSelectModule {
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMultiSelectModule, declarations: [OnemrvaMatMultiSelectComponent], imports: [CommonModule,
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMultiSelectModule, declarations: [OnemrvaMatMultiSelectComponent], imports: [CommonModule,
15
15
  FormsModule,
16
16
  TranslateModule,
17
17
  MatFormFieldModule,
@@ -20,7 +20,7 @@ export class OnemrvaMatMultiSelectModule {
20
20
  MatIconModule,
21
21
  MatSelectSearchModule,
22
22
  ReactiveFormsModule], exports: [OnemrvaMatMultiSelectComponent] }); }
23
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMultiSelectModule, imports: [CommonModule,
23
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMultiSelectModule, imports: [CommonModule,
24
24
  FormsModule,
25
25
  TranslateModule,
26
26
  MatFormFieldModule,
@@ -30,7 +30,7 @@ export class OnemrvaMatMultiSelectModule {
30
30
  MatSelectSearchModule,
31
31
  ReactiveFormsModule] }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatMultiSelectModule, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatMultiSelectModule, decorators: [{
34
34
  type: NgModule,
35
35
  args: [{
36
36
  declarations: [OnemrvaMatMultiSelectComponent],
@@ -116,10 +116,10 @@ export class OnemrvaMatNotificationComponent {
116
116
  this._isOpen = false;
117
117
  this.notificationClose.emit();
118
118
  }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatNotificationComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: OnemrvaMatNotificationComponent, isStandalone: true, selector: "onemrva-mat-notification", inputs: { message: "message", closable: "closable", id: "id", dataCy: "dataCy", color: "color" }, outputs: { notificationClose: "notificationClose" }, host: { properties: { "class.collapse-notification": "this._closed", "attr.id": "this.id", "attr.data-cy": "this.dataCy", "attr.aria-live": "this.ariaLive", "attr.role": "this.role", "class.mat-error": "this._isError", "class.mat-warn": "this._isWarn", "class.mat-success": "this._isSuccess", "class.mat-info": "this._isInfo" } }, ngImport: i0, template: "<div class=\"onemrva-mat-notification container\">\n <div class=\"onemrva-mat-notification-content\">\n <ng-container *ngIf=\"message !== ''\">{{\n message | translate\n }}</ng-container>\n <ng-content></ng-content>\n <mat-icon\n class=\"close-notification\"\n (click)=\"closeNotification()\"\n *ngIf=\"closable || isSmall\"\n >\n close\n </mat-icon>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatNotificationComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatNotificationComponent, isStandalone: true, selector: "onemrva-mat-notification", inputs: { message: "message", closable: "closable", id: "id", dataCy: "dataCy", color: "color" }, outputs: { notificationClose: "notificationClose" }, host: { properties: { "class.collapse-notification": "this._closed", "attr.id": "this.id", "attr.data-cy": "this.dataCy", "attr.aria-live": "this.ariaLive", "attr.role": "this.role", "class.mat-error": "this._isError", "class.mat-warn": "this._isWarn", "class.mat-success": "this._isSuccess", "class.mat-info": "this._isInfo" } }, ngImport: i0, template: "<div class=\"onemrva-mat-notification container\">\n <div class=\"onemrva-mat-notification-content\">\n <ng-container *ngIf=\"message !== ''\">{{\n message | translate\n }}</ng-container>\n <ng-content></ng-content>\n <mat-icon\n class=\"close-notification\"\n (click)=\"closeNotification()\"\n *ngIf=\"closable || isSmall\"\n >\n close\n </mat-icon>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
121
121
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatNotificationComponent, decorators: [{
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatNotificationComponent, decorators: [{
123
123
  type: Component,
124
124
  args: [{ selector: 'onemrva-mat-notification', standalone: true, imports: [CommonModule, TranslateModule, MatIconModule], template: "<div class=\"onemrva-mat-notification container\">\n <div class=\"onemrva-mat-notification-content\">\n <ng-container *ngIf=\"message !== ''\">{{\n message | translate\n }}</ng-container>\n <ng-content></ng-content>\n <mat-icon\n class=\"close-notification\"\n (click)=\"closeNotification()\"\n *ngIf=\"closable || isSmall\"\n >\n close\n </mat-icon>\n </div>\n</div>\n" }]
125
125
  }], ctorParameters: () => [{ type: i1.BreakpointObserver }], propDecorators: { message: [{
@@ -179,10 +179,10 @@ export class OnemrvaMatPaginatorComponent {
179
179
  // Deprecated
180
180
  this.onRequestPage.emit(this._pageIndex);
181
181
  }
182
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatPaginatorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
183
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: OnemrvaMatPaginatorComponent, selector: "onemrva-mat-paginator", inputs: { type: "type", pageSizeSelector: "pageSizeSelector", pageSizeOptions: "pageSizeOptions", pageSizeDefaultOption: "pageSizeDefaultOption", recordKey: "recordKey", pageIndex: "pageIndex", length: "length", pageSize: "pageSize", previousKey: "previousKey", nextKey: "nextKey" }, outputs: { onRequestPage: "onRequestPage", page: "page" }, ngImport: i0, template: "<div class=\"paginator-container\">\n <div class=\"paginator-size-selector-container\" *ngIf=\"pageSizeSelector\">\n <mat-form-field\n appearance=\"outline\"\n class=\"paginator-size-selector\"\n data-cy=\"onemrva-mat-paginator-page-size-selector\"\n >\n <mat-select [value]=\"pageSizeDefaultOption\">\n <mat-option\n *ngFor=\"let size of pageSizeOptions\"\n [value]=\"size\"\n (click)=\"pageSize = size\"\n [attr.data-cy]=\"'onemrva-mat-paginator-page-size-option-' + size\"\n >{{ size }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <div>\n <span style=\"display: inline-block\">{{\n 'paginator.' + recordKey | translate\n }}</span>\n <mat-divider vertical></mat-divider>\n\n {{ pageIndex * pageSize + 1 }} - {{ maxRecordNumber }}\n <span>{{ 'paginator.outOf' | translate }}</span>\n {{ length }}\n </div>\n </div>\n\n <div\n *ngIf=\"pages.length > 1\"\n class=\"onemrva-mat-paginator\"\n data-cy=\"onemrva-mat-paginator\"\n >\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-previous\"\n data-cy=\"onemrva-mat-paginator-btn-previous\"\n [disabled]=\"pageIndex === 0\"\n (click)=\"pageIndex = pageIndex - 1\"\n >\n {{ 'paginator.' + previousKey | translate }}\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-first\"\n data-cy=\"onemrva-mat-paginator-first\"\n *ngIf=\"pages[0] > 0 && type === 'complex'\"\n (click)=\"pageIndex = 0\"\n >\n 1\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-too-many\"\n data-cy=\"onemrva-mat-paginator-btn-too-many-before\"\n *ngIf=\"pages[0] > 0\"\n (click)=\"pageIndex = pageIndex - numberOfReachablePages\"\n >\n ...\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-page\"\n [ngClass]=\"{ 'onemrva-mat-paginator-current-index': pageIndex === page }\"\n data-cy=\"onemrva-mat-paginator-btn-page\"\n *ngFor=\"let page of pages\"\n (click)=\"pageIndex = page\"\n >\n {{ page + 1 }}\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-too-many\"\n data-cy=\"onemrva-mat-paginator-btn-too-many-after\"\n *ngIf=\"pages[pages.length - 1] < totalNumberOfPages - 1\"\n (click)=\"pageIndex = pageIndex + numberOfReachablePages\"\n >\n ...\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-last\"\n data-cy=\"onemrva-mat-paginator-btn-last\"\n *ngIf=\"\n pages[pages.length - 1] < totalNumberOfPages - 1 && type === 'complex'\n \"\n (click)=\"pageIndex = totalNumberOfPages - 1\"\n >\n {{ totalNumberOfPages }}\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-next\"\n data-cy=\"onemrva-mat-paginator-btn-next\"\n [disabled]=\"pageIndex >= totalNumberOfPages - 1\"\n (click)=\"pageIndex = pageIndex + 1\"\n >\n {{ 'paginator.' + nextKey | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.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: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatPaginatorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
183
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OnemrvaMatPaginatorComponent, selector: "onemrva-mat-paginator", inputs: { type: "type", pageSizeSelector: "pageSizeSelector", pageSizeOptions: "pageSizeOptions", pageSizeDefaultOption: "pageSizeDefaultOption", recordKey: "recordKey", pageIndex: "pageIndex", length: "length", pageSize: "pageSize", previousKey: "previousKey", nextKey: "nextKey" }, outputs: { onRequestPage: "onRequestPage", page: "page" }, ngImport: i0, template: "<div class=\"paginator-container\">\n <div class=\"paginator-size-selector-container\" *ngIf=\"pageSizeSelector\">\n <mat-form-field\n appearance=\"outline\"\n class=\"paginator-size-selector\"\n data-cy=\"onemrva-mat-paginator-page-size-selector\"\n >\n <mat-select [value]=\"pageSizeDefaultOption\">\n <mat-option\n *ngFor=\"let size of pageSizeOptions\"\n [value]=\"size\"\n (click)=\"pageSize = size\"\n [attr.data-cy]=\"'onemrva-mat-paginator-page-size-option-' + size\"\n >{{ size }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <div>\n <span style=\"display: inline-block\">{{\n 'paginator.' + recordKey | translate\n }}</span>\n <mat-divider vertical></mat-divider>\n\n {{ pageIndex * pageSize + 1 }} - {{ maxRecordNumber }}\n <span>{{ 'paginator.outOf' | translate }}</span>\n {{ length }}\n </div>\n </div>\n\n <div\n *ngIf=\"pages.length > 1\"\n class=\"onemrva-mat-paginator\"\n data-cy=\"onemrva-mat-paginator\"\n >\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-previous\"\n data-cy=\"onemrva-mat-paginator-btn-previous\"\n [disabled]=\"pageIndex === 0\"\n (click)=\"pageIndex = pageIndex - 1\"\n >\n {{ 'paginator.' + previousKey | translate }}\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-first\"\n data-cy=\"onemrva-mat-paginator-first\"\n *ngIf=\"pages[0] > 0 && type === 'complex'\"\n (click)=\"pageIndex = 0\"\n >\n 1\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-too-many\"\n data-cy=\"onemrva-mat-paginator-btn-too-many-before\"\n *ngIf=\"pages[0] > 0\"\n (click)=\"pageIndex = pageIndex - numberOfReachablePages\"\n >\n ...\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-page\"\n [ngClass]=\"{ 'onemrva-mat-paginator-current-index': pageIndex === page }\"\n data-cy=\"onemrva-mat-paginator-btn-page\"\n *ngFor=\"let page of pages\"\n (click)=\"pageIndex = page\"\n >\n {{ page + 1 }}\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-too-many\"\n data-cy=\"onemrva-mat-paginator-btn-too-many-after\"\n *ngIf=\"pages[pages.length - 1] < totalNumberOfPages - 1\"\n (click)=\"pageIndex = pageIndex + numberOfReachablePages\"\n >\n ...\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-last\"\n data-cy=\"onemrva-mat-paginator-btn-last\"\n *ngIf=\"\n pages[pages.length - 1] < totalNumberOfPages - 1 && type === 'complex'\n \"\n (click)=\"pageIndex = totalNumberOfPages - 1\"\n >\n {{ totalNumberOfPages }}\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-next\"\n data-cy=\"onemrva-mat-paginator-btn-next\"\n [disabled]=\"pageIndex >= totalNumberOfPages - 1\"\n (click)=\"pageIndex = pageIndex + 1\"\n >\n {{ 'paginator.' + nextKey | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.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: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
184
184
  }
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OnemrvaMatPaginatorComponent, decorators: [{
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OnemrvaMatPaginatorComponent, decorators: [{
186
186
  type: Component,
187
187
  args: [{ selector: 'onemrva-mat-paginator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"paginator-container\">\n <div class=\"paginator-size-selector-container\" *ngIf=\"pageSizeSelector\">\n <mat-form-field\n appearance=\"outline\"\n class=\"paginator-size-selector\"\n data-cy=\"onemrva-mat-paginator-page-size-selector\"\n >\n <mat-select [value]=\"pageSizeDefaultOption\">\n <mat-option\n *ngFor=\"let size of pageSizeOptions\"\n [value]=\"size\"\n (click)=\"pageSize = size\"\n [attr.data-cy]=\"'onemrva-mat-paginator-page-size-option-' + size\"\n >{{ size }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <div>\n <span style=\"display: inline-block\">{{\n 'paginator.' + recordKey | translate\n }}</span>\n <mat-divider vertical></mat-divider>\n\n {{ pageIndex * pageSize + 1 }} - {{ maxRecordNumber }}\n <span>{{ 'paginator.outOf' | translate }}</span>\n {{ length }}\n </div>\n </div>\n\n <div\n *ngIf=\"pages.length > 1\"\n class=\"onemrva-mat-paginator\"\n data-cy=\"onemrva-mat-paginator\"\n >\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-previous\"\n data-cy=\"onemrva-mat-paginator-btn-previous\"\n [disabled]=\"pageIndex === 0\"\n (click)=\"pageIndex = pageIndex - 1\"\n >\n {{ 'paginator.' + previousKey | translate }}\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-first\"\n data-cy=\"onemrva-mat-paginator-first\"\n *ngIf=\"pages[0] > 0 && type === 'complex'\"\n (click)=\"pageIndex = 0\"\n >\n 1\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-too-many\"\n data-cy=\"onemrva-mat-paginator-btn-too-many-before\"\n *ngIf=\"pages[0] > 0\"\n (click)=\"pageIndex = pageIndex - numberOfReachablePages\"\n >\n ...\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-page\"\n [ngClass]=\"{ 'onemrva-mat-paginator-current-index': pageIndex === page }\"\n data-cy=\"onemrva-mat-paginator-btn-page\"\n *ngFor=\"let page of pages\"\n (click)=\"pageIndex = page\"\n >\n {{ page + 1 }}\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-too-many\"\n data-cy=\"onemrva-mat-paginator-btn-too-many-after\"\n *ngIf=\"pages[pages.length - 1] < totalNumberOfPages - 1\"\n (click)=\"pageIndex = pageIndex + numberOfReachablePages\"\n >\n ...\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-last\"\n data-cy=\"onemrva-mat-paginator-btn-last\"\n *ngIf=\"\n pages[pages.length - 1] < totalNumberOfPages - 1 && type === 'complex'\n \"\n (click)=\"pageIndex = totalNumberOfPages - 1\"\n >\n {{ totalNumberOfPages }}\n </button>\n\n <button\n type=\"button\"\n class=\"onemrva-mat-paginator-btn onemrva-mat-paginator-btn-next\"\n data-cy=\"onemrva-mat-paginator-btn-next\"\n [disabled]=\"pageIndex >= totalNumberOfPages - 1\"\n (click)=\"pageIndex = pageIndex + 1\"\n >\n {{ 'paginator.' + nextKey | translate }}\n </button>\n </div>\n</div>\n" }]
188
188
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { type: [{