@muraai/mnl-form 0.0.1-alpha-db495b1 → 0.0.1-alpha-11e96eb
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/fesm2022/muraai-mnl-form.mjs +150 -143
- package/fesm2022/muraai-mnl-form.mjs.map +1 -1
- package/lib/types/upload-file.d.ts +1 -1
- package/lib/workflow-status/ workflow-status.module.d.ts +8 -8
- package/lib/workflow-status/workflow-status.component.d.ts +1 -1
- package/package.json +4 -5
- package/esm2022/lib/confirmation-dialog/confirmation-dialog.component.mjs +0 -34
- package/esm2022/lib/mnl-form/mnl-form-standalone.module.mjs +0 -155
- package/esm2022/lib/mnl-form/mnl-form.component.mjs +0 -199
- package/esm2022/lib/models/custom-form-field.model.mjs +0 -2
- package/esm2022/lib/models/workflow-status.model.mjs +0 -2
- package/esm2022/lib/services/graphql.service.mjs +0 -30
- package/esm2022/lib/services/scoring.service.mjs +0 -103
- package/esm2022/lib/types/action-button-renderer.component.mjs +0 -59
- package/esm2022/lib/types/autocomplete-type.component.mjs +0 -68
- package/esm2022/lib/types/button.type.mjs +0 -72
- package/esm2022/lib/types/comments.type.mjs +0 -102
- package/esm2022/lib/types/country-code-input.type.mjs +0 -181
- package/esm2022/lib/types/custom-date.type.mjs +0 -20
- package/esm2022/lib/types/custom-input.component.mjs +0 -62
- package/esm2022/lib/types/date-format.type.mjs +0 -196
- package/esm2022/lib/types/expansion-panel.types.mjs +0 -85
- package/esm2022/lib/types/formly-field-panel.type.mjs +0 -70
- package/esm2022/lib/types/grid-actionable.type.mjs +0 -197
- package/esm2022/lib/types/grid-formly-cell.component.mjs +0 -42
- package/esm2022/lib/types/grid.type.mjs +0 -125
- package/esm2022/lib/types/input.type.mjs +0 -43
- package/esm2022/lib/types/mu-helper-text.type.mjs +0 -331
- package/esm2022/lib/types/multi-select-autocomplete.mjs +0 -139
- package/esm2022/lib/types/multi-select-checkbox.component.mjs +0 -247
- package/esm2022/lib/types/radio.type.mjs +0 -71
- package/esm2022/lib/types/scrollable-tabs.types.mjs +0 -220
- package/esm2022/lib/types/select-api-auto-complete.component.mjs +0 -111
- package/esm2022/lib/types/select-autocomplete-redefined.component.mjs +0 -142
- package/esm2022/lib/types/select-autocomplete.type.mjs +0 -254
- package/esm2022/lib/types/stepper.type.mjs +0 -268
- package/esm2022/lib/types/table.types.mjs +0 -79
- package/esm2022/lib/types/tabs.types.mjs +0 -293
- package/esm2022/lib/types/tabular-form-dialog.component.mjs +0 -331
- package/esm2022/lib/types/tabular-form.type.mjs +0 -641
- package/esm2022/lib/types/upload-file.mjs +0 -524
- package/esm2022/lib/types/view-file-dialog.component.mjs +0 -90
- package/esm2022/lib/utils/formly.utils.mjs +0 -105
- package/esm2022/lib/validators/custom-email-validator.mjs +0 -18
- package/esm2022/lib/validators/ein-validators.mjs +0 -11
- package/esm2022/lib/validators/gst-validator.mjs +0 -11
- package/esm2022/lib/validators/normal-email-validator.mjs +0 -17
- package/esm2022/lib/validators/npi-validator.mjs +0 -11
- package/esm2022/lib/validators/pan-validator.mjs +0 -11
- package/esm2022/lib/validators/phone-number-validator.mjs +0 -22
- package/esm2022/lib/validators/select-validator.mjs +0 -7
- package/esm2022/lib/validators/tinSsn-validator.mjs +0 -12
- package/esm2022/lib/workflow-status/ workflow-status.module.mjs +0 -52
- package/esm2022/lib/workflow-status/workflow-status.component.mjs +0 -70
- package/esm2022/lib/wrappers/form-field-description-wrapper.component.mjs +0 -44
- package/esm2022/lib/wrappers/form-field-wrapper.component.mjs +0 -34
- package/esm2022/lib/wrappers/formly-wrapper-with-old-value.component.mjs +0 -140
- package/esm2022/lib/wrappers/prefix-suffix-wrapper.component.mjs +0 -95
- package/esm2022/lib/wrappers/prefix-sufix-extension.component.mjs +0 -9
- package/esm2022/muraai-mnl-form.mjs +0 -5
- package/esm2022/public-api.mjs +0 -12
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, ViewChild, } from '@angular/core';
|
|
3
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { MatAutocompleteModule, MatAutocompleteTrigger, } from '@angular/material/autocomplete';
|
|
5
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
7
|
-
import { MatChipsModule } from '@angular/material/chips';
|
|
8
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
9
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
10
|
-
import { MatInputModule } from '@angular/material/input';
|
|
11
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
12
|
-
import { CommonsModule } from '@muraai/mnl-commons';
|
|
13
|
-
import { FieldType, FormlyModule } from '@ngx-formly/core';
|
|
14
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
15
|
-
import { combineLatest, of } from 'rxjs';
|
|
16
|
-
import { catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap, take } from 'rxjs/operators';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "@angular/common";
|
|
19
|
-
import * as i2 from "@angular/material/chips";
|
|
20
|
-
import * as i3 from "@angular/material/icon";
|
|
21
|
-
import * as i4 from "@angular/material/form-field";
|
|
22
|
-
import * as i5 from "@angular/material/autocomplete";
|
|
23
|
-
import * as i6 from "@angular/material/core";
|
|
24
|
-
import * as i7 from "@angular/material/checkbox";
|
|
25
|
-
import * as i8 from "@ngx-formly/core";
|
|
26
|
-
import * as i9 from "@angular/forms";
|
|
27
|
-
import * as i10 from "@angular/material/tooltip";
|
|
28
|
-
export class FormlyMultiSelectCheckboxAutocompleteComponent extends FieldType {
|
|
29
|
-
constructor() {
|
|
30
|
-
super(...arguments);
|
|
31
|
-
this.searchControl = new FormControl();
|
|
32
|
-
this.optionsList = [];
|
|
33
|
-
}
|
|
34
|
-
ngOnInit() {
|
|
35
|
-
const debounce = this.field.props.debounceTime || 300;
|
|
36
|
-
const fetchOnce = this.field.props.fetchOnce === undefined ? true : this.field.props.fetchOnce;
|
|
37
|
-
if (this.field.props.apiFunction && typeof this.field.props.apiFunction === 'function') {
|
|
38
|
-
if (fetchOnce) {
|
|
39
|
-
this.field.props
|
|
40
|
-
.apiFunction('')
|
|
41
|
-
.pipe(catchError((error) => {
|
|
42
|
-
console.error('API Error:', error);
|
|
43
|
-
return of([]);
|
|
44
|
-
}))
|
|
45
|
-
.subscribe((results) => {
|
|
46
|
-
this.optionsList = results || [];
|
|
47
|
-
this.filteredOptions = this.searchControl.valueChanges.pipe(startWith(''), debounceTime(debounce), distinctUntilChanged(), map((searchTerm) => this.filterOptions(searchTerm)));
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.filteredOptions = this.searchControl.valueChanges.pipe(startWith(''), debounceTime(debounce), distinctUntilChanged(), switchMap((searchTerm) => {
|
|
52
|
-
return this.field.props.apiFunction(searchTerm).pipe(map((results) => {
|
|
53
|
-
this.optionsList = results || [];
|
|
54
|
-
return results || [];
|
|
55
|
-
}), catchError((error) => {
|
|
56
|
-
console.error('API Error:', error);
|
|
57
|
-
return of([]);
|
|
58
|
-
}));
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
else if (Array.isArray(this.field.props.options)) {
|
|
63
|
-
this.optionsList = this.field.props.options;
|
|
64
|
-
this.filteredOptions = this.searchControl.valueChanges.pipe(startWith(''), debounceTime(debounce), map((searchTerm) => this.filterOptions(searchTerm)));
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
const options$ = this.field.props.options;
|
|
68
|
-
options$.pipe(take(1)).subscribe((opts) => {
|
|
69
|
-
this.optionsList = opts || [];
|
|
70
|
-
});
|
|
71
|
-
options$.subscribe((opts) => (this.optionsList = opts || []));
|
|
72
|
-
this.filteredOptions = combineLatest([
|
|
73
|
-
this.searchControl.valueChanges.pipe(startWith(''), debounceTime(debounce)),
|
|
74
|
-
options$,
|
|
75
|
-
]).pipe(map(([searchTerm, options]) => this.filterOptions(searchTerm)));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
onKeydown(event) {
|
|
79
|
-
if (event.key === 'Enter') {
|
|
80
|
-
event.preventDefault();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
filterOptions(searchTerm) {
|
|
84
|
-
const list = this.optionsList || [];
|
|
85
|
-
const term = (searchTerm || '').toLowerCase();
|
|
86
|
-
return list.filter(option => (option.label || '').toLowerCase().includes(term));
|
|
87
|
-
}
|
|
88
|
-
onCheckboxChange(event, value) {
|
|
89
|
-
const currentValue = this.formControl.value || [];
|
|
90
|
-
if (event.checked) {
|
|
91
|
-
this.formControl.setValue([...currentValue, value]);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
this.formControl.setValue(currentValue.filter((v) => v !== value));
|
|
95
|
-
}
|
|
96
|
-
this.trigger.openPanel();
|
|
97
|
-
}
|
|
98
|
-
toggleSelection(event, value) {
|
|
99
|
-
if (this.isSelected(value)) {
|
|
100
|
-
this.removeOption(value);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
this.formControl.setValue([...this.formControl.value, value]);
|
|
104
|
-
}
|
|
105
|
-
this.searchControl.setValue('');
|
|
106
|
-
this.trigger.openPanel();
|
|
107
|
-
}
|
|
108
|
-
isSelected(value) {
|
|
109
|
-
return ((this.formControl.value && this.formControl.value.includes(value)) ||
|
|
110
|
-
false);
|
|
111
|
-
}
|
|
112
|
-
removeOption(value) {
|
|
113
|
-
const values = this.formControl.value;
|
|
114
|
-
const opts = values.filter((val) => val !== value);
|
|
115
|
-
this.formControl.setValue(opts);
|
|
116
|
-
}
|
|
117
|
-
removeChip(chipIndex) {
|
|
118
|
-
const value = this.formControl.value;
|
|
119
|
-
this.formControl.setValue([
|
|
120
|
-
...value.slice(0, chipIndex),
|
|
121
|
-
...value.slice(chipIndex + 1, value.length),
|
|
122
|
-
]);
|
|
123
|
-
this.formControl.markAsTouched();
|
|
124
|
-
}
|
|
125
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyMultiSelectCheckboxAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
126
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FormlyMultiSelectCheckboxAutocompleteComponent, isStandalone: true, selector: "mu-multi-checkbox-autocomplete", providers: [MatAutocompleteTrigger], viewQueries: [{ propertyName: "trigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
127
|
-
<mat-form-field class="w-full" appearance="outline">
|
|
128
|
-
<mat-label
|
|
129
|
-
>{{ field.props.label }}
|
|
130
|
-
<span *ngIf="field.props.required">*</span>
|
|
131
|
-
</mat-label>
|
|
132
|
-
<mat-chip-grid
|
|
133
|
-
#chipGrid
|
|
134
|
-
[formControl]="formControl"
|
|
135
|
-
[formlyAttributes]="field"
|
|
136
|
-
>
|
|
137
|
-
@for (chip of formControl.value; track $index; let chipIndex= $index) {
|
|
138
|
-
<mat-chip-row (removed)="removeChip(chipIndex)"
|
|
139
|
-
[matTooltip]="chip">
|
|
140
|
-
{{ chip }}
|
|
141
|
-
<button matChipRemove [attr.aria-label]="'remove ' + chip">
|
|
142
|
-
<mat-icon>cancel</mat-icon>
|
|
143
|
-
</button>
|
|
144
|
-
</mat-chip-row>
|
|
145
|
-
}
|
|
146
|
-
</mat-chip-grid>
|
|
147
|
-
<input
|
|
148
|
-
[formControl]="searchControl"
|
|
149
|
-
[matChipInputFor]="chipGrid"
|
|
150
|
-
[matAutocomplete]="auto"
|
|
151
|
-
[readonly]="field.props.readonly"
|
|
152
|
-
[required]="field.props.required || false"
|
|
153
|
-
(keydown)="onKeydown($event)"
|
|
154
|
-
(focus)="trigger.openPanel()"
|
|
155
|
-
/>
|
|
156
|
-
<mat-autocomplete #auto="matAutocomplete">
|
|
157
|
-
<mat-option
|
|
158
|
-
*ngFor="let option of filteredOptions | async"
|
|
159
|
-
[value]="option.label"
|
|
160
|
-
(click)="toggleSelection($event, option.label)"
|
|
161
|
-
>
|
|
162
|
-
<mat-checkbox
|
|
163
|
-
(click)="$event.stopPropagation()"
|
|
164
|
-
(change)="onCheckboxChange($event, option.label)"
|
|
165
|
-
[checked]="isSelected(option.label)"
|
|
166
|
-
>
|
|
167
|
-
{{ option.label }}
|
|
168
|
-
</mat-checkbox>
|
|
169
|
-
</mat-option>
|
|
170
|
-
</mat-autocomplete>
|
|
171
|
-
<mat-error *ngIf="formControl.invalid && formControl.touched">
|
|
172
|
-
{{ field.validation?.messages?.['required'] }}
|
|
173
|
-
</mat-error>
|
|
174
|
-
</mat-form-field>
|
|
175
|
-
`, isInline: true, styles: [".selected-chips{margin-top:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonsModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i2.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i2.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i2.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { 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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i8.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
176
|
-
}
|
|
177
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyMultiSelectCheckboxAutocompleteComponent, decorators: [{
|
|
178
|
-
type: Component,
|
|
179
|
-
args: [{ selector: 'mu-multi-checkbox-autocomplete', standalone: true, imports: [
|
|
180
|
-
CommonModule,
|
|
181
|
-
CommonsModule,
|
|
182
|
-
MatChipsModule,
|
|
183
|
-
MatButtonModule,
|
|
184
|
-
MatIconModule,
|
|
185
|
-
MatInputModule,
|
|
186
|
-
MatAutocompleteModule,
|
|
187
|
-
TranslateModule,
|
|
188
|
-
MatCheckboxModule,
|
|
189
|
-
FormlyModule,
|
|
190
|
-
ReactiveFormsModule,
|
|
191
|
-
MatFormFieldModule,
|
|
192
|
-
MatTooltipModule
|
|
193
|
-
], providers: [MatAutocompleteTrigger], template: `
|
|
194
|
-
<mat-form-field class="w-full" appearance="outline">
|
|
195
|
-
<mat-label
|
|
196
|
-
>{{ field.props.label }}
|
|
197
|
-
<span *ngIf="field.props.required">*</span>
|
|
198
|
-
</mat-label>
|
|
199
|
-
<mat-chip-grid
|
|
200
|
-
#chipGrid
|
|
201
|
-
[formControl]="formControl"
|
|
202
|
-
[formlyAttributes]="field"
|
|
203
|
-
>
|
|
204
|
-
@for (chip of formControl.value; track $index; let chipIndex= $index) {
|
|
205
|
-
<mat-chip-row (removed)="removeChip(chipIndex)"
|
|
206
|
-
[matTooltip]="chip">
|
|
207
|
-
{{ chip }}
|
|
208
|
-
<button matChipRemove [attr.aria-label]="'remove ' + chip">
|
|
209
|
-
<mat-icon>cancel</mat-icon>
|
|
210
|
-
</button>
|
|
211
|
-
</mat-chip-row>
|
|
212
|
-
}
|
|
213
|
-
</mat-chip-grid>
|
|
214
|
-
<input
|
|
215
|
-
[formControl]="searchControl"
|
|
216
|
-
[matChipInputFor]="chipGrid"
|
|
217
|
-
[matAutocomplete]="auto"
|
|
218
|
-
[readonly]="field.props.readonly"
|
|
219
|
-
[required]="field.props.required || false"
|
|
220
|
-
(keydown)="onKeydown($event)"
|
|
221
|
-
(focus)="trigger.openPanel()"
|
|
222
|
-
/>
|
|
223
|
-
<mat-autocomplete #auto="matAutocomplete">
|
|
224
|
-
<mat-option
|
|
225
|
-
*ngFor="let option of filteredOptions | async"
|
|
226
|
-
[value]="option.label"
|
|
227
|
-
(click)="toggleSelection($event, option.label)"
|
|
228
|
-
>
|
|
229
|
-
<mat-checkbox
|
|
230
|
-
(click)="$event.stopPropagation()"
|
|
231
|
-
(change)="onCheckboxChange($event, option.label)"
|
|
232
|
-
[checked]="isSelected(option.label)"
|
|
233
|
-
>
|
|
234
|
-
{{ option.label }}
|
|
235
|
-
</mat-checkbox>
|
|
236
|
-
</mat-option>
|
|
237
|
-
</mat-autocomplete>
|
|
238
|
-
<mat-error *ngIf="formControl.invalid && formControl.touched">
|
|
239
|
-
{{ field.validation?.messages?.['required'] }}
|
|
240
|
-
</mat-error>
|
|
241
|
-
</mat-form-field>
|
|
242
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".selected-chips{margin-top:10px}\n"] }]
|
|
243
|
-
}], propDecorators: { trigger: [{
|
|
244
|
-
type: ViewChild,
|
|
245
|
-
args: [MatAutocompleteTrigger]
|
|
246
|
-
}] } });
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZm9ybS9zcmMvbGliL3R5cGVzL211bHRpLXNlbGVjdC1jaGVja2JveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixzQkFBc0IsR0FDdkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQW1CLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0s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QUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25DLENBQUM7K0dBN0lVLDhDQUE4QzttR0FBOUMsOENBQThDLDZFQTFEOUMsQ0FBQyxzQkFBc0IsQ0FBQyxtRUFrRXhCLHNCQUFzQix1RUFqRXZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaURULDJHQWhFQyxZQUFZLG9UQUNaLGFBQWEsOEJBQ2IsY0FBYyw0dUJBQ2QsZUFBZSw4QkFDZixhQUFhLG1MQUNiLGNBQWMsdVlBQ2QscUJBQXFCLHcxQkFDckIsZUFBZSw4QkFDZixpQkFBaUIsb1lBQ2pCLFlBQVkscUpBQ1osbUJBQW1CLHN5QkFDbkIsa0JBQWtCLDhCQUNsQixnQkFBZ0I7OzRGQTREUCw4Q0FBOEM7a0JBNUUxRCxTQUFTOytCQUNFLGdDQUFnQyxjQUM5QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3FCQUNqQixhQUNVLENBQUMsc0JBQXNCLENBQUMsWUFDekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRFQsbUJBTWdCLHVCQUF1QixDQUFDLE1BQU07OEJBVVosT0FBTztzQkFBekMsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBDb21tb25zTW9kdWxlIH0gZnJvbSAnQG11cmFhaS9tbmwtY29tbW9ucyc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdS1tdWx0aS1jaGVja2JveC1hdXRvY29tcGxldGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvbW1vbnNNb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtNYXRBdXRvY29tcGxldGVUcmlnZ2VyXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LWZ1bGxcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgPG1hdC1sYWJlbFxuICAgICAgICA+e3sgZmllbGQucHJvcHMubGFiZWwgfX1cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5wcm9wcy5yZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICA8L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtY2hpcC1ncmlkXG4gICAgICAgICNjaGlwR3JpZFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICA+XG4gICAgICAgIEBmb3IgKGNoaXAgb2YgZm9ybUNvbnRyb2wudmFsdWU7IHRyYWNrICRpbmRleDsgbGV0IGNoaXBJbmRleD0gJGluZGV4KSB7XG4gICAgICAgIDxtYXQtY2hpcC1yb3cgKHJlbW92ZWQpPVwicmVtb3ZlQ2hpcChjaGlwSW5kZXgpXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiY2hpcFwiPlxuICAgICAgICAgIHt7IGNoaXAgfX1cbiAgICAgICAgICA8YnV0dG9uIG1hdENoaXBSZW1vdmUgW2F0dHIuYXJpYS1sYWJlbF09XCIncmVtb3ZlICcgKyBjaGlwXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtY2hpcC1yb3c+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LWNoaXAtZ3JpZD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcEdyaWRcIlxuICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucHJvcHMucmVhZG9ubHlcIlxuICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucHJvcHMucmVxdWlyZWQgfHwgZmFsc2VcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIChmb2N1cyk9XCJ0cmlnZ2VyLm9wZW5QYW5lbCgpXCJcbiAgICAgIC8+XG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zIHwgYXN5bmNcIlxuICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24ubGFiZWxcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb24oJGV2ZW50LCBvcHRpb24ubGFiZWwpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKCRldmVudCwgb3B0aW9uLmxhYmVsKVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKG9wdGlvbi5sYWJlbClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaW52YWxpZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkXCI+XG4gICAgICAgIHt7IGZpZWxkLnZhbGlkYXRpb24/Lm1lc3NhZ2VzPy5bJ3JlcXVpcmVkJ10gfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIGAsXG4gIHN0eWxlczogYFxuICAgIC5zZWxlY3RlZC1jaGlwcyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5TXVsdGlTZWxlY3RDaGVja2JveEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgZmlsdGVyZWRPcHRpb25zITogT2JzZXJ2YWJsZTxhbnk+O1xuICBwcm90ZWN0ZWQgb3B0aW9uc0xpc3Q6IGFueVtdID0gW107XG5cbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyKSB0cmlnZ2VyITogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBkZWJvdW5jZSA9IHRoaXMuZmllbGQucHJvcHMuZGVib3VuY2VUaW1lIHx8IDMwMDtcbiAgICBjb25zdCBmZXRjaE9uY2UgPVxuICAgICAgdGhpcy5maWVsZC5wcm9wcy5mZXRjaE9uY2UgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB0aGlzLmZpZWxkLnByb3BzLmZldGNoT25jZTtcblxuICAgIGlmICh0aGlzLmZpZWxkLnByb3BzLmFwaUZ1bmN0aW9uICYmIHR5cGVvZiB0aGlzLmZpZWxkLnByb3BzLmFwaUZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZmV0Y2hPbmNlKSB7XG4gICAgICAgdGhpcy5maWVsZC5wcm9wc1xuICAgIC5hcGlGdW5jdGlvbignJylcbiAgICAucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FQSSBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICB9KVxuICAgIClcbiAgICAuc3Vic2NyaWJlKChyZXN1bHRzOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5vcHRpb25zTGlzdCA9IHJlc3VsdHMgfHwgW107XG5cbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoZGVib3VuY2UpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBtYXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5maWx0ZXJPcHRpb25zKHNlYXJjaFRlcm0pKVxuICAgICAgKTsgICAgICBcbiAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICAgICAgZGVib3VuY2VUaW1lKGRlYm91bmNlKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoc2VhcmNoVGVybTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5hcGlGdW5jdGlvbihzZWFyY2hUZXJtKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zTGlzdCA9IHJlc3VsdHMgfHwgW107XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMgfHwgW107XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FQSSBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmZpZWxkLnByb3BzLm9wdGlvbnMpKSB7XG4gICAgICB0aGlzLm9wdGlvbnNMaXN0ID0gdGhpcy5maWVsZC5wcm9wcy5vcHRpb25zO1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICAgIGRlYm91bmNlVGltZShkZWJvdW5jZSksXG4gICAgICAgIG1hcCgoc2VhcmNoVGVybSkgPT4gdGhpcy5maWx0ZXJPcHRpb25zKHNlYXJjaFRlcm0pKVxuICAgICAgKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBvcHRpb25zJCA9IHRoaXMuZmllbGQucHJvcHMub3B0aW9ucyBhcyBPYnNlcnZhYmxlPGFueVtdPjtcblxuICAgICAgb3B0aW9ucyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKG9wdHMpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zTGlzdCA9IG9wdHMgfHwgW107XG4gICAgICB9KTtcblxuICAgICAgb3B0aW9ucyQuc3Vic2NyaWJlKChvcHRzKSA9PiAodGhpcy5vcHRpb25zTGlzdCA9IG9wdHMgfHwgW10pKTtcblxuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICAgICAgZGVib3VuY2VUaW1lKGRlYm91bmNlKVxuICAgICAgICApLFxuICAgICAgICBvcHRpb25zJCxcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgIG1hcCgoW3NlYXJjaFRlcm0sIG9wdGlvbnNdOiBbc3RyaW5nLCBhbnlbXV0pID0+XG4gICAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKHNlYXJjaFRlcm0pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbHRlck9wdGlvbnMoc2VhcmNoVGVybTogc3RyaW5nKSB7XG4gIGNvbnN0IGxpc3QgPSB0aGlzLm9wdGlvbnNMaXN0IHx8IFtdO1xuICBjb25zdCB0ZXJtID0gKHNlYXJjaFRlcm0gfHwgJycpLnRvTG93ZXJDYXNlKCk7XG5cbiAgcmV0dXJuIGxpc3QuZmlsdGVyKG9wdGlvbiA9PlxuICAgIChvcHRpb24ubGFiZWwgfHwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSlcbiAgKTtcbn1cblxuICBvbkNoZWNrYm94Q2hhbmdlKGV2ZW50OiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xuICAgIGlmIChldmVudC5jaGVja2VkKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKFsuLi5jdXJyZW50VmFsdWUsIHZhbHVlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoY3VycmVudFZhbHVlLmZpbHRlcigodjogYW55KSA9PiB2ICE9PSB2YWx1ZSkpO1xuICAgIH1cbiAgICB0aGlzLnRyaWdnZXIub3BlblBhbmVsKCk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3Rpb24oZXZlbnQ6IGFueSwgdmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLnJlbW92ZU9wdGlvbih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoWy4uLnRoaXMuZm9ybUNvbnRyb2wudmFsdWUsIHZhbHVlXSk7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy50cmlnZ2VyLm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmZvcm1Db250cm9sLnZhbHVlICYmIHRoaXMuZm9ybUNvbnRyb2wudmFsdWUuaW5jbHVkZXModmFsdWUpKSB8fFxuICAgICAgZmFsc2VcbiAgICApO1xuICB9XG5cbiAgcmVtb3ZlT3B0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuICAgIGNvbnN0IG9wdHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWw6IGFueSkgPT4gdmFsICE9PSB2YWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShvcHRzKTtcbiAgfVxuXG4gIHJlbW92ZUNoaXAoY2hpcEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShbXG4gICAgICAuLi52YWx1ZS5zbGljZSgwLCBjaGlwSW5kZXgpLFxuICAgICAgLi4udmFsdWUuc2xpY2UoY2hpcEluZGV4ICsgMSwgdmFsdWUubGVuZ3RoKSxcbiAgICBdKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import { FieldType } from '@ngx-formly/core';
|
|
4
|
-
import { FormlyModule } from '@ngx-formly/core';
|
|
5
|
-
import { FormlyMaterialModule } from '@ngx-formly/material';
|
|
6
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
7
|
-
import { MatRadioModule } from '@angular/material/radio';
|
|
8
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/common";
|
|
11
|
-
import * as i2 from "@ngx-formly/core";
|
|
12
|
-
import * as i3 from "@angular/forms";
|
|
13
|
-
import * as i4 from "@angular/material/radio";
|
|
14
|
-
import * as i5 from "@angular/material/form-field";
|
|
15
|
-
export class CustomFormlyRadioComponent extends FieldType {
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFormlyRadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CustomFormlyRadioComponent, isStandalone: true, selector: "mu-radio", usesInheritance: true, ngImport: i0, template: `
|
|
18
|
-
<mat-radio-group [formControl]="formControl" [formlyAttributes]="field">
|
|
19
|
-
<div class="flex-col">
|
|
20
|
-
<div class="flex justify-between">
|
|
21
|
-
<label *ngIf="to.label" [class.text-red-600]="to.required && formControl.touched && formControl.invalid">{{ to.label }}
|
|
22
|
-
<span *ngIf="to.required">*</span></label>
|
|
23
|
-
<div class="flex space-x-4">
|
|
24
|
-
<mat-radio-button *ngFor="let option of to['radioOptions']" [value]="option.value" [disabled]="to.disabled">
|
|
25
|
-
{{ option.label }}
|
|
26
|
-
</mat-radio-button>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
<mat-error *ngIf="formControl.invalid && formControl.touched">
|
|
30
|
-
{{ field.validation?.messages?.['required'] }}
|
|
31
|
-
</mat-error>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
</mat-radio-group>
|
|
35
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: FormlyMaterialModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFormlyRadioComponent, decorators: [{
|
|
38
|
-
type: Component,
|
|
39
|
-
args: [{
|
|
40
|
-
selector: 'mu-radio',
|
|
41
|
-
standalone: true,
|
|
42
|
-
imports: [
|
|
43
|
-
CommonModule,
|
|
44
|
-
FormlyModule,
|
|
45
|
-
FormlyMaterialModule,
|
|
46
|
-
ReactiveFormsModule,
|
|
47
|
-
MatRadioModule,
|
|
48
|
-
MatFormFieldModule
|
|
49
|
-
],
|
|
50
|
-
template: `
|
|
51
|
-
<mat-radio-group [formControl]="formControl" [formlyAttributes]="field">
|
|
52
|
-
<div class="flex-col">
|
|
53
|
-
<div class="flex justify-between">
|
|
54
|
-
<label *ngIf="to.label" [class.text-red-600]="to.required && formControl.touched && formControl.invalid">{{ to.label }}
|
|
55
|
-
<span *ngIf="to.required">*</span></label>
|
|
56
|
-
<div class="flex space-x-4">
|
|
57
|
-
<mat-radio-button *ngFor="let option of to['radioOptions']" [value]="option.value" [disabled]="to.disabled">
|
|
58
|
-
{{ option.label }}
|
|
59
|
-
</mat-radio-button>
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
<mat-error *ngIf="formControl.invalid && formControl.touched">
|
|
63
|
-
{{ field.validation?.messages?.['required'] }}
|
|
64
|
-
</mat-error>
|
|
65
|
-
</div>
|
|
66
|
-
|
|
67
|
-
</mat-radio-group>
|
|
68
|
-
`,
|
|
69
|
-
}]
|
|
70
|
-
}] });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8udHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZm9ybS9zcmMvbGliL3R5cGVzL3JhZGlvLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBaUNsRSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsU0FBMEI7K0dBQTdELDBCQUEwQjttR0FBMUIsMEJBQTBCLDJGQXBCekI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCWCwyREF6QkssWUFBWSwrUEFDWixZQUFZLHFKQUNaLG9CQUFvQiw4QkFDcEIsbUJBQW1CLHlUQUNuQixjQUFjLG9sQkFDZCxrQkFBa0I7OzRGQXNCYiwwQkFBMEI7a0JBL0J0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxVQUFVO29CQUNwQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxrQkFBa0I7cUJBQ3JCO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JYO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seU1vZHVsZSwgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlNYXRlcmlhbE1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ211LXJhZGlvJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3JtbHlNb2R1bGUsXG4gICAgICAgIEZvcm1seU1hdGVyaWFsTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRSYWRpb01vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgPG1hdC1yYWRpby1ncm91cCBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInRvLmxhYmVsXCIgIFtjbGFzcy50ZXh0LXJlZC02MDBdPVwidG8ucmVxdWlyZWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZCAmJiBmb3JtQ29udHJvbC5pbnZhbGlkXCI+e3sgdG8ubGFiZWwgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidG8ucmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHRvWydyYWRpb09wdGlvbnMnXVwiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIiBbZGlzYWJsZWRdPVwidG8uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5pbnZhbGlkICYmIGZvcm1Db250cm9sLnRvdWNoZWRcIj5cbiAgICAgICAgICAgIHt7IGZpZWxkLnZhbGlkYXRpb24/Lm1lc3NhZ2VzPy5bJ3JlcXVpcmVkJ10gfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbUZvcm1seVJhZGlvQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz4ge1xufSJdfQ==
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, inject, ViewChild, } from '@angular/core';
|
|
3
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
-
import { MatTabsModule, } from '@angular/material/tabs';
|
|
7
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
8
|
-
import { Router } from '@angular/router';
|
|
9
|
-
import { FieldType, } from '@ngx-formly/core';
|
|
10
|
-
import { FormlyModule } from '@ngx-formly/core';
|
|
11
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/material/tabs";
|
|
14
|
-
import * as i2 from "@ngx-formly/core";
|
|
15
|
-
import * as i3 from "@angular/common";
|
|
16
|
-
import * as i4 from "@ngx-translate/core";
|
|
17
|
-
import * as i5 from "@angular/material/icon";
|
|
18
|
-
import * as i6 from "@angular/material/tooltip";
|
|
19
|
-
export class FormlyFieldScrollableTabsComponent extends FieldType {
|
|
20
|
-
constructor(ngZone) {
|
|
21
|
-
super();
|
|
22
|
-
this.ngZone = ngZone;
|
|
23
|
-
this.router = inject(Router);
|
|
24
|
-
this.selectedIndex = 0;
|
|
25
|
-
}
|
|
26
|
-
nextTab(tabGroup) {
|
|
27
|
-
if (tabGroup && tabGroup.selectedIndex != null) {
|
|
28
|
-
const currentIndex = tabGroup.selectedIndex;
|
|
29
|
-
if (currentIndex < (tabGroup._tabs?.length || 0) - 1) {
|
|
30
|
-
tabGroup.selectedIndex = currentIndex + 1;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
previousTab(tabGroup) {
|
|
35
|
-
if (tabGroup && tabGroup.selectedIndex != null) {
|
|
36
|
-
const currentIndex = tabGroup.selectedIndex;
|
|
37
|
-
if (currentIndex > 0) {
|
|
38
|
-
tabGroup.selectedIndex = currentIndex - 1;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
isFirstTab(tabGroup) {
|
|
43
|
-
return tabGroup && tabGroup.selectedIndex === 0;
|
|
44
|
-
}
|
|
45
|
-
isLastTab(tabGroup) {
|
|
46
|
-
return (tabGroup && tabGroup.selectedIndex === (tabGroup._tabs?.length || 0) - 1);
|
|
47
|
-
}
|
|
48
|
-
ngOnInit() {
|
|
49
|
-
this.user = JSON.parse(localStorage.getItem('loggedInUser') || '{}');
|
|
50
|
-
}
|
|
51
|
-
isValid(field) {
|
|
52
|
-
if (field.key) {
|
|
53
|
-
if (field.props?.excludeValidation)
|
|
54
|
-
return true;
|
|
55
|
-
return field?.formControl?.valid || false;
|
|
56
|
-
}
|
|
57
|
-
return field.fieldGroup
|
|
58
|
-
? field.fieldGroup.every((f) => this.isValid(f))
|
|
59
|
-
: true;
|
|
60
|
-
}
|
|
61
|
-
onTabChange(event) {
|
|
62
|
-
this.selectedIndex = event.index;
|
|
63
|
-
console.log('Selected tab index:', this.selectedIndex);
|
|
64
|
-
if (this.field && this.field.props?.['tabChange']) {
|
|
65
|
-
this.field.props?.['tabChange'](event, this.field);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
onTabIndexChange(index) {
|
|
69
|
-
const targetElement = document.getElementById(`tab-${index}`);
|
|
70
|
-
if (targetElement) {
|
|
71
|
-
targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
onScroll(event) {
|
|
75
|
-
clearTimeout(this.debounceTimeout);
|
|
76
|
-
this.debounceTimeout = setTimeout(() => {
|
|
77
|
-
const scrollContainer = event.target;
|
|
78
|
-
const scrollTop = scrollContainer.scrollTop;
|
|
79
|
-
this.ngZone.run(() => {
|
|
80
|
-
if (this.field.fieldGroup) {
|
|
81
|
-
for (let index = 0; index < this.field.fieldGroup?.length; index++) {
|
|
82
|
-
const tabElement = document.getElementById(`tab-${index}`);
|
|
83
|
-
if (tabElement) {
|
|
84
|
-
const tabTop = tabElement.offsetTop - scrollContainer.offsetTop;
|
|
85
|
-
const tabHeight = tabElement.offsetHeight;
|
|
86
|
-
if (scrollTop >= tabTop && scrollTop < tabTop + tabHeight) {
|
|
87
|
-
if (this.selectedIndex !== index) {
|
|
88
|
-
this.selectedIndex = index;
|
|
89
|
-
}
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
}, 100);
|
|
97
|
-
}
|
|
98
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldScrollableTabsComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FormlyFieldScrollableTabsComponent, isStandalone: true, selector: "mu-formly-field-tabs1", viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }, { propertyName: "tabContent", first: true, predicate: ["tabContent"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
100
|
-
<div class="tabs-container">
|
|
101
|
-
<mat-tab-group
|
|
102
|
-
class="sticky-tabs"
|
|
103
|
-
[(selectedIndex)]="selectedIndex"
|
|
104
|
-
(selectedIndexChange)="onTabIndexChange($event)"
|
|
105
|
-
(selectedTabChange)="onTabChange($event)"
|
|
106
|
-
>
|
|
107
|
-
@for(tab of field.fieldGroup; track tab; let i = $index; let last =
|
|
108
|
-
$last){
|
|
109
|
-
<mat-tab>
|
|
110
|
-
<ng-template mat-tab-label>
|
|
111
|
-
<span
|
|
112
|
-
[ngStyle]="{
|
|
113
|
-
color:
|
|
114
|
-
!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) &&
|
|
115
|
-
options.formState?.showValidationError
|
|
116
|
-
? 'red'
|
|
117
|
-
: 'black'
|
|
118
|
-
}"
|
|
119
|
-
>
|
|
120
|
-
{{ tab?.props?.label || '' }}
|
|
121
|
-
</span>
|
|
122
|
-
<mat-icon
|
|
123
|
-
matTooltip="{{ 'MANDATORY_FIELDS_TOOLTIP' | translate }}"
|
|
124
|
-
*ngIf="
|
|
125
|
-
!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) &&
|
|
126
|
-
options.formState?.showValidationError
|
|
127
|
-
"
|
|
128
|
-
class="error-step"
|
|
129
|
-
>error</mat-icon
|
|
130
|
-
>
|
|
131
|
-
</ng-template>
|
|
132
|
-
</mat-tab>
|
|
133
|
-
}
|
|
134
|
-
</mat-tab-group>
|
|
135
|
-
|
|
136
|
-
<div class="tab-content" (scroll)="onScroll($event)">
|
|
137
|
-
<div
|
|
138
|
-
*ngFor="let tab of field.fieldGroup; let i = index"
|
|
139
|
-
[id]="'tab-' + i"
|
|
140
|
-
class="tab-section"
|
|
141
|
-
>
|
|
142
|
-
<h2 class="tab-title" *ngIf="tab?.props?.label">
|
|
143
|
-
{{ tab?.props?.label || '' }}
|
|
144
|
-
</h2>
|
|
145
|
-
<formly-field [field]="tab"></formly-field>
|
|
146
|
-
</div>
|
|
147
|
-
</div>
|
|
148
|
-
</div>
|
|
149
|
-
`, isInline: true, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%;.sticky-tabs{position:sticky;z-index:1}.tab-content{flex:1;overflow-y:auto;padding:16px;.tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d;h2{margin:0 0 8px}.spacer{height:400px}}}}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
150
|
-
}
|
|
151
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldScrollableTabsComponent, decorators: [{
|
|
152
|
-
type: Component,
|
|
153
|
-
args: [{ selector: 'mu-formly-field-tabs1', standalone: true, imports: [
|
|
154
|
-
MatTabsModule,
|
|
155
|
-
ReactiveFormsModule,
|
|
156
|
-
FormlyModule,
|
|
157
|
-
MatButtonModule,
|
|
158
|
-
CommonModule,
|
|
159
|
-
TranslateModule,
|
|
160
|
-
MatIconModule,
|
|
161
|
-
MatTooltipModule,
|
|
162
|
-
], template: `
|
|
163
|
-
<div class="tabs-container">
|
|
164
|
-
<mat-tab-group
|
|
165
|
-
class="sticky-tabs"
|
|
166
|
-
[(selectedIndex)]="selectedIndex"
|
|
167
|
-
(selectedIndexChange)="onTabIndexChange($event)"
|
|
168
|
-
(selectedTabChange)="onTabChange($event)"
|
|
169
|
-
>
|
|
170
|
-
@for(tab of field.fieldGroup; track tab; let i = $index; let last =
|
|
171
|
-
$last){
|
|
172
|
-
<mat-tab>
|
|
173
|
-
<ng-template mat-tab-label>
|
|
174
|
-
<span
|
|
175
|
-
[ngStyle]="{
|
|
176
|
-
color:
|
|
177
|
-
!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) &&
|
|
178
|
-
options.formState?.showValidationError
|
|
179
|
-
? 'red'
|
|
180
|
-
: 'black'
|
|
181
|
-
}"
|
|
182
|
-
>
|
|
183
|
-
{{ tab?.props?.label || '' }}
|
|
184
|
-
</span>
|
|
185
|
-
<mat-icon
|
|
186
|
-
matTooltip="{{ 'MANDATORY_FIELDS_TOOLTIP' | translate }}"
|
|
187
|
-
*ngIf="
|
|
188
|
-
!isValid(field.fieldGroup ? field.fieldGroup[i] : {}) &&
|
|
189
|
-
options.formState?.showValidationError
|
|
190
|
-
"
|
|
191
|
-
class="error-step"
|
|
192
|
-
>error</mat-icon
|
|
193
|
-
>
|
|
194
|
-
</ng-template>
|
|
195
|
-
</mat-tab>
|
|
196
|
-
}
|
|
197
|
-
</mat-tab-group>
|
|
198
|
-
|
|
199
|
-
<div class="tab-content" (scroll)="onScroll($event)">
|
|
200
|
-
<div
|
|
201
|
-
*ngFor="let tab of field.fieldGroup; let i = index"
|
|
202
|
-
[id]="'tab-' + i"
|
|
203
|
-
class="tab-section"
|
|
204
|
-
>
|
|
205
|
-
<h2 class="tab-title" *ngIf="tab?.props?.label">
|
|
206
|
-
{{ tab?.props?.label || '' }}
|
|
207
|
-
</h2>
|
|
208
|
-
<formly-field [field]="tab"></formly-field>
|
|
209
|
-
</div>
|
|
210
|
-
</div>
|
|
211
|
-
</div>
|
|
212
|
-
`, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%;.sticky-tabs{position:sticky;z-index:1}.tab-content{flex:1;overflow-y:auto;padding:16px;.tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d;h2{margin:0 0 8px}.spacer{height:400px}}}}\n"] }]
|
|
213
|
-
}], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { tabGroup: [{
|
|
214
|
-
type: ViewChild,
|
|
215
|
-
args: ['tabGroup']
|
|
216
|
-
}], tabContent: [{
|
|
217
|
-
type: ViewChild,
|
|
218
|
-
args: ['tabContent', { static: false }]
|
|
219
|
-
}] } });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS10YWJzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mb3JtL3NyYy9saWIvdHlwZXMvc2Nyb2xsYWJsZS10YWJzLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUVULE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBR0wsYUFBYSxHQUNkLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFDTCxTQUFTLEdBRVYsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQTBHdEQsTUFBTSxPQUFPLGtDQUNYLFNBQVEsU0FBMEI7SUFjbEMsWUFBb0IsTUFBYztRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQURVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFUbEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUl4QixrQkFBYSxHQUFHLENBQUMsQ0FBQztJQU9sQixDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQXFCO1FBQzNCLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxhQUFh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QVksb1ZBQ1osZUFBZSwyRkFDZixhQUFhLG1MQUNiLGdCQUFnQjs7NEZBNkZQLGtDQUFrQztrQkF4RzlDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRFQ7MkVBaURzQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBR3VCLFVBQVU7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7XG4gIE1hdFRhYkNoYW5nZUV2ZW50LFxuICBNYXRUYWJHcm91cCxcbiAgTWF0VGFic01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgRmllbGRUeXBlLFxuICBGaWVsZFR5cGVDb25maWcsXG59IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXUtZm9ybWx5LWZpZWxkLXRhYnMxJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0YWJzLWNvbnRhaW5lclwiPlxuICAgICAgPG1hdC10YWItZ3JvdXBcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktdGFic1wiXG4gICAgICAgIFsoc2VsZWN0ZWRJbmRleCldPVwic2VsZWN0ZWRJbmRleFwiXG4gICAgICAgIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cIm9uVGFiSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgQGZvcih0YWIgb2YgZmllbGQuZmllbGRHcm91cDsgdHJhY2sgdGFiOyBsZXQgaSA9ICRpbmRleDsgbGV0IGxhc3QgPVxuICAgICAgICAkbGFzdCl7XG4gICAgICAgIDxtYXQtdGFiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgIWlzVmFsaWQoZmllbGQuZmllbGRHcm91cCA/IGZpZWxkLmZpZWxkR3JvdXBbaV0gOiB7fSkgJiZcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9ybVN0YXRlPy5zaG93VmFsaWRhdGlvbkVycm9yXG4gICAgICAgICAgICAgICAgICAgID8gJ3JlZCdcbiAgICAgICAgICAgICAgICAgICAgOiAnYmxhY2snXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0YWI/LnByb3BzPy5sYWJlbCB8fCAnJyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnTUFOREFUT1JZX0ZJRUxEU19UT09MVElQJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIWlzVmFsaWQoZmllbGQuZmllbGRHcm91cCA/IGZpZWxkLmZpZWxkR3JvdXBbaV0gOiB7fSkgJiZcbiAgICAgICAgICAgICAgICBvcHRpb25zLmZvcm1TdGF0ZT8uc2hvd1ZhbGlkYXRpb25FcnJvclxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImVycm9yLXN0ZXBcIlxuICAgICAgICAgICAgICA+ZXJyb3I8L21hdC1pY29uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICB9XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBmaWVsZC5maWVsZEdyb3VwOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBbaWRdPVwiJ3RhYi0nICsgaVwiXG4gICAgICAgICAgY2xhc3M9XCJ0YWItc2VjdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJ0YWItdGl0bGVcIiAqbmdJZj1cInRhYj8ucHJvcHM/LmxhYmVsXCI+XG4gICAgICAgICAgICB7eyB0YWI/LnByb3BzPy5sYWJlbCB8fCAnJyB9fVxuICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPGZvcm1seS1maWVsZCBbZmllbGRdPVwidGFiXCI+PC9mb3JtbHktZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC50YWItdGl0bGUge1xuICAgICAgICBjb2xvcjogIzAwYWU0ZDtcbiAgICAgIH1cbiAgICAgIC5lcnJvci1zdGVwIHtcbiAgICAgICAgY29sb3I6ICNkMzJmMmYgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC50YWJzLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAuc3RpY2t5LXRhYnMge1xuICAgICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWItY29udGVudCB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgIHBhZGRpbmc6IDE2cHg7XG5cbiAgICAgICAgICAudGFiLXNlY3Rpb24ge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDVweDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMDBhZTRkO1xuXG4gICAgICAgICAgICBoMiB7XG4gICAgICAgICAgICAgIG1hcmdpbjogMCAwIDhweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNwYWNlciB7XG4gICAgICAgICAgICAgIGhlaWdodDogNDAwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGRTY3JvbGxhYmxlVGFic0NvbXBvbmVudFxuICBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIHN1Ym1pdHRlZERhdGEhOiBhbnlbXTtcblxuICByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgdXNlcjogYW55O1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcpIHRhYkdyb3VwITogTWF0VGFiR3JvdXA7XG5cbiAgc2VsZWN0ZWRJbmRleCA9IDA7XG4gIEBWaWV3Q2hpbGQoJ3RhYkNvbnRlbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFiQ29udGVudCE6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBkZWJvdW5jZVRpbWVvdXQ6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5leHRUYWIodGFiR3JvdXA6IE1hdFRhYkdyb3VwKSB7XG4gICAgaWYgKHRhYkdyb3VwICYmIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGFiR3JvdXAuc2VsZWN0ZWRJbmRleDtcbiAgICAgIGlmIChjdXJyZW50SW5kZXggPCAodGFiR3JvdXAuX3RhYnM/Lmxlbmd0aCB8fCAwKSAtIDEpIHtcbiAgICAgICAgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IGN1cnJlbnRJbmRleCArIDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJldmlvdXNUYWIodGFiR3JvdXA6IE1hdFRhYkdyb3VwKSB7XG4gICAgaWYgKHRhYkdyb3VwICYmIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGFiR3JvdXAuc2VsZWN0ZWRJbmRleDtcbiAgICAgIGlmIChjdXJyZW50SW5kZXggPiAwKSB7XG4gICAgICAgIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzRmlyc3RUYWIodGFiR3JvdXA6IE1hdFRhYkdyb3VwKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRhYkdyb3VwICYmIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPT09IDA7XG4gIH1cblxuICBpc0xhc3RUYWIodGFiR3JvdXA6IE1hdFRhYkdyb3VwKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRhYkdyb3VwICYmIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPT09ICh0YWJHcm91cC5fdGFicz8ubGVuZ3RoIHx8IDApIC0gMVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXIgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsb2dnZWRJblVzZXInKSB8fCAne30nKTtcbiAgfVxuXG4gIGlzVmFsaWQoZmllbGQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWVsZC5rZXkpIHtcbiAgICAgIGlmIChmaWVsZC5wcm9wcz8uZXhjbHVkZVZhbGlkYXRpb24pIHJldHVybiB0cnVlO1xuICAgICAgcmV0dXJuIGZpZWxkPy5mb3JtQ29udHJvbD8udmFsaWQgfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgID8gZmllbGQuZmllbGRHcm91cC5ldmVyeSgoZjogYW55KSA9PiB0aGlzLmlzVmFsaWQoZikpXG4gICAgICA6IHRydWU7XG4gIH1cblxuICBvblRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBldmVudC5pbmRleDtcbiAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgdGFiIGluZGV4OicsIHRoaXMuc2VsZWN0ZWRJbmRleCk7XG4gICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5wcm9wcz8uWyd0YWJDaGFuZ2UnXSkge1xuICAgICAgdGhpcy5maWVsZC5wcm9wcz8uWyd0YWJDaGFuZ2UnXShldmVudCwgdGhpcy5maWVsZCk7XG4gICAgfVxuICB9XG5cbiAgb25UYWJJbmRleENoYW5nZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGB0YWItJHtpbmRleH1gKTtcbiAgICBpZiAodGFyZ2V0RWxlbWVudCkge1xuICAgICAgdGFyZ2V0RWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XG4gICAgfVxuICB9XG5cbiAgb25TY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVib3VuY2VUaW1lb3V0KTtcblxuICAgIHRoaXMuZGVib3VuY2VUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPSBzY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5maWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuZmllbGQuZmllbGRHcm91cD8ubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHRhYi0ke2luZGV4fWApO1xuICAgICAgICAgICAgaWYgKHRhYkVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgdGFiVG9wID0gdGFiRWxlbWVudC5vZmZzZXRUb3AgLSBzY3JvbGxDb250YWluZXIub2Zmc2V0VG9wO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHRhYkhlaWdodCA9IHRhYkVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgIGlmIChzY3JvbGxUb3AgPj0gdGFiVG9wICYmIHNjcm9sbFRvcCA8IHRhYlRvcCArIHRhYkhlaWdodCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIDEwMCk7XG4gIH1cbn1cbiJdfQ==
|