@sumaris-net/ngx-components 2.7.0-rc2 → 2.7.0-rc4

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.
@@ -1,271 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Optional, Output, ViewChild } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { isNil, isNotNil, toNumber } from '../../functions';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@ngx-translate/core";
6
- import * as i2 from "@angular/forms";
7
- import * as i3 from "@angular/common";
8
- import * as i4 from "@ionic/angular";
9
- import * as i5 from "@angular/material/form-field";
10
- import * as i6 from "@angular/material/input";
11
- import * as i7 from "@angular/material/radio";
12
- import * as i8 from "@angular/material/checkbox";
13
- import * as i9 from "../../pipes/types.pipes";
14
- const DEFAULT_VALUE_ACCESSOR = {
15
- provide: NG_VALUE_ACCESSOR,
16
- useExisting: forwardRef(() => MatBooleanField),
17
- multi: true
18
- };
19
- const noop = () => {
20
- };
21
- export class MatBooleanField {
22
- translate;
23
- formBuilder;
24
- cd;
25
- formGroupDir;
26
- _onChangeCallback = noop;
27
- _onTouchedCallback = noop;
28
- _writing = false;
29
- _value;
30
- _tabindex;
31
- showRadio = false;
32
- disabled = false;
33
- formControl;
34
- formControlName;
35
- placeholder;
36
- floatLabel = 'auto';
37
- appearance;
38
- readonly = false;
39
- required = false;
40
- compact = false;
41
- style;
42
- buttonsColCount;
43
- classList;
44
- yesLabel = 'COMMON.YES';
45
- noLabel = 'COMMON.NO';
46
- showButtonIcons = true;
47
- yesIcon = 'checkmark';
48
- noIcon = 'close';
49
- onPressEnter = new EventEmitter();
50
- onBlur = new EventEmitter();
51
- set tabindex(value) {
52
- if (this._tabindex !== value) {
53
- this._tabindex = value;
54
- setTimeout(() => this.updateTabIndex());
55
- }
56
- }
57
- get tabindex() {
58
- return this._tabindex;
59
- }
60
- get value() {
61
- return this._value;
62
- }
63
- set value(v) {
64
- if (v !== this._value) {
65
- this._value = v;
66
- this._onChangeCallback(v);
67
- }
68
- }
69
- yesButton;
70
- noButton;
71
- checkboxButton;
72
- fakeInput;
73
- constructor(translate, formBuilder, cd, formGroupDir) {
74
- this.translate = translate;
75
- this.formBuilder = formBuilder;
76
- this.cd = cd;
77
- this.formGroupDir = formGroupDir;
78
- }
79
- ngOnInit() {
80
- this.formControl = this.formControl || this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName);
81
- if (!this.formControl)
82
- throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-boolean-field>.');
83
- this.style = this.style || (this.compact ? 'checkbox' : 'radio');
84
- if (this.style === 'button') {
85
- this.buttonsColCount = toNumber(this.buttonsColCount, 2);
86
- }
87
- // Force show radio if label always on top
88
- this.showRadio = this.showRadio || this.floatLabel === 'always';
89
- this.updateTabIndex();
90
- }
91
- writeValue(value, event) {
92
- if (this._writing)
93
- return;
94
- this._writing = true;
95
- if (value !== this._value) {
96
- this._value = value;
97
- this.showRadio = this.floatLabel === 'always' || isNotNil(this._value);
98
- if (isNotNil(this.tabindex)) {
99
- setTimeout(() => this.updateTabIndex());
100
- }
101
- }
102
- this._writing = false;
103
- if (this.style === 'button') {
104
- if (value !== this.formControl.value) {
105
- this.formControl.patchValue(value, { emitEvent: false });
106
- this._onChangeCallback(value);
107
- }
108
- if (event)
109
- this.onPressEnter.emit(event);
110
- }
111
- this.markForCheck();
112
- }
113
- registerOnChange(fn) {
114
- this._onChangeCallback = fn;
115
- }
116
- registerOnTouched(fn) {
117
- this._onTouchedCallback = fn;
118
- }
119
- setDisabledState(isDisabled) {
120
- this.disabled = isDisabled;
121
- }
122
- _onBlur(event) {
123
- this.checkIfTouched();
124
- this.onBlur.emit(event);
125
- }
126
- _onFocusFakeInput(event) {
127
- event.preventDefault();
128
- // Hide the fake input
129
- if (this.fakeInput) {
130
- this.fakeInput.nativeElement.classList.add('hidden');
131
- this.fakeInput.nativeElement.tabIndex = -1;
132
- }
133
- // Focus on first button
134
- this.focus();
135
- }
136
- focus() {
137
- this.showRadio = true;
138
- setTimeout(() => {
139
- if (this.yesButton) {
140
- this.yesButton.focus();
141
- }
142
- else if (this.checkboxButton) {
143
- this.checkboxButton.focus();
144
- }
145
- this.updateTabIndex();
146
- });
147
- this.markForCheck();
148
- }
149
- onRadioValueChanged(event) {
150
- if (this._writing)
151
- return; // Skip if call by self
152
- this._writing = true;
153
- this._value = event.value;
154
- this.checkIfTouched();
155
- this._onChangeCallback(event.value);
156
- this._writing = false;
157
- }
158
- onCheckboxValueChanged(event) {
159
- if (this._writing)
160
- return; // Skip if call by self
161
- this._writing = true;
162
- this._value = event.checked;
163
- this.checkIfTouched();
164
- this._onChangeCallback(event.checked);
165
- this._writing = false;
166
- }
167
- /* -- private method -- */
168
- checkIfTouched() {
169
- if (this.formControl.touched) {
170
- this.markForCheck();
171
- this._onTouchedCallback();
172
- }
173
- }
174
- /**
175
- * This is a special case, because, this component has a temporary component displayed before the first focus event
176
- */
177
- updateTabIndex() {
178
- if (isNil(this._tabindex) || this._tabindex === -1)
179
- return;
180
- if (this.fakeInput) {
181
- if (this.showRadio) {
182
- this.fakeInput.nativeElement.classList.add('hidden');
183
- this.fakeInput.nativeElement.tabIndex = -1;
184
- }
185
- else {
186
- this.fakeInput.nativeElement.classList.remove('hidden');
187
- this.fakeInput.nativeElement.tabIndex = this._tabindex;
188
- }
189
- }
190
- if (this.yesButton) {
191
- this.yesButton._inputElement.nativeElement.tabIndex = this.showRadio ? this._tabindex : -1;
192
- this.noButton._inputElement.nativeElement.tabIndex = this.showRadio ? this._tabindex + 1 : -1;
193
- }
194
- else if (this.checkboxButton) {
195
- this.checkboxButton._inputElement.nativeElement.tabIndex = this.showRadio ? this._tabindex : -1;
196
- }
197
- this.markForCheck();
198
- }
199
- markForCheck() {
200
- this.cd.markForCheck();
201
- }
202
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: MatBooleanField, deps: [{ token: i1.TranslateService }, { token: i2.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
203
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: MatBooleanField, selector: "mat-boolean-field", inputs: { disabled: "disabled", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", readonly: "readonly", required: "required", compact: "compact", style: "style", buttonsColCount: "buttonsColCount", classList: ["class", "classList"], yesLabel: "yesLabel", noLabel: "noLabel", showButtonIcons: "showButtonIcons", yesIcon: "yesIcon", noIcon: "noIcon", tabindex: "tabindex", value: "value" }, outputs: { onPressEnter: "keyup.enter", onBlur: "onBlur" }, providers: [
204
- DEFAULT_VALUE_ACCESSOR
205
- ], viewQueries: [{ propertyName: "yesButton", first: true, predicate: ["yesButton"], descendants: true }, { propertyName: "noButton", first: true, predicate: ["noButton"], descendants: true }, { propertyName: "checkboxButton", first: true, predicate: ["checkboxButton"], descendants: true }, { propertyName: "fakeInput", first: true, predicate: ["fakeInput"], descendants: true }], ngImport: i0, template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{classList}}\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly\n [formControl]=\"formControl\">\n <ion-text>{{(value == null ? 'COMMON.EMPTY_OPTION' : (value === true ? yesLabel : noLabel)) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{classList}}\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{yesLabel|translate}}</span>\n </mat-radio-button>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <ion-label>&nbsp;</ion-label>\n </ng-template>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===null\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"(floatLabel | asFloatLabelType) || 'always'\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel !== 'never' ? placeholder : undefined\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n *ngIf=\"formControl.enabled || (formControl.value != null); else emptyLabel\"\n [style.--buttons-col-count]=\"buttonsColCount\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n [disabled]=\"formControl.disabled\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n [disabled]=\"formControl.disabled\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\n <ng-template #emptyLabel>\n <ion-label translate>COMMON.EMPTY_OPTION</ion-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n </ng-container>\n\n</ng-template>\n\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field.mat-boolean-field-radio{margin-top:-2px}.mat-mdc-form-field.mat-boolean-field-button{margin-top:-4px}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--button-padding-end: 2px;--flex-basis: calc(100% / var(--buttons-col-count, 2) - var(--button-padding-end));flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);text-transform:capitalize;white-space:normal;padding-inline-end:var(--button-padding-end)!important;padding-bottom:var(--button-padding-end)!important;height:40px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.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: "directive", type: i7.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i7.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex", "id", "name", "aria-label", "aria-labelledby", "aria-describedby", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i9.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
206
- }
207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: MatBooleanField, decorators: [{
208
- type: Component,
209
- args: [{ selector: 'mat-boolean-field', providers: [
210
- DEFAULT_VALUE_ACCESSOR
211
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{classList}}\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly\n [formControl]=\"formControl\">\n <ion-text>{{(value == null ? 'COMMON.EMPTY_OPTION' : (value === true ? yesLabel : noLabel)) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{classList}}\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{yesLabel|translate}}</span>\n </mat-radio-button>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <ion-label>&nbsp;</ion-label>\n </ng-template>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===null\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"(floatLabel | asFloatLabelType) || 'always'\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel !== 'never' ? placeholder : undefined\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n *ngIf=\"formControl.enabled || (formControl.value != null); else emptyLabel\"\n [style.--buttons-col-count]=\"buttonsColCount\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n [disabled]=\"formControl.disabled\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n [disabled]=\"formControl.disabled\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\n <ng-template #emptyLabel>\n <ion-label translate>COMMON.EMPTY_OPTION</ion-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n </ng-container>\n\n</ng-template>\n\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field.mat-boolean-field-radio{margin-top:-2px}.mat-mdc-form-field.mat-boolean-field-button{margin-top:-4px}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--button-padding-end: 2px;--flex-basis: calc(100% / var(--buttons-col-count, 2) - var(--button-padding-end));flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);text-transform:capitalize;white-space:normal;padding-inline-end:var(--button-padding-end)!important;padding-bottom:var(--button-padding-end)!important;height:40px}\n"] }]
212
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }, { type: i2.FormGroupDirective, decorators: [{
213
- type: Optional
214
- }] }], propDecorators: { disabled: [{
215
- type: Input
216
- }], formControl: [{
217
- type: Input
218
- }], formControlName: [{
219
- type: Input
220
- }], placeholder: [{
221
- type: Input
222
- }], floatLabel: [{
223
- type: Input
224
- }], appearance: [{
225
- type: Input
226
- }], readonly: [{
227
- type: Input
228
- }], required: [{
229
- type: Input
230
- }], compact: [{
231
- type: Input
232
- }], style: [{
233
- type: Input
234
- }], buttonsColCount: [{
235
- type: Input
236
- }], classList: [{
237
- type: Input,
238
- args: ['class']
239
- }], yesLabel: [{
240
- type: Input
241
- }], noLabel: [{
242
- type: Input
243
- }], showButtonIcons: [{
244
- type: Input
245
- }], yesIcon: [{
246
- type: Input
247
- }], noIcon: [{
248
- type: Input
249
- }], onPressEnter: [{
250
- type: Output,
251
- args: ['keyup.enter']
252
- }], onBlur: [{
253
- type: Output
254
- }], tabindex: [{
255
- type: Input
256
- }], value: [{
257
- type: Input
258
- }], yesButton: [{
259
- type: ViewChild,
260
- args: ['yesButton']
261
- }], noButton: [{
262
- type: ViewChild,
263
- args: ['noButton']
264
- }], checkboxButton: [{
265
- type: ViewChild,
266
- args: ['checkboxButton']
267
- }], fakeInput: [{
268
- type: ViewChild,
269
- args: ['fakeInput']
270
- }] } });
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuYm9vbGVhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQVksU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hMLE9BQU8sRUFBMkMsaUJBQWlCLEVBQXlDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkksT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBTzFELE1BQU0sc0JBQXNCLEdBQWE7SUFDdkMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztJQUM5QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFHRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBV0YsTUFBTSxPQUFPLGVBQWU7SUErRGhCO0lBQ0E7SUFDQTtJQUNZO0lBakVkLGlCQUFpQixHQUFxQixJQUFJLENBQUM7SUFDM0Msa0JBQWtCLEdBQWUsSUFBSSxDQUFDO0lBQ3RDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFekIsTUFBTSxDQUFVO0lBQ2hCLFNBQVMsQ0FBUztJQUVsQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRVQsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixXQUFXLENBQXFCO0lBQ2hDLGVBQWUsQ0FBUztJQUN4QixX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O2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO3VCQUFDLE9BQU87Z0JBQ0wsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsTUFBTTt1QkFBQyxhQUFhO2dCQUlyQixNQUFNO3NCQURMLE1BQU07Z0JBR00sUUFBUTtzQkFBcEIsS0FBSztnQkFnQkYsS0FBSztzQkFEUixLQUFLO2dCQVFrQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0MsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNRLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNILFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgUHJvdmlkZXIsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7aXNOaWwsIGlzTm90TmlsLCB0b051bWJlcn0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7SW5wdXRFbGVtZW50fSBmcm9tICcuLi8uLi9pbnB1dHMnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRBcHBlYXJhbmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7TWF0UmFkaW9CdXR0b24sIE1hdFJhZGlvQ2hhbmdlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5pbXBvcnQge01hdENoZWNrYm94LCBNYXRDaGVja2JveENoYW5nZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHtBcHBGbG9hdExhYmVsVHlwZX0gZnJvbSAnLi4vLi4vZm9ybS9maWVsZC5tb2RlbCc7XG5cbmNvbnN0IERFRkFVTFRfVkFMVUVfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWF0Qm9vbGVhbkZpZWxkKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cblxuY29uc3Qgbm9vcCA9ICgpID0+IHtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1ib29sZWFuLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdGVyaWFsLmJvb2xlYW4uaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLmJvb2xlYW4uc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX1ZBTFVFX0FDQ0VTU09SXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1hdEJvb2xlYW5GaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIElucHV0RWxlbWVudCB7XG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX3dyaXRpbmcgPSBmYWxzZTtcblxuICBfdmFsdWU6IGJvb2xlYW47XG4gIF90YWJpbmRleDogbnVtYmVyO1xuXG4gIHNob3dSYWRpbyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBBcHBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY29tcGFjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBzdHlsZTogJ3JhZGlvJyB8ICdjaGVja2JveCcgfCAnYnV0dG9uJztcbiAgQElucHV0KCkgYnV0dG9uc0NvbENvdW50OiBudW1iZXI7XG4gIEBJbnB1dCgnY2xhc3MnKSBjbGFzc0xpc3Q6IHN0cmluZztcbiAgQElucHV0KCkgeWVzTGFiZWwgPSAnQ09NTU9OLllFUyc7XG4gIEBJbnB1dCgpIG5vTGFiZWwgPSAnQ09NTU9OLk5PJztcbiAgQElucHV0KCkgc2hvd0J1dHRvbkljb25zID0gdHJ1ZTtcbiAgQElucHV0KCkgeWVzSWNvbiA9ICdjaGVja21hcmsnO1xuICBASW5wdXQoKSBub0ljb24gPSAnY2xvc2UnO1xuXG4gIEBPdXRwdXQoJ2tleXVwLmVudGVyJylcbiAgb25QcmVzc0VudGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBASW5wdXQoKSBzZXQgdGFiaW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl90YWJpbmRleCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gdmFsdWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlVGFiSW5kZXgoKSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhYmluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmluZGV4O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh2ICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh2KTtcbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCd5ZXNCdXR0b24nKSB5ZXNCdXR0b246IE1hdFJhZGlvQnV0dG9uO1xuICBAVmlld0NoaWxkKCdub0J1dHRvbicpIG5vQnV0dG9uOiBNYXRSYWRpb0J1dHRvbjtcbiAgQFZpZXdDaGlsZCgnY2hlY2tib3hCdXR0b24nKSBjaGVja2JveEJ1dHRvbjogTWF0Q2hlY2tib3g7XG4gIEBWaWV3Q2hpbGQoJ2Zha2VJbnB1dCcpIGZha2VJbnB1dDogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sIHx8IHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMuZm9ybUdyb3VwRGlyICYmIHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSBcXCdmb3JtQ29udHJvbFxcJyBvciBcXCdmb3JtQ29udHJvbE5hbWVcXCcgaW4gPG1hdC1ib29sZWFuLWZpZWxkPi4nKTtcblxuICAgIHRoaXMuc3R5bGUgPSB0aGlzLnN0eWxlIHx8ICh0aGlzLmNvbXBhY3QgPyAnY2hlY2tib3gnIDogJ3JhZGlvJyk7XG5cbiAgICBpZiAodGhpcy5zdHlsZSA9PT0gJ2J1dHRvbicpIHtcbiAgICAgIHRoaXMuYnV0dG9uc0NvbENvdW50ID0gdG9OdW1iZXIodGhpcy5idXR0b25zQ29sQ291bnQsIDIpO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIHNob3cgcmFkaW8gaWYgbGFiZWwgYWx3YXlzIG9uIHRvcFxuICAgIHRoaXMuc2hvd1JhZGlvID0gdGhpcy5zaG93UmFkaW8gfHwgdGhpcy5mbG9hdExhYmVsID09PSAnYWx3YXlzJztcblxuICAgIHRoaXMudXBkYXRlVGFiSW5kZXgoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5zaG93UmFkaW8gPSB0aGlzLmZsb2F0TGFiZWwgPT09ICdhbHdheXMnIHx8IGlzTm90TmlsKHRoaXMuX3ZhbHVlKTtcbiAgICAgIGlmIChpc05vdE5pbCh0aGlzLnRhYmluZGV4KSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlVGFiSW5kZXgoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnN0eWxlID09PSAnYnV0dG9uJykge1xuICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmZvcm1Db250cm9sLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQpIHRoaXMub25QcmVzc0VudGVyLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cblxuICBfb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgdGhpcy5jaGVja0lmVG91Y2hlZCgpO1xuICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgX29uRm9jdXNGYWtlSW5wdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gSGlkZSB0aGUgZmFrZSBpbnB1dFxuICAgIGlmICh0aGlzLmZha2VJbnB1dCkge1xuICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICAvLyBGb2N1cyBvbiBmaXJzdCBidXR0b25cbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLnNob3dSYWRpbyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy55ZXNCdXR0b24pIHtcbiAgICAgICAgdGhpcy55ZXNCdXR0b24uZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMuY2hlY2tib3hCdXR0b24pIHtcbiAgICAgICAgdGhpcy5jaGVja2JveEJ1dHRvbi5mb2N1cygpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVUYWJJbmRleCgpO1xuICAgIH0pO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblJhZGlvVmFsdWVDaGFuZ2VkKGV2ZW50OiBNYXRSYWRpb0NoYW5nZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47IC8vIFNraXAgaWYgY2FsbCBieSBzZWxmXG4gICAgdGhpcy5fd3JpdGluZyA9IHRydWU7XG4gICAgdGhpcy5fdmFsdWUgPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLmNoZWNrSWZUb3VjaGVkKCk7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayhldmVudC52YWx1ZSk7XG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuICB9XG5cbiAgb25DaGVja2JveFZhbHVlQ2hhbmdlZChldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd3JpdGluZykgcmV0dXJuOyAvLyBTa2lwIGlmIGNhbGwgYnkgc2VsZlxuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuICAgIHRoaXMuX3ZhbHVlID0gZXZlbnQuY2hlY2tlZDtcbiAgICB0aGlzLmNoZWNrSWZUb3VjaGVkKCk7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayhldmVudC5jaGVja2VkKTtcbiAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XG4gIH1cblxuICAvKiAtLSBwcml2YXRlIG1ldGhvZCAtLSAqL1xuXG4gIHByaXZhdGUgY2hlY2tJZlRvdWNoZWQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UsIGJlY2F1c2UsIHRoaXMgY29tcG9uZW50IGhhcyBhIHRlbXBvcmFyeSBjb21wb25lbnQgZGlzcGxheWVkIGJlZm9yZSB0aGUgZmlyc3QgZm9jdXMgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVGFiSW5kZXgoKSB7XG4gICAgaWYgKGlzTmlsKHRoaXMuX3RhYmluZGV4KSB8fCB0aGlzLl90YWJpbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmZha2VJbnB1dCkge1xuICAgICAgaWYgKHRoaXMuc2hvd1JhZGlvKSB7XG4gICAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSB0aGlzLl90YWJpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMueWVzQnV0dG9uKSB7XG4gICAgICB0aGlzLnllc0J1dHRvbi5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSB0aGlzLnNob3dSYWRpbyA/IHRoaXMuX3RhYmluZGV4IDogLTE7XG4gICAgICB0aGlzLm5vQnV0dG9uLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuc2hvd1JhZGlvID8gdGhpcy5fdGFiaW5kZXggKyAxIDogLTE7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNoZWNrYm94QnV0dG9uKSB7XG4gICAgICB0aGlzLmNoZWNrYm94QnV0dG9uLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuc2hvd1JhZGlvID8gdGhpcy5fdGFiaW5kZXggOiAtMTtcbiAgICB9XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuXG4iLCI8bWF0LWZvcm0tZmllbGQgICpuZ0lmPVwicmVhZG9ubHk7IGVsc2Ugd3JpdGFibGVcIlxuICAgICAgICAgICAgICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge3tjbGFzc0xpc3R9fVwiPlxuICA8bWF0LWxhYmVsICpuZ0lmPVwiZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG4gIDxkaXYgbWF0UHJlZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGlucHV0IG1hdElucHV0IGhpZGRlbiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5XG4gICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIj5cbiAgPGlvbi10ZXh0Pnt7KHZhbHVlID09IG51bGwgPyAnQ09NTU9OLkVNUFRZX09QVElPTicgOiAodmFsdWUgPT09IHRydWUgPyB5ZXNMYWJlbCA6IG5vTGFiZWwpKSB8IHRyYW5zbGF0ZSB9fTwvaW9uLXRleHQ+XG4gIDxkaXYgbWF0U3VmZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjxuZy10ZW1wbGF0ZSAjd3JpdGFibGU+XG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInN0eWxlXCI+XG5cbiAgICA8IS0tIFJhZGlvIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cInNob3dSYWRpbyAmJiAoIWZsb2F0TGFiZWwgfHwgZmxvYXRMYWJlbCA9PT0gJ2F1dG8nKSA/ICdhbHdheXMnOiAoZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LWJvb2xlYW4tZmllbGQgbWF0LWJvb2xlYW4tZmllbGQtcmFkaW8ge3tjbGFzc0xpc3R9fVwiPlxuICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlclwiPlxuICAgICAgICB7e3BsYWNlaG9sZGVyfX1cbiAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJzaG93UmFkaW9cIj4oe3t5ZXNMYWJlbHx0cmFuc2xhdGV9fS97eydDT01NT04uTk8nfHRyYW5zbGF0ZX19KTwvc3Bhbj5cbiAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgPGRpdiBtYXRQcmVmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgI2Zha2VJbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAoZm9jdXMpPVwiX29uRm9jdXNGYWtlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCJzaG93UmFkaW9cIlxuICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiPlxuXG4gICAgICA8IS0tIHJhZGlvIGJ1dHRvbiAtLT5cbiAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2hpZGRlbl09XCIhc2hvd1JhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvVmFsdWVDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gI3llc0J1dHRvbiBbdmFsdWVdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxzcGFuPnt7eWVzTGFiZWx8dHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj4mbmJzcDtcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gI25vQnV0dG9uIFt2YWx1ZV09XCJmYWxzZVwiPlxuICAgICAgICAgIDxzcGFuPnt7bm9MYWJlbHx0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuXG4gICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBDaGVja2JveCAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIlxuICAgICAgICAgICAgICAgICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1ib29sZWFuLWZpZWxkIG1hdC1ib29sZWFuLWZpZWxkLWNoZWNrYm94IHt7Y2xhc3NMaXN0fX1cIj5cbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXIgJiYgIXNob3dSYWRpb1wiPlxuICAgICAgICB7e3BsYWNlaG9sZGVyfX1cbiAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgPGRpdiBtYXRQcmVmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgI21hdElucHV0XG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAoZm9jdXMpPVwiX29uRm9jdXNGYWtlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCJzaG93UmFkaW9cIlxuICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiPlxuXG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwicGxhY2Vob2xkZXI7IGVsc2Ugbm9QbGFjZUhvbGRlclwiPlxuICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICA8bmctdGVtcGxhdGUgI25vUGxhY2VIb2xkZXI+XG4gICAgICAgIDxpb24tbGFiZWw+Jm5ic3A7PC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIGNoZWNrYm94LCB3aGVuIGNvbXBhY3QgLS0+XG4gICAgICA8bWF0LWNoZWNrYm94ICNjaGVja2JveEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInZhbHVlPT09bnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIXNob3dSYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiPlxuICAgICAgPC9tYXQtY2hlY2tib3g+XG5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuXG4gICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBCdXR0b25zIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ2J1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbZmxvYXRMYWJlbF09XCIoZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGUpIHx8ICdhbHdheXMnXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LWJvb2xlYW4tZmllbGQgbWF0LWJvb2xlYW4tZmllbGQtYnV0dG9uIHt7Y2xhc3NMaXN0fX1cIj5cbiAgICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgaGlkZGVuXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyA/IHBsYWNlaG9sZGVyIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1idXR0b25zXCJcbiAgICAgICAgICAgKm5nSWY9XCJmb3JtQ29udHJvbC5lbmFibGVkIHx8IChmb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsKTsgZWxzZSBlbXB0eUxhYmVsXCJcbiAgICAgICAgICAgW3N0eWxlLi0tYnV0dG9ucy1jb2wtY291bnRdPVwiYnV0dG9uc0NvbENvdW50XCI+XG4gICAgICAgIDwhLS0geWVzIC0tPlxuICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJfdGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybUNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid3JpdGVWYWx1ZSh0cnVlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIndyaXRlVmFsdWUodHJ1ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJfdmFsdWUgPT0gbnVsbCA/ICd0ZXJ0aWFyeScgOiAoX3ZhbHVlID09PSB0cnVlKSA/ICdhY2NlbnQnIDogJ2xpZ2h0J1wiPlxuICAgICAgICAgIDxpb24taWNvbiAqbmdJZj1cInNob3dCdXR0b25JY29ucyAmJiB5ZXNJY29uOyBsZXQgaWNvblwiIHNsb3Q9XCJzdGFydFwiIFtuYW1lXT1cImljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgIHt7eWVzTGFiZWx8dHJhbnNsYXRlfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgIDwhLS0gTm8gYnV0dG9uIC0tPlxuICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJfdGFiaW5kZXggIT09IHVuZGVmaW5lZCA/IChfdGFiaW5kZXggKyAxKSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtQ29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3cml0ZVZhbHVlKGZhbHNlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIndyaXRlVmFsdWUoZmFsc2UsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiX3ZhbHVlID09IG51bGwgPyAndGVydGlhcnknIDogKF92YWx1ZSA9PT0gZmFsc2UpID8gJ2FjY2VudCcgOiAnbGlnaHQnXCI+XG4gICAgICAgICAgPGlvbi1pY29uICpuZ0lmPVwic2hvd0J1dHRvbkljb25zICYmIG5vSWNvbjsgbGV0IGljb25cIiBzbG90PVwic3RhcnRcIiBbbmFtZV09XCJpY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICB7e25vTGFiZWx8dHJhbnNsYXRlfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlMYWJlbD5cbiAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uRU1QVFlfT1BUSU9OPC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0U3VmZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvbmctdGVtcGxhdGU+XG5cblxuPG5nLXRlbXBsYXRlICNtYXRQcmVmaXhUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNtYXRTdWZmaXhUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,66 +0,0 @@
1
- import { ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
2
- import { MatFormFieldAppearance } from '@angular/material/form-field';
3
- import { ControlValueAccessor, FormGroupDirective, UntypedFormBuilder, UntypedFormControl } from '@angular/forms';
4
- import { TranslateService } from '@ngx-translate/core';
5
- import { MatRadioButton, MatRadioChange } from '@angular/material/radio';
6
- import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
7
- import { InputElement } from '../../inputs';
8
- import { AppFloatLabelType } from '../../form/field.model';
9
- import * as i0 from "@angular/core";
10
- export declare class MatBooleanField2 implements OnInit, ControlValueAccessor, InputElement {
11
- private translate;
12
- private formBuilder;
13
- private cd;
14
- private formGroupDir;
15
- yesButton: MatRadioButton;
16
- noButton: MatRadioButton;
17
- checkboxButton: MatCheckbox;
18
- fakeInput: ElementRef;
19
- disabled: boolean;
20
- formControl: UntypedFormControl;
21
- formControlName: string;
22
- placeholder: string;
23
- floatLabel: AppFloatLabelType;
24
- appearance: MatFormFieldAppearance;
25
- readonly: boolean;
26
- required: boolean;
27
- compact: boolean;
28
- style: 'radio' | 'checkbox' | 'button';
29
- buttonsColCount: number;
30
- classList: string;
31
- yesLabel: string;
32
- noLabel: string;
33
- showButtonIcons: boolean;
34
- yesIcon: string;
35
- noIcon: string;
36
- onPressEnter: EventEmitter<any>;
37
- onBlur: EventEmitter<FocusEvent>;
38
- showRadio: boolean;
39
- _value: boolean;
40
- _tabindex: number;
41
- private _onChangeCallback;
42
- private _onTouchedCallback;
43
- private _writing;
44
- constructor(translate: TranslateService, formBuilder: UntypedFormBuilder, cd: ChangeDetectorRef, formGroupDir: FormGroupDirective);
45
- get tabindex(): number;
46
- set tabindex(value: number);
47
- get value(): any;
48
- set value(v: any);
49
- ngOnInit(): void;
50
- writeValue(value: any, event?: Event): void;
51
- registerOnChange(fn: any): void;
52
- registerOnTouched(fn: any): void;
53
- setDisabledState(isDisabled: boolean): void;
54
- onFocusFakeInput(event: FocusEvent): void;
55
- focus(): void;
56
- onRadioValueChanged(event: MatRadioChange): void;
57
- onCheckboxValueChanged(event: MatCheckboxChange): void;
58
- private checkIfTouched;
59
- /**
60
- * This is a special case, because, this component has a temporary component displayed before the first focus event
61
- */
62
- private updateTabIndex;
63
- private markForCheck;
64
- static ɵfac: i0.ɵɵFactoryDeclaration<MatBooleanField2, [null, null, null, { optional: true; }]>;
65
- static ɵcmp: i0.ɵɵComponentDeclaration<MatBooleanField2, "mat-boolean2-field", never, { "disabled": { "alias": "disabled"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "style": { "alias": "style"; "required": false; }; "buttonsColCount": { "alias": "buttonsColCount"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "yesLabel": { "alias": "yesLabel"; "required": false; }; "noLabel": { "alias": "noLabel"; "required": false; }; "showButtonIcons": { "alias": "showButtonIcons"; "required": false; }; "yesIcon": { "alias": "yesIcon"; "required": false; }; "noIcon": { "alias": "noIcon"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "onPressEnter": "keyup.enter"; "onBlur": "onBlur"; }, never, ["[matPrefix]", "[matSuffix]"], false, never>;
66
- }