@muraai/mnl-form 0.0.1-alpha-db495b1 → 0.0.1-alpha-11e96eb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/fesm2022/muraai-mnl-form.mjs +150 -143
  2. package/fesm2022/muraai-mnl-form.mjs.map +1 -1
  3. package/lib/types/upload-file.d.ts +1 -1
  4. package/lib/workflow-status/ workflow-status.module.d.ts +8 -8
  5. package/lib/workflow-status/workflow-status.component.d.ts +1 -1
  6. package/package.json +4 -5
  7. package/esm2022/lib/confirmation-dialog/confirmation-dialog.component.mjs +0 -34
  8. package/esm2022/lib/mnl-form/mnl-form-standalone.module.mjs +0 -155
  9. package/esm2022/lib/mnl-form/mnl-form.component.mjs +0 -199
  10. package/esm2022/lib/models/custom-form-field.model.mjs +0 -2
  11. package/esm2022/lib/models/workflow-status.model.mjs +0 -2
  12. package/esm2022/lib/services/graphql.service.mjs +0 -30
  13. package/esm2022/lib/services/scoring.service.mjs +0 -103
  14. package/esm2022/lib/types/action-button-renderer.component.mjs +0 -59
  15. package/esm2022/lib/types/autocomplete-type.component.mjs +0 -68
  16. package/esm2022/lib/types/button.type.mjs +0 -72
  17. package/esm2022/lib/types/comments.type.mjs +0 -102
  18. package/esm2022/lib/types/country-code-input.type.mjs +0 -181
  19. package/esm2022/lib/types/custom-date.type.mjs +0 -20
  20. package/esm2022/lib/types/custom-input.component.mjs +0 -62
  21. package/esm2022/lib/types/date-format.type.mjs +0 -196
  22. package/esm2022/lib/types/expansion-panel.types.mjs +0 -85
  23. package/esm2022/lib/types/formly-field-panel.type.mjs +0 -70
  24. package/esm2022/lib/types/grid-actionable.type.mjs +0 -197
  25. package/esm2022/lib/types/grid-formly-cell.component.mjs +0 -42
  26. package/esm2022/lib/types/grid.type.mjs +0 -125
  27. package/esm2022/lib/types/input.type.mjs +0 -43
  28. package/esm2022/lib/types/mu-helper-text.type.mjs +0 -331
  29. package/esm2022/lib/types/multi-select-autocomplete.mjs +0 -139
  30. package/esm2022/lib/types/multi-select-checkbox.component.mjs +0 -247
  31. package/esm2022/lib/types/radio.type.mjs +0 -71
  32. package/esm2022/lib/types/scrollable-tabs.types.mjs +0 -220
  33. package/esm2022/lib/types/select-api-auto-complete.component.mjs +0 -111
  34. package/esm2022/lib/types/select-autocomplete-redefined.component.mjs +0 -142
  35. package/esm2022/lib/types/select-autocomplete.type.mjs +0 -254
  36. package/esm2022/lib/types/stepper.type.mjs +0 -268
  37. package/esm2022/lib/types/table.types.mjs +0 -79
  38. package/esm2022/lib/types/tabs.types.mjs +0 -293
  39. package/esm2022/lib/types/tabular-form-dialog.component.mjs +0 -331
  40. package/esm2022/lib/types/tabular-form.type.mjs +0 -641
  41. package/esm2022/lib/types/upload-file.mjs +0 -524
  42. package/esm2022/lib/types/view-file-dialog.component.mjs +0 -90
  43. package/esm2022/lib/utils/formly.utils.mjs +0 -105
  44. package/esm2022/lib/validators/custom-email-validator.mjs +0 -18
  45. package/esm2022/lib/validators/ein-validators.mjs +0 -11
  46. package/esm2022/lib/validators/gst-validator.mjs +0 -11
  47. package/esm2022/lib/validators/normal-email-validator.mjs +0 -17
  48. package/esm2022/lib/validators/npi-validator.mjs +0 -11
  49. package/esm2022/lib/validators/pan-validator.mjs +0 -11
  50. package/esm2022/lib/validators/phone-number-validator.mjs +0 -22
  51. package/esm2022/lib/validators/select-validator.mjs +0 -7
  52. package/esm2022/lib/validators/tinSsn-validator.mjs +0 -12
  53. package/esm2022/lib/workflow-status/ workflow-status.module.mjs +0 -52
  54. package/esm2022/lib/workflow-status/workflow-status.component.mjs +0 -70
  55. package/esm2022/lib/wrappers/form-field-description-wrapper.component.mjs +0 -44
  56. package/esm2022/lib/wrappers/form-field-wrapper.component.mjs +0 -34
  57. package/esm2022/lib/wrappers/formly-wrapper-with-old-value.component.mjs +0 -140
  58. package/esm2022/lib/wrappers/prefix-suffix-wrapper.component.mjs +0 -95
  59. package/esm2022/lib/wrappers/prefix-sufix-extension.component.mjs +0 -9
  60. package/esm2022/muraai-mnl-form.mjs +0 -5
  61. package/esm2022/public-api.mjs +0 -12
@@ -1,181 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component } from '@angular/core';
3
- import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
4
- import { MatAutocompleteModule } from '@angular/material/autocomplete';
5
- import { MatFormFieldModule } from '@angular/material/form-field';
6
- import { MatInputModule } from '@angular/material/input';
7
- import { MatTooltipModule } from '@angular/material/tooltip';
8
- import { FormlyModule } from '@ngx-formly/core';
9
- import { FieldType, FormlyMaterialModule } from '@ngx-formly/material';
10
- import { map, of, startWith } from 'rxjs';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/forms";
13
- import * as i2 from "@angular/common";
14
- import * as i3 from "@angular/material/form-field";
15
- import * as i4 from "@angular/material/input";
16
- import * as i5 from "@ngx-formly/core";
17
- import * as i6 from "@angular/material/autocomplete";
18
- import * as i7 from "@angular/material/core";
19
- import * as i8 from "@angular/material/tooltip";
20
- export class FormlyFieldCountryCodeComponent extends FieldType {
21
- constructor() {
22
- super(...arguments);
23
- this.isFocused = false;
24
- this.hasValue = false;
25
- this.hourCtrl = new FormControl('');
26
- this.hours = [];
27
- }
28
- get control() {
29
- return this.formControl;
30
- }
31
- ngOnInit() {
32
- this.loadCountryCodes();
33
- this.hasValue = (this.control.value !== '' && this.control.value !== undefined);
34
- }
35
- onFocus() {
36
- this.isFocused = true;
37
- this.hasValue = (this.control.value !== '' && this.control.value !== undefined);
38
- }
39
- onBlur() {
40
- this.isFocused = false;
41
- this.hasValue = (this.control.value !== '' && this.control.value !== undefined);
42
- }
43
- onInput() {
44
- this.hasValue = (this.control.value !== '' && this.control.value !== undefined);
45
- }
46
- _filter(options, value) {
47
- const filterValue = (value || '').toLowerCase();
48
- return options?.filter((option) => option.toLowerCase().includes(filterValue));
49
- }
50
- onCountryCodeChange() {
51
- if (this.field && this.field.props?.['countryCodeChange']) {
52
- this.field.props?.['countryCodeChange'](event, this.hourCtrl.value, this.field);
53
- }
54
- }
55
- async loadCountryCodes() {
56
- this.hours = await this.options.formState.getCountryCodesApi;
57
- this.filteredHours$ = this.hourCtrl.valueChanges.pipe(startWith(this.hourCtrl.value || ''), map((value) => this._filter(this.hours, value)));
58
- this.hourCtrl.setValue(this.field.model?.['countryCode']);
59
- if (!this.hourCtrl.value) {
60
- this.hourCtrl.setValue(this.to['countryCode'] || '+91');
61
- }
62
- }
63
- validateInput() {
64
- const options$ = Array.isArray(this.hours) ? of(this.hours) : this.hours || of([]);
65
- options$.subscribe((options) => {
66
- const isValidOption = options.some((option) => option.split('+')[1] === (this.hourCtrl.value?.includes('+') ? this.hourCtrl.value?.split('+')[1] : this.hourCtrl.value));
67
- if (!isValidOption) {
68
- this.hourCtrl.setValue('');
69
- }
70
- });
71
- }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldCountryCodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormlyFieldCountryCodeComponent, isStandalone: true, selector: "mu-country-code-phone", host: { classAttribute: "w-full grid" }, usesInheritance: true, ngImport: i0, template: `
74
- <div class="flex flex-nowrap items-center gap-3 w-full">
75
- <mat-form-field appearance="outline" [ngStyle]="{'width': to['codeWidth'] || '20%'}">
76
- <mat-label matTooltip="Country Code">Code</mat-label>
77
- <input
78
- type="text"
79
- matInput
80
- [readonly]="to.readonly || to.disabled || to['disableCountryCode']"
81
- [required]="to.required || false"
82
- [disabled]="to.disabled || to['disableCountryCode'] || false"
83
- [formControl]="hourCtrl"
84
- [matAutocomplete]="autoHour"
85
- (input)="onCountryCodeChange()"
86
- (blur)="validateInput()"
87
- />
88
- <mat-autocomplete #autoHour="matAutocomplete" (optionSelected)="onCountryCodeChange()">
89
- <mat-option
90
- *ngFor="let hour of filteredHours$ | async"
91
- [value]="hour"
92
- >
93
- {{ hour }}
94
- </mat-option>
95
- </mat-autocomplete>
96
- </mat-form-field>
97
- <mat-form-field appearance="outline" [ngStyle]="{'width': to['phoneNumberWidth'] || '75%'}">
98
- <mat-label>{{to.label}}</mat-label>
99
- <input
100
- fxFlex
101
- matInput
102
- [type]="to.type || 'number'"
103
- [required]="to.required || false"
104
- [formControl]="formControl"
105
- [formlyAttributes]="field"
106
- [placeholder]="to.placeholder ?? ''"
107
- [readonly]="to.readonly"
108
- [disabled]="to.disabled || false"
109
- (focus)="onFocus()"
110
- (blur)="onBlur()"
111
- (input)="onInput()"
112
- />
113
- </mat-form-field>
114
- </div>
115
- <mat-error *ngIf="formControl.invalid && formControl.touched">
116
- {{ field.validation?.messages?.['required'] || field.validation?.messages?.['phoneValidation']}}
117
- </mat-error>
118
- `, isInline: true, styles: [".vertical-line{display:inline-block;width:1px;height:18px;background-color:#000;margin-top:3px;margin-right:8px;vertical-align:middle}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { 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: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i5.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: FormlyMaterialModule }, { 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: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
119
- }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldCountryCodeComponent, decorators: [{
121
- type: Component,
122
- args: [{ selector: 'mu-country-code-phone', standalone: true, imports: [
123
- FormsModule,
124
- CommonModule,
125
- ReactiveFormsModule,
126
- MatFormFieldModule,
127
- MatInputModule,
128
- FormlyModule,
129
- FormlyMaterialModule,
130
- MatAutocompleteModule,
131
- MatTooltipModule
132
- ], host: {
133
- class: 'w-full grid'
134
- }, template: `
135
- <div class="flex flex-nowrap items-center gap-3 w-full">
136
- <mat-form-field appearance="outline" [ngStyle]="{'width': to['codeWidth'] || '20%'}">
137
- <mat-label matTooltip="Country Code">Code</mat-label>
138
- <input
139
- type="text"
140
- matInput
141
- [readonly]="to.readonly || to.disabled || to['disableCountryCode']"
142
- [required]="to.required || false"
143
- [disabled]="to.disabled || to['disableCountryCode'] || false"
144
- [formControl]="hourCtrl"
145
- [matAutocomplete]="autoHour"
146
- (input)="onCountryCodeChange()"
147
- (blur)="validateInput()"
148
- />
149
- <mat-autocomplete #autoHour="matAutocomplete" (optionSelected)="onCountryCodeChange()">
150
- <mat-option
151
- *ngFor="let hour of filteredHours$ | async"
152
- [value]="hour"
153
- >
154
- {{ hour }}
155
- </mat-option>
156
- </mat-autocomplete>
157
- </mat-form-field>
158
- <mat-form-field appearance="outline" [ngStyle]="{'width': to['phoneNumberWidth'] || '75%'}">
159
- <mat-label>{{to.label}}</mat-label>
160
- <input
161
- fxFlex
162
- matInput
163
- [type]="to.type || 'number'"
164
- [required]="to.required || false"
165
- [formControl]="formControl"
166
- [formlyAttributes]="field"
167
- [placeholder]="to.placeholder ?? ''"
168
- [readonly]="to.readonly"
169
- [disabled]="to.disabled || false"
170
- (focus)="onFocus()"
171
- (blur)="onBlur()"
172
- (input)="onInput()"
173
- />
174
- </mat-form-field>
175
- </div>
176
- <mat-error *ngIf="formControl.invalid && formControl.touched">
177
- {{ field.validation?.messages?.['required'] || field.validation?.messages?.['phoneValidation']}}
178
- </mat-error>
179
- `, styles: [".vertical-line{display:inline-block;width:1px;height:18px;background-color:#000;margin-top:3px;margin-right:8px;vertical-align:middle}\n"] }]
180
- }] });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1jb2RlLWlucHV0LnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Zvcm0vc3JjL2xpYi90eXBlcy9jb3VudHJ5LWNvZGUtaW5wdXQudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBNkV0RCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsU0FBMEI7SUEzRS9FOztRQTRFRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLFVBQUssR0FBYSxFQUFFLENBQUM7S0EyRHRCO0lBeERDLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQTBCLENBQUM7SUFDekMsQ0FBQztJ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QjtxQkFDakIsUUFDSzt3QkFDSixLQUFLLEVBQUUsYUFBYTtxQkFDckIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcsIEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtbHlNYXRlcmlhbE1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdS1jb3VudHJ5LWNvZGUtcGhvbmUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBGb3JtbHlNYXRlcmlhbE1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZVxuICBdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICd3LWZ1bGwgZ3JpZCdcbiAgfSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LW5vd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTMgdy1mdWxsXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiB0b1snY29kZVdpZHRoJ10gfHwgJzIwJSd9XCI+XG4gICAgICAgIDxtYXQtbGFiZWwgbWF0VG9vbHRpcD1cIkNvdW50cnkgQ29kZVwiPkNvZGU8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbcmVhZG9ubHldPVwidG8ucmVhZG9ubHkgfHwgdG8uZGlzYWJsZWQgfHwgdG9bJ2Rpc2FibGVDb3VudHJ5Q29kZSddXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0by5yZXF1aXJlZCB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidG8uZGlzYWJsZWQgfHwgdG9bJ2Rpc2FibGVDb3VudHJ5Q29kZSddIHx8IGZhbHNlXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJob3VyQ3RybFwiXG4gICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9Ib3VyXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbkNvdW50cnlDb2RlQ2hhbmdlKClcIlxuICAgICAgICAgICAgKGJsdXIpPVwidmFsaWRhdGVJbnB1dCgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvSG91cj1cIm1hdEF1dG9jb21wbGV0ZVwiIChvcHRpb25TZWxlY3RlZCk9XCJvbkNvdW50cnlDb2RlQ2hhbmdlKClcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBob3VyIG9mIGZpbHRlcmVkSG91cnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiaG91clwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGhvdXIgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogdG9bJ3Bob25lTnVtYmVyV2lkdGgnXSB8fCAnNzUlJ31cIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e3RvLmxhYmVsfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZnhGbGV4XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBbdHlwZV09XCJ0by50eXBlIHx8ICdudW1iZXInXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwidG8ucmVxdWlyZWQgfHwgZmFsc2VcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0by5wbGFjZWhvbGRlciA/PyAnJ1wiXG4gICAgICAgICAgW3JlYWRvbmx5XT1cInRvLnJlYWRvbmx5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwidG8uZGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZFwiPlxuICAgICAge3sgZmllbGQudmFsaWRhdGlvbj8ubWVzc2FnZXM/LlsncmVxdWlyZWQnXSB8fCBmaWVsZC52YWxpZGF0aW9uPy5tZXNzYWdlcz8uWydwaG9uZVZhbGlkYXRpb24nXX19XG4gICAgPC9tYXQtZXJyb3I+XG4gIGAsXG4gIHN0eWxlczogYFxuICAudmVydGljYWwtbGluZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gICAgbWFyZ2luLXRvcDogM3B4O1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGRDb3VudHJ5Q29kZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+IGltcGxlbWVudHMgT25Jbml0e1xuICBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgaGFzVmFsdWUgPSBmYWxzZTtcbiAgaG91ckN0cmwgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBob3Vyczogc3RyaW5nW10gPSBbXTtcbiAgZmlsdGVyZWRIb3VycyQhOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICBnZXQgY29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRDb3VudHJ5Q29kZXMoKTtcbiAgICB0aGlzLmhhc1ZhbHVlID0gKHRoaXMuY29udHJvbC52YWx1ZSAhPT0gJycgJiYgdGhpcy5jb250cm9sLnZhbHVlICE9PSB1bmRlZmluZWQpOyAgICBcbiAgfVxuICBvbkZvY3VzKCkge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLmhhc1ZhbHVlID0gKHRoaXMuY29udHJvbC52YWx1ZSAhPT0gJycgJiYgdGhpcy5jb250cm9sLnZhbHVlICE9PSB1bmRlZmluZWQpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5oYXNWYWx1ZSA9ICh0aGlzLmNvbnRyb2wudmFsdWUgIT09ICcnICYmIHRoaXMuY29udHJvbC52YWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIG9uSW5wdXQoKSB7XG4gICAgdGhpcy5oYXNWYWx1ZSA9ICh0aGlzLmNvbnRyb2wudmFsdWUgIT09ICcnICYmIHRoaXMuY29udHJvbC52YWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbHRlcihvcHRpb25zOiBzdHJpbmdbXSwgdmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9ICh2YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gb3B0aW9ucz8uZmlsdGVyKChvcHRpb24pID0+XG4gICAgICBvcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSlcbiAgICApO1xuICB9XG5cbiAgb25Db3VudHJ5Q29kZUNoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLnByb3BzPy5bJ2NvdW50cnlDb2RlQ2hhbmdlJ10pIHtcbiAgICAgIHRoaXMuZmllbGQucHJvcHM/LlsnY291bnRyeUNvZGVDaGFuZ2UnXShldmVudCwgdGhpcy5ob3VyQ3RybC52YWx1ZSwgdGhpcy5maWVsZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZENvdW50cnlDb2RlcygpIHtcbiAgICB0aGlzLmhvdXJzID0gYXdhaXQgdGhpcy5vcHRpb25zLmZvcm1TdGF0ZS5nZXRDb3VudHJ5Q29kZXNBcGk7XG4gICAgdGhpcy5maWx0ZXJlZEhvdXJzJCA9IHRoaXMuaG91ckN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5ob3VyQ3RybC52YWx1ZSB8fCAnJyksXG4gICAgICBtYXAoKHZhbHVlOiBhbnkpID0+IHRoaXMuX2ZpbHRlcih0aGlzLmhvdXJzLCB2YWx1ZSkpXG4gICAgKTtcbiAgICB0aGlzLmhvdXJDdHJsLnNldFZhbHVlKHRoaXMuZmllbGQubW9kZWw/LlsnY291bnRyeUNvZGUnXSk7XG4gICAgaWYoIXRoaXMuaG91ckN0cmwudmFsdWUpIHtcbiAgICAgIHRoaXMuaG91ckN0cmwuc2V0VmFsdWUodGhpcy50b1snY291bnRyeUNvZGUnXSB8fCAnKzkxJylcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUlucHV0KCkge1xuICAgICAgY29uc3Qgb3B0aW9ucyQgPSBBcnJheS5pc0FycmF5KHRoaXMuaG91cnMpID8gb2YodGhpcy5ob3VycykgOiB0aGlzLmhvdXJzIHx8IG9mKFtdKTtcbiAgICAgIG9wdGlvbnMkLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCBpc1ZhbGlkT3B0aW9uID0gb3B0aW9ucy5zb21lKChvcHRpb24pID0+IG9wdGlvbi5zcGxpdCgnKycpWzFdID09PSAodGhpcy5ob3VyQ3RybC52YWx1ZT8uaW5jbHVkZXMoJysnKSA/IHRoaXMuaG91ckN0cmwudmFsdWU/LnNwbGl0KCcrJylbMV0gOiB0aGlzLmhvdXJDdHJsLnZhbHVlKSk7XG4gICAgICAgIGlmICghaXNWYWxpZE9wdGlvbikge1xuICAgICAgICAgIHRoaXMuaG91ckN0cmwuc2V0VmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufSJdfQ==
@@ -1,20 +0,0 @@
1
- import { NativeDateAdapter } from '@angular/material/core';
2
- export class CustomDate extends NativeDateAdapter {
3
- parse(value) {
4
- if (typeof value === 'string' && value.trim()) {
5
- const [day, month, year] = value.split('-');
6
- const date = new Date(`${month} ${day}, ${year}`);
7
- return isNaN(date.getTime()) ? null : date;
8
- }
9
- return null;
10
- }
11
- format(date, displayFormat) {
12
- if (!date)
13
- return '';
14
- const day = date.getDate().toString().padStart(2, '0');
15
- const month = date.toLocaleString('en-US', { month: 'short' });
16
- const year = date.getFullYear();
17
- return `${day}-${month}-${year}`;
18
- }
19
- }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRhdGUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZm9ybS9zcmMvbGliL3R5cGVzL2N1c3RvbS1kYXRlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsTUFBTSxPQUFPLFVBQVcsU0FBUSxpQkFBaUI7SUFDdEMsS0FBSyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDOUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNRLE1BQU0sQ0FBQyxJQUFVLEVBQUUsYUFBcUI7UUFDL0MsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXRpdmVEYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuIFxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGUgZXh0ZW5kcyBOYXRpdmVEYXRlQWRhcHRlciB7XG4gIG92ZXJyaWRlIHBhcnNlKHZhbHVlOiBhbnkpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpKSB7XG4gICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSB2YWx1ZS5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGAke21vbnRofSAke2RheX0sICR7eWVhcn1gKTtcbiAgICAgIHJldHVybiBpc05hTihkYXRlLmdldFRpbWUoKSkgPyBudWxsIDogZGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgb3ZlcnJpZGUgZm9ybWF0KGRhdGU6IERhdGUsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1vbnRoOiAnc2hvcnQnIH0pO1xuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgcmV0dXJuIGAke2RheX0tJHttb250aH0tJHt5ZWFyfWA7XG4gIH1cbn0iXX0=
@@ -1,62 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component } from '@angular/core';
3
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
- import { FieldType, FormlyModule } from '@ngx-formly/core';
5
- import { FormlyMaterialModule } from '@ngx-formly/material';
6
- import { MatInputModule } from '@angular/material/input';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- import * as i2 from "@angular/material/input";
10
- import * as i3 from "@angular/forms";
11
- import * as i4 from "@ngx-formly/core";
12
- export class CustomInputComponent extends FieldType {
13
- get control() {
14
- return this.formControl;
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CustomInputComponent, isStandalone: true, selector: "mu-formly-field-custom-input", usesInheritance: true, ngImport: i0, template: `
18
- <input
19
- matInput
20
- *ngIf="to.type !== 'textarea'; else textarea"
21
- [type]="to.type || 'text'"
22
- [formControl]="control"
23
- [formlyAttributes]="field"
24
- class="form-control"
25
- />
26
- <ng-template #textarea>
27
- <textarea
28
- matInput
29
- [formControl]="control"
30
- [formlyAttributes]="field"
31
- class="form-control"
32
- ></textarea>
33
- </ng-template>
34
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyMaterialModule }] }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomInputComponent, decorators: [{
37
- type: Component,
38
- args: [{
39
- selector: 'mu-formly-field-custom-input',
40
- standalone: true,
41
- imports: [CommonModule, MatInputModule, FormsModule, FormlyModule, ReactiveFormsModule, FormlyMaterialModule],
42
- template: `
43
- <input
44
- matInput
45
- *ngIf="to.type !== 'textarea'; else textarea"
46
- [type]="to.type || 'text'"
47
- [formControl]="control"
48
- [formlyAttributes]="field"
49
- class="form-control"
50
- />
51
- <ng-template #textarea>
52
- <textarea
53
- matInput
54
- [formControl]="control"
55
- [formlyAttributes]="field"
56
- class="form-control"
57
- ></textarea>
58
- </ng-template>
59
- `,
60
- }]
61
- }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZm9ybS9zcmMvbGliL3R5cGVzL2N1c3RvbS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7QUF5QnpELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxTQUFTO0lBQ2pELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQTBCLENBQUM7SUFDekMsQ0FBQzsrR0FIVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwrR0FuQnJCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVCwyREFsQlMsWUFBWSxrSUFBRSxjQUFjLDBXQUFFLFdBQVcsc1pBQUUsWUFBWSxxSkFBRSxtQkFBbUIsaU5BQUUsb0JBQW9COzs0RkFvQmpHLG9CQUFvQjtrQkF2QmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQztvQkFDN0csUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5TWF0ZXJpYWxNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXUtZm9ybWx5LWZpZWxkLWN1c3RvbS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgRm9ybWx5TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtbHlNYXRlcmlhbE1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgKm5nSWY9XCJ0by50eXBlICE9PSAndGV4dGFyZWEnOyBlbHNlIHRleHRhcmVhXCJcbiAgICAgIFt0eXBlXT1cInRvLnR5cGUgfHwgJ3RleHQnXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAvPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dGFyZWE+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgID48L3RleHRhcmVhPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbUlucHV0Q29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlIHtcbiAgZ2V0IGNvbnRyb2woKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sO1xuICB9XG59XG4iXX0=
@@ -1,196 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component } from '@angular/core';
3
- import { FormControl, ReactiveFormsModule } from '@angular/forms';
4
- import { MatAutocompleteModule } from '@angular/material/autocomplete';
5
- import { MatFormFieldModule } from '@angular/material/form-field';
6
- import { MatInputModule } from '@angular/material/input';
7
- import { FieldType, FormlyModule } from '@ngx-formly/core';
8
- import { map, startWith } from 'rxjs';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/forms";
11
- import * as i2 from "@angular/material/form-field";
12
- import * as i3 from "@angular/material/input";
13
- import * as i4 from "@angular/common";
14
- import * as i5 from "@angular/material/autocomplete";
15
- import * as i6 from "@angular/material/core";
16
- export class FormlyFieldTimeComponent extends FieldType {
17
- constructor() {
18
- super(...arguments);
19
- this.hours = Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, '0'));
20
- this.minutes = Array.from({ length: 60 }, (_, i) => i.toString().padStart(2, '0'));
21
- this.hourCtrl = new FormControl('');
22
- this.minuteCtrl = new FormControl('');
23
- }
24
- get control() {
25
- return this.formControl;
26
- }
27
- ngOnInit() {
28
- const modelTime = this.formControl.value;
29
- if (modelTime && modelTime.includes(':')) {
30
- const [h, m] = modelTime.split(':');
31
- this.hourCtrl.setValue(h);
32
- this.minuteCtrl.setValue(m);
33
- }
34
- this.filteredHours$ = this.hourCtrl.valueChanges.pipe(startWith(this.hourCtrl.value || ''), map((value) => this._filter(this.hours, value)));
35
- this.filteredMinutes$ = this.minuteCtrl.valueChanges.pipe(startWith(this.minuteCtrl.value || ''), map((value) => this._filter(this.minutes, value)));
36
- this.hourCtrl.valueChanges.subscribe((value) => {
37
- if (!this.hours.includes(value)) {
38
- this.hourCtrl.setErrors({ invalidHour: true });
39
- }
40
- else {
41
- this.hourCtrl.setErrors(null);
42
- }
43
- this.updateModel();
44
- });
45
- this.minuteCtrl.valueChanges.subscribe((value) => {
46
- if (!this.minutes.includes(value)) {
47
- this.minuteCtrl.setErrors({ invalidMinute: true });
48
- }
49
- else {
50
- this.minuteCtrl.setErrors(null);
51
- }
52
- this.updateModel();
53
- });
54
- }
55
- updateModel() {
56
- const h = this.hourCtrl.value;
57
- const m = this.minuteCtrl.value;
58
- if (this.hours.includes(h) && this.minutes.includes(m)) {
59
- this.formControl.setValue(`${h}:${m}`);
60
- }
61
- else {
62
- this.formControl.setValue(null); // Prevent saving invalid input
63
- }
64
- }
65
- _filter(options, value) {
66
- const filterValue = (value || '').toLowerCase();
67
- return options.filter((option) => option.toLowerCase().includes(filterValue));
68
- }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldTimeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormlyFieldTimeComponent, isStandalone: true, selector: "mu-formly-field-time", usesInheritance: true, ngImport: i0, template: `
71
- <div class="flex flex-col gap-2">
72
- <div class="flex gap-4">
73
- <mat-form-field appearance="outline" class="w-25">
74
- <mat-label>Hour</mat-label>
75
- <input
76
- type="text"
77
- matInput
78
- [readonly]="to.readonly || to.disabled"
79
- [required]="to.required || false"
80
- [disabled]="to.disabled || false"
81
- [formControl]="hourCtrl"
82
- [matAutocomplete]="autoHour"
83
- />
84
- <mat-autocomplete #autoHour="matAutocomplete">
85
- <mat-option
86
- *ngFor="let hour of filteredHours$ | async"
87
- [value]="hour"
88
- >
89
- {{ hour }}
90
- </mat-option>
91
- </mat-autocomplete>
92
- <mat-error class="text-[12px]" *ngIf="formControl.invalid && formControl.touched">
93
- {{ field.validation?.messages?.['required'] || 'This field is required' }}
94
- </mat-error>
95
- <mat-hint>{{to.description || 'Time in 24 hour format'}}</mat-hint>
96
- </mat-form-field>
97
- <span> : </span>
98
- <mat-form-field appearance="outline" class="w-25">
99
- <mat-label>Minute</mat-label>
100
- <input
101
- type="text"
102
- matInput
103
- [readonly]="to.readonly || to.disabled"
104
- [required]="to.required || false"
105
- [disabled]="to.disabled || false"
106
- [formControl]="minuteCtrl"
107
- [matAutocomplete]="autoMinute"
108
- />
109
- <mat-autocomplete #autoMinute="matAutocomplete">
110
- <mat-option
111
- *ngFor="let minute of filteredMinutes$ | async"
112
- [value]="minute"
113
- >
114
- {{ minute }}
115
- </mat-option>
116
- </mat-autocomplete>
117
- <mat-error class="text-[12px]" *ngIf="formControl.invalid && formControl.touched">
118
- {{ field.validation?.messages?.['required'] || 'This field is required' }}
119
- </mat-error>
120
- </mat-form-field>
121
- </div>
122
-
123
- </div>
124
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { 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"] }] }); }
125
- }
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldTimeComponent, decorators: [{
127
- type: Component,
128
- args: [{
129
- selector: 'mu-formly-field-time',
130
- standalone: true,
131
- imports: [
132
- ReactiveFormsModule,
133
- MatFormFieldModule,
134
- MatInputModule,
135
- FormlyModule,
136
- CommonModule,
137
- MatAutocompleteModule,
138
- ],
139
- template: `
140
- <div class="flex flex-col gap-2">
141
- <div class="flex gap-4">
142
- <mat-form-field appearance="outline" class="w-25">
143
- <mat-label>Hour</mat-label>
144
- <input
145
- type="text"
146
- matInput
147
- [readonly]="to.readonly || to.disabled"
148
- [required]="to.required || false"
149
- [disabled]="to.disabled || false"
150
- [formControl]="hourCtrl"
151
- [matAutocomplete]="autoHour"
152
- />
153
- <mat-autocomplete #autoHour="matAutocomplete">
154
- <mat-option
155
- *ngFor="let hour of filteredHours$ | async"
156
- [value]="hour"
157
- >
158
- {{ hour }}
159
- </mat-option>
160
- </mat-autocomplete>
161
- <mat-error class="text-[12px]" *ngIf="formControl.invalid && formControl.touched">
162
- {{ field.validation?.messages?.['required'] || 'This field is required' }}
163
- </mat-error>
164
- <mat-hint>{{to.description || 'Time in 24 hour format'}}</mat-hint>
165
- </mat-form-field>
166
- <span> : </span>
167
- <mat-form-field appearance="outline" class="w-25">
168
- <mat-label>Minute</mat-label>
169
- <input
170
- type="text"
171
- matInput
172
- [readonly]="to.readonly || to.disabled"
173
- [required]="to.required || false"
174
- [disabled]="to.disabled || false"
175
- [formControl]="minuteCtrl"
176
- [matAutocomplete]="autoMinute"
177
- />
178
- <mat-autocomplete #autoMinute="matAutocomplete">
179
- <mat-option
180
- *ngFor="let minute of filteredMinutes$ | async"
181
- [value]="minute"
182
- >
183
- {{ minute }}
184
- </mat-option>
185
- </mat-autocomplete>
186
- <mat-error class="text-[12px]" *ngIf="formControl.invalid && formControl.touched">
187
- {{ field.validation?.messages?.['required'] || 'This field is required' }}
188
- </mat-error>
189
- </mat-form-field>
190
- </div>
191
-
192
- </div>
193
- `,
194
- }]
195
- }] });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZm9ybS9zcmMvbGliL3R5cGVzL2RhdGUtZm9ybWF0LnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQXFFbEQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFNBQVM7SUFuRXZEOztRQXdFRSxVQUFLLEdBQWEsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNwRCxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FDOUIsQ0FBQztRQUNGLFlBQU8sR0FBYSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ3RELENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcs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fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXUtZm9ybWx5LWZpZWxkLXRpbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00XCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy0yNVwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+SG91cjwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJ0by5yZWFkb25seSB8fCB0by5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwidG8ucmVxdWlyZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRvLmRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJob3VyQ3RybFwiXG4gICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9Ib3VyXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvSG91cj1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGhvdXIgb2YgZmlsdGVyZWRIb3VycyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJob3VyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaG91ciB9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwidGV4dC1bMTJweF1cIiAqbmdJZj1cImZvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZFwiPlxuICAgICAgICAgICAge3sgZmllbGQudmFsaWRhdGlvbj8ubWVzc2FnZXM/LlsncmVxdWlyZWQnXSB8fCAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcgfX1cbiAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8bWF0LWhpbnQ+e3t0by5kZXNjcmlwdGlvbiB8fCAnVGltZSBpbiAyNCBob3VyIGZvcm1hdCd9fTwvbWF0LWhpbnQ+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxzcGFuPiA6IDwvc3Bhbj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LTI1XCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD5NaW51dGU8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbcmVhZG9ubHldPVwidG8ucmVhZG9ubHkgfHwgdG8uZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRvLnJlcXVpcmVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0by5kaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibWludXRlQ3RybFwiXG4gICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9NaW51dGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG9NaW51dGU9XCJtYXRBdXRvY29tcGxldGVcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgZmlsdGVyZWRNaW51dGVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm1pbnV0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IG1pbnV0ZSB9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwidGV4dC1bMTJweF1cIiAqbmdJZj1cImZvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZFwiPlxuICAgICAgICAgICAge3sgZmllbGQudmFsaWRhdGlvbj8ubWVzc2FnZXM/LlsncmVxdWlyZWQnXSB8fCAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcgfX1cbiAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkVGltZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdldCBjb250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGhvdXJzOiBzdHJpbmdbXSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0sIChfLCBpKSA9PlxuICAgIGkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpXG4gICk7XG4gIG1pbnV0ZXM6IHN0cmluZ1tdID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+XG4gICAgaS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJylcbiAgKTtcblxuICBob3VyQ3RybCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIG1pbnV0ZUN0cmwgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIGZpbHRlcmVkSG91cnMkITogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIGZpbHRlcmVkTWludXRlcyQhOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBtb2RlbFRpbWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuICAgIGlmIChtb2RlbFRpbWUgJiYgbW9kZWxUaW1lLmluY2x1ZGVzKCc6JykpIHtcbiAgICAgIGNvbnN0IFtoLCBtXSA9IG1vZGVsVGltZS5zcGxpdCgnOicpO1xuICAgICAgdGhpcy5ob3VyQ3RybC5zZXRWYWx1ZShoKTtcbiAgICAgIHRoaXMubWludXRlQ3RybC5zZXRWYWx1ZShtKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcmVkSG91cnMkID0gdGhpcy5ob3VyQ3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmhvdXJDdHJsLnZhbHVlIHx8ICcnKSxcbiAgICAgIG1hcCgodmFsdWU6IGFueSkgPT4gdGhpcy5fZmlsdGVyKHRoaXMuaG91cnMsIHZhbHVlKSlcbiAgICApO1xuXG4gICAgdGhpcy5maWx0ZXJlZE1pbnV0ZXMkID0gdGhpcy5taW51dGVDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKHRoaXMubWludXRlQ3RybC52YWx1ZSB8fCAnJyksXG4gICAgICBtYXAoKHZhbHVlOiBhbnkpID0+IHRoaXMuX2ZpbHRlcih0aGlzLm1pbnV0ZXMsIHZhbHVlKSlcbiAgICApO1xuXG4gICAgdGhpcy5ob3VyQ3RybC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaG91cnMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIHRoaXMuaG91ckN0cmwuc2V0RXJyb3JzKHsgaW52YWxpZEhvdXI6IHRydWUgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhvdXJDdHJsLnNldEVycm9ycyhudWxsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcbiAgICB9KTtcblxuICAgIHRoaXMubWludXRlQ3RybC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWludXRlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5taW51dGVDdHJsLnNldEVycm9ycyh7IGludmFsaWRNaW51dGU6IHRydWUgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1pbnV0ZUN0cmwuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVNb2RlbCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNb2RlbCgpIHtcbiAgICBjb25zdCBoID0gdGhpcy5ob3VyQ3RybC52YWx1ZSBhcyBzdHJpbmc7XG4gICAgY29uc3QgbSA9IHRoaXMubWludXRlQ3RybC52YWx1ZSBhcyBzdHJpbmc7XG5cbiAgICBpZiAodGhpcy5ob3Vycy5pbmNsdWRlcyhoKSAmJiB0aGlzLm1pbnV0ZXMuaW5jbHVkZXMobSkpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoYCR7aH06JHttfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpOyAvLyBQcmV2ZW50IHNhdmluZyBpbnZhbGlkIGlucHV0XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyKG9wdGlvbnM6IHN0cmluZ1tdLCB2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gKHZhbHVlIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PlxuICAgICAgb3B0aW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,85 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, ViewEncapsulation } from '@angular/core';
3
- import { MatExpansionModule } from '@angular/material/expansion';
4
- import { MatFormFieldModule } from '@angular/material/form-field';
5
- import { MatIconModule } from '@angular/material/icon';
6
- import { FieldType, FormlyModule } from '@ngx-formly/core';
7
- import { FormlyMaterialModule } from '@ngx-formly/material';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/material/expansion";
10
- import * as i2 from "@ngx-formly/core";
11
- export class FormlyFieldExpansionPanelComponent extends FieldType {
12
- constructor() {
13
- super(...arguments);
14
- this.field = {};
15
- }
16
- get expanded() {
17
- const conditionKey = this.field?.props?.collapseConditionKey;
18
- const conditionValue = this.field?.props?.collapseConditionValue;
19
- if (conditionKey && conditionValue !== undefined) {
20
- const currentValue = this.formControl?.value?.[conditionKey];
21
- return currentValue !== conditionValue;
22
- }
23
- return this.field?.props?.expanded || false;
24
- }
25
- set expanded(value) {
26
- if (this.field?.props) {
27
- this.field.props.expanded = value;
28
- }
29
- }
30
- ngOnInit() {
31
- this.formControl.valueChanges.subscribe(() => {
32
- this.expanded = this.expanded;
33
- });
34
- }
35
- isValid(field) {
36
- if (field.key) {
37
- return field?.formControl?.valid || true;
38
- }
39
- return field.fieldGroup ? field.fieldGroup.every((fieldItem) => this.isValid(fieldItem)) : true;
40
- }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldExpansionPanelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FormlyFieldExpansionPanelComponent, isStandalone: true, selector: "mu-formly-field-expansion-panel", usesInheritance: true, ngImport: i0, template: `<mat-accordion class="example-headers-align" multi>
43
- <mat-expansion-panel [expanded]="field?.props?.expanded || false">
44
- <mat-expansion-panel-header [class]="[field?.props?.backgroundColor]">
45
- <mat-panel-title [class]="[field?.props?.color]"> {{field?.props?.label}} </mat-panel-title>
46
- <mat-panel-description [class]="[field?.props?.color]">
47
- {{field?.props?.description ?? ''}}
48
- </mat-panel-description>
49
- </mat-expansion-panel-header>
50
- @for(fieldItem of field?.fieldGroup; track fieldItem){
51
- <formly-field [field]="fieldItem"></formly-field>
52
- }
53
- </mat-expansion-panel>
54
- </mat-accordion>`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i1.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: FormlyMaterialModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
55
- }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldExpansionPanelComponent, decorators: [{
57
- type: Component,
58
- args: [{
59
- selector: 'mu-formly-field-expansion-panel',
60
- standalone: true,
61
- encapsulation: ViewEncapsulation.None,
62
- imports: [
63
- MatFormFieldModule,
64
- MatExpansionModule,
65
- MatIconModule,
66
- FormlyMaterialModule,
67
- FormlyModule,
68
- CommonModule
69
- ],
70
- template: `<mat-accordion class="example-headers-align" multi>
71
- <mat-expansion-panel [expanded]="field?.props?.expanded || false">
72
- <mat-expansion-panel-header [class]="[field?.props?.backgroundColor]">
73
- <mat-panel-title [class]="[field?.props?.color]"> {{field?.props?.label}} </mat-panel-title>
74
- <mat-panel-description [class]="[field?.props?.color]">
75
- {{field?.props?.description ?? ''}}
76
- </mat-panel-description>
77
- </mat-expansion-panel-header>
78
- @for(fieldItem of field?.fieldGroup; track fieldItem){
79
- <formly-field [field]="fieldItem"></formly-field>
80
- }
81
- </mat-expansion-panel>
82
- </mat-accordion>`
83
- }]
84
- }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mb3JtL3NyYy9saWIvdHlwZXMvZXhwYW5zaW9uLXBhbmVsLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFnRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQTZCNUQsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLFNBQVM7SUEzQmpFOztRQTRCYSxVQUFLLEdBQVEsRUFBRSxDQUFDO0tBK0IxQjtJQTdCQyxJQUFJLFFBQVE7UUFDVixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsQ0FBQztRQUM3RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxzQkFBc0IsQ0FBQztRQUNqRSxJQUFJLFlBQVksSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM3RCxPQUFPLFlBQVksS0FBSyxjQUFjLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBd0I7UUFDOUIsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztRQUMzQyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEcsQ0FBQzsrR0EvQlEsa0NBQWtDO21HQUFsQyxrQ0FBa0Msa0hBZmpDOzs7Ozs7Ozs7Ozs7cUJBWU8sMkRBbkJiLGtCQUFrQiw4QkFDbEIsa0JBQWtCLHd0QkFDbEIsYUFBYSw4QkFDYixvQkFBb0IsOEJBQ3BCLFlBQVksd0hBQ1osWUFBWTs7NEZBaUJQLGtDQUFrQztrQkEzQjlDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxPQUFPLEVBQUU7d0JBQ0wsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLFlBQVk7cUJBQ2Y7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7cUJBWU87aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRFeHBhbnNpb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZvcm1seUZpZWxkLCBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5RmllbGRQcm9wcywgRm9ybWx5Rm9ybSwgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlNYXRlcmlhbE1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtdS1mb3JtbHktZmllbGQtZXhwYW5zaW9uLXBhbmVsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgRm9ybWx5TWF0ZXJpYWxNb2R1bGUsXG4gICAgICAgIEZvcm1seU1vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZTogYDxtYXQtYWNjb3JkaW9uIGNsYXNzPVwiZXhhbXBsZS1oZWFkZXJzLWFsaWduXCIgbXVsdGk+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImZpZWxkPy5wcm9wcz8uZXhwYW5kZWQgfHwgZmFsc2VcIj5cbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbY2xhc3NdPVwiW2ZpZWxkPy5wcm9wcz8uYmFja2dyb3VuZENvbG9yXVwiPlxuICAgICAgICA8bWF0LXBhbmVsLXRpdGxlIFtjbGFzc109XCJbZmllbGQ/LnByb3BzPy5jb2xvcl1cIj4ge3tmaWVsZD8ucHJvcHM/LmxhYmVsfX0gPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24gW2NsYXNzXT1cIltmaWVsZD8ucHJvcHM/LmNvbG9yXVwiPlxuICAgICAgICAgIHt7ZmllbGQ/LnByb3BzPy5kZXNjcmlwdGlvbiA/PyAnJ319XG4gICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIEBmb3IoZmllbGRJdGVtIG9mIGZpZWxkPy5maWVsZEdyb3VwOyB0cmFjayBmaWVsZEl0ZW0pe1xuICAgICAgICAgIDxmb3JtbHktZmllbGQgW2ZpZWxkXT1cImZpZWxkSXRlbVwiPjwvZm9ybWx5LWZpZWxkPlxuICAgICAgfVxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICA8L21hdC1hY2NvcmRpb24+YFxufSlcblxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkRXhwYW5zaW9uUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGUgaW1wbGVtZW50cyBPbkluaXR7XG4gICAgb3ZlcnJpZGUgZmllbGQgOiBhbnk9IHt9O1xuXG4gICAgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgY29uc3QgY29uZGl0aW9uS2V5ID0gdGhpcy5maWVsZD8ucHJvcHM/LmNvbGxhcHNlQ29uZGl0aW9uS2V5O1xuICAgICAgY29uc3QgY29uZGl0aW9uVmFsdWUgPSB0aGlzLmZpZWxkPy5wcm9wcz8uY29sbGFwc2VDb25kaXRpb25WYWx1ZTsgIFxuICAgICAgaWYgKGNvbmRpdGlvbktleSAmJiBjb25kaXRpb25WYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2w/LnZhbHVlPy5bY29uZGl0aW9uS2V5XTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZSAhPT0gY29uZGl0aW9uVmFsdWU7IFxuICAgICAgfSAgXG4gICAgICByZXR1cm4gdGhpcy5maWVsZD8ucHJvcHM/LmV4cGFuZGVkIHx8IGZhbHNlO1xuICAgIH1cbiAgIFxuICAgIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgaWYgKHRoaXMuZmllbGQ/LnByb3BzKSB7XG4gICAgICAgIHRoaXMuZmllbGQucHJvcHMuZXhwYW5kZWQgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHsgXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gdGhpcy5leHBhbmRlZDsgXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyk6IGJvb2xlYW4ge1xuICAgICAgaWYgKGZpZWxkLmtleSkge1xuICAgICAgICByZXR1cm4gZmllbGQ/LmZvcm1Db250cm9sPy52YWxpZCB8fCB0cnVlO1xuICAgICAgfVxuICBcbiAgICAgIHJldHVybiBmaWVsZC5maWVsZEdyb3VwID8gZmllbGQuZmllbGRHcm91cC5ldmVyeSgoZmllbGRJdGVtKSA9PiB0aGlzLmlzVmFsaWQoZmllbGRJdGVtKSkgOiB0cnVlO1xuICAgIH1cbiAgfSJdfQ==