@olafvv/ngx-dynamic-form 0.5.1 → 19.0.0

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 (46) hide show
  1. package/fesm2022/olafvv-ngx-dynamic-form.mjs +72 -57
  2. package/fesm2022/olafvv-ngx-dynamic-form.mjs.map +1 -1
  3. package/lib/controls/radio-group/dynamic-radio-group.component.d.ts +1 -1
  4. package/lib/controls/select/dynamic-select.component.d.ts +1 -1
  5. package/lib/models/constants/dynamic-relations.const.d.ts +5 -0
  6. package/package.json +5 -7
  7. package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +0 -56
  8. package/esm2022/lib/components/dynamic-form-field/dynamic-form-field.component.mjs +0 -153
  9. package/esm2022/lib/controls/button/dynamic-button.component.mjs +0 -21
  10. package/esm2022/lib/controls/button/dynamic-button.model.mjs +0 -11
  11. package/esm2022/lib/controls/button-toggles/dynamic-button-toggles.component.mjs +0 -28
  12. package/esm2022/lib/controls/button-toggles/dynamic-button-toggles.model.mjs +0 -11
  13. package/esm2022/lib/controls/checkbox/dynamic-checkbox.component.mjs +0 -26
  14. package/esm2022/lib/controls/checkbox/dynamic-checkbox.model.mjs +0 -21
  15. package/esm2022/lib/controls/controls.mjs +0 -10
  16. package/esm2022/lib/controls/datepicker/dynamic-datepicker.component.mjs +0 -31
  17. package/esm2022/lib/controls/datepicker/dynamic-datepicker.model.mjs +0 -13
  18. package/esm2022/lib/controls/input/dynamic-input.component.mjs +0 -54
  19. package/esm2022/lib/controls/input/dynamic-input.model.mjs +0 -22
  20. package/esm2022/lib/controls/radio-group/dynamic-radio-group.component.mjs +0 -27
  21. package/esm2022/lib/controls/radio-group/dynamic-radio-group.model.mjs +0 -11
  22. package/esm2022/lib/controls/readonly/dynamic-readonly.component.mjs +0 -18
  23. package/esm2022/lib/controls/readonly/dynamic-readonly.model.mjs +0 -9
  24. package/esm2022/lib/controls/select/dynamic-select.component.mjs +0 -33
  25. package/esm2022/lib/controls/select/dynamic-select.model.mjs +0 -11
  26. package/esm2022/lib/controls/textarea/dynamic-textarea.component.mjs +0 -46
  27. package/esm2022/lib/controls/textarea/dynamic-textarea.model.mjs +0 -16
  28. package/esm2022/lib/models/classes/dynamic-form-field-base.mjs +0 -31
  29. package/esm2022/lib/models/classes/dynamic-form-field-model.mjs +0 -34
  30. package/esm2022/lib/models/classes/dynamic-form-field-option-model.mjs +0 -48
  31. package/esm2022/lib/models/classes/dynamic-form-field-value-model.mjs +0 -24
  32. package/esm2022/lib/models/classes/dynamic-form-validators.mjs +0 -73
  33. package/esm2022/lib/models/constants/dynamic-relations.const.mjs +0 -34
  34. package/esm2022/lib/models/index.mjs +0 -12
  35. package/esm2022/lib/models/interfaces/dynamic-form-field-config.interface.mjs +0 -2
  36. package/esm2022/lib/models/interfaces/dynamic-form-field-event.interface.mjs +0 -2
  37. package/esm2022/lib/models/interfaces/dynamic-form-field-relation.interface.mjs +0 -15
  38. package/esm2022/lib/models/interfaces/dynamic-form-validator.interface.mjs +0 -2
  39. package/esm2022/lib/models/tokens/dynamic-form-field-map-fn.token.mjs +0 -3
  40. package/esm2022/lib/models/types/dynamic-form-config.type.mjs +0 -2
  41. package/esm2022/lib/models/types/related-form-controls.type.mjs +0 -2
  42. package/esm2022/lib/services/dynamic-form-relations.service.mjs +0 -108
  43. package/esm2022/lib/services/dynamic-form.service.mjs +0 -81
  44. package/esm2022/lib/services/dynamic-validations.service.mjs +0 -37
  45. package/esm2022/olafvv-ngx-dynamic-form.mjs +0 -5
  46. package/esm2022/public-api.mjs +0 -8
@@ -1,54 +0,0 @@
1
- import { NgIf } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MatFormFieldModule } from '@angular/material/form-field';
6
- import { MatIconModule } from '@angular/material/icon';
7
- import { MatInput, MatInputModule } from '@angular/material/input';
8
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
9
- import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-base';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/forms";
12
- import * as i2 from "@angular/material/form-field";
13
- import * as i3 from "@angular/material/input";
14
- import * as i4 from "@angular/material/button";
15
- import * as i5 from "@angular/material/icon";
16
- import * as i6 from "@angular/material/progress-spinner";
17
- export class DynamicInputComponent extends DynamicFormFieldBase {
18
- constructor() {
19
- super(...arguments);
20
- this.change = new EventEmitter();
21
- }
22
- get valueCount() {
23
- return this.input?.value ? this.input.value.length : 0;
24
- }
25
- get maxCountText() {
26
- return `${this.valueCount} / ${this.model.maxLength}`;
27
- }
28
- get showClear() {
29
- return !!this.control.value && !this.control.disabled && !this.model.showLoader;
30
- }
31
- onChange(event) {
32
- // Ignore the native HTML 5 change event
33
- if (event instanceof Event) {
34
- event.stopPropagation();
35
- }
36
- this.change.emit(event);
37
- }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DynamicInputComponent, isStandalone: true, selector: "dynamic-input", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [formGroup]=\"group\"\n [id]=\"id\"\n color=\"primary\">\n <mat-label *ngIf=\"model.label\">{{model.label}}</mat-label>\n\n <span matTextPrefix\n *ngIf=\"model.prefix\">{{model.prefix}}</span>\n\n <input matInput\n [type]=\"model.inputType\"\n [formControlName]=\"model.name\"\n [placeholder]=\"model.placeholder\"\n [attr.min]=\"model.min\"\n [attr.max]=\"model.max\"\n [attr.minLength]=\"model.minLength\"\n [attr.maxLength]=\"model.maxLength\"\n [pattern]=\"model.pattern\"\n [autocomplete]=\"model.autocomplete\"\n (change)=\"onChange($event)\" />\n\n <button matSuffix\n mat-icon-button\n *ngIf=\"showClear\"\n (click)=\"resetControl()\">\n <mat-icon fontIcon=\"clear\"></mat-icon>\n </button>\n\n <div matSuffix\n *ngIf=\"model.showLoader()\"\n class=\"loaderIcon\">\n <mat-spinner diameter=\"16\"\n color=\"primary\"></mat-spinner>\n </div>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n <mat-hint *ngIf=\"model.maxLength\"\n align=\"end\">{{maxCountText}}</mat-hint>\n\n @for(validator of model.validators; track validator.name) {\n <ng-container ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\n }\n</mat-form-field>", styles: ["mat-form-field{width:100%}mat-form-field .loaderIcon{padding:8px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
40
- }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicInputComponent, decorators: [{
42
- type: Component,
43
- args: [{ standalone: true, imports: [NgIf, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule, MatProgressSpinnerModule], selector: 'dynamic-input', template: "<mat-form-field [formGroup]=\"group\"\n [id]=\"id\"\n color=\"primary\">\n <mat-label *ngIf=\"model.label\">{{model.label}}</mat-label>\n\n <span matTextPrefix\n *ngIf=\"model.prefix\">{{model.prefix}}</span>\n\n <input matInput\n [type]=\"model.inputType\"\n [formControlName]=\"model.name\"\n [placeholder]=\"model.placeholder\"\n [attr.min]=\"model.min\"\n [attr.max]=\"model.max\"\n [attr.minLength]=\"model.minLength\"\n [attr.maxLength]=\"model.maxLength\"\n [pattern]=\"model.pattern\"\n [autocomplete]=\"model.autocomplete\"\n (change)=\"onChange($event)\" />\n\n <button matSuffix\n mat-icon-button\n *ngIf=\"showClear\"\n (click)=\"resetControl()\">\n <mat-icon fontIcon=\"clear\"></mat-icon>\n </button>\n\n <div matSuffix\n *ngIf=\"model.showLoader()\"\n class=\"loaderIcon\">\n <mat-spinner diameter=\"16\"\n color=\"primary\"></mat-spinner>\n </div>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n <mat-hint *ngIf=\"model.maxLength\"\n align=\"end\">{{maxCountText}}</mat-hint>\n\n @for(validator of model.validators; track validator.name) {\n <ng-container ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\n }\n</mat-form-field>", styles: ["mat-form-field{width:100%}mat-form-field .loaderIcon{padding:8px}\n"] }]
44
- }], propDecorators: { input: [{
45
- type: ViewChild,
46
- args: [MatInput, { static: true }]
47
- }], model: [{
48
- type: Input
49
- }], group: [{
50
- type: Input
51
- }], change: [{
52
- type: Output
53
- }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7Ozs7QUFXcEYsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQVAvRDs7UUFhWSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7S0FzQjlEO0lBcEJDLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDbEYsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFvQztRQUNsRCx3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUE4QixDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0EzQlUscUJBQXFCO21HQUFyQixxQkFBcUIsMkxBQ3JCLFFBQVEscUZDcEJyQiw2ekNBNkNpQiw2SEQvQkwsSUFBSSw0RkFBRSxtQkFBbUIsNC9CQUFFLGtCQUFrQixpdUJBQUUsY0FBYywwV0FBRSxlQUFlLDJJQUFFLGFBQWEsbUxBQUUsd0JBQXdCOzs0RkFLdEgscUJBQXFCO2tCQVBqQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxZQUN4SCxlQUFlOzhCQUtjLEtBQUs7c0JBQTNDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFNUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dCwgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLWZpZWxkLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEeW5hbWljSW5wdXQgfSBmcm9tICcuL2R5bmFtaWMtaW5wdXQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZHluYW1pYy1pbnB1dC5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0lucHV0Q29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZEJhc2Uge1xuICBAVmlld0NoaWxkKE1hdElucHV0LCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dCE6IE1hdElucHV0O1xuXG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY0lucHV0O1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1GaWVsZEV2ZW50PigpO1xuXG4gIGdldCB2YWx1ZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXQ/LnZhbHVlID8gdGhpcy5pbnB1dC52YWx1ZS5sZW5ndGggOiAwO1xuICB9XG5cbiAgZ2V0IG1heENvdW50VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnZhbHVlQ291bnR9IC8gJHt0aGlzLm1vZGVsLm1heExlbmd0aH1gO1xuICB9XG5cbiAgZ2V0IHNob3dDbGVhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbnRyb2wudmFsdWUgJiYgIXRoaXMuY29udHJvbC5kaXNhYmxlZCAmJiAhdGhpcy5tb2RlbC5zaG93TG9hZGVyO1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCB8IER5bmFtaWNGb3JtRmllbGRFdmVudCk6IHZvaWQge1xuICAgIC8vIElnbm9yZSB0aGUgbmF0aXZlIEhUTUwgNSBjaGFuZ2UgZXZlbnRcbiAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBFdmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2UuZW1pdChldmVudCBhcyBEeW5hbWljRm9ybUZpZWxkRXZlbnQpO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgW2Zvcm1Hcm91cF09XCJncm91cFwiXG4gIFtpZF09XCJpZFwiXG4gIGNvbG9yPVwicHJpbWFyeVwiPlxuICA8bWF0LWxhYmVsICpuZ0lmPVwibW9kZWwubGFiZWxcIj57e21vZGVsLmxhYmVsfX08L21hdC1sYWJlbD5cblxuICA8c3BhbiBtYXRUZXh0UHJlZml4XG4gICAgKm5nSWY9XCJtb2RlbC5wcmVmaXhcIj57e21vZGVsLnByZWZpeH19PC9zcGFuPlxuXG4gIDxpbnB1dCBtYXRJbnB1dFxuICAgIFt0eXBlXT1cIm1vZGVsLmlucHV0VHlwZVwiXG4gICAgW2Zvcm1Db250cm9sTmFtZV09XCJtb2RlbC5uYW1lXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwibW9kZWwucGxhY2Vob2xkZXJcIlxuICAgIFthdHRyLm1pbl09XCJtb2RlbC5taW5cIlxuICAgIFthdHRyLm1heF09XCJtb2RlbC5tYXhcIlxuICAgIFthdHRyLm1pbkxlbmd0aF09XCJtb2RlbC5taW5MZW5ndGhcIlxuICAgIFthdHRyLm1heExlbmd0aF09XCJtb2RlbC5tYXhMZW5ndGhcIlxuICAgIFtwYXR0ZXJuXT1cIm1vZGVsLnBhdHRlcm5cIlxuICAgIFthdXRvY29tcGxldGVdPVwibW9kZWwuYXV0b2NvbXBsZXRlXCJcbiAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiAvPlxuXG4gIDxidXR0b24gbWF0U3VmZml4XG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgKm5nSWY9XCJzaG93Q2xlYXJcIlxuICAgIChjbGljayk9XCJyZXNldENvbnRyb2woKVwiPlxuICAgIDxtYXQtaWNvbiBmb250SWNvbj1cImNsZWFyXCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPGRpdiBtYXRTdWZmaXhcbiAgICAqbmdJZj1cIm1vZGVsLnNob3dMb2FkZXIoKVwiXG4gICAgY2xhc3M9XCJsb2FkZXJJY29uXCI+XG4gICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMTZcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtc3Bpbm5lcj5cbiAgPC9kaXY+XG5cbiAgPG1hdC1oaW50ICpuZ0lmPVwibW9kZWwuaGludFwiXG4gICAgYWxpZ249XCJzdGFydFwiPnt7bW9kZWwuaGludH19PC9tYXQtaGludD5cblxuICA8bWF0LWhpbnQgKm5nSWY9XCJtb2RlbC5tYXhMZW5ndGhcIlxuICAgIGFsaWduPVwiZW5kXCI+e3ttYXhDb3VudFRleHR9fTwvbWF0LWhpbnQ+XG5cbiAgQGZvcih2YWxpZGF0b3Igb2YgbW9kZWwudmFsaWRhdG9yczsgdHJhY2sgdmFsaWRhdG9yLm5hbWUpIHtcbiAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJoYXNFcnJvcih2YWxpZGF0b3IubmFtZSlcIj57e3ZhbGlkYXRvci5tZXNzYWdlfX08L21hdC1lcnJvcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIH1cbjwvbWF0LWZvcm0tZmllbGQ+Il19
@@ -1,22 +0,0 @@
1
- import { signal } from '@angular/core';
2
- import { DynamicFormFieldValueModel } from '../../models/classes/dynamic-form-field-value-model';
3
- export const DYNAMIC_FORM_FIELD_INPUT = 'input';
4
- export class DynamicInput extends DynamicFormFieldValueModel {
5
- constructor(config) {
6
- super(config);
7
- this.type = DYNAMIC_FORM_FIELD_INPUT;
8
- this.inputType = config.inputType ?? 'text';
9
- this.placeholder = config.placeholder ?? config.label ?? '';
10
- this.max = config.max ?? null;
11
- this.min = config.min ?? null;
12
- this.maxLength = typeof config.maxLength === 'number' ? config.maxLength : null;
13
- this.minLength = typeof config.minLength === 'number' ? config.minLength : null;
14
- this.step = config.step ?? null;
15
- this.pattern = config.pattern ?? '';
16
- this.autocomplete = config.autocomplete ?? 'off';
17
- this.prefix = config.prefix ?? null;
18
- this.hideClearIcon = config.hideClearIcon ?? false;
19
- this.showLoader = config.showLoader ?? signal(false);
20
- }
21
- }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy9pbnB1dC9keW5hbWljLWlucHV0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBK0IsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxPQUFPLENBQUM7QUFvQmhELE1BQU0sT0FBTyxZQUFhLFNBQVEsMEJBQTZDO0lBZ0I3RSxZQUFZLE1BQTBCO1FBQ3BDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUhBLFNBQUksR0FBRyx3QkFBd0IsQ0FBQztRQUs5QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLE1BQU0sQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLE1BQU0sQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEYsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUM7UUFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZFZhbHVlQ29uZmlnLCBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC12YWx1ZS1tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fRklFTERfSU5QVVQgPSAnaW5wdXQnO1xuXG5leHBvcnQgdHlwZSBIdG1sSW5wdXRUeXBlID0gJ3RleHQnIHwgJ251bWJlcicgfCAndGVsJyB8ICdlbWFpbCcgfCAncGFzc3dvcmQnIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ2NvbG9yJztcbmV4cG9ydCB0eXBlIER5bmFtaWNJbnB1dFZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IG51bGw7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0lucHV0Q29uZmlnIGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZFZhbHVlQ29uZmlnPER5bmFtaWNJbnB1dFZhbHVlPiB7XG4gIGlucHV0VHlwZT86IEh0bWxJbnB1dFR5cGU7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBtYXg/OiBudW1iZXI7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIHN0ZXA/OiBudW1iZXI7XG4gIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHA7XG4gIGF1dG9jb21wbGV0ZT86ICdvbicgfCAnb2ZmJztcbiAgcHJlZml4Pzogc3RyaW5nO1xuICBoaWRlQ2xlYXJJY29uPzogYm9vbGVhbjtcbiAgc2hvd0xvYWRlcj86IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0lucHV0IGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWw8RHluYW1pY0lucHV0VmFsdWU+IHtcbiAgcHVibGljIGlucHV0VHlwZTogSHRtbElucHV0VHlwZTtcbiAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXg6IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBtaW46IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBtYXhMZW5ndGg6IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBtaW5MZW5ndGg6IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBzdGVwOiBudW1iZXIgfCBudWxsO1xuICBwdWJsaWMgcGF0dGVybjogc3RyaW5nIHwgUmVnRXhwO1xuICBwdWJsaWMgYXV0b2NvbXBsZXRlOiAnb24nIHwgJ29mZic7XG4gIHB1YmxpYyBwcmVmaXg6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBoaWRlQ2xlYXJJY29uOiBib29sZWFuO1xuICBwdWJsaWMgc2hvd0xvYWRlcjogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG5cbiAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSBEWU5BTUlDX0ZPUk1fRklFTERfSU5QVVQ7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBEeW5hbWljSW5wdXRDb25maWcpIHtcbiAgICBzdXBlcihjb25maWcpO1xuXG4gICAgdGhpcy5pbnB1dFR5cGUgPSBjb25maWcuaW5wdXRUeXBlID8/ICd0ZXh0JztcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gY29uZmlnLnBsYWNlaG9sZGVyID8/IGNvbmZpZy5sYWJlbCA/PyAnJztcbiAgICB0aGlzLm1heCA9IGNvbmZpZy5tYXggPz8gbnVsbDtcbiAgICB0aGlzLm1pbiA9IGNvbmZpZy5taW4gPz8gbnVsbDtcbiAgICB0aGlzLm1heExlbmd0aCA9IHR5cGVvZiBjb25maWcubWF4TGVuZ3RoID09PSAnbnVtYmVyJyA/IGNvbmZpZy5tYXhMZW5ndGggOiBudWxsO1xuICAgIHRoaXMubWluTGVuZ3RoID0gdHlwZW9mIGNvbmZpZy5taW5MZW5ndGggPT09ICdudW1iZXInID8gY29uZmlnLm1pbkxlbmd0aCA6IG51bGw7XG4gICAgdGhpcy5zdGVwID0gY29uZmlnLnN0ZXAgPz8gbnVsbDtcbiAgICB0aGlzLnBhdHRlcm4gPSBjb25maWcucGF0dGVybiA/PyAnJztcbiAgICB0aGlzLmF1dG9jb21wbGV0ZSA9IGNvbmZpZy5hdXRvY29tcGxldGUgPz8gJ29mZic7XG4gICAgdGhpcy5wcmVmaXggPSBjb25maWcucHJlZml4ID8/IG51bGw7XG4gICAgdGhpcy5oaWRlQ2xlYXJJY29uID0gY29uZmlnLmhpZGVDbGVhckljb24gPz8gZmFsc2U7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gY29uZmlnLnNob3dMb2FkZXIgPz8gc2lnbmFsKGZhbHNlKTtcbiAgfVxufVxuIl19
@@ -1,27 +0,0 @@
1
- import { AsyncPipe, NgClass, NgIf } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- import { MatRadioModule } from '@angular/material/radio';
5
- import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-base';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- import * as i2 from "@angular/material/radio";
9
- export class DymamicRadioGroupComponent extends DynamicFormFieldBase {
10
- constructor() {
11
- super(...arguments);
12
- this.change = new EventEmitter();
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DymamicRadioGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DymamicRadioGroupComponent, isStandalone: true, selector: "dynamic-radio-group", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, usesInheritance: true, ngImport: i0, template: "<div class=\"dynamic-radio-group-wrapper\"\n [formGroup]=\"group\">\n <label *ngIf=\"model.label\">{{model.label}}</label>\n <mat-radio-group [formControlName]=\"model.name\"\n class=\"radio-group\"\n [ngClass]=\"{'inline': model.inline}\"\n (change)=\"onChange($event)\">\n @for(option of model.options$ | async; track option.value) {\n <mat-radio-button [value]=\"option.value\"\n [labelPosition]=\"model.labelPosition\">\n {{option.label}}\n </mat-radio-button>\n }\n </mat-radio-group>\n</div>", styles: [".dynamic-radio-group-wrapper label{display:block;font-size:var(--mdc-typography-body2-font-size, 14px);margin-bottom:8px}.dynamic-radio-group-wrapper .radio-group:not(.inline){display:flex;flex-direction:column;align-items:flex-start}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i2.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i2.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DymamicRadioGroupComponent, decorators: [{
18
- type: Component,
19
- args: [{ standalone: true, imports: [NgIf, NgClass, ReactiveFormsModule, MatRadioModule, AsyncPipe], selector: 'dynamic-radio-group', template: "<div class=\"dynamic-radio-group-wrapper\"\n [formGroup]=\"group\">\n <label *ngIf=\"model.label\">{{model.label}}</label>\n <mat-radio-group [formControlName]=\"model.name\"\n class=\"radio-group\"\n [ngClass]=\"{'inline': model.inline}\"\n (change)=\"onChange($event)\">\n @for(option of model.options$ | async; track option.value) {\n <mat-radio-button [value]=\"option.value\"\n [labelPosition]=\"model.labelPosition\">\n {{option.label}}\n </mat-radio-button>\n }\n </mat-radio-group>\n</div>", styles: [".dynamic-radio-group-wrapper label{display:block;font-size:var(--mdc-typography-body2-font-size, 14px);margin-bottom:8px}.dynamic-radio-group-wrapper .radio-group:not(.inline){display:flex;flex-direction:column;align-items:flex-start}\n"] }]
20
- }], propDecorators: { model: [{
21
- type: Input
22
- }], group: [{
23
- type: Input
24
- }], change: [{
25
- type: Output
26
- }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yYWRpby1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvcmFkaW8tZ3JvdXAvZHluYW1pYy1yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvcmFkaW8tZ3JvdXAvZHluYW1pYy1yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQWtCLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7O0FBVXBGLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxvQkFBb0I7SUFQcEU7O1FBV1ksV0FBTSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0tBQ3ZEOytHQUxZLDBCQUEwQjttR0FBMUIsMEJBQTBCLGlMQ2R2QyxzaEJBY00sc1NETE0sSUFBSSw2RkFBRSxPQUFPLG1GQUFFLG1CQUFtQixtbEJBQUUsY0FBYyxnbEJBQUUsU0FBUzs7NEZBSzVELDBCQUEwQjtrQkFQdEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxTQUFTLENBQUMsWUFDOUQscUJBQXFCOzhCQUt0QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFJhZGlvQ2hhbmdlLCBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgRHluYW1pY1JhZGlvR3JvdXAgfSBmcm9tICcuL2R5bmFtaWMtcmFkaW8tZ3JvdXAubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE5nQ2xhc3MsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdFJhZGlvTW9kdWxlLCBBc3luY1BpcGVdLFxuICBzZWxlY3RvcjogJ2R5bmFtaWMtcmFkaW8tZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtcmFkaW8tZ3JvdXAuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEeW1hbWljUmFkaW9Hcm91cENvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRCYXNlIHtcbiAgQElucHV0KCkgbW9kZWwhOiBEeW5hbWljUmFkaW9Hcm91cDtcbiAgQElucHV0KCkgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1hdFJhZGlvQ2hhbmdlPigpO1xufVxuIiwiPGRpdiBjbGFzcz1cImR5bmFtaWMtcmFkaW8tZ3JvdXAtd3JhcHBlclwiXG4gIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgPGxhYmVsICpuZ0lmPVwibW9kZWwubGFiZWxcIj57e21vZGVsLmxhYmVsfX08L2xhYmVsPlxuICA8bWF0LXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbE5hbWVdPVwibW9kZWwubmFtZVwiXG4gICAgY2xhc3M9XCJyYWRpby1ncm91cFwiXG4gICAgW25nQ2xhc3NdPVwieydpbmxpbmUnOiBtb2RlbC5pbmxpbmV9XCJcbiAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIj5cbiAgICBAZm9yKG9wdGlvbiBvZiBtb2RlbC5vcHRpb25zJCB8IGFzeW5jOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICA8bWF0LXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIm1vZGVsLmxhYmVsUG9zaXRpb25cIj5cbiAgICAgIHt7b3B0aW9uLmxhYmVsfX1cbiAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgfVxuICA8L21hdC1yYWRpby1ncm91cD5cbjwvZGl2PiJdfQ==
@@ -1,11 +0,0 @@
1
- import { DynamicFormFieldOptionModel } from '../../models/classes/dynamic-form-field-option-model';
2
- export const DYNAMIC_FORM_FIELD_RADIO_GROUP = 'radio-group';
3
- export class DynamicRadioGroup extends DynamicFormFieldOptionModel {
4
- constructor(config) {
5
- super(config);
6
- this.type = DYNAMIC_FORM_FIELD_RADIO_GROUP;
7
- this.labelPosition = config.labelPosition ?? 'after';
8
- this.inline = config.inline ?? false;
9
- }
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yYWRpby1ncm91cC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy9yYWRpby1ncm91cC9keW5hbWljLXJhZGlvLWdyb3VwLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsMkJBQTJCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVqSSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxhQUFhLENBQUM7QUFTNUQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLDJCQUFtRDtJQU14RixZQUFZLE1BQStCO1FBQ3pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUhBLFNBQUksR0FBVyw4QkFBOEIsQ0FBQztRQUs1RCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZE9wdGlvbkNvbmZpZywgRHluYW1pY0Zvcm1GaWVsZE9wdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLW9wdGlvbi1tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fRklFTERfUkFESU9fR1JPVVAgPSAncmFkaW8tZ3JvdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNSYWRpb0dyb3VwQ29uZmlnIGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZE9wdGlvbkNvbmZpZzxzdHJpbmcgfCBudW1iZXIgfCBudWxsPiB7XG4gIC8qKiBQbGFjZW1lbnQgb2YgdGhlIG9wdGlvbiBsYWJlbC4gRGVmYXVsdCBpcyAnYmVmb3JlJyAqL1xuICBsYWJlbFBvc2l0aW9uPzogJ2JlZm9yZScgfCAnYWZ0ZXInO1xuICAvKiogV2hldGhlciB0aGUgb3B0aW9ucyBhcmUgc2hvd24gaW5saW5lIChob3Jpem9udGFsbHkpLiBEZWZhdWx0IGlzIGZhbHNlICovXG4gIGlubGluZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljUmFkaW9Hcm91cCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRPcHRpb25Nb2RlbDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPiB7XG4gIHB1YmxpYyBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcic7XG4gIHB1YmxpYyBpbmxpbmU6IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IHN0cmluZyA9IERZTkFNSUNfRk9STV9GSUVMRF9SQURJT19HUk9VUDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IER5bmFtaWNSYWRpb0dyb3VwQ29uZmlnKSB7XG4gICAgc3VwZXIoY29uZmlnKTtcblxuICAgIHRoaXMubGFiZWxQb3NpdGlvbiA9IGNvbmZpZy5sYWJlbFBvc2l0aW9uID8/ICdhZnRlcic7XG4gICAgdGhpcy5pbmxpbmUgPSBjb25maWcuaW5saW5lID8/IGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { ReactiveFormsModule } from '@angular/forms';
3
- import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-base';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/forms";
6
- export class DynamicReadonlyComponent extends DynamicFormFieldBase {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicReadonlyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DynamicReadonlyComponent, isStandalone: true, selector: "dynamic-readonly", inputs: { model: "model", group: "group" }, usesInheritance: true, ngImport: i0, template: "<div class=\"dynamic-form-field-readonly\"\n [formGroup]=\"group\"\n [id]=\"id\">\n <div class=\"label\">{{model.label}}</div>\n <span>{{model.value}}</span>\n</div>", styles: [".dynamic-form-field-readonly{width:100%;margin:8px 0;color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.dynamic-form-field-readonly .label{font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);margin-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicReadonlyComponent, decorators: [{
11
- type: Component,
12
- args: [{ standalone: true, imports: [ReactiveFormsModule], selector: 'dynamic-readonly', template: "<div class=\"dynamic-form-field-readonly\"\n [formGroup]=\"group\"\n [id]=\"id\">\n <div class=\"label\">{{model.label}}</div>\n <span>{{model.value}}</span>\n</div>", styles: [".dynamic-form-field-readonly{width:100%;margin:8px 0;color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.dynamic-form-field-readonly .label{font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);margin-bottom:8px}\n"] }]
13
- }], propDecorators: { model: [{
14
- type: Input
15
- }], group: [{
16
- type: Input
17
- }] } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvcmVhZG9ubHkvZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7OztBQVVwRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsb0JBQW9COytHQUFyRCx3QkFBd0I7bUdBQXhCLHdCQUF3QiwrSUNackMsMktBS00sNFZERU0sbUJBQW1COzs0RkFLbEIsd0JBQXdCO2tCQVBwQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLG1CQUFtQixDQUFDLFlBQ3BCLGtCQUFrQjs4QkFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkQmFzZSB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlJztcbmltcG9ydCB7IER5bmFtaWNSZWFkb25seSB9IGZyb20gJy4vZHluYW1pYy1yZWFkb25seS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1yZWFkb25seScsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLXJlYWRvbmx5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy1yZWFkb25seS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNSZWFkb25seUNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRCYXNlIHtcbiAgQElucHV0KCkgbW9kZWwhOiBEeW5hbWljUmVhZG9ubHk7XG4gIEBJbnB1dCgpIGdyb3VwITogVW50eXBlZEZvcm1Hcm91cDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJkeW5hbWljLWZvcm0tZmllbGQtcmVhZG9ubHlcIlxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcbiAgW2lkXT1cImlkXCI+XG4gIDxkaXYgY2xhc3M9XCJsYWJlbFwiPnt7bW9kZWwubGFiZWx9fTwvZGl2PlxuICA8c3Bhbj57e21vZGVsLnZhbHVlfX08L3NwYW4+XG48L2Rpdj4iXX0=
@@ -1,9 +0,0 @@
1
- import { DynamicFormFieldValueModel } from '../../models/classes/dynamic-form-field-value-model';
2
- export const DYNAMIC_FORM_FIELD_READONLY = 'readonly';
3
- export class DynamicReadonly extends DynamicFormFieldValueModel {
4
- constructor(config) {
5
- super(config);
6
- this.type = DYNAMIC_FORM_FIELD_READONLY;
7
- }
8
- }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yZWFkb25seS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy9yZWFkb25seS9keW5hbWljLXJlYWRvbmx5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxVQUFVLENBQUM7QUFNdEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsMEJBQWdEO0lBR25GLFlBQVksTUFBNkI7UUFDdkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSEEsU0FBSSxHQUFHLDJCQUEyQixDQUFDO0lBSW5ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRWYWx1ZUNvbmZpZywgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtdmFsdWUtbW9kZWwnO1xuXG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0ZJRUxEX1JFQURPTkxZID0gJ3JlYWRvbmx5JztcbmV4cG9ydCB0eXBlIER5bmFtaWNSZWFkb25seVZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljUmVhZG9ubHlDb25maWdcbiAgZXh0ZW5kcyBPbWl0PER5bmFtaWNGb3JtRmllbGRWYWx1ZUNvbmZpZzxEeW5hbWljUmVhZG9ubHlWYWx1ZT4sICd2YWxpZGF0b3JzJyB8ICdyZWxhdGlvbnMnIHwgJ3VwZGF0ZU9uJz4ge31cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNSZWFkb25seSBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsPER5bmFtaWNSZWFkb25seVZhbHVlPiB7XG4gIHB1YmxpYyByZWFkb25seSB0eXBlID0gRFlOQU1JQ19GT1JNX0ZJRUxEX1JFQURPTkxZO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY1JlYWRvbmx5Q29uZmlnKSB7XG4gICAgc3VwZXIoY29uZmlnKTtcbiAgfVxufVxuIl19
@@ -1,33 +0,0 @@
1
- import { AsyncPipe, NgIf } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- import { MatOptionModule } from '@angular/material/core';
5
- import { MatFormFieldModule } from '@angular/material/form-field';
6
- import { MatInputModule } from '@angular/material/input';
7
- import { MatSelectModule } from '@angular/material/select';
8
- import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-base';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/material/form-field";
11
- import * as i2 from "@angular/forms";
12
- import * as i3 from "@angular/material/select";
13
- import * as i4 from "@angular/material/core";
14
- import * as i5 from "@angular/material/input";
15
- export class DynamicSelectComponent extends DynamicFormFieldBase {
16
- constructor() {
17
- super(...arguments);
18
- this.change = new EventEmitter();
19
- }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DynamicSelectComponent, isStandalone: true, selector: "dynamic-select", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [formGroup]=\"group\"\n [id]=\"id\"\n color=\"primary\">\n <mat-label>{{model.label}}</mat-label>\n\n <!-- Template for select without grouped options -->\n <ng-container *ngIf=\"model.options$ | async as options\">\n <ng-container *ngIf=\"!model.native else nativeSelect\">\n <mat-select [formControlName]=\"model.name\"\n [multiple]=\"model.multiple\"\n (selectionChange)=\"onChange($event)\">\n @for(option of options; track option.value) {\n <mat-option [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n }\n </mat-select>\n </ng-container>\n\n <ng-template #nativeSelect>\n <select matNativeControl\n (selectionchange)=\"onChange($event)\">\n @for(option of options; track option.value) {\n <option [value]=\"option.value\">\n {{option.label}}\n </option>\n }\n </select>\n </ng-template>\n </ng-container>\n\n <!-- Template for select with grouped options -->\n <ng-container *ngIf=\"model.groupedOptions$ | async as groupedOptions\">\n <ng-container *ngIf=\"!model.native else nativeSelectGrouped\">\n <mat-select [formControlName]=\"model.name\"\n (selectionChange)=\"onChange($event)\">\n @for(group of groupedOptions; track group.name) {\n <mat-optgroup [label]=\"group.name\">\n @for(option of group.options; track option.value) {\n <mat-option [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n }\n </mat-optgroup>\n }\n\n </mat-select>\n </ng-container>\n\n <ng-template #nativeSelectGrouped>\n <select matNativeControl\n (selectionchange)=\"onChange($event)\">\n @for(group of groupedOptions; track group.name) {=\n <optgroup [label]=\"group.name\">\n @for(option of group.options; track option.value) {\n <option [value]=\"option.value\">\n {{option.label}}\n </option>\n }\n </optgroup>\n }\n </select>\n </ng-template>\n </ng-container>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n @for(validator of model.validators; track validator.name) {\n <ng-container ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\n }\n</mat-form-field>", styles: ["mat-form-field{width:100%}mat-option{padding-top:8px;padding-bottom:8px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i4.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { 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"] }] }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicSelectComponent, decorators: [{
24
- type: Component,
25
- args: [{ standalone: true, imports: [NgIf, MatFormFieldModule, ReactiveFormsModule, MatSelectModule, MatOptionModule, AsyncPipe, MatInputModule], selector: 'dynamic-select', template: "<mat-form-field [formGroup]=\"group\"\n [id]=\"id\"\n color=\"primary\">\n <mat-label>{{model.label}}</mat-label>\n\n <!-- Template for select without grouped options -->\n <ng-container *ngIf=\"model.options$ | async as options\">\n <ng-container *ngIf=\"!model.native else nativeSelect\">\n <mat-select [formControlName]=\"model.name\"\n [multiple]=\"model.multiple\"\n (selectionChange)=\"onChange($event)\">\n @for(option of options; track option.value) {\n <mat-option [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n }\n </mat-select>\n </ng-container>\n\n <ng-template #nativeSelect>\n <select matNativeControl\n (selectionchange)=\"onChange($event)\">\n @for(option of options; track option.value) {\n <option [value]=\"option.value\">\n {{option.label}}\n </option>\n }\n </select>\n </ng-template>\n </ng-container>\n\n <!-- Template for select with grouped options -->\n <ng-container *ngIf=\"model.groupedOptions$ | async as groupedOptions\">\n <ng-container *ngIf=\"!model.native else nativeSelectGrouped\">\n <mat-select [formControlName]=\"model.name\"\n (selectionChange)=\"onChange($event)\">\n @for(group of groupedOptions; track group.name) {\n <mat-optgroup [label]=\"group.name\">\n @for(option of group.options; track option.value) {\n <mat-option [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n }\n </mat-optgroup>\n }\n\n </mat-select>\n </ng-container>\n\n <ng-template #nativeSelectGrouped>\n <select matNativeControl\n (selectionchange)=\"onChange($event)\">\n @for(group of groupedOptions; track group.name) {=\n <optgroup [label]=\"group.name\">\n @for(option of group.options; track option.value) {\n <option [value]=\"option.value\">\n {{option.label}}\n </option>\n }\n </optgroup>\n }\n </select>\n </ng-template>\n </ng-container>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n @for(validator of model.validators; track validator.name) {\n <ng-container ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\n }\n</mat-form-field>", styles: ["mat-form-field{width:100%}mat-option{padding-top:8px;padding-bottom:8px}\n"] }]
26
- }], propDecorators: { model: [{
27
- type: Input
28
- }], group: [{
29
- type: Input
30
- }], change: [{
31
- type: Output
32
- }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbnRyb2xzL3NlbGVjdC9keW5hbWljLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQW1CLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7O0FBVXBGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxvQkFBb0I7SUFQaEU7O1FBV1ksV0FBTSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO0tBQ3hEOytHQUxZLHNCQUFzQjttR0FBdEIsc0JBQXNCLDRLQ2pCbkMsKzRFQXlFaUIsb0lEN0RMLElBQUksNEZBQUUsa0JBQWtCLCtkQUFFLG1CQUFtQixneUJBQUUsZUFBZSxvekJBQUUsZUFBZSwwQkFBRSxTQUFTLDZDQUFFLGNBQWM7OzRGQUt6RyxzQkFBc0I7a0JBUGxDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxZQUMzRyxnQkFBZ0I7OEJBS2pCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlLCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEJhc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtYmFzZSc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0IH0gZnJvbSAnLi9keW5hbWljLXNlbGVjdC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRTZWxlY3RNb2R1bGUsIE1hdE9wdGlvbk1vZHVsZSwgQXN5bmNQaXBlLCBNYXRJbnB1dE1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLXNlbGVjdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkQmFzZSB7XG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY1NlbGVjdDxzdHJpbmc+O1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWF0U2VsZWN0Q2hhbmdlPigpO1xufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICBbaWRdPVwiaWRcIlxuICBjb2xvcj1cInByaW1hcnlcIj5cbiAgPG1hdC1sYWJlbD57e21vZGVsLmxhYmVsfX08L21hdC1sYWJlbD5cblxuICA8IS0tIFRlbXBsYXRlIGZvciBzZWxlY3Qgd2l0aG91dCBncm91cGVkIG9wdGlvbnMgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5vcHRpb25zJCB8IGFzeW5jIGFzIG9wdGlvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVsLm5hdGl2ZSBlbHNlIG5hdGl2ZVNlbGVjdFwiPlxuICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJtb2RlbC5uYW1lXCJcbiAgICAgICAgW211bHRpcGxlXT1cIm1vZGVsLm11bHRpcGxlXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIEBmb3Iob3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAge3tvcHRpb24ubGFiZWx9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbmF0aXZlU2VsZWN0PlxuICAgICAgPHNlbGVjdCBtYXROYXRpdmVDb250cm9sXG4gICAgICAgIChzZWxlY3Rpb25jaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICBAZm9yKG9wdGlvbiBvZiBvcHRpb25zOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAge3tvcHRpb24ubGFiZWx9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgfVxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBUZW1wbGF0ZSBmb3Igc2VsZWN0IHdpdGggZ3JvdXBlZCBvcHRpb25zIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuZ3JvdXBlZE9wdGlvbnMkIHwgYXN5bmMgYXMgZ3JvdXBlZE9wdGlvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVsLm5hdGl2ZSBlbHNlIG5hdGl2ZVNlbGVjdEdyb3VwZWRcIj5cbiAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwibW9kZWwubmFtZVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICBAZm9yKGdyb3VwIG9mIGdyb3VwZWRPcHRpb25zOyB0cmFjayBncm91cC5uYW1lKSB7XG4gICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cImdyb3VwLm5hbWVcIj5cbiAgICAgICAgICBAZm9yKG9wdGlvbiBvZiBncm91cC5vcHRpb25zOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICB7e29wdGlvbi5sYWJlbH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgIH1cblxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNuYXRpdmVTZWxlY3RHcm91cGVkPlxuICAgICAgPHNlbGVjdCBtYXROYXRpdmVDb250cm9sXG4gICAgICAgIChzZWxlY3Rpb25jaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICBAZm9yKGdyb3VwIG9mIGdyb3VwZWRPcHRpb25zOyB0cmFjayBncm91cC5uYW1lKSB7PVxuICAgICAgICA8b3B0Z3JvdXAgW2xhYmVsXT1cImdyb3VwLm5hbWVcIj5cbiAgICAgICAgICBAZm9yKG9wdGlvbiBvZiBncm91cC5vcHRpb25zOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgIHt7b3B0aW9uLmxhYmVsfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvb3B0Z3JvdXA+XG4gICAgICAgIH1cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxtYXQtaGludCAqbmdJZj1cIm1vZGVsLmhpbnRcIlxuICAgIGFsaWduPVwic3RhcnRcIj57e21vZGVsLmhpbnR9fTwvbWF0LWhpbnQ+XG5cbiAgQGZvcih2YWxpZGF0b3Igb2YgbW9kZWwudmFsaWRhdG9yczsgdHJhY2sgdmFsaWRhdG9yLm5hbWUpIHtcbiAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJoYXNFcnJvcih2YWxpZGF0b3IubmFtZSlcIj57e3ZhbGlkYXRvci5tZXNzYWdlfX08L21hdC1lcnJvcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIH1cbjwvbWF0LWZvcm0tZmllbGQ+Il19
@@ -1,11 +0,0 @@
1
- import { DynamicFormFieldOptionModel } from '../../models/classes/dynamic-form-field-option-model';
2
- export const DYNAMIC_FORM_FIELD_SELECT = 'select';
3
- export class DynamicSelect extends DynamicFormFieldOptionModel {
4
- constructor(config) {
5
- super(config);
6
- this.type = DYNAMIC_FORM_FIELD_SELECT;
7
- this.native = config.native ?? false;
8
- this.multiple = config.multiple ?? false;
9
- }
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWxlY3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsMkJBQTJCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVqSSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQUM7QUFjbEQsTUFBTSxPQUFPLGFBQWlCLFNBQVEsMkJBQThCO0lBTWxFLFlBQVksTUFBOEI7UUFDeEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSEEsU0FBSSxHQUFHLHlCQUF5QixDQUFDO1FBSy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkT3B0aW9uQ29uZmlnLCBEeW5hbWljRm9ybUZpZWxkT3B0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtb3B0aW9uLW1vZGVsJztcblxuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STV9GSUVMRF9TRUxFQ1QgPSAnc2VsZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljU2VsZWN0Q29uZmlnPFQ+IGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZE9wdGlvbkNvbmZpZzxUPiB7XG4gIC8qKlxuICAgKiBTaG93IHRoZSBuYXRpdmUgZHJvcGRvd24gaW5zdGVhZCBvZiB0aGUgQW5ndWxhciBNYXRlcmlhbCBzdHlsZWQgZHJvcGRvd25cbiAgICovXG4gIG5hdGl2ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIHNlbGVjdCBtdWx0aXBsZSBvcHRpb25zLlxuICAgKiBEZWZhdWx0IHZhbHVlIGlzIGZhbHNlXG4gICAqL1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VsZWN0PFQ+IGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZE9wdGlvbk1vZGVsPFQ+IHtcbiAgcHVibGljIG5hdGl2ZTogYm9vbGVhbjtcbiAgcHVibGljIG11bHRpcGxlOiBib29sZWFuO1xuXG4gIHB1YmxpYyByZWFkb25seSB0eXBlID0gRFlOQU1JQ19GT1JNX0ZJRUxEX1NFTEVDVDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IER5bmFtaWNTZWxlY3RDb25maWc8VD4pIHtcbiAgICBzdXBlcihjb25maWcpO1xuXG4gICAgdGhpcy5uYXRpdmUgPSBjb25maWcubmF0aXZlID8/IGZhbHNlO1xuICAgIHRoaXMubXVsdGlwbGUgPSBjb25maWcubXVsdGlwbGUgPz8gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -1,46 +0,0 @@
1
- import { NgIf } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- import { MatFormFieldModule } from '@angular/material/form-field';
5
- import { MatInput, MatInputModule } from '@angular/material/input';
6
- import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-base';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/material/form-field";
9
- import * as i2 from "@angular/material/input";
10
- import * as i3 from "@angular/cdk/text-field";
11
- import * as i4 from "@angular/forms";
12
- export class DynamicTextareaComponent extends DynamicFormFieldBase {
13
- constructor() {
14
- super(...arguments);
15
- this.change = new EventEmitter();
16
- }
17
- get valueCount() {
18
- return this.textarea?.value ? this.textarea.value.length : 0;
19
- }
20
- get maxCountText() {
21
- return `${this.valueCount} / ${this.model.maxLength}`;
22
- }
23
- onChange(event) {
24
- // Ignore the native HTML 5 change event
25
- if (event instanceof Event) {
26
- event.stopPropagation();
27
- }
28
- this.change.emit(event);
29
- }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicTextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DynamicTextareaComponent, isStandalone: true, selector: "dynamic-textarea", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, viewQueries: [{ propertyName: "textarea", first: true, predicate: MatInput, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [formGroup]=\"group\"\n [id]=\"id\"\n color=\"primary\">\n <mat-label *ngIf=\"model.label\">{{model.label}}</mat-label>\n\n <textarea matInput\n [cdkTextareaAutosize]=\"model.resize\"\n [cdkAutosizeMinRows]=\"model.rows\"\n [cdkAutosizeMaxRows]=\"model.resizeMaxRows\"\n [id]=\"id\"\n [formControlName]=\"model.name\"\n [placeholder]=\"model.placeholder\"\n [attr.minLength]=\"model.minLength\"\n [attr.maxLength]=\"model.maxLength\"\n [rows]=\"model.rows\"\n [autocomplete]=\"model.autocomplete\"\n (change)=\"onChange($event)\">\n </textarea>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n <mat-hint *ngIf=\"model.maxLength\"\n align=\"end\">{{maxCountText}}</mat-hint>\n\n @for(validator of model.validators; track validator.name) {\n <ng-container ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\n }\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { 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: "directive", type: i3.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicTextareaComponent, decorators: [{
34
- type: Component,
35
- args: [{ standalone: true, imports: [NgIf, MatFormFieldModule, MatInputModule, ReactiveFormsModule], selector: 'dynamic-textarea', template: "<mat-form-field [formGroup]=\"group\"\n [id]=\"id\"\n color=\"primary\">\n <mat-label *ngIf=\"model.label\">{{model.label}}</mat-label>\n\n <textarea matInput\n [cdkTextareaAutosize]=\"model.resize\"\n [cdkAutosizeMinRows]=\"model.rows\"\n [cdkAutosizeMaxRows]=\"model.resizeMaxRows\"\n [id]=\"id\"\n [formControlName]=\"model.name\"\n [placeholder]=\"model.placeholder\"\n [attr.minLength]=\"model.minLength\"\n [attr.maxLength]=\"model.maxLength\"\n [rows]=\"model.rows\"\n [autocomplete]=\"model.autocomplete\"\n (change)=\"onChange($event)\">\n </textarea>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n <mat-hint *ngIf=\"model.maxLength\"\n align=\"end\">{{maxCountText}}</mat-hint>\n\n @for(validator of model.validators; track validator.name) {\n <ng-container ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\n }\n</mat-form-field>", styles: ["mat-form-field{width:100%}\n"] }]
36
- }], propDecorators: { textarea: [{
37
- type: ViewChild,
38
- args: [MatInput, { static: true }]
39
- }], model: [{
40
- type: Input
41
- }], group: [{
42
- type: Input
43
- }], change: [{
44
- type: Output
45
- }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvdGV4dGFyZWEvZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvdGV4dGFyZWEvZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7OztBQVdwRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsb0JBQW9CO0lBUGxFOztRQWFZLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztLQWtCOUQ7SUFoQkMsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFvQztRQUNsRCx3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUE4QixDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0F2QlUsd0JBQXdCO21HQUF4Qix3QkFBd0IsaU1BQ3hCLFFBQVEscUZDakJyQixnL0JBOEJpQixzRkRuQkwsSUFBSSw0RkFBRSxrQkFBa0IsK2RBQUUsY0FBYyx5a0JBQUUsbUJBQW1COzs0RkFLNUQsd0JBQXdCO2tCQVBwQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLENBQUMsWUFDOUQsa0JBQWtCOzhCQUtXLFFBQVE7c0JBQTlDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFNUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0LCBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLWZpZWxkLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEeW5hbWljVGV4dGFyZWEgfSBmcm9tICcuL2R5bmFtaWMtdGV4dGFyZWEubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2R5bmFtaWMtdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogWydtYXQtZm9ybS1maWVsZCB7d2lkdGg6IDEwMCU7fSddXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRCYXNlIHtcbiAgQFZpZXdDaGlsZChNYXRJbnB1dCwgeyBzdGF0aWM6IHRydWUgfSkgdGV4dGFyZWEhOiBNYXRJbnB1dDtcblxuICBASW5wdXQoKSBtb2RlbCE6IER5bmFtaWNUZXh0YXJlYTtcbiAgQElucHV0KCkgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtRmllbGRFdmVudD4oKTtcblxuICBnZXQgdmFsdWVDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRleHRhcmVhPy52YWx1ZSA/IHRoaXMudGV4dGFyZWEudmFsdWUubGVuZ3RoIDogMDtcbiAgfVxuXG4gIGdldCBtYXhDb3VudFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy52YWx1ZUNvdW50fSAvICR7dGhpcy5tb2RlbC5tYXhMZW5ndGh9YDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZShldmVudDogRXZlbnQgfCBEeW5hbWljRm9ybUZpZWxkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBJZ25vcmUgdGhlIG5hdGl2ZSBIVE1MIDUgY2hhbmdlIGV2ZW50XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlLmVtaXQoZXZlbnQgYXMgRHluYW1pY0Zvcm1GaWVsZEV2ZW50KTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICBbaWRdPVwiaWRcIlxuICBjb2xvcj1cInByaW1hcnlcIj5cbiAgPG1hdC1sYWJlbCAqbmdJZj1cIm1vZGVsLmxhYmVsXCI+e3ttb2RlbC5sYWJlbH19PC9tYXQtbGFiZWw+XG5cbiAgPHRleHRhcmVhIG1hdElucHV0XG4gICAgW2Nka1RleHRhcmVhQXV0b3NpemVdPVwibW9kZWwucmVzaXplXCJcbiAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cIm1vZGVsLnJvd3NcIlxuICAgIFtjZGtBdXRvc2l6ZU1heFJvd3NdPVwibW9kZWwucmVzaXplTWF4Um93c1wiXG4gICAgW2lkXT1cImlkXCJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm1vZGVsLm5hbWVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJtb2RlbC5wbGFjZWhvbGRlclwiXG4gICAgW2F0dHIubWluTGVuZ3RoXT1cIm1vZGVsLm1pbkxlbmd0aFwiXG4gICAgW2F0dHIubWF4TGVuZ3RoXT1cIm1vZGVsLm1heExlbmd0aFwiXG4gICAgW3Jvd3NdPVwibW9kZWwucm93c1wiXG4gICAgW2F1dG9jb21wbGV0ZV09XCJtb2RlbC5hdXRvY29tcGxldGVcIlxuICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxuICA8L3RleHRhcmVhPlxuXG4gIDxtYXQtaGludCAqbmdJZj1cIm1vZGVsLmhpbnRcIlxuICAgIGFsaWduPVwic3RhcnRcIj57e21vZGVsLmhpbnR9fTwvbWF0LWhpbnQ+XG5cbiAgPG1hdC1oaW50ICpuZ0lmPVwibW9kZWwubWF4TGVuZ3RoXCJcbiAgICBhbGlnbj1cImVuZFwiPnt7bWF4Q291bnRUZXh0fX08L21hdC1oaW50PlxuXG4gIEBmb3IodmFsaWRhdG9yIG9mIG1vZGVsLnZhbGlkYXRvcnM7IHRyYWNrIHZhbGlkYXRvci5uYW1lKSB7XG4gIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaGFzRXJyb3IodmFsaWRhdG9yLm5hbWUpXCI+e3t2YWxpZGF0b3IubWVzc2FnZX19PC9tYXQtZXJyb3I+XG4gIDwvbmctY29udGFpbmVyPlxuICB9XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
@@ -1,16 +0,0 @@
1
- import { DynamicFormFieldValueModel } from '../../models/classes/dynamic-form-field-value-model';
2
- export const DYNAMIC_FORM_FIELD_TEXTAREA = 'textarea';
3
- export class DynamicTextarea extends DynamicFormFieldValueModel {
4
- constructor(config) {
5
- super(config);
6
- this.type = DYNAMIC_FORM_FIELD_TEXTAREA;
7
- this.placeholder = config.placeholder ?? '';
8
- this.minLength = config.minLength ?? 0;
9
- this.maxLength = config.minLength ?? null;
10
- this.autocomplete = config.autocomplete ?? 'off';
11
- this.rows = config.rows ?? 3;
12
- this.resize = config.resize ?? true;
13
- this.resizeMaxRows = config.resizeMaxRows ?? null;
14
- }
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10ZXh0YXJlYS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy90ZXh0YXJlYS9keW5hbWljLXRleHRhcmVhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxVQUFVLENBQUM7QUFvQ3RELE1BQU0sT0FBTyxlQUFnQixTQUFRLDBCQUFnRDtJQVduRixZQUFZLE1BQTZCO1FBQ3ZDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUhBLFNBQUksR0FBRywyQkFBMkIsQ0FBQztRQUtqRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO0lBQ3BELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRWYWx1ZUNvbmZpZywgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtdmFsdWUtbW9kZWwnO1xuXG5leHBvcnQgY29uc3QgRFlOQU1JQ19GT1JNX0ZJRUxEX1RFWFRBUkVBID0gJ3RleHRhcmVhJztcbmV4cG9ydCB0eXBlIER5bmFtaWNUZXh0YXJlYVZhbHVlID0gc3RyaW5nIHwgbnVsbDtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljVGV4dGFyZWFDb25maWcgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkVmFsdWVDb25maWc8RHluYW1pY1RleHRhcmVhVmFsdWU+IHtcbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgaW5zaWRlIHRoZSB0ZXh0YXJlYS5cbiAgICogT25seSB2aXNpYmxlIHdoZW4gdGhlIGZpZWxkIGlzIGVtcHR5IGFuZCBpbiBmb2N1cy5cbiAgICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogTWluaW11bSBhbW91bnQgb2YgY2hhcmFjdGVycyBuZWVkZWQgaW4gdGhlIHRleHRhcmVhXG4gICAqL1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBjaGFyYWN0ZXJzIGl0IGlzIHBvc3NpYmxlIHRvIGZpbGwgaW4gdGhlIHRleHRhcmVhXG4gICAqL1xuICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVkIHRoZSBicm93c2VyIG5hdGllIGF1dG9jb21wbGV0ZSBidWJibGUgd2hlbiB0aGUgY29udHJvbCBpcyBpbiBmb2N1cy5cbiAgICogRGVmYXVsdCB2YWx1ZSBpcyAnb2ZmJ1xuICAgKi9cbiAgYXV0b2NvbXBsZXRlPzogJ29uJyB8ICdvZmYnO1xuICAvKipcbiAgICogQW1vdW50IG9mIHJvd3MgdGhlIHRleHRhcmVhIGluaXRpYWxpemVzIG9uXG4gICAqL1xuICByb3dzPzogbnVtYmVyO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgdGV4dGFyZSBhdXRvbWF0aWNhbGx5IHJlc2l6ZXMgdG8gZml0IGl0cyBjb250ZW50XG4gICAqL1xuICByZXNpemU/OiBib29sZWFuO1xuICAvKipcbiAgICogTWF4aW11bSBhbW91bnQgb2Ygcm93cyB0aGUgdGV4dGFyZWEgc2hvdyByZXNpemUgdG9cbiAgICovXG4gIHJlc2l6ZU1heFJvd3M/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljVGV4dGFyZWEgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbDxEeW5hbWljVGV4dGFyZWFWYWx1ZT4ge1xuICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgcHVibGljIG1pbkxlbmd0aDogbnVtYmVyIHwgbnVsbDtcbiAgcHVibGljIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbDtcbiAgcHVibGljIGF1dG9jb21wbGV0ZTogJ29uJyB8ICdvZmYnO1xuICBwdWJsaWMgcm93czogbnVtYmVyO1xuICBwdWJsaWMgcmVzaXplOiBib29sZWFuO1xuICBwdWJsaWMgcmVzaXplTWF4Um93czogbnVtYmVyIHwgbnVsbDtcblxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9IERZTkFNSUNfRk9STV9GSUVMRF9URVhUQVJFQTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IER5bmFtaWNUZXh0YXJlYUNvbmZpZykge1xuICAgIHN1cGVyKGNvbmZpZyk7XG5cbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gY29uZmlnLnBsYWNlaG9sZGVyID8/ICcnO1xuICAgIHRoaXMubWluTGVuZ3RoID0gY29uZmlnLm1pbkxlbmd0aCA/PyAwO1xuICAgIHRoaXMubWF4TGVuZ3RoID0gY29uZmlnLm1pbkxlbmd0aCA/PyBudWxsO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlID0gY29uZmlnLmF1dG9jb21wbGV0ZSA/PyAnb2ZmJztcbiAgICB0aGlzLnJvd3MgPSBjb25maWcucm93cyA/PyAzO1xuICAgIHRoaXMucmVzaXplID0gY29uZmlnLnJlc2l6ZSA/PyB0cnVlO1xuICAgIHRoaXMucmVzaXplTWF4Um93cyA9IGNvbmZpZy5yZXNpemVNYXhSb3dzID8/IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,31 +0,0 @@
1
- /**
2
- * Base class for the DynamicFormField component classes
3
- */
4
- export class DynamicFormFieldBase {
5
- get id() {
6
- return this.model.id ?? this.model.name;
7
- }
8
- get control() {
9
- const ctrl = this.group.get(this.model.name);
10
- if (!ctrl) {
11
- throw new Error(`Provided FormGroup does not contain a control with the name ${this.model.name}`);
12
- }
13
- return ctrl;
14
- }
15
- get isValid() {
16
- return this.control.valid;
17
- }
18
- get isInvalid() {
19
- return this.control.invalid;
20
- }
21
- onChange(event) {
22
- this.change.emit(event);
23
- }
24
- resetControl() {
25
- this.group.get(this.model.name)?.reset();
26
- }
27
- hasError(name) {
28
- return this.control.hasError(name);
29
- }
30
- }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUE7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLG9CQUFvQjtJQU14QyxJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRNb2RlbCB9IGZyb20gJy4vZHluYW1pYy1mb3JtLWZpZWxkLW1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRm9ybUZpZWxkIHtcbiAgZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XG4gIG1vZGVsOiBEeW5hbWljRm9ybUZpZWxkTW9kZWw7XG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgdGhlIER5bmFtaWNGb3JtRmllbGQgY29tcG9uZW50IGNsYXNzZXNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIER5bmFtaWNGb3JtRmllbGRCYXNlIGltcGxlbWVudHMgRHluYW1pY0Zvcm1GaWVsZCB7XG4gIGdyb3VwITogVW50eXBlZEZvcm1Hcm91cDtcbiAgbW9kZWwhOiBEeW5hbWljRm9ybUZpZWxkTW9kZWw7XG5cbiAgY2hhbmdlITogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwuaWQgPz8gdGhpcy5tb2RlbC5uYW1lO1xuICB9XG5cbiAgZ2V0IGNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5ncm91cC5nZXQodGhpcy5tb2RlbC5uYW1lKTtcblxuICAgIGlmICghY3RybCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlZCBGb3JtR3JvdXAgZG9lcyBub3QgY29udGFpbiBhIGNvbnRyb2wgd2l0aCB0aGUgbmFtZSAke3RoaXMubW9kZWwubmFtZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN0cmw7XG4gIH1cblxuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLnZhbGlkO1xuICB9XG5cbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLmludmFsaWQ7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IHVua25vd24pIHtcbiAgICB0aGlzLmNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldENvbnRyb2woKSB7XG4gICAgdGhpcy5ncm91cC5nZXQodGhpcy5tb2RlbC5uYW1lKT8ucmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNFcnJvcihuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLmhhc0Vycm9yKG5hbWUpO1xuICB9XG59XG4iXX0=
@@ -1,34 +0,0 @@
1
- import { signal } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- /**
4
- * Base class for all DynamicFormFields
5
- */
6
- export class DynamicFormFieldModel {
7
- constructor(config) {
8
- this.id = config.id ?? config.name;
9
- this.width = config.width ?? 100;
10
- this.label = config.label ?? null;
11
- this.name = config.name;
12
- this.hint = config.hint ?? null;
13
- this.validators = config.validators ?? [];
14
- this.updateOn = config.updateOn ?? 'change';
15
- this.relations = config.relations ?? null;
16
- // Create a disabled Subject and Observable to change the state of the FormControl inside DynamicFormFieldComponent by subscribing to disabledChange
17
- this.disabled$ = new BehaviorSubject(config.disabled ?? false);
18
- this.disabledChange = this.disabled$.asObservable();
19
- this.$hidden = signal(config.hidden ?? false);
20
- }
21
- get disabled() {
22
- return this.disabled$.getValue();
23
- }
24
- set disabled(disable) {
25
- this.disabled$.next(disable);
26
- }
27
- get hidden() {
28
- return this.$hidden();
29
- }
30
- set hidden(hidden) {
31
- this.$hidden.set(hidden);
32
- }
33
- }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBS25EOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixxQkFBcUI7SUFnQnpDLFlBQVksTUFBOEI7UUFDeEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1FBRTFDLG9KQUFvSjtRQUNwSixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsT0FBZ0I7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFlO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLWZpZWxkLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZFJlbGF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9keW5hbWljLWZvcm0tZmllbGQtcmVsYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtVmFsaWRhdG9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9keW5hbWljLWZvcm0tdmFsaWRhdG9yLmludGVyZmFjZSc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIER5bmFtaWNGb3JtRmllbGRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEeW5hbWljRm9ybUZpZWxkTW9kZWwge1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHdpZHRoOiBudW1iZXI7XG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHVibGljIGhpbnQ6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyB2YWxpZGF0b3JzOiBEeW5hbWljRm9ybVZhbGlkYXRvcltdO1xuICBwdWJsaWMgdXBkYXRlT246ICdzdWJtaXQnIHwgJ2JsdXInIHwgJ2NoYW5nZSc7XG4gIHB1YmxpYyByZWxhdGlvbnM6IER5bmFtaWNGb3JtRmllbGRSZWxhdGlvbltdIHwgbnVsbDtcbiAgcHVibGljIGRpc2FibGVkQ2hhbmdlOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGFic3RyYWN0IHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5ICRoaWRkZW46IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY0Zvcm1GaWVsZENvbmZpZykge1xuICAgIHRoaXMuaWQgPSBjb25maWcuaWQgPz8gY29uZmlnLm5hbWU7XG4gICAgdGhpcy53aWR0aCA9IGNvbmZpZy53aWR0aCA/PyAxMDA7XG4gICAgdGhpcy5sYWJlbCA9IGNvbmZpZy5sYWJlbCA/PyBudWxsO1xuICAgIHRoaXMubmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuaGludCA9IGNvbmZpZy5oaW50ID8/IG51bGw7XG4gICAgdGhpcy52YWxpZGF0b3JzID0gY29uZmlnLnZhbGlkYXRvcnMgPz8gW107XG4gICAgdGhpcy51cGRhdGVPbiA9IGNvbmZpZy51cGRhdGVPbiA/PyAnY2hhbmdlJztcbiAgICB0aGlzLnJlbGF0aW9ucyA9IGNvbmZpZy5yZWxhdGlvbnMgPz8gbnVsbDtcblxuICAgIC8vIENyZWF0ZSBhIGRpc2FibGVkIFN1YmplY3QgYW5kIE9ic2VydmFibGUgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aGUgRm9ybUNvbnRyb2wgaW5zaWRlIER5bmFtaWNGb3JtRmllbGRDb21wb25lbnQgYnkgc3Vic2NyaWJpbmcgdG8gZGlzYWJsZWRDaGFuZ2VcbiAgICB0aGlzLmRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoY29uZmlnLmRpc2FibGVkID8/IGZhbHNlKTtcbiAgICB0aGlzLmRpc2FibGVkQ2hhbmdlID0gdGhpcy5kaXNhYmxlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICB0aGlzLiRoaWRkZW4gPSBzaWduYWwoY29uZmlnLmhpZGRlbiA/PyBmYWxzZSk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQkLmdldFZhbHVlKCk7XG4gIH1cbiAgc2V0IGRpc2FibGVkKGRpc2FibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KGRpc2FibGUpO1xuICB9XG5cbiAgZ2V0IGhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4kaGlkZGVuKCk7XG4gIH1cbiAgc2V0IGhpZGRlbihoaWRkZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLiRoaWRkZW4uc2V0KGhpZGRlbik7XG4gIH1cbn1cbiJdfQ==
@@ -1,48 +0,0 @@
1
- import { isObservable, map, of } from 'rxjs';
2
- import { DynamicFormFieldValueModel } from './dynamic-form-field-value-model';
3
- /**
4
- * Base class for any DynamicFormField with options (e.g. DynamicSelect or DynamicAutocomplete)
5
- */
6
- export class DynamicFormFieldOptionModel extends DynamicFormFieldValueModel {
7
- constructor(config) {
8
- super(config);
9
- this._options = [];
10
- this._groupedOptions = [];
11
- if (!config.options && !config.groupedOptions) {
12
- console.error(`No options or groupedOptions provided for ${this.name}`);
13
- }
14
- if (config.options) {
15
- this.options$ = this.setOptions(config.options);
16
- }
17
- else if (config.groupedOptions) {
18
- this.groupedOptions$ = this.setGroupedOptions(config.groupedOptions);
19
- }
20
- }
21
- setOptions(options) {
22
- if (Array.isArray(options)) {
23
- this._options = options;
24
- return of(this._options);
25
- }
26
- if (isObservable(options)) {
27
- return options.pipe(map((o) => {
28
- this._options = o;
29
- return this._options;
30
- }));
31
- }
32
- return of([]);
33
- }
34
- setGroupedOptions(groupedOptions) {
35
- if (Array.isArray(groupedOptions)) {
36
- this._groupedOptions = groupedOptions;
37
- return of(this._groupedOptions);
38
- }
39
- if (isObservable(groupedOptions)) {
40
- return groupedOptions.pipe(map((o) => {
41
- this._groupedOptions = o;
42
- return this._groupedOptions;
43
- }));
44
- }
45
- return of([]);
46
- }
47
- }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLW9wdGlvbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtb3B0aW9uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQStCLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFrQzNHOztHQUVHO0FBQ0gsTUFBTSxPQUFnQiwyQkFBK0IsU0FBUSwwQkFBNkI7SUFPeEYsWUFBWSxNQUF1QztRQUNqRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFKUixhQUFRLEdBQWdDLEVBQUUsQ0FBQztRQUMzQyxvQkFBZSxHQUFxQyxFQUFFLENBQUM7UUFLN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDOUMsT0FBTyxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxPQUE2QjtRQUM5QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUN4QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDUixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLGNBQTJDO1FBQ25FLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNSLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc09ic2VydmFibGUsIG1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRWYWx1ZUNvbmZpZywgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWwgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1maWVsZC12YWx1ZS1tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIER5bmFtaWNPcHRpb25MaXN0PFQ+ID0gRHluYW1pY0Zvcm1GaWVsZE9wdGlvbjxUPltdIHwgT2JzZXJ2YWJsZTxEeW5hbWljRm9ybUZpZWxkT3B0aW9uPFQ+W10+O1xuXG5leHBvcnQgdHlwZSBEeW5hbWljR3JvdXBlZE9wdGlvbkxpc3Q8VD4gPSBEeW5hbWljRm9ybUZpZWxkT3B0aW9uR3JvdXA8VD5bXSB8IE9ic2VydmFibGU8RHluYW1pY0Zvcm1GaWVsZE9wdGlvbkdyb3VwPFQ+W10+O1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgdGhlIG9iamVjdHMgaW5zaWRlIGEgbGlzdCBvZiBvcHRpb25zIG9mIER5bmFtaWMgRm9ybUZpZWxkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0Zvcm1GaWVsZE9wdGlvbjxUPiB7XG4gIC8qKiBUaGUgdGV4dCBzaG93biBhcyBsYWJlbCAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogRXh0cmEgbGluZSBvZiB0ZXh0IHNob3duIGFzIHN1YnRpdGxlICovXG4gIHN1YlRpdGxlPzogc3RyaW5nO1xuICAvKiogVGhlIHZhbHVlIHRoZSBvcHRpb24gaG9sZHMgKi9cbiAgdmFsdWU6IFQ7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBhIGdyb3VwIG9wIG9wdGlvbnMgaW5zaWRlIGEgRHluYW1pYyBGb3JtRmllbGQgKG9wdGdyb3VwKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGb3JtRmllbGRPcHRpb25Hcm91cDxUPiB7XG4gIG5hbWU6IHN0cmluZztcbiAgb3B0aW9uczogRHluYW1pY0Zvcm1GaWVsZE9wdGlvbjxUPltdO1xufVxuXG4vKipcbiAqIEJhc2UgaW50ZXJmYWNlIGZvciBhbnkgRHluYW1pY0Zvcm1GaWVsZENvbmZpZyB3aXRoIG9wdGlvbnMgKGUuZy4gRHluYW1pY1NlbGVjdENvbmZpZyBvciBEeW5hbWljQXV0b2NvbXBsZXRlQ29uZmlnKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRm9ybUZpZWxkT3B0aW9uQ29uZmlnPFQ+IGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZFZhbHVlQ29uZmlnPFQ+IHtcbiAgb3B0aW9ucz86IER5bmFtaWNPcHRpb25MaXN0PFQ+O1xuICBncm91cGVkT3B0aW9ucz86IER5bmFtaWNHcm91cGVkT3B0aW9uTGlzdDxUPjtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbnkgRHluYW1pY0Zvcm1GaWVsZCB3aXRoIG9wdGlvbnMgKGUuZy4gRHluYW1pY1NlbGVjdCBvciBEeW5hbWljQXV0b2NvbXBsZXRlKVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY0Zvcm1GaWVsZE9wdGlvbk1vZGVsPFQ+IGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWw8VD4ge1xuICBwdWJsaWMgb3B0aW9ucyQhOiBPYnNlcnZhYmxlPER5bmFtaWNGb3JtRmllbGRPcHRpb248VD5bXT47XG4gIHB1YmxpYyBncm91cGVkT3B0aW9ucyQhOiBPYnNlcnZhYmxlPER5bmFtaWNGb3JtRmllbGRPcHRpb25Hcm91cDxUPltdPjtcblxuICBwcml2YXRlIF9vcHRpb25zOiBEeW5hbWljRm9ybUZpZWxkT3B0aW9uPFQ+W10gPSBbXTtcbiAgcHJpdmF0ZSBfZ3JvdXBlZE9wdGlvbnM6IER5bmFtaWNGb3JtRmllbGRPcHRpb25Hcm91cDxUPltdID0gW107XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBEeW5hbWljRm9ybUZpZWxkT3B0aW9uQ29uZmlnPFQ+KSB7XG4gICAgc3VwZXIoY29uZmlnKTtcblxuICAgIGlmICghY29uZmlnLm9wdGlvbnMgJiYgIWNvbmZpZy5ncm91cGVkT3B0aW9ucykge1xuICAgICAgY29uc29sZS5lcnJvcihgTm8gb3B0aW9ucyBvciBncm91cGVkT3B0aW9ucyBwcm92aWRlZCBmb3IgJHt0aGlzLm5hbWV9YCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5vcHRpb25zKSB7XG4gICAgICB0aGlzLm9wdGlvbnMkID0gdGhpcy5zZXRPcHRpb25zKGNvbmZpZy5vcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKGNvbmZpZy5ncm91cGVkT3B0aW9ucykge1xuICAgICAgdGhpcy5ncm91cGVkT3B0aW9ucyQgPSB0aGlzLnNldEdyb3VwZWRPcHRpb25zKGNvbmZpZy5ncm91cGVkT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcHRpb25zKG9wdGlvbnM6IER5bmFtaWNPcHRpb25MaXN0PFQ+KTogT2JzZXJ2YWJsZTxEeW5hbWljRm9ybUZpZWxkT3B0aW9uPFQ+W10+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICByZXR1cm4gb2YodGhpcy5fb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JzZXJ2YWJsZShvcHRpb25zKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucGlwZShcbiAgICAgICAgbWFwKChvKSA9PiB7XG4gICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG87XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBvZihbXSk7XG4gIH1cblxuICBwcml2YXRlIHNldEdyb3VwZWRPcHRpb25zKGdyb3VwZWRPcHRpb25zOiBEeW5hbWljR3JvdXBlZE9wdGlvbkxpc3Q8VD4pOiBPYnNlcnZhYmxlPER5bmFtaWNGb3JtRmllbGRPcHRpb25Hcm91cDxUPltdPiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXBlZE9wdGlvbnMpKSB7XG4gICAgICB0aGlzLl9ncm91cGVkT3B0aW9ucyA9IGdyb3VwZWRPcHRpb25zO1xuICAgICAgcmV0dXJuIG9mKHRoaXMuX2dyb3VwZWRPcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYnNlcnZhYmxlKGdyb3VwZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuIGdyb3VwZWRPcHRpb25zLnBpcGUoXG4gICAgICAgIG1hcCgobykgPT4ge1xuICAgICAgICAgIHRoaXMuX2dyb3VwZWRPcHRpb25zID0gbztcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXBlZE9wdGlvbnM7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBvZihbXSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,24 +0,0 @@
1
- import { BehaviorSubject } from 'rxjs';
2
- import { DynamicFormFieldModel } from './dynamic-form-field-model';
3
- /**
4
- * Base class for a DynamicFormField with a value
5
- */
6
- export class DynamicFormFieldValueModel extends DynamicFormFieldModel {
7
- constructor(config) {
8
- super(config);
9
- this.defaultValue = config.defaultValue ?? null;
10
- const val = config.value ?? null;
11
- this._value$ = new BehaviorSubject(val);
12
- this._valueChanged = config.valueChanged;
13
- }
14
- get value() {
15
- return this._value$.getValue();
16
- }
17
- set value(val) {
18
- this._value$.next(val);
19
- if (this._valueChanged) {
20
- this._valueChanged(val);
21
- }
22
- }
23
- }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLXZhbHVlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC12YWx1ZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBdUJuRTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsMEJBQXdDLFNBQVEscUJBQXFCO0lBTXpGLFlBQVksTUFBc0M7UUFDaEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQztRQUVoRCxNQUFNLEdBQUcsR0FBYSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxHQUFhO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLWZpZWxkLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZE1vZGVsIH0gZnJvbSAnLi9keW5hbWljLWZvcm0tZmllbGQtbW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGb3JtRmllbGRWYWx1ZUNvbmZpZzxUPiBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRDb25maWcge1xuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBjb250cm9sLlxuICAgKiBUaGlzIHZhbHVlIHdpbGwgY2hhbmdlIHdoZW4gdGhlIGNvbnRyb2wgaXMgdXNlZC5cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICB2YWx1ZT86IFQ7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgY29udHJvbCB3aGVuIGluaXRpYWxpemluZyBvciByZXNldHRpbmcgdGhlIGNvbnRyb2wuXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogVDtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBldmVyeXRpbWUgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGNoYW5nZXMuXG4gICAqIFBhc3NlcyB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wgYXMgcGFyYW1ldGVyLlxuICAgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBnZXQgYW4gZXZlbnQgb24gZXZlcnkga2V5c3Ryb2tlIHdpdGhvdXQgZGVsYXksIHVzZSB0aGUgUmVhY3RpdmVGb3Jtc01vZHVsZSBgdmFsdWVDaGFuZ2VzYCBPYnNlcnZhYmxlXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgdmFsdWVDaGFuZ2VkPzogKHZhbDogVCB8IG51bGwpID0+IGFueTtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhIER5bmFtaWNGb3JtRmllbGQgd2l0aCBhIHZhbHVlXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbDxUID0gdW5rbm93bj4gZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkTW9kZWwge1xuICBwdWJsaWMgZGVmYXVsdFZhbHVlOiBUIHwgbnVsbDtcblxuICBwcml2YXRlIF92YWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxUIHwgbnVsbD47XG4gIHByaXZhdGUgX3ZhbHVlQ2hhbmdlZDogKCh2YWw6IFQgfCBudWxsKSA9PiBhbnkpIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY0Zvcm1GaWVsZFZhbHVlQ29uZmlnPFQ+KSB7XG4gICAgc3VwZXIoY29uZmlnKTtcblxuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gY29uZmlnLmRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuXG4gICAgY29uc3QgdmFsOiBUIHwgbnVsbCA9IGNvbmZpZy52YWx1ZSA/PyBudWxsO1xuICAgIHRoaXMuX3ZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodmFsKTtcbiAgICB0aGlzLl92YWx1ZUNoYW5nZWQgPSBjb25maWcudmFsdWVDaGFuZ2VkO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUkLmdldFZhbHVlKCk7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbDogVCB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZSQubmV4dCh2YWwpO1xuICAgIGlmICh0aGlzLl92YWx1ZUNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlZCh2YWwpO1xuICAgIH1cbiAgfVxufVxuIl19