@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,111 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from "@angular/common";
|
|
2
|
-
import { Component } from "@angular/core";
|
|
3
|
-
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
-
import { MatAutocompleteModule } from "@angular/material/autocomplete";
|
|
5
|
-
import { MatOptionModule } from "@angular/material/core";
|
|
6
|
-
import { MatFormFieldModule } from "@angular/material/form-field";
|
|
7
|
-
import { MatInputModule } from "@angular/material/input";
|
|
8
|
-
import { MatTooltipModule } from "@angular/material/tooltip";
|
|
9
|
-
import { FormlyModule } from "@ngx-formly/core";
|
|
10
|
-
import { FieldType } from "@ngx-formly/material";
|
|
11
|
-
import { debounceTime, map, of, startWith, switchMap } from "rxjs";
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../services/graphql.service";
|
|
14
|
-
import * as i2 from "@angular/common";
|
|
15
|
-
import * as i3 from "@angular/material/tooltip";
|
|
16
|
-
import * as i4 from "@angular/forms";
|
|
17
|
-
import * as i5 from "@angular/material/core";
|
|
18
|
-
import * as i6 from "@angular/material/autocomplete";
|
|
19
|
-
import * as i7 from "@angular/material/input";
|
|
20
|
-
import * as i8 from "@angular/material/form-field";
|
|
21
|
-
export class SelectApiAutoCompleteComponent extends FieldType {
|
|
22
|
-
get control() {
|
|
23
|
-
return this.formControl;
|
|
24
|
-
}
|
|
25
|
-
constructor(graphqlService, changedetecref) {
|
|
26
|
-
super();
|
|
27
|
-
this.graphqlService = graphqlService;
|
|
28
|
-
this.changedetecref = changedetecref;
|
|
29
|
-
this.displayValue = '';
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.formControl.valueChanges.pipe(startWith(''), debounceTime(200), switchMap((fieldValue) => {
|
|
33
|
-
if (this.field.model[this.field.gqlQuery?.variableKey || '']) {
|
|
34
|
-
let gqqlVariables = { ...this.field?.gqlQuery?.variables };
|
|
35
|
-
Object.keys(gqqlVariables).forEach((key) => {
|
|
36
|
-
gqqlVariables[key] = this.field.model[this.field.gqlQuery?.variableKey || ''];
|
|
37
|
-
if (key === this.field.gqlQuery?.searchKey) {
|
|
38
|
-
gqqlVariables[key] = fieldValue;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
return this.graphqlService.executeQuery(this.field.gqlQuery?.query || '', gqqlVariables);
|
|
42
|
-
}
|
|
43
|
-
return of({});
|
|
44
|
-
}), map((queryRes) => queryRes?.data?.[this.field.gqlQuery?.responseKey || '']?.rows?.map((rowResp) => {
|
|
45
|
-
return {
|
|
46
|
-
label: rowResp[this.field.gqlQuery?.optionsLabel || ''],
|
|
47
|
-
value: rowResp[this.field.gqlQuery?.optionsValue || ''],
|
|
48
|
-
};
|
|
49
|
-
}) || [])).subscribe((updatedRes) => {
|
|
50
|
-
this.filteredOptions = of(updatedRes);
|
|
51
|
-
this.changedetecref.detectChanges();
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
validateInput() {
|
|
55
|
-
const currentValue = this.control.value;
|
|
56
|
-
if (this.filteredOptions) {
|
|
57
|
-
this.filteredOptions.subscribe(validOptions => {
|
|
58
|
-
const isValid = validOptions.some(option => option.value === currentValue);
|
|
59
|
-
if (!isValid) {
|
|
60
|
-
this.control.setValue('');
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectApiAutoCompleteComponent, deps: [{ token: i1.GraphQLService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
66
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SelectApiAutoCompleteComponent, isStandalone: true, selector: "mu-temp-auto-complete", usesInheritance: true, ngImport: i0, template: `
|
|
67
|
-
<mat-form-field class="w-full" appearance="outline">
|
|
68
|
-
<mat-label>{{ props.label }}</mat-label>
|
|
69
|
-
<input matInput
|
|
70
|
-
[matAutocomplete]="auto"
|
|
71
|
-
[formControl]="control"
|
|
72
|
-
[matTooltip]="props['tooltip'] || ''"
|
|
73
|
-
[required]="props.required || false"
|
|
74
|
-
[readonly]="props.readonly"
|
|
75
|
-
[placeholder]="props.placeholder || ''"
|
|
76
|
-
(blur)="validateInput()">
|
|
77
|
-
<mat-autocomplete #auto="matAutocomplete">
|
|
78
|
-
@for (option of filteredOptions | async; track option) {
|
|
79
|
-
<mat-option [value]="option.value">{{option.label}}</mat-option>
|
|
80
|
-
}
|
|
81
|
-
</mat-autocomplete>
|
|
82
|
-
</mat-form-field>
|
|
83
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i6.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: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: FormlyModule }] }); }
|
|
84
|
-
}
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectApiAutoCompleteComponent, decorators: [{
|
|
86
|
-
type: Component,
|
|
87
|
-
args: [{
|
|
88
|
-
selector: 'mu-temp-auto-complete',
|
|
89
|
-
standalone: true,
|
|
90
|
-
imports: [CommonModule, MatTooltipModule, ReactiveFormsModule, MatOptionModule, FormsModule, MatAutocompleteModule, MatInputModule, MatFormFieldModule, FormlyModule],
|
|
91
|
-
template: `
|
|
92
|
-
<mat-form-field class="w-full" appearance="outline">
|
|
93
|
-
<mat-label>{{ props.label }}</mat-label>
|
|
94
|
-
<input matInput
|
|
95
|
-
[matAutocomplete]="auto"
|
|
96
|
-
[formControl]="control"
|
|
97
|
-
[matTooltip]="props['tooltip'] || ''"
|
|
98
|
-
[required]="props.required || false"
|
|
99
|
-
[readonly]="props.readonly"
|
|
100
|
-
[placeholder]="props.placeholder || ''"
|
|
101
|
-
(blur)="validateInput()">
|
|
102
|
-
<mat-autocomplete #auto="matAutocomplete">
|
|
103
|
-
@for (option of filteredOptions | async; track option) {
|
|
104
|
-
<mat-option [value]="option.value">{{option.label}}</mat-option>
|
|
105
|
-
}
|
|
106
|
-
</mat-autocomplete>
|
|
107
|
-
</mat-form-field>
|
|
108
|
-
`,
|
|
109
|
-
}]
|
|
110
|
-
}], ctorParameters: () => [{ type: i1.GraphQLService }, { type: i0.ChangeDetectorRef }] });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFwaS1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tbGliL3NyYy9saWIvdHlwZXMvc2VsZWN0LWFwaS1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFxQixTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFlLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQTJCL0UsTUFBTSxPQUFPLDhCQUErQixTQUFRLFNBQWtDO0lBR3JGLElBQUksT0FBTztRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQTBCLENBQUM7SUFDeEMsQ0FBQztJQUNELFlBQW9CLGNBQThCLEVBQVUsY0FBaUM7UUFDNUYsS0FBSyxFQUFFLENBQUM7UUFEVyxtQkFBYyxHQUFkLGNBQWMs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QkFBOEI7bUdBQTlCLDhCQUE4Qix3R0FuQmhDOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCVCwyREFsQlMsWUFBWSxtRkFBRSxnQkFBZ0IsNFRBQUUsbUJBQW1CLHN5QkFBRSxlQUFlLCtMQUFFLFdBQVcsOEJBQUUscUJBQXFCLHVyQkFBRSxjQUFjLHNuQkFBRSxrQkFBa0IsOEJBQUUsWUFBWTs7NEZBb0J4Siw4QkFBOEI7a0JBdkIxQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxDQUFDO29CQUNySyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJUO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tIFwiQG5neC1mb3JtbHkvY29yZVwiO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIkBuZ3gtZm9ybWx5L21hdGVyaWFsXCI7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEN1c3RvbUZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jdXN0b20tZm9ybS1maWVsZC5tb2RlbFwiO1xuaW1wb3J0IHsgR3JhcGhRTFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZ3JhcGhxbC5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ211LXRlbXAtYXV0by1jb21wbGV0ZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdE9wdGlvbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgRm9ybWx5TW9kdWxlXSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LWZ1bGxcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuXHRcdFx0PG1hdC1sYWJlbD57eyBwcm9wcy5sYWJlbCB9fTwvbWF0LWxhYmVsPlxuXHRcdFx0PGlucHV0IG1hdElucHV0XG5cdFx0XHRcdFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG5cdFx0XHRcdFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcblx0XHRcdFx0W21hdFRvb2x0aXBdPVwicHJvcHNbJ3Rvb2x0aXAnXSB8fCAnJ1wiXG5cdFx0XHRcdFtyZXF1aXJlZF09XCJwcm9wcy5yZXF1aXJlZCB8fCBmYWxzZVwiXG5cdFx0XHRcdFtyZWFkb25seV09XCJwcm9wcy5yZWFkb25seVwiXG5cdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJwcm9wcy5wbGFjZWhvbGRlciB8fCAnJ1wiXG5cdFx0XHRcdChibHVyKT1cInZhbGlkYXRlSW5wdXQoKVwiPlxuICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIj5cblx0XHRcdFx0QGZvciAob3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jOyB0cmFjayBvcHRpb24pIHtcblx0XHRcdFx0XHQ8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+e3tvcHRpb24ubGFiZWx9fTwvbWF0LW9wdGlvbj5cblx0XHRcdFx0fVxuICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdGAsXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEFwaUF1dG9Db21wbGV0ZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxDdXN0b21Gb3JtbHlGaWVsZENvbmZpZz4gaW1wbGVtZW50cyBPbkluaXQge1xuXHRmaWx0ZXJlZE9wdGlvbnMhOiBPYnNlcnZhYmxlPGFueVtdPjtcblx0ZGlzcGxheVZhbHVlID0gJyc7XG5cdGdldCBjb250cm9sKCk6IEZvcm1Db250cm9sIHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbDtcblx0fVxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGdyYXBocWxTZXJ2aWNlOiBHcmFwaFFMU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VkZXRlY3JlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcblx0XHRcdHN0YXJ0V2l0aCgnJyksXG5cdFx0XHRkZWJvdW5jZVRpbWUoMjAwKSxcblx0XHRcdHN3aXRjaE1hcCgoZmllbGRWYWx1ZSkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5maWVsZC5tb2RlbFt0aGlzLmZpZWxkLmdxbFF1ZXJ5Py52YXJpYWJsZUtleSB8fCAnJ10pIHtcblx0XHRcdFx0XHRsZXQgZ3FxbFZhcmlhYmxlcyA9IHsgLi4udGhpcy5maWVsZD8uZ3FsUXVlcnk/LnZhcmlhYmxlcyB9O1xuXHRcdFx0XHRcdE9iamVjdC5rZXlzKGdxcWxWYXJpYWJsZXMpLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0XHRcdFx0Z3FxbFZhcmlhYmxlc1trZXldID0gdGhpcy5maWVsZC5tb2RlbFt0aGlzLmZpZWxkLmdxbFF1ZXJ5Py52YXJpYWJsZUtleSB8fCAnJ107XG5cdFx0XHRcdFx0XHRpZiAoa2V5ID09PSB0aGlzLmZpZWxkLmdxbFF1ZXJ5Py5zZWFyY2hLZXkpIHtcblx0XHRcdFx0XHRcdFx0Z3FxbFZhcmlhYmxlc1trZXldID0gZmllbGRWYWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ncmFwaHFsU2VydmljZS5leGVjdXRlUXVlcnkoXG5cdFx0XHRcdFx0XHR0aGlzLmZpZWxkLmdxbFF1ZXJ5Py5xdWVyeSB8fCAnJyxcblx0XHRcdFx0XHRcdGdxcWxWYXJpYWJsZXNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBvZih7fSk7XG5cdFx0XHR9KSxcblx0XHRcdG1hcCgocXVlcnlSZXMpID0+IHF1ZXJ5UmVzPy5kYXRhPy5bdGhpcy5maWVsZC5ncWxRdWVyeT8ucmVzcG9uc2VLZXkgfHwgJyddPy5yb3dzPy5tYXAoKHJvd1Jlc3A6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGxhYmVsOiByb3dSZXNwW3RoaXMuZmllbGQuZ3FsUXVlcnk/Lm9wdGlvbnNMYWJlbCB8fCAnJ10sXG5cdFx0XHRcdFx0dmFsdWU6IHJvd1Jlc3BbdGhpcy5maWVsZC5ncWxRdWVyeT8ub3B0aW9uc1ZhbHVlIHx8ICcnXSxcblx0XHRcdFx0fTtcblx0XHRcdH0pIHx8IFtdKSxcblx0XHQpLnN1YnNjcmliZSgodXBkYXRlZFJlcykgPT4ge1xuXHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBvZih1cGRhdGVkUmVzKTtcblx0XHRcdHRoaXMuY2hhbmdlZGV0ZWNyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH0pO1xuXHR9XG5cblx0dmFsaWRhdGVJbnB1dCgpOiB2b2lkIHtcblx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmNvbnRyb2wudmFsdWU7XG5cdFx0aWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zKSB7XG5cdFx0ICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zdWJzY3JpYmUodmFsaWRPcHRpb25zID0+IHtcblx0XHRcdGNvbnN0IGlzVmFsaWQgPSB2YWxpZE9wdGlvbnMuc29tZShvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSBjdXJyZW50VmFsdWUpO1xuXHRcdFx0aWYgKCFpc1ZhbGlkKSB7XG5cdFx0XHQgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnJyk7XG5cdFx0XHR9XG5cdFx0ICB9KTtcblx0XHR9XG5cdCAgfVxufVxuIl19
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, ViewChild, } from '@angular/core';
|
|
2
|
-
import { FieldType, FormlyModule } from '@ngx-formly/core';
|
|
3
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { combineLatest, of } from 'rxjs';
|
|
5
|
-
import { map, startWith } from 'rxjs/operators';
|
|
6
|
-
import { CommonModule } from '@angular/common';
|
|
7
|
-
import { CommonsModule } from '@muraai/mnl-commons';
|
|
8
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
9
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
10
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
11
|
-
import { MatAutocompleteModule, MatAutocompleteTrigger, } from '@angular/material/autocomplete';
|
|
12
|
-
import { MatInputModule } from '@angular/material/input';
|
|
13
|
-
import { MatChipsModule } from '@angular/material/chips';
|
|
14
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
15
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "@angular/common";
|
|
18
|
-
import * as i2 from "@angular/material/input";
|
|
19
|
-
import * as i3 from "@angular/material/form-field";
|
|
20
|
-
import * as i4 from "@angular/material/autocomplete";
|
|
21
|
-
import * as i5 from "@angular/material/core";
|
|
22
|
-
import * as i6 from "@angular/forms";
|
|
23
|
-
export class SelectAutocompleteComponent extends FieldType {
|
|
24
|
-
constructor() {
|
|
25
|
-
super(...arguments);
|
|
26
|
-
this.displayValue = '';
|
|
27
|
-
this.searchControl = new FormControl();
|
|
28
|
-
}
|
|
29
|
-
ngOnInit() {
|
|
30
|
-
if (Array.isArray(this.to.options)) {
|
|
31
|
-
this.filteredOptions = this.formControl.valueChanges.pipe(startWith(''), map((searchTerm) => this.filterOptions(searchTerm)));
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
const options$ = this.to.options;
|
|
35
|
-
this.filteredOptions = combineLatest([
|
|
36
|
-
this.formControl.valueChanges.pipe(startWith('')),
|
|
37
|
-
options$,
|
|
38
|
-
]).pipe(map(([searchTerm, options]) => options.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()))));
|
|
39
|
-
}
|
|
40
|
-
this.formControl.valueChanges.pipe(startWith('')).subscribe(value => {
|
|
41
|
-
if (value) {
|
|
42
|
-
this.updateDisplayValue(value);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
this.displayValue = '';
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
this.updateDisplayValue(this.formControl.value);
|
|
49
|
-
}
|
|
50
|
-
onKeydown(event) {
|
|
51
|
-
if (event.key === 'Enter') {
|
|
52
|
-
event.preventDefault();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
filterOptions(searchTerm) {
|
|
56
|
-
if (Array.isArray(this.to.options)) {
|
|
57
|
-
return this.to.options.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
58
|
-
}
|
|
59
|
-
return [];
|
|
60
|
-
}
|
|
61
|
-
updateDisplayValue(value) {
|
|
62
|
-
if (Array.isArray(this.to.options)) {
|
|
63
|
-
const selectedOption = this.to.options.find(option => option.value === value);
|
|
64
|
-
this.displayValue = selectedOption ? selectedOption.label : '';
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
(this.to.options || of([])).subscribe(options => {
|
|
68
|
-
const selectedOption = options.find(option => option.value === value);
|
|
69
|
-
this.displayValue = selectedOption ? selectedOption.label : '';
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SelectAutocompleteComponent, isStandalone: true, selector: "mu-formly-select", providers: [MatAutocompleteTrigger], viewQueries: [{ propertyName: "trigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
75
|
-
<mat-form-field class="w-full" appearance="outline">
|
|
76
|
-
<mat-label>{{ to.label }}</mat-label>
|
|
77
|
-
<input
|
|
78
|
-
matInput
|
|
79
|
-
[formControl]="formControl"
|
|
80
|
-
[matAutocomplete]="auto"
|
|
81
|
-
[readonly]="to.readonly"
|
|
82
|
-
[value]="displayValue"
|
|
83
|
-
[required]="to.required || false"
|
|
84
|
-
(keydown)="onKeydown($event)"
|
|
85
|
-
(focus)="trigger.openPanel()"
|
|
86
|
-
/>
|
|
87
|
-
<mat-autocomplete
|
|
88
|
-
#auto="matAutocomplete">
|
|
89
|
-
<mat-option
|
|
90
|
-
*ngFor="let option of filteredOptions | async"
|
|
91
|
-
[value]="option.value"
|
|
92
|
-
>
|
|
93
|
-
{{ option.label }}
|
|
94
|
-
</mat-option>
|
|
95
|
-
</mat-autocomplete>
|
|
96
|
-
</mat-form-field>
|
|
97
|
-
`, 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: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonsModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4.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: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
98
|
-
}
|
|
99
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectAutocompleteComponent, decorators: [{
|
|
100
|
-
type: Component,
|
|
101
|
-
args: [{ selector: 'mu-formly-select', standalone: true, imports: [
|
|
102
|
-
CommonModule,
|
|
103
|
-
CommonsModule,
|
|
104
|
-
MatChipsModule,
|
|
105
|
-
MatButtonModule,
|
|
106
|
-
MatIconModule,
|
|
107
|
-
MatInputModule,
|
|
108
|
-
MatAutocompleteModule,
|
|
109
|
-
TranslateModule,
|
|
110
|
-
MatCheckboxModule,
|
|
111
|
-
FormlyModule,
|
|
112
|
-
ReactiveFormsModule,
|
|
113
|
-
MatFormFieldModule,
|
|
114
|
-
], providers: [MatAutocompleteTrigger], template: `
|
|
115
|
-
<mat-form-field class="w-full" appearance="outline">
|
|
116
|
-
<mat-label>{{ to.label }}</mat-label>
|
|
117
|
-
<input
|
|
118
|
-
matInput
|
|
119
|
-
[formControl]="formControl"
|
|
120
|
-
[matAutocomplete]="auto"
|
|
121
|
-
[readonly]="to.readonly"
|
|
122
|
-
[value]="displayValue"
|
|
123
|
-
[required]="to.required || false"
|
|
124
|
-
(keydown)="onKeydown($event)"
|
|
125
|
-
(focus)="trigger.openPanel()"
|
|
126
|
-
/>
|
|
127
|
-
<mat-autocomplete
|
|
128
|
-
#auto="matAutocomplete">
|
|
129
|
-
<mat-option
|
|
130
|
-
*ngFor="let option of filteredOptions | async"
|
|
131
|
-
[value]="option.value"
|
|
132
|
-
>
|
|
133
|
-
{{ option.label }}
|
|
134
|
-
</mat-option>
|
|
135
|
-
</mat-autocomplete>
|
|
136
|
-
</mat-form-field>
|
|
137
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".selected-chips{margin-top:10px}\n"] }]
|
|
138
|
-
}], propDecorators: { trigger: [{
|
|
139
|
-
type: ViewChild,
|
|
140
|
-
args: [MatAutocompleteTrigger]
|
|
141
|
-
}] } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWF1dG9jb21wbGV0ZS1yZWRlZmluZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1saWIvc3JjL2xpYi90eXBlcy9zZWxlY3QtYXV0b2NvbXBsZXRlLXJlZGVmaW5lZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCx1QkFBdUIsRUFFdkIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQW1CLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQs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Ozs7Ozs7Ozs7Ozs7Ozs7O0tBdUJULG1CQU1nQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVVaLE9BQU87c0JBQXpDLFNBQVM7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbiAgaW1wb3J0IHsgRmllbGRUeXBlLCBGaWVsZFR5cGVDb25maWcsIEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuICBpbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbiAgaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbiAgaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG4gIGltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG4gIGltcG9ydCB7IENvbW1vbnNNb2R1bGUgfSBmcm9tICdAbXVyYWFpL21ubC1jb21tb25zJztcbiAgaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG4gIGltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuICBpbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbiAgaW1wb3J0IHtcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcbiAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuICBpbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbiAgaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG4gIGltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbiAgaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbiAgXG4gIEBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbXUtZm9ybWx5LXNlbGVjdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICBDb21tb25Nb2R1bGUsXG4gICAgICBDb21tb25zTW9kdWxlLFxuICAgICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICAgIEZvcm1seU1vZHVsZSxcbiAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtNYXRBdXRvY29tcGxldGVUcmlnZ2VyXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy1mdWxsXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPnt7IHRvLmxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwidG8ucmVhZG9ubHlcIlxuICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJ0by5yZXF1aXJlZCB8fCBmYWxzZVwiXG4gICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAgIChmb2N1cyk9XCJ0cmlnZ2VyLm9wZW5QYW5lbCgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIGAsXG4gICAgc3R5bGVzOiBgXG4gICAgICAuc2VsZWN0ZWQtY2hpcHMge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICB9XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgfSlcbiAgZXhwb3J0IGNsYXNzIFNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxuICB7XG4gICAgZGlzcGxheVZhbHVlID0gJyc7XG5cbiAgICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgZmlsdGVyZWRPcHRpb25zITogT2JzZXJ2YWJsZTxhbnlbXT47XG4gICAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyKSB0cmlnZ2VyITogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcbiAgXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnRvLm9wdGlvbnMpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICAgIG1hcCgoc2VhcmNoVGVybSkgPT4gdGhpcy5maWx0ZXJPcHRpb25zKHNlYXJjaFRlcm0pKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyQgPSB0aGlzLnRvLm9wdGlvbnMgYXMgT2JzZXJ2YWJsZTxhbnlbXT47XG4gIFxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSksXG4gICAgICAgICAgb3B0aW9ucyQsXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgbWFwKChbc2VhcmNoVGVybSwgb3B0aW9uc106IFtzdHJpbmcsIGFueVtdXSkgPT5cbiAgICAgICAgICAgIG9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+XG4gICAgICAgICAgICAgIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCgnJykpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlRGlzcGxheVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgXG4gICAgICB0aGlzLnVwZGF0ZURpc3BsYXlWYWx1ZSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcbiAgICB9XG4gIFxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgXG4gICAgZmlsdGVyT3B0aW9ucyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudG8ub3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG8ub3B0aW9ucy5maWx0ZXIoKG9wdGlvbjogYW55KSA9PlxuICAgICAgICAgIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5VmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnRvLm9wdGlvbnMpKSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnRvLm9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBzZWxlY3RlZE9wdGlvbiA/IHNlbGVjdGVkT3B0aW9uLmxhYmVsIDogJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKHRoaXMudG8ub3B0aW9ucyB8fCBvZihbXSkpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gb3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gc2VsZWN0ZWRPcHRpb24gPyBzZWxlY3RlZE9wdGlvbi5sYWJlbCA6ICcnO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cbiAgIl19
|
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
5
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
-
import { MatInputModule } from '@angular/material/input';
|
|
8
|
-
import { FieldType, FormlyModule } from '@ngx-formly/core';
|
|
9
|
-
import { combineLatest, Observable, of } from 'rxjs';
|
|
10
|
-
import { catchError, debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap, take, } from 'rxjs/operators';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/common";
|
|
13
|
-
import * as i2 from "@angular/forms";
|
|
14
|
-
import * as i3 from "@ngx-formly/core";
|
|
15
|
-
import * as i4 from "@angular/material/form-field";
|
|
16
|
-
import * as i5 from "@angular/material/input";
|
|
17
|
-
import * as i6 from "@angular/material/autocomplete";
|
|
18
|
-
import * as i7 from "@angular/material/core";
|
|
19
|
-
import * as i8 from "@angular/material/icon";
|
|
20
|
-
export class FormlySelectAutocompleteComponent extends FieldType {
|
|
21
|
-
constructor() {
|
|
22
|
-
super(...arguments);
|
|
23
|
-
this.optionsList = [];
|
|
24
|
-
this.displayFn = (value) => {
|
|
25
|
-
if (value == null) {
|
|
26
|
-
return '';
|
|
27
|
-
}
|
|
28
|
-
const match = this.optionsList.find((opt) => {
|
|
29
|
-
const optValue = opt.value != null ? opt.value : opt;
|
|
30
|
-
return optValue === value;
|
|
31
|
-
});
|
|
32
|
-
if (!match) {
|
|
33
|
-
return String(value);
|
|
34
|
-
}
|
|
35
|
-
return match.label != null ? match.label : String(match.value);
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
const debounce = this.field?.props?.debounceTime || 300;
|
|
40
|
-
const fetchOnce = this.field?.props?.fetchOnce === undefined ? true : this.field.props.fetchOnce;
|
|
41
|
-
if (this.field?.props?.apiFunction &&
|
|
42
|
-
typeof this.field?.props?.apiFunction === 'function') {
|
|
43
|
-
if (fetchOnce) {
|
|
44
|
-
this.field?.props
|
|
45
|
-
?.apiFunction('')
|
|
46
|
-
.pipe(catchError((error) => {
|
|
47
|
-
console.error('API Error:', error);
|
|
48
|
-
return of([]);
|
|
49
|
-
}))
|
|
50
|
-
.subscribe((results) => {
|
|
51
|
-
this.optionsList = results || [];
|
|
52
|
-
this.filteredOptions$ = this.formControl.valueChanges.pipe(startWith(''), debounceTime(debounce), distinctUntilChanged(), map((searchTerm) => this.filterOptions(searchTerm, this.optionsList)));
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
this.filteredOptions$ = this.formControl.valueChanges.pipe(startWith(''), debounceTime(debounce), distinctUntilChanged(), switchMap((searchTerm) => {
|
|
57
|
-
return this.field?.props?.apiFunction(searchTerm).pipe(map((results) => {
|
|
58
|
-
this.optionsList = results || [];
|
|
59
|
-
return results || [];
|
|
60
|
-
}), catchError((error) => {
|
|
61
|
-
console.error('API Error:', error);
|
|
62
|
-
return of([]);
|
|
63
|
-
}));
|
|
64
|
-
}));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
const options$ = this.field?.props?.options instanceof Observable
|
|
69
|
-
? this.field?.props?.options.pipe(shareReplay(1))
|
|
70
|
-
: of(this.field?.props?.options || []);
|
|
71
|
-
options$.pipe(take(1)).subscribe((opts) => {
|
|
72
|
-
this.optionsList = opts || [];
|
|
73
|
-
if (this.formControl.value != null) {
|
|
74
|
-
this.formControl.setValue(this.formControl.value);
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
options$.subscribe((opts) => (this.optionsList = opts || []));
|
|
78
|
-
this.filteredOptions$ = combineLatest([
|
|
79
|
-
options$,
|
|
80
|
-
this.formControl.valueChanges.pipe(startWith(''), debounceTime(debounce)),
|
|
81
|
-
]).pipe(map(([options, value]) => this.filterOptions(value, options)));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
onBlur() {
|
|
85
|
-
const value = this.formControl.value;
|
|
86
|
-
if (!value) {
|
|
87
|
-
this.formControl.setValue(null);
|
|
88
|
-
this.formControl.markAsTouched();
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
if (typeof value === 'string') {
|
|
92
|
-
const match = this.optionsList.find((opt) => {
|
|
93
|
-
const label = opt.label?.toString().toLowerCase();
|
|
94
|
-
const val = opt.value?.toString().toLowerCase();
|
|
95
|
-
const input = value.toLowerCase();
|
|
96
|
-
return label === input || val === input;
|
|
97
|
-
});
|
|
98
|
-
if (match) {
|
|
99
|
-
this.formControl.setValue(match.value ?? match);
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
this.formControl.setValue(null);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
this.formControl.markAsTouched();
|
|
106
|
-
}
|
|
107
|
-
filterOptions(value, options) {
|
|
108
|
-
if (!options) {
|
|
109
|
-
return [];
|
|
110
|
-
}
|
|
111
|
-
if (!value) {
|
|
112
|
-
return options.slice();
|
|
113
|
-
}
|
|
114
|
-
const filterValue = String(value).toLowerCase();
|
|
115
|
-
return options.filter((opt) => {
|
|
116
|
-
const label = opt.label != null ? String(opt.label) : '';
|
|
117
|
-
const valStr = opt.value != null ? String(opt.value) : '';
|
|
118
|
-
return (label.toLowerCase().includes(filterValue) ||
|
|
119
|
-
valStr.toLowerCase().includes(filterValue));
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
clearSearchedInput() {
|
|
123
|
-
this.formControl.setValue('');
|
|
124
|
-
}
|
|
125
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlySelectAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
126
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormlySelectAutocompleteComponent, isStandalone: true, selector: "mu-select-autocomplete", usesInheritance: true, ngImport: i0, template: `
|
|
127
|
-
<mat-form-field
|
|
128
|
-
class="w-full"
|
|
129
|
-
[appearance]="field?.props?.appearance || 'outline'"
|
|
130
|
-
>
|
|
131
|
-
<mat-label *ngIf="!field?.props?.['dontShowLabel']">{{
|
|
132
|
-
field?.props?.label
|
|
133
|
-
}}</mat-label>
|
|
134
|
-
<input
|
|
135
|
-
class="inputField"
|
|
136
|
-
matInput
|
|
137
|
-
[formControl]="formControl"
|
|
138
|
-
[formlyAttributes]="field"
|
|
139
|
-
[placeholder]="field?.props?.placeholder || field?.props?.label"
|
|
140
|
-
(blur)="onBlur()"
|
|
141
|
-
[matAutocomplete]="auto"
|
|
142
|
-
/>
|
|
143
|
-
<ng-container matSuffix>
|
|
144
|
-
<span
|
|
145
|
-
*ngIf="!field?.props?.readonly && !field?.props?.disabled"
|
|
146
|
-
class="cursor-pointer relative right-[20px] span-class"
|
|
147
|
-
(click)="clearSearchedInput()"
|
|
148
|
-
>
|
|
149
|
-
<mat-icon class="suffixClear">clear</mat-icon>
|
|
150
|
-
</span>
|
|
151
|
-
|
|
152
|
-
<div
|
|
153
|
-
class="absolute inset-y-0 right-1 flex items-center pointer-events-none"
|
|
154
|
-
>
|
|
155
|
-
<svg
|
|
156
|
-
class="w-4 h-4 text-gray-500"
|
|
157
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
158
|
-
fill="none"
|
|
159
|
-
viewBox="0 0 24 24"
|
|
160
|
-
stroke="currentColor"
|
|
161
|
-
>
|
|
162
|
-
<path
|
|
163
|
-
stroke-linecap="round"
|
|
164
|
-
stroke-linejoin="round"
|
|
165
|
-
stroke-width="2"
|
|
166
|
-
d="M19 9l-7 7-7-7"
|
|
167
|
-
/>
|
|
168
|
-
</svg>
|
|
169
|
-
</div>
|
|
170
|
-
</ng-container>
|
|
171
|
-
<mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn">
|
|
172
|
-
<mat-option
|
|
173
|
-
*ngFor="let option of filteredOptions$ | async"
|
|
174
|
-
[value]="option.value"
|
|
175
|
-
>
|
|
176
|
-
{{ option.label }}
|
|
177
|
-
</mat-option>
|
|
178
|
-
</mat-autocomplete>
|
|
179
|
-
<mat-error *ngIf="formControl.invalid && formControl.touched">
|
|
180
|
-
{{ field.validation?.messages?.['required'] }}
|
|
181
|
-
</mat-error>
|
|
182
|
-
</mat-form-field>
|
|
183
|
-
`, isInline: true, styles: [".suffixClear{height:17px;width:17px;font-size:17px}.span-class{border-radius:10px;height:16px;width:16px;display:flex}.inputField{width:calc(100% - 17px)}\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: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i3.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { 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: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i6.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: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
184
|
-
}
|
|
185
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlySelectAutocompleteComponent, decorators: [{
|
|
186
|
-
type: Component,
|
|
187
|
-
args: [{ selector: 'mu-select-autocomplete', standalone: true, template: `
|
|
188
|
-
<mat-form-field
|
|
189
|
-
class="w-full"
|
|
190
|
-
[appearance]="field?.props?.appearance || 'outline'"
|
|
191
|
-
>
|
|
192
|
-
<mat-label *ngIf="!field?.props?.['dontShowLabel']">{{
|
|
193
|
-
field?.props?.label
|
|
194
|
-
}}</mat-label>
|
|
195
|
-
<input
|
|
196
|
-
class="inputField"
|
|
197
|
-
matInput
|
|
198
|
-
[formControl]="formControl"
|
|
199
|
-
[formlyAttributes]="field"
|
|
200
|
-
[placeholder]="field?.props?.placeholder || field?.props?.label"
|
|
201
|
-
(blur)="onBlur()"
|
|
202
|
-
[matAutocomplete]="auto"
|
|
203
|
-
/>
|
|
204
|
-
<ng-container matSuffix>
|
|
205
|
-
<span
|
|
206
|
-
*ngIf="!field?.props?.readonly && !field?.props?.disabled"
|
|
207
|
-
class="cursor-pointer relative right-[20px] span-class"
|
|
208
|
-
(click)="clearSearchedInput()"
|
|
209
|
-
>
|
|
210
|
-
<mat-icon class="suffixClear">clear</mat-icon>
|
|
211
|
-
</span>
|
|
212
|
-
|
|
213
|
-
<div
|
|
214
|
-
class="absolute inset-y-0 right-1 flex items-center pointer-events-none"
|
|
215
|
-
>
|
|
216
|
-
<svg
|
|
217
|
-
class="w-4 h-4 text-gray-500"
|
|
218
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
219
|
-
fill="none"
|
|
220
|
-
viewBox="0 0 24 24"
|
|
221
|
-
stroke="currentColor"
|
|
222
|
-
>
|
|
223
|
-
<path
|
|
224
|
-
stroke-linecap="round"
|
|
225
|
-
stroke-linejoin="round"
|
|
226
|
-
stroke-width="2"
|
|
227
|
-
d="M19 9l-7 7-7-7"
|
|
228
|
-
/>
|
|
229
|
-
</svg>
|
|
230
|
-
</div>
|
|
231
|
-
</ng-container>
|
|
232
|
-
<mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn">
|
|
233
|
-
<mat-option
|
|
234
|
-
*ngFor="let option of filteredOptions$ | async"
|
|
235
|
-
[value]="option.value"
|
|
236
|
-
>
|
|
237
|
-
{{ option.label }}
|
|
238
|
-
</mat-option>
|
|
239
|
-
</mat-autocomplete>
|
|
240
|
-
<mat-error *ngIf="formControl.invalid && formControl.touched">
|
|
241
|
-
{{ field.validation?.messages?.['required'] }}
|
|
242
|
-
</mat-error>
|
|
243
|
-
</mat-form-field>
|
|
244
|
-
`, imports: [
|
|
245
|
-
CommonModule,
|
|
246
|
-
ReactiveFormsModule,
|
|
247
|
-
FormlyModule,
|
|
248
|
-
MatFormFieldModule,
|
|
249
|
-
MatInputModule,
|
|
250
|
-
MatAutocompleteModule,
|
|
251
|
-
MatIconModule,
|
|
252
|
-
], styles: [".suffixClear{height:17px;width:17px;font-size:17px}.span-class{border-radius:10px;height:16px;width:16px;display:flex}.inputField{width:calc(100% - 17px)}\n"] }]
|
|
253
|
-
}] });
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWF1dG9jb21wbGV0ZS50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1saWIvc3JjL2xpYi90eXBlcy9zZWxlY3QtYXV0b2NvbXBsZXRlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFxQixZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEdBQ0wsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQXlGeEIsTUFBTSxPQUFPLGlDQUNYLFNBQVEsU0FBNEI7SUF4RnRDOztRQTRGWSxnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQXlFbEMsY0FBUyxHQUFHLENBQUMsS0FBVSxFQUFVLEVBQUU7WUFDakMsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZ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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlEVCxxT0FrQkMsWUFBWSxvVEFDWixtQkFBbUIseWtCQUNuQixZQUFZLHFKQUNaLGtCQUFrQix3Z0JBQ2xCLGNBQWMsMFdBQ2QscUJBQXFCLHcxQkFDckIsYUFBYTs7NEZBR0osaUNBQWlDO2tCQXZGN0MsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxZQUNOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5RFQsV0FpQlE7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsYUFBYTtxQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXUtc2VsZWN0LWF1dG9jb21wbGV0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICBbYXBwZWFyYW5jZV09XCJmaWVsZD8ucHJvcHM/LmFwcGVhcmFuY2UgfHwgJ291dGxpbmUnXCJcbiAgICA+XG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwiIWZpZWxkPy5wcm9wcz8uWydkb250U2hvd0xhYmVsJ11cIj57e1xuICAgICAgICBmaWVsZD8ucHJvcHM/LmxhYmVsXG4gICAgICB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiaW5wdXRGaWVsZFwiXG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkPy5wcm9wcz8ucGxhY2Vob2xkZXIgfHwgZmllbGQ/LnByb3BzPy5sYWJlbFwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgIC8+XG4gICAgICA8bmctY29udGFpbmVyIG1hdFN1ZmZpeD5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cIiFmaWVsZD8ucHJvcHM/LnJlYWRvbmx5ICYmICFmaWVsZD8ucHJvcHM/LmRpc2FibGVkXCJcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHJlbGF0aXZlIHJpZ2h0LVsyMHB4XSBzcGFuLWNsYXNzXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2hlZElucHV0KClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3VmZml4Q2xlYXJcIj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC15LTAgcmlnaHQtMSBmbGV4IGl0ZW1zLWNlbnRlciBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIGNsYXNzPVwidy00IGgtNCB0ZXh0LWdyYXktNTAwXCJcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICBkPVwiTTE5IDlsLTcgNy03LTdcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiPlxuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaW52YWxpZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkXCI+XG4gICAgICAgIHt7IGZpZWxkLnZhbGlkYXRpb24/Lm1lc3NhZ2VzPy5bJ3JlcXVpcmVkJ10gfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIGAsXG4gIHN0eWxlczogYFxuICAgIC5zdWZmaXhDbGVhciB7XG4gICAgICBoZWlnaHQ6IDE3cHg7XG4gICAgICB3aWR0aDogMTdweDtcbiAgICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICB9XG4gICAgLnNwYW4tY2xhc3Mge1xuICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIGhlaWdodDogMTZweDtcbiAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG4gICAgLmlucHV0RmllbGR7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gMTdweCk7XG4gICAgfVxuICBgLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5U2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGV4dGVuZHMgRmllbGRUeXBlPEZvcm1seUZpZWxkQ29uZmlnPlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBwdWJsaWMgZmlsdGVyZWRPcHRpb25zJDogT2JzZXJ2YWJsZTxhbnk+O1xuICBwcm90ZWN0ZWQgb3B0aW9uc0xpc3Q6IGFueVtdID0gW107XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgZGVib3VuY2UgPSB0aGlzLmZpZWxkPy5wcm9wcz8uZGVib3VuY2VUaW1lIHx8IDMwMDtcbiAgICBjb25zdCBmZXRjaE9uY2UgPSB0aGlzLmZpZWxkPy5wcm9wcz8uZmV0Y2hPbmNlID09PSB1bmRlZmluZWQgPyB0cnVlIDogdGhpcy5maWVsZC5wcm9wcy5mZXRjaE9uY2U7XG4gICAgaWYgKFxuICAgICAgdGhpcy5maWVsZD8ucHJvcHM/LmFwaUZ1bmN0aW9uICYmXG4gICAgICB0eXBlb2YgdGhpcy5maWVsZD8ucHJvcHM/LmFwaUZ1bmN0aW9uID09PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICBpZiAoZmV0Y2hPbmNlKSB7XG4gICAgICAgIHRoaXMuZmllbGQ/LnByb3BzXG4gICAgICAgICAgPy5hcGlGdW5jdGlvbignJylcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FQSSBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHRzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zTGlzdCA9IHJlc3VsdHMgfHwgW107XG5cbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zJCA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZShkZWJvdW5jZSksXG4gICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgIG1hcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucyhzZWFyY2hUZXJtLCB0aGlzLm9wdGlvbnNMaXN0KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICAgIGRlYm91bmNlVGltZShkZWJvdW5jZSksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRlcm06IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQ/LnByb3BzPy5hcGlGdW5jdGlvbihzZWFyY2hUZXJtKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zTGlzdCA9IHJlc3VsdHMgfHwgW107XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMgfHwgW107XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FQSSBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3B0aW9ucyQgPVxuICAgICAgICB0aGlzLmZpZWxkPy5wcm9wcz8ub3B0aW9ucyBpbnN0YW5jZW9mIE9ic2VydmFibGVcbiAgICAgICAgICA/IHRoaXMuZmllbGQ/LnByb3BzPy5vcHRpb25zLnBpcGUoc2hhcmVSZXBsYXkoMSkpXG4gICAgICAgICAgOiBvZih0aGlzLmZpZWxkPy5wcm9wcz8ub3B0aW9ucyB8fCBbXSk7XG5cbiAgICAgIG9wdGlvbnMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChvcHRzKSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9uc0xpc3QgPSBvcHRzIHx8IFtdO1xuICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvcHRpb25zJC5zdWJzY3JpYmUoKG9wdHMpID0+ICh0aGlzLm9wdGlvbnNMaXN0ID0gb3B0cyB8fCBbXSkpO1xuXG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgb3B0aW9ucyQsXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoZGVib3VuY2UpXG4gICAgICAgICksXG4gICAgICBdKS5waXBlKG1hcCgoW29wdGlvbnMsIHZhbHVlXSkgPT4gdGhpcy5maWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKSkpO1xuICAgIH1cbiAgfVxuXG4gIGRpc3BsYXlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaCA9IHRoaXMub3B0aW9uc0xpc3QuZmluZCgob3B0KSA9PiB7XG4gICAgICBjb25zdCBvcHRWYWx1ZSA9IG9wdC52YWx1ZSAhPSBudWxsID8gb3B0LnZhbHVlIDogb3B0O1xuICAgICAgcmV0dXJuIG9wdFZhbHVlID09PSB2YWx1ZTtcbiAgICB9KTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoLmxhYmVsICE9IG51bGwgPyBtYXRjaC5sYWJlbCA6IFN0cmluZyhtYXRjaC52YWx1ZSk7XG4gIH07XG5cbiAgb25CbHVyKCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHRoaXMub3B0aW9uc0xpc3QuZmluZCgob3B0KSA9PiB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gb3B0LmxhYmVsPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHZhbCA9IG9wdC52YWx1ZT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBpbnB1dCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBsYWJlbCA9PT0gaW5wdXQgfHwgdmFsID09PSBpbnB1dDtcbiAgICAgIH0pO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobWF0Y2gudmFsdWUgPz8gbWF0Y2gpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlck9wdGlvbnModmFsdWU6IGFueSwgb3B0aW9uczogYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnNsaWNlKCk7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBvcHRpb25zLmZpbHRlcigob3B0KSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IG9wdC5sYWJlbCAhPSBudWxsID8gU3RyaW5nKG9wdC5sYWJlbCkgOiAnJztcbiAgICAgIGNvbnN0IHZhbFN0ciA9IG9wdC52YWx1ZSAhPSBudWxsID8gU3RyaW5nKG9wdC52YWx1ZSkgOiAnJztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpIHx8XG4gICAgICAgIHZhbFN0ci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFyU2VhcmNoZWRJbnB1dCgpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgfVxufVxuIl19
|