@muraai/mnl-form 0.0.1-alpha-32ca3fa → 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/README.md +5 -5
- package/fesm2022/muraai-mnl-form.mjs +152 -145
- package/fesm2022/muraai-mnl-form.mjs.map +1 -1
- package/lib/{formly-lib/formly-lib.component.d.ts → mnl-form/mnl-form.component.d.ts} +3 -3
- 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/public-api.d.ts +2 -2
- package/esm2022/lib/confirmation-dialog/confirmation-dialog.component.mjs +0 -34
- package/esm2022/lib/formly-lib/formly-lib.component.mjs +0 -199
- package/esm2022/lib/formly-lib/formly-standalone.module.mjs +0 -155
- 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
- /package/lib/{formly-lib/formly-standalone.module.d.ts → mnl-form/mnl-form-standalone.module.d.ts} +0 -0
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tbGliL3NyYy9saWIvdHlwZXMvbXVsdGktc2VsZWN0LWNoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUN2QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBbUIsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1B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QyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQzsrR0E3SVUsOENBQThDO21HQUE5Qyw4Q0FBOEMsNkVBMUQ5QyxDQUFDLHNCQUFzQixDQUFDLG1FQWtFeEIsc0JBQXNCLHVFQWpFdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRFQsMkdBaEVDLFlBQVksb1RBQ1osYUFBYSw4QkFDYixjQUFjLDR1QkFDZCxlQUFlLDhCQUNmLGFBQWEsbUxBQ2IsY0FBYyx1WUFDZCxxQkFBcUIsdzFCQUNyQixlQUFlLDhCQUNmLGlCQUFpQixvWUFDakIsWUFBWSxxSkFDWixtQkFBbUIsc3lCQUNuQixrQkFBa0IsOEJBQ2xCLGdCQUFnQjs7NEZBNERQLDhDQUE4QztrQkE1RTFELFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7cUJBQ2pCLGFBQ1UsQ0FBQyxzQkFBc0IsQ0FBQyxZQUN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlEVCxtQkFNZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFVWixPQUFPO3NCQUF6QyxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IENvbW1vbnNNb2R1bGUgfSBmcm9tICdAbXVyYWFpL21ubC1jb21tb25zJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ211LW11bHRpLWNoZWNrYm94LWF1dG9jb21wbGV0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ29tbW9uc01vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW01hdEF1dG9jb21wbGV0ZVRyaWdnZXJdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctZnVsbFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICA8bWF0LWxhYmVsXG4gICAgICAgID57eyBmaWVsZC5wcm9wcy5sYWJlbCB9fVxuICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnByb3BzLnJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1jaGlwLWdyaWRcbiAgICAgICAgI2NoaXBHcmlkXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAoY2hpcCBvZiBmb3JtQ29udHJvbC52YWx1ZTsgdHJhY2sgJGluZGV4OyBsZXQgY2hpcEluZGV4PSAkaW5kZXgpIHtcbiAgICAgICAgPG1hdC1jaGlwLXJvdyAocmVtb3ZlZCk9XCJyZW1vdmVDaGlwKGNoaXBJbmRleClcIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCJjaGlwXCI+XG4gICAgICAgICAge3sgY2hpcCB9fVxuICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZSBbYXR0ci5hcmlhLWxhYmVsXT1cIidyZW1vdmUgJyArIGNoaXBcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1jaGlwLXJvdz5cbiAgICAgICAgfVxuICAgICAgPC9tYXQtY2hpcC1ncmlkPlxuICAgICAgPGlucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwR3JpZFwiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5wcm9wcy5yZWFkb25seVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5wcm9wcy5yZXF1aXJlZCB8fCBmYWxzZVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cInRyaWdnZXIub3BlblBhbmVsKClcIlxuICAgICAgLz5cbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luY1wiXG4gICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi5sYWJlbFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGlvbigkZXZlbnQsIG9wdGlvbi5sYWJlbClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoJGV2ZW50LCBvcHRpb24ubGFiZWwpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQob3B0aW9uLmxhYmVsKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5pbnZhbGlkICYmIGZvcm1Db250cm9sLnRvdWNoZWRcIj5cbiAgICAgICAge3sgZmllbGQudmFsaWRhdGlvbj8ubWVzc2FnZXM/LlsncmVxdWlyZWQnXSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgLnNlbGVjdGVkLWNoaXBzIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICB9XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlNdWx0aVNlbGVjdENoZWNrYm94QXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBmaWx0ZXJlZE9wdGlvbnMhOiBPYnNlcnZhYmxlPGFueT47XG4gIHByb3RlY3RlZCBvcHRpb25zTGlzdDogYW55W10gPSBbXTtcblxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHRyaWdnZXIhOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGRlYm91bmNlID0gdGhpcy5maWVsZC5wcm9wcy5kZWJvdW5jZVRpbWUgfHwgMzAwO1xuICAgIGNvbnN0IGZldGNoT25jZSA9XG4gICAgICB0aGlzLmZpZWxkLnByb3BzLmZldGNoT25jZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHRoaXMuZmllbGQucHJvcHMuZmV0Y2hPbmNlO1xuXG4gICAgaWYgKHRoaXMuZmllbGQucHJvcHMuYXBpRnVuY3Rpb24gJiYgdHlwZW9mIHRoaXMuZmllbGQucHJvcHMuYXBpRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChmZXRjaE9uY2UpIHtcbiAgICAgICB0aGlzLmZpZWxkLnByb3BzXG4gICAgLmFwaUZ1bmN0aW9uKCcnKVxuICAgIC5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignQVBJIEVycm9yOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgIH0pXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueVtdKSA9PiB7XG4gICAgICB0aGlzLm9wdGlvbnNMaXN0ID0gcmVzdWx0cyB8fCBbXTtcblxuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICAgIGRlYm91bmNlVGltZShkZWJvdW5jZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIG1hcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB0aGlzLmZpbHRlck9wdGlvbnMoc2VhcmNoVGVybSkpXG4gICAgICApOyAgICAgIFxuICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoZGVib3VuY2UpLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgc3dpdGNoTWFwKChzZWFyY2hUZXJtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmFwaUZ1bmN0aW9uKHNlYXJjaFRlcm0pLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgocmVzdWx0czogYW55W10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNMaXN0ID0gcmVzdWx0cyB8fCBbXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cyB8fCBbXTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQVBJIEVycm9yOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZmllbGQucHJvcHMub3B0aW9ucykpIHtcbiAgICAgIHRoaXMub3B0aW9uc0xpc3QgPSB0aGlzLmZpZWxkLnByb3BzLm9wdGlvbnM7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKGRlYm91bmNlKSxcbiAgICAgICAgbWFwKChzZWFyY2hUZXJtKSA9PiB0aGlzLmZpbHRlck9wdGlvbnMoc2VhcmNoVGVybSkpXG4gICAgICApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMkID0gdGhpcy5maWVsZC5wcm9wcy5vcHRpb25zIGFzIE9ic2VydmFibGU8YW55W10+O1xuXG4gICAgICBvcHRpb25zJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgob3B0cykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNMaXN0ID0gb3B0cyB8fCBbXTtcbiAgICAgIH0pO1xuXG4gICAgICBvcHRpb25zJC5zdWJzY3JpYmUoKG9wdHMpID0+ICh0aGlzLm9wdGlvbnNMaXN0ID0gb3B0cyB8fCBbXSkpO1xuXG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoZGVib3VuY2UpXG4gICAgICAgICksXG4gICAgICAgIG9wdGlvbnMkLFxuICAgICAgXSkucGlwZShcbiAgICAgICAgbWFwKChbc2VhcmNoVGVybSwgb3B0aW9uc106IFtzdHJpbmcsIGFueVtdXSkgPT5cbiAgICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoc2VhcmNoVGVybSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyT3B0aW9ucyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgY29uc3QgbGlzdCA9IHRoaXMub3B0aW9uc0xpc3QgfHwgW107XG4gIGNvbnN0IHRlcm0gPSAoc2VhcmNoVGVybSB8fCAnJykudG9Mb3dlckNhc2UoKTtcblxuICByZXR1cm4gbGlzdC5maWx0ZXIob3B0aW9uID0+XG4gICAgKG9wdGlvbi5sYWJlbCB8fCAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxuICApO1xufVxuXG4gIG9uQ2hlY2tib3hDaGFuZ2UoZXZlbnQ6IGFueSwgdmFsdWU6IGFueSkge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgfHwgW107XG4gICAgaWYgKGV2ZW50LmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoWy4uLmN1cnJlbnRWYWx1ZSwgdmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShjdXJyZW50VmFsdWUuZmlsdGVyKCh2OiBhbnkpID0+IHYgIT09IHZhbHVlKSk7XG4gICAgfVxuICAgIHRoaXMudHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGlvbihldmVudDogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMucmVtb3ZlT3B0aW9uKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShbLi4udGhpcy5mb3JtQ29udHJvbC52YWx1ZSwgdmFsdWVdKTtcbiAgICB9XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLnRyaWdnZXIub3BlblBhbmVsKCk7XG4gIH1cblxuICBpc1NlbGVjdGVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgJiYgdGhpcy5mb3JtQ29udHJvbC52YWx1ZS5pbmNsdWRlcyh2YWx1ZSkpIHx8XG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cblxuICByZW1vdmVPcHRpb24odmFsdWU6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XG4gICAgY29uc3Qgb3B0cyA9IHZhbHVlcy5maWx0ZXIoKHZhbDogYW55KSA9PiB2YWwgIT09IHZhbHVlKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG9wdHMpO1xuICB9XG5cbiAgcmVtb3ZlQ2hpcChjaGlwSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKFtcbiAgICAgIC4uLnZhbHVlLnNsaWNlKDAsIGNoaXBJbmRleCksXG4gICAgICAuLi52YWx1ZS5zbGljZShjaGlwSW5kZXggKyAxLCB2YWx1ZS5sZW5ndGgpLFxuICAgIF0pO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8udHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tbGliL3NyYy9saWIvdHlwZXMvcmFkaW8udHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7QUFpQ2xFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxTQUEwQjsrR0FBN0QsMEJBQTBCO21HQUExQiwwQkFBMEIsMkZBcEJ6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JYLDJEQXpCSyxZQUFZLCtQQUNaLFlBQVkscUpBQ1osb0JBQW9CLDhCQUNwQixtQkFBbUIseVRBQ25CLGNBQWMsb2xCQUNkLGtCQUFrQjs7NEZBc0JiLDBCQUEwQjtrQkEvQnRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDckI7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlg7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlLCBGaWVsZFR5cGVDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seU1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbXUtcmFkaW8nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1seU1vZHVsZSxcbiAgICAgICAgRm9ybWx5TWF0ZXJpYWxNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGVcbiAgICBdLFxuICAgIHRlbXBsYXRlOiBgXG4gICA8bWF0LXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwidG8ubGFiZWxcIiAgW2NsYXNzLnRleHQtcmVkLTYwMF09XCJ0by5yZXF1aXJlZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkICYmIGZvcm1Db250cm9sLmludmFsaWRcIj57eyB0by5sYWJlbCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0by5yZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdG9bJ3JhZGlvT3B0aW9ucyddXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiIFtkaXNhYmxlZF09XCJ0by5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZFwiPlxuICAgICAgICAgICAge3sgZmllbGQudmFsaWRhdGlvbj8ubWVzc2FnZXM/LlsncmVxdWlyZWQnXSB9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tRm9ybWx5UmFkaW9Db21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPiB7XG59Il19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS10YWJzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1saWIvc3JjL2xpYi90eXBlcy9zY3JvbGxhYmxlLXRhYnMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFHTCxhQUFhLEdBQ2QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUNMLFNBQVMsR0FFVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBMEd0RCxNQUFNLE9BQU8sa0NBQ1gsU0FBUSxTQUEwQjtJQWNsQyxZQUFvQixNQUFjO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVRsQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSXhCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO0lBT2xCLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBcUI7UUFDM0IsSUFBSSxRQUFRLElBQUksUUFBUSxD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OEJBQ2YsWUFBWSxvVkFDWixlQUFlLDJGQUNmLGFBQWEsbUxBQ2IsZ0JBQWdCOzs0RkE2RlAsa0NBQWtDO2tCQXhHOUMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNQLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtEVDsyRUFpRHNCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFHdUIsVUFBVTtzQkFBckQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtcbiAgTWF0VGFiQ2hhbmdlRXZlbnQsXG4gIE1hdFRhYkdyb3VwLFxuICBNYXRUYWJzTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBGaWVsZFR5cGUsXG4gIEZpZWxkVHlwZUNvbmZpZyxcbn0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdS1mb3JtbHktZmllbGQtdGFiczEnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInRhYnMtY29udGFpbmVyXCI+XG4gICAgICA8bWF0LXRhYi1ncm91cFxuICAgICAgICBjbGFzcz1cInN0aWNreS10YWJzXCJcbiAgICAgICAgWyhzZWxlY3RlZEluZGV4KV09XCJzZWxlY3RlZEluZGV4XCJcbiAgICAgICAgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwib25UYWJJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICBAZm9yKHRhYiBvZiBmaWVsZC5maWVsZEdyb3VwOyB0cmFjayB0YWI7IGxldCBpID0gJGluZGV4OyBsZXQgbGFzdCA9XG4gICAgICAgICRsYXN0KXtcbiAgICAgICAgPG1hdC10YWI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgY29sb3I6XG4gICAgICAgICAgICAgICAgICAhaXNWYWxpZChmaWVsZC5maWVsZEdyb3VwID8gZmllbGQuZmllbGRHcm91cFtpXSA6IHt9KSAmJlxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JtU3RhdGU/LnNob3dWYWxpZGF0aW9uRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgPyAncmVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdibGFjaydcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRhYj8ucHJvcHM/LmxhYmVsIHx8ICcnIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdNQU5EQVRPUllfRklFTERTX1RPT0xUSVAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAhaXNWYWxpZChmaWVsZC5maWVsZEdyb3VwID8gZmllbGQuZmllbGRHcm91cFtpXSA6IHt9KSAmJlxuICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9ybVN0YXRlPy5zaG93VmFsaWRhdGlvbkVycm9yXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXJyb3Itc3RlcFwiXG4gICAgICAgICAgICAgID5lcnJvcjwvbWF0LWljb25cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cblxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIGZpZWxkLmZpZWxkR3JvdXA7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFtpZF09XCIndGFiLScgKyBpXCJcbiAgICAgICAgICBjbGFzcz1cInRhYi1zZWN0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoMiBjbGFzcz1cInRhYi10aXRsZVwiICpuZ0lmPVwidGFiPy5wcm9wcz8ubGFiZWxcIj5cbiAgICAgICAgICAgIHt7IHRhYj8ucHJvcHM/LmxhYmVsIHx8ICcnIH19XG4gICAgICAgICAgPC9oMj5cbiAgICAgICAgICA8Zm9ybWx5LWZpZWxkIFtmaWVsZF09XCJ0YWJcIj48L2Zvcm1seS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnRhYi10aXRsZSB7XG4gICAgICAgIGNvbG9yOiAjMDBhZTRkO1xuICAgICAgfVxuICAgICAgLmVycm9yLXN0ZXAge1xuICAgICAgICBjb2xvcjogI2QzMmYyZiAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLnRhYnMtY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgICAgIC5zdGlja3ktdGFicyB7XG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYi1jb250ZW50IHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgcGFkZGluZzogMTZweDtcblxuICAgICAgICAgIC50YWItc2VjdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0NXB4O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwMGFlNGQ7XG5cbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgOHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc3BhY2VyIHtcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZFNjcm9sbGFibGVUYWJzQ29tcG9uZW50XG4gIGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgc3VibWl0dGVkRGF0YSE6IGFueVtdO1xuXG4gIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICB1c2VyOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJykgdGFiR3JvdXAhOiBNYXRUYWJHcm91cDtcblxuICBzZWxlY3RlZEluZGV4ID0gMDtcbiAgQFZpZXdDaGlsZCgndGFiQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJDb250ZW50ITogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIGRlYm91bmNlVGltZW91dDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmV4dFRhYih0YWJHcm91cDogTWF0VGFiR3JvdXApIHtcbiAgICBpZiAodGFiR3JvdXAgJiYgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0YWJHcm91cC5zZWxlY3RlZEluZGV4O1xuICAgICAgaWYgKGN1cnJlbnRJbmRleCA8ICh0YWJHcm91cC5fdGFicz8ubGVuZ3RoIHx8IDApIC0gMSkge1xuICAgICAgICB0YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gY3VycmVudEluZGV4ICsgMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcmV2aW91c1RhYih0YWJHcm91cDogTWF0VGFiR3JvdXApIHtcbiAgICBpZiAodGFiR3JvdXAgJiYgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0YWJHcm91cC5zZWxlY3RlZEluZGV4O1xuICAgICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHtcbiAgICAgICAgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNGaXJzdFRhYih0YWJHcm91cDogTWF0VGFiR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGFiR3JvdXAgJiYgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9PT0gMDtcbiAgfVxuXG4gIGlzTGFzdFRhYih0YWJHcm91cDogTWF0VGFiR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGFiR3JvdXAgJiYgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9PT0gKHRhYkdyb3VwLl90YWJzPy5sZW5ndGggfHwgMCkgLSAxXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xvZ2dlZEluVXNlcicpIHx8ICd7fScpO1xuICB9XG5cbiAgaXNWYWxpZChmaWVsZDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKGZpZWxkLmtleSkge1xuICAgICAgaWYgKGZpZWxkLnByb3BzPy5leGNsdWRlVmFsaWRhdGlvbikgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gZmllbGQ/LmZvcm1Db250cm9sPy52YWxpZCB8fCBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGQuZmllbGRHcm91cFxuICAgICAgPyBmaWVsZC5maWVsZEdyb3VwLmV2ZXJ5KChmOiBhbnkpID0+IHRoaXMuaXNWYWxpZChmKSlcbiAgICAgIDogdHJ1ZTtcbiAgfVxuXG4gIG9uVGFiQ2hhbmdlKGV2ZW50OiBNYXRUYWJDaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGV2ZW50LmluZGV4O1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3RlZCB0YWIgaW5kZXg6JywgdGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICBpZiAodGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLnByb3BzPy5bJ3RhYkNoYW5nZSddKSB7XG4gICAgICB0aGlzLmZpZWxkLnByb3BzPy5bJ3RhYkNoYW5nZSddKGV2ZW50LCB0aGlzLmZpZWxkKTtcbiAgICB9XG4gIH1cblxuICBvblRhYkluZGV4Q2hhbmdlKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHRhYi0ke2luZGV4fWApO1xuICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XG4gICAgICB0YXJnZXRFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgICB9XG4gIH1cblxuICBvblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVvdXQpO1xuXG4gICAgdGhpcy5kZWJvdW5jZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3A7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5maWVsZC5maWVsZEdyb3VwPy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdGFiLSR7aW5kZXh9YCk7XG4gICAgICAgICAgICBpZiAodGFiRWxlbWVudCkge1xuICAgICAgICAgICAgICBjb25zdCB0YWJUb3AgPSB0YWJFbGVtZW50Lm9mZnNldFRvcCAtIHNjcm9sbENvbnRhaW5lci5vZmZzZXRUb3A7XG5cbiAgICAgICAgICAgICAgY29uc3QgdGFiSGVpZ2h0ID0gdGFiRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgaWYgKHNjcm9sbFRvcCA+PSB0YWJUb3AgJiYgc2Nyb2xsVG9wIDwgdGFiVG9wICsgdGFiSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMTAwKTtcbiAgfVxufVxuIl19
|