@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.
- package/assets/i18n/de.json +10 -4
- package/assets/i18n/en.json +10 -4
- package/assets/i18n/fr.json +10 -4
- package/assets/i18n/nl.json +10 -4
- package/esm2022/core/src/lib/core.module.mjs +4 -4
- package/esm2022/core/src/lib/services/onemrva-error-handler.service.mjs +3 -3
- package/esm2022/flag-icon/src/flag-icon.component.mjs +3 -3
- package/esm2022/layout/src/components/layout/layout.component.mjs +5 -5
- package/esm2022/layout/src/components/layout-after-nav/layout-after-nav.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-content/layout-content.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-drawer-actions/layout-drawer-actions.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-drawer-content/layout-drawer-content.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-drawer-title/layout-drawer-title.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-footer/layout-footer.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-login-menu/layout-login-menu.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-route/layout-route.component.mjs +5 -5
- package/esm2022/layout/src/components/layout-sidenav/layout-sidenav.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.mjs +3 -3
- package/esm2022/layout/src/components/layout-subroute/layout-subroute.component.mjs +4 -4
- package/esm2022/layout/src/components/layout-title/layout-title.component.mjs +3 -3
- package/esm2022/layout/src/directives/drawer-host.directive.mjs +3 -3
- package/esm2022/layout/src/layout.module.mjs +4 -4
- package/esm2022/layout/src/services/drawer.service.mjs +3 -3
- package/esm2022/layout/src/striphtml.pipe.mjs +3 -3
- package/esm2022/mat-avatar/src/onemrva-mat-avatar.component.mjs +3 -3
- package/esm2022/mat-avatar/src/onemrva-mat-avatar.module.mjs +4 -4
- package/esm2022/mat-badge/src/onemrva-mat-badge.component.mjs +3 -3
- package/esm2022/mat-badge/src/onemrva-mat-badge.module.mjs +4 -4
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.mjs +3 -3
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.mjs +4 -4
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.service.mjs +3 -3
- package/esm2022/mat-carousel/src/mat-carousel-item/onemrva-mat-carousel-item.component.mjs +3 -3
- package/esm2022/mat-carousel/src/onemrva-mat-carousel.component.mjs +7 -4
- package/esm2022/mat-copy-to-clipboard/src/components/copy-to-clipboard.component.mjs +3 -3
- package/esm2022/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.mjs +3 -3
- package/esm2022/mat-empty-row/src/onemrva-mat-empty-row.component.mjs +3 -3
- package/esm2022/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.mjs +3 -3
- package/esm2022/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.mjs +3 -3
- package/esm2022/mat-file-upload/src/directives/dnd.directive.mjs +3 -3
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.module.mjs +4 -4
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.service.mjs +3 -3
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.store.mjs +3 -3
- package/esm2022/mat-input-birthplace/src/country-item.component.mjs +3 -3
- package/esm2022/mat-input-birthplace/src/onemrva-mat-input-birthplace.component.mjs +3 -3
- package/esm2022/mat-input-country/src/onemrva-mat-input-country.component.mjs +3 -3
- package/esm2022/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.mjs +3 -3
- package/esm2022/mat-input-iban/index.mjs +5 -0
- package/esm2022/mat-input-iban/onemrvapublic-design-system-mat-input-iban.mjs +5 -0
- package/esm2022/mat-input-iban/src/onemrva-mat-input-iban.component.mjs +278 -0
- package/esm2022/mat-input-phone/src/onemrva-mat-input-phone.component.mjs +3 -3
- package/esm2022/mat-input-phone/src/phone-number.directive.mjs +3 -3
- package/esm2022/mat-message-box/src/onemrva-mat-message-box.component.mjs +3 -3
- package/esm2022/mat-message-box/src/onemrva-mat-message-box.module.mjs +4 -4
- package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.component.mjs +3 -3
- package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.module.mjs +4 -4
- package/esm2022/mat-notification/src/onemrva-mat-notification.component.mjs +3 -3
- package/esm2022/mat-paginator/src/onemrva-mat-paginator.component.mjs +3 -3
- package/esm2022/mat-paginator/src/onemrva-mat-paginator.module.mjs +4 -4
- package/esm2022/mat-panel/src/onemrva-mat-panel-content.component.mjs +3 -3
- package/esm2022/mat-panel/src/onemrva-mat-panel-icon.component.mjs +3 -3
- package/esm2022/mat-panel/src/onemrva-mat-panel-title-action.component.mjs +3 -3
- package/esm2022/mat-panel/src/onemrva-mat-panel-title.component.mjs +3 -3
- package/esm2022/mat-panel/src/onemrva-mat-panel.component.mjs +3 -3
- package/esm2022/mat-panel/src/onemrva-mat-panel.module.mjs +4 -4
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-content.component.mjs +3 -3
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.mjs +3 -3
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.component.mjs +3 -3
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.module.mjs +4 -4
- package/esm2022/mat-progress-bar/src/onemrva-mat-progress-bar.component.mjs +3 -3
- package/esm2022/mat-select-search/src/mat-select-no-entries-found.directive.mjs +3 -3
- package/esm2022/mat-select-search/src/mat-select-search-clear.directive.mjs +3 -3
- package/esm2022/mat-select-search/src/mat-select-search.component.mjs +3 -3
- package/esm2022/mat-select-search/src/mat-select-search.module.mjs +4 -4
- package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.component.mjs +3 -3
- package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.module.mjs +4 -4
- package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.component.mjs +3 -3
- package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.module.mjs +4 -4
- package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.component.mjs +3 -3
- package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.module.mjs +4 -4
- package/esm2022/mat-spinner/src/onemrva-mat-loading.directive.mjs +3 -3
- package/esm2022/mat-spinner/src/onemrva-mat-spinner.component.mjs +3 -3
- package/esm2022/mat-spinner/src/onemrva-mat-spinner.module.mjs +4 -4
- package/esm2022/mat-stepper/src/onemrva-mat-stepper.component.mjs +3 -3
- package/esm2022/mat-stepper/src/onemrva-mat-stepper.module.mjs +4 -4
- package/esm2022/mat-sticker/src/onemrva-mat-sticker.component.mjs +3 -3
- package/esm2022/mat-sticker/src/onemrva-mat-sticker.module.mjs +4 -4
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.component.mjs +3 -3
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.directive.mjs +3 -3
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.service.mjs +3 -3
- package/esm2022/mat-task-list/src/onemrva-mat-task-content.component.mjs +3 -3
- package/esm2022/mat-task-list/src/onemrva-mat-task-list.component.mjs +3 -3
- package/esm2022/mat-task-list/src/onemrva-mat-task-list.module.mjs +4 -4
- package/esm2022/mat-task-list/src/onemrva-mat-task-title.component.mjs +3 -3
- package/esm2022/mat-task-list/src/onemrva-mat-task.component.mjs +3 -3
- package/esm2022/mat-timepicker/src/clock/clock.component.mjs +3 -3
- package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.component.mjs +3 -3
- package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.module.mjs +4 -4
- package/esm2022/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.mjs +3 -3
- package/esm2022/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.mjs +6 -6
- package/esm2022/mat-timepicker/src/timepicker.directive.mjs +3 -3
- package/esm2022/mat-toast/src/onemrva-mat-toast.component.mjs +3 -3
- package/esm2022/mat-toast/src/onemrva-mat-toast.module.mjs +4 -4
- package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.component.mjs +3 -3
- package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.directive.mjs +3 -3
- package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.module.mjs +4 -4
- package/esm2022/page-not-found/src/page-not-found-action.component.mjs +3 -3
- package/esm2022/page-not-found/src/page-not-found-extra.component.mjs +3 -3
- package/esm2022/page-not-found/src/page-not-found-invader.component.mjs +3 -3
- package/esm2022/page-not-found/src/page-not-found.component.mjs +3 -3
- package/esm2022/page-not-found/src/page-not-found.module.mjs +4 -4
- package/esm2022/shared/src/lib/adapters/date.adapter.mjs +3 -3
- package/esm2022/shared/src/lib/components/clipboard-icon/clipboard-icon.component.mjs +3 -3
- package/esm2022/shared/src/lib/containers/WebComponentOverlayContainer.mjs +3 -3
- package/esm2022/shared/src/lib/directives/clipboard.directive.mjs +3 -3
- package/esm2022/shared/src/lib/directives/color.directive.mjs +3 -3
- package/esm2022/shared/src/lib/directives/digit-only.directive.mjs +3 -3
- package/esm2022/shared/src/lib/directives/iconRight.directive.mjs +3 -3
- package/esm2022/shared/src/lib/directives/if-width-is.directive.mjs +3 -3
- package/esm2022/shared/src/lib/directives/mask.directive.mjs +3 -3
- package/esm2022/shared/src/lib/directives/mat-row-clickable.directive.mjs +3 -3
- package/esm2022/shared/src/lib/pipes/onemrva-bce.pipe.mjs +3 -3
- package/esm2022/shared/src/lib/pipes/onemrva-niss.pipe.mjs +3 -3
- package/esm2022/shared/src/lib/services/cache.service.mjs +3 -3
- package/esm2022/shared/src/lib/services/cdn.service.mjs +3 -3
- package/esm2022/shared/src/lib/services/country-cdn.service.mjs +8 -5
- package/esm2022/shared/src/lib/services/country-lookup.service.mjs +3 -3
- package/esm2022/shared/src/lib/shared.datepicker.module.mjs +4 -4
- package/esm2022/shared/src/lib/shared.module.mjs +4 -4
- package/esm2022/shared/src/lib/validators/bank-account.validator.utils.mjs +18 -7
- package/fesm2022/onemrvapublic-design-system-core.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-flag-icon.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-layout.mjs +54 -54
- package/fesm2022/onemrvapublic-design-system-layout.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-avatar.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-badge.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-breadcrumb.mjs +10 -10
- package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs +9 -6
- package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-copy-to-clipboard.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs +19 -19
- package/fesm2022/onemrvapublic-design-system-mat-input-birthplace.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs +289 -0
- package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs.map +1 -0
- package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-mat-message-box.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-notification.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-panel.mjs +19 -19
- package/fesm2022/onemrvapublic-design-system-mat-pop-over.mjs +13 -13
- package/fesm2022/onemrvapublic-design-system-mat-progress-bar.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-select-search.mjs +13 -13
- package/fesm2022/onemrvapublic-design-system-mat-selectable-box.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-side-menu.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-skeleton.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs +10 -10
- package/fesm2022/onemrvapublic-design-system-mat-stepper.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-sticker.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs +9 -9
- package/fesm2022/onemrvapublic-design-system-mat-task-list.mjs +16 -16
- package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs +22 -22
- package/fesm2022/onemrvapublic-design-system-mat-toast.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-mat-tooltip.mjs +10 -10
- package/fesm2022/onemrvapublic-design-system-page-not-found.mjs +16 -16
- package/fesm2022/onemrvapublic-design-system-shared.mjs +77 -63
- package/fesm2022/onemrvapublic-design-system-shared.mjs.map +1 -1
- package/layout/src/components/layout/layout.component.scss +11 -0
- package/mat-input-iban/index.d.ts +1 -0
- package/{mat-input-bank-account/src/bank-account.component.d.ts → mat-input-iban/src/onemrva-mat-input-iban.component.d.ts} +39 -28
- package/mat-input-iban/src/onemrva-mat-input-iban.component.scss +10 -0
- package/package.json +7 -7
- package/shared/src/lib/services/country-cdn.service.d.ts +5 -65
- package/esm2022/mat-input-bank-account/index.mjs +0 -5
- package/esm2022/mat-input-bank-account/onemrvapublic-design-system-mat-input-bank-account.mjs +0 -5
- package/esm2022/mat-input-bank-account/src/bank-account.component.mjs +0 -223
- package/esm2022/mat-input-bank-account/src/onemrva-mat-input-bank-account.component.mjs +0 -66
- package/fesm2022/onemrvapublic-design-system-mat-input-bank-account.mjs +0 -286
- package/fesm2022/onemrvapublic-design-system-mat-input-bank-account.mjs.map +0 -1
- package/mat-input-bank-account/index.d.ts +0 -1
- package/mat-input-bank-account/src/bank-account.component.scss +0 -42
- package/mat-input-bank-account/src/onemrva-mat-input-bank-account.component.d.ts +0 -15
- 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.
|
|
192
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
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 \n {{ country.name }}\n \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.
|
|
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.
|
|
39
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
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.
|
|
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.
|
|
126
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
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.
|
|
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.
|
|
9
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
10
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
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.
|
|
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.
|
|
122
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
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\"> | </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.
|
|
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.
|
|
14
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
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.
|
|
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.
|
|
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.
|
|
120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
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.
|
|
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.
|
|
183
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
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.
|
|
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: [{
|