@olafvv/ngx-dynamic-form 0.2.0 → 0.3.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.
- package/README.md +326 -3
- package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +6 -15
- package/esm2022/lib/components/dynamic-form-field/dynamic-form-field.component.mjs +5 -5
- package/esm2022/lib/controls/button/dynamic-button.component.mjs +5 -5
- package/esm2022/lib/controls/button/dynamic-button.model.mjs +2 -3
- package/esm2022/lib/controls/button-toggles/dynamic-button-toggles.component.mjs +6 -6
- package/esm2022/lib/controls/checkbox/dynamic-checkbox.component.mjs +3 -3
- package/esm2022/lib/controls/input/dynamic-input.component.mjs +6 -6
- package/esm2022/lib/controls/input/dynamic-input.model.mjs +2 -1
- package/esm2022/lib/controls/radio-group/dynamic-radio-group.component.mjs +6 -6
- package/esm2022/lib/controls/readonly/dynamic-readonly.component.mjs +3 -3
- package/esm2022/lib/controls/select/dynamic-select.component.mjs +6 -9
- package/esm2022/lib/controls/textarea/dynamic-textarea.component.mjs +6 -6
- package/esm2022/lib/controls/textarea/dynamic-textarea.model.mjs +2 -1
- package/esm2022/lib/models/classes/dynamic-form-field-base.mjs +1 -1
- package/esm2022/lib/models/classes/dynamic-form-field-model.mjs +9 -2
- package/esm2022/lib/models/classes/dynamic-form-field-option-model.mjs +1 -1
- package/esm2022/lib/models/classes/dynamic-form-validators.mjs +21 -21
- package/esm2022/lib/models/constants/dynamic-relations.const.mjs +1 -1
- package/esm2022/lib/models/interfaces/dynamic-form-field-config.interface.mjs +1 -1
- package/esm2022/lib/models/interfaces/dynamic-form-field-relation.interface.mjs +1 -1
- package/esm2022/lib/services/dynamic-form-relations.service.mjs +13 -9
- package/esm2022/lib/services/dynamic-form.service.mjs +5 -5
- package/esm2022/lib/services/dynamic-validations.service.mjs +4 -4
- package/fesm2022/olafvv-ngx-dynamic-form.mjs +90 -91
- package/fesm2022/olafvv-ngx-dynamic-form.mjs.map +1 -1
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +0 -7
- package/lib/components/dynamic-form-field/dynamic-form-field.component.d.ts +2 -2
- package/lib/controls/button/dynamic-button.model.d.ts +2 -4
- package/lib/controls/input/dynamic-input.model.d.ts +2 -0
- package/lib/controls/select/dynamic-select.component.d.ts +0 -2
- package/lib/controls/textarea/dynamic-textarea.model.d.ts +2 -0
- package/lib/models/classes/dynamic-form-field-model.d.ts +3 -1
- package/lib/models/classes/dynamic-form-validators.d.ts +12 -12
- package/lib/models/constants/dynamic-relations.const.d.ts +9 -1
- package/lib/models/interfaces/dynamic-form-field-config.interface.d.ts +7 -2
- package/lib/models/interfaces/dynamic-form-field-relation.interface.d.ts +9 -10
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AsyncPipe, NgClass,
|
|
1
|
+
import { AsyncPipe, NgClass, NgIf } from '@angular/common';
|
|
2
2
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
@@ -12,12 +12,12 @@ export class DynamicButtonTogglesComponent extends DynamicFormFieldBase {
|
|
|
12
12
|
super(...arguments);
|
|
13
13
|
this.change = new EventEmitter();
|
|
14
14
|
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicButtonTogglesComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DynamicButtonTogglesComponent, isStandalone: true, selector: "dynamic-button-toggles", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, usesInheritance: true, ngImport: i0, template: "<div class=\"dynamic-button-toggles-wrapper\"\n [formGroup]=\"group\">\n <label *ngIf=\"model.label\"\n [ngClass]=\"model.fieldLabelPosition\">{{model.label}}</label>\n <mat-button-toggle-group [id]=\"id\"\n [formControlName]=\"model.name\"\n [multiple]=\"model.multiple\"\n [vertical]=\"model.vertical\"\n (change)=\"onChange($event)\">\n\n @for(option of model.options$ | async; track option.value) {\n <mat-button-toggle [value]=\"option.value\">{{option.label}}</mat-button-toggle>\n }\n </mat-button-toggle-group>\n</div>", styles: [".dynamic-button-toggles-wrapper label{font-size:var(--mdc-typography-body2-font-size, 14px)}.dynamic-button-toggles-wrapper label.above{display:block;margin-bottom:8px}.dynamic-button-toggles-wrapper label.before{display:inline-block;margin-right:8px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatFormFieldModule }] }); }
|
|
17
17
|
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicButtonTogglesComponent, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
|
-
args: [{ standalone: true, imports: [
|
|
20
|
+
args: [{ standalone: true, imports: [NgIf, NgClass, MatButtonToggleModule, ReactiveFormsModule, AsyncPipe, MatFormFieldModule], selector: 'dynamic-button-toggles', template: "<div class=\"dynamic-button-toggles-wrapper\"\n [formGroup]=\"group\">\n <label *ngIf=\"model.label\"\n [ngClass]=\"model.fieldLabelPosition\">{{model.label}}</label>\n <mat-button-toggle-group [id]=\"id\"\n [formControlName]=\"model.name\"\n [multiple]=\"model.multiple\"\n [vertical]=\"model.vertical\"\n (change)=\"onChange($event)\">\n\n @for(option of model.options$ | async; track option.value) {\n <mat-button-toggle [value]=\"option.value\">{{option.label}}</mat-button-toggle>\n }\n </mat-button-toggle-group>\n</div>", styles: [".dynamic-button-toggles-wrapper label{font-size:var(--mdc-typography-body2-font-size, 14px)}.dynamic-button-toggles-wrapper label.above{display:block;margin-bottom:8px}.dynamic-button-toggles-wrapper label.before{display:inline-block;margin-right:8px}\n"] }]
|
|
21
21
|
}], propDecorators: { model: [{
|
|
22
22
|
type: Input
|
|
23
23
|
}], group: [{
|
|
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
25
25
|
}], change: [{
|
|
26
26
|
type: Output
|
|
27
27
|
}] } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvYnV0dG9uLXRvZ2dsZXMvZHluYW1pYy1idXR0b24tdG9nZ2xlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQXlCLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFVcEYsTUFBTSxPQUFPLDZCQUE4QixTQUFRLG9CQUFvQjtJQVB2RTs7UUFXWSxXQUFNLEdBQXdDLElBQUksWUFBWSxFQUFFLENBQUM7S0FDNUU7K0dBTFksNkJBQTZCO21HQUE3Qiw2QkFBNkIsb0xDZjFDLDRpQkFjTSx1VERKTSxJQUFJLDZGQUFFLE9BQU8sbUZBQUUscUJBQXFCLHNvQkFBRSxtQkFBbUIsK2tCQUFFLFNBQVMsNkNBQUUsa0JBQWtCOzs0RkFLdkYsNkJBQTZCO2tCQVB6QyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFlBQ3pGLHdCQUF3Qjs4QkFLekIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVDaGFuZ2UsIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkQmFzZSB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1iYXNlJztcbmltcG9ydCB7IER5bmFtaWNCdXR0b25Ub2dnbGVzIH0gZnJvbSAnLi9keW5hbWljLWJ1dHRvbi10b2dnbGVzLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBOZ0NsYXNzLCBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEFzeW5jUGlwZSwgTWF0Rm9ybUZpZWxkTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWJ1dHRvbi10b2dnbGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtYnV0dG9uLXRvZ2dsZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWJ1dHRvbi10b2dnbGVzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0J1dHRvblRvZ2dsZXNDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkQmFzZSB7XG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY0J1dHRvblRvZ2dsZXM7XG4gIEBJbnB1dCgpIGdyb3VwITogVW50eXBlZEZvcm1Hcm91cDtcblxuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8TWF0QnV0dG9uVG9nZ2xlQ2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJkeW5hbWljLWJ1dHRvbi10b2dnbGVzLXdyYXBwZXJcIlxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG4gIDxsYWJlbCAqbmdJZj1cIm1vZGVsLmxhYmVsXCJcbiAgICBbbmdDbGFzc109XCJtb2RlbC5maWVsZExhYmVsUG9zaXRpb25cIj57e21vZGVsLmxhYmVsfX08L2xhYmVsPlxuICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgW2lkXT1cImlkXCJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm1vZGVsLm5hbWVcIlxuICAgIFttdWx0aXBsZV09XCJtb2RlbC5tdWx0aXBsZVwiXG4gICAgW3ZlcnRpY2FsXT1cIm1vZGVsLnZlcnRpY2FsXCJcbiAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIj5cblxuICAgIEBmb3Iob3B0aW9uIG9mIG1vZGVsLm9wdGlvbnMkIHwgYXN5bmM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+e3tvcHRpb24ubGFiZWx9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgfVxuICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuPC9kaXY+Il19
|
|
@@ -10,10 +10,10 @@ export class DynamicCheckboxComponent extends DynamicFormFieldBase {
|
|
|
10
10
|
super(...arguments);
|
|
11
11
|
this.change = new EventEmitter();
|
|
12
12
|
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DynamicCheckboxComponent, isStandalone: true, selector: "dynamic-checkbox", inputs: { model: "model", group: "group" }, outputs: { change: "change" }, usesInheritance: true, ngImport: i0, template: "<ng-container [formGroup]=\"group\">\n <mat-checkbox [checked]=\"model.checked\"\n [formControlName]=\"model.name\"\n [indeterminate]=\"model.indeterminate\"\n [labelPosition]=\"model.labelPosition\"\n [name]=\"model.name\"\n [id]=\"id\"\n (change)=\"onChange($event)\">\n\n <span class=\"checkbox-label\">{{model.label}}</span>\n </mat-checkbox>\n</ng-container>", dependencies: [{ 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: MatCheckboxModule }, { kind: "component", type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
15
15
|
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicCheckboxComponent, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
18
|
args: [{ selector: 'dynamic-checkbox', standalone: true, imports: [ReactiveFormsModule, MatCheckboxModule], template: "<ng-container [formGroup]=\"group\">\n <mat-checkbox [checked]=\"model.checked\"\n [formControlName]=\"model.name\"\n [indeterminate]=\"model.indeterminate\"\n [labelPosition]=\"model.labelPosition\"\n [name]=\"model.name\"\n [id]=\"id\"\n (change)=\"onChange($event)\">\n\n <span class=\"checkbox-label\">{{model.label}}</span>\n </mat-checkbox>\n</ng-container>" }]
|
|
19
19
|
}], propDecorators: { model: [{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NgIf } from '@angular/common';
|
|
2
2
|
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatButtonModule } from '@angular/material/button';
|
|
@@ -33,12 +33,12 @@ export class DynamicInputComponent extends DynamicFormFieldBase {
|
|
|
33
33
|
}
|
|
34
34
|
this.change.emit(event);
|
|
35
35
|
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
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 <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: 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"] }] }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicInputComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
|
-
args: [{ selector: 'dynamic-input', standalone: true, imports: [NgIf,
|
|
41
|
+
args: [{ selector: 'dynamic-input', standalone: true, imports: [NgIf, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule], 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 <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"] }]
|
|
42
42
|
}], propDecorators: { input: [{
|
|
43
43
|
type: ViewChild,
|
|
44
44
|
args: [MatInput, { static: true }]
|
|
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
49
49
|
}], change: [{
|
|
50
50
|
type: Output
|
|
51
51
|
}] } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvaW5wdXQvZHluYW1pYy1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7OztBQVdwRixNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBUC9EOztRQWFZLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztLQXNCOUQ7SUFwQkMsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDeEQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFvQztRQUNsRCx3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUE4QixDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0EzQlUscUJBQXFCO21HQUFyQixxQkFBcUIsMkxBQ3JCLFFBQVEscUZDbkJyQix3cENBc0NpQixzRkR0QkwsSUFBSSw0RkFBRSxtQkFBbUIsNC9CQUFFLGtCQUFrQixpdUJBQUUsY0FBYywwV0FBRSxlQUFlLDJJQUFFLGFBQWE7OzRGQUU1RixxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0UsZUFBZSxjQUdiLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQzs4QkFHakUsS0FBSztzQkFBM0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUU1QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0LCBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLWZpZWxkLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEeW5hbWljSW5wdXQgfSBmcm9tICcuL2R5bmFtaWMtaW5wdXQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkeW5hbWljLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICdkeW5hbWljLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbJ21hdC1mb3JtLWZpZWxkIHt3aWR0aDogMTAwJTt9J10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNJbnB1dENvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRCYXNlIHtcbiAgQFZpZXdDaGlsZChNYXRJbnB1dCwgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXQhOiBNYXRJbnB1dDtcblxuICBASW5wdXQoKSBtb2RlbCE6IER5bmFtaWNJbnB1dDtcbiAgQElucHV0KCkgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtRmllbGRFdmVudD4oKTtcblxuICBnZXQgdmFsdWVDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlucHV0Py52YWx1ZSA/IHRoaXMuaW5wdXQudmFsdWUubGVuZ3RoIDogMDtcbiAgfVxuXG4gIGdldCBtYXhDb3VudFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy52YWx1ZUNvdW50fSAvICR7dGhpcy5tb2RlbC5tYXhMZW5ndGh9YDtcbiAgfVxuXG4gIGdldCBzaG93Q2xlYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5jb250cm9sLnZhbHVlICYmICF0aGlzLmNvbnRyb2wuZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50IHwgRHluYW1pY0Zvcm1GaWVsZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gSWdub3JlIHRoZSBuYXRpdmUgSFRNTCA1IGNoYW5nZSBldmVudFxuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZS5lbWl0KGV2ZW50IGFzIER5bmFtaWNGb3JtRmllbGRFdmVudCk7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbZm9ybUdyb3VwXT1cImdyb3VwXCJcbiAgW2lkXT1cImlkXCJcbiAgY29sb3I9XCJwcmltYXJ5XCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJtb2RlbC5sYWJlbFwiPnt7bW9kZWwubGFiZWx9fTwvbWF0LWxhYmVsPlxuXG4gIDxzcGFuIG1hdFRleHRQcmVmaXhcbiAgICAqbmdJZj1cIm1vZGVsLnByZWZpeFwiPnt7bW9kZWwucHJlZml4fX08L3NwYW4+XG5cbiAgPGlucHV0IG1hdElucHV0XG4gICAgW3R5cGVdPVwibW9kZWwuaW5wdXRUeXBlXCJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm1vZGVsLm5hbWVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJtb2RlbC5wbGFjZWhvbGRlclwiXG4gICAgW2F0dHIubWluXT1cIm1vZGVsLm1pblwiXG4gICAgW2F0dHIubWF4XT1cIm1vZGVsLm1heFwiXG4gICAgW2F0dHIubWluTGVuZ3RoXT1cIm1vZGVsLm1pbkxlbmd0aFwiXG4gICAgW2F0dHIubWF4TGVuZ3RoXT1cIm1vZGVsLm1heExlbmd0aFwiXG4gICAgW3BhdHRlcm5dPVwibW9kZWwucGF0dGVyblwiXG4gICAgW2F1dG9jb21wbGV0ZV09XCJtb2RlbC5hdXRvY29tcGxldGVcIlxuICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIC8+XG5cbiAgPGJ1dHRvbiBtYXRTdWZmaXhcbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICAqbmdJZj1cInNob3dDbGVhclwiXG4gICAgKGNsaWNrKT1cInJlc2V0Q29udHJvbCgpXCI+XG4gICAgPG1hdC1pY29uIGZvbnRJY29uPVwiY2xlYXJcIj48L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8bWF0LWhpbnQgKm5nSWY9XCJtb2RlbC5oaW50XCJcbiAgICBhbGlnbj1cInN0YXJ0XCI+e3ttb2RlbC5oaW50fX08L21hdC1oaW50PlxuXG4gIDxtYXQtaGludCAqbmdJZj1cIm1vZGVsLm1heExlbmd0aFwiXG4gICAgYWxpZ249XCJlbmRcIj57e21heENvdW50VGV4dH19PC9tYXQtaGludD5cblxuICBAZm9yKHZhbGlkYXRvciBvZiBtb2RlbC52YWxpZGF0b3JzOyB0cmFjayB2YWxpZGF0b3IubmFtZSkge1xuICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwibWF0LWVycm9yXCI+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImhhc0Vycm9yKHZhbGlkYXRvci5uYW1lKVwiPnt7dmFsaWRhdG9yLm1lc3NhZ2V9fTwvbWF0LWVycm9yPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgfVxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
|
|
@@ -5,6 +5,7 @@ export class DynamicInput extends DynamicFormFieldValueModel {
|
|
|
5
5
|
super(config);
|
|
6
6
|
this.type = DYNAMIC_FORM_FIELD_INPUT;
|
|
7
7
|
this.inputType = config.inputType ?? 'text';
|
|
8
|
+
this.placeholder = config.placeholder ?? config.label ?? '';
|
|
8
9
|
this.max = config.max ?? null;
|
|
9
10
|
this.min = config.min ?? null;
|
|
10
11
|
this.maxLength = typeof config.maxLength === 'number' ? config.maxLength : null;
|
|
@@ -16,4 +17,4 @@ export class DynamicInput extends DynamicFormFieldValueModel {
|
|
|
16
17
|
this.hideClearIcon = config.hideClearIcon ?? false;
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy9pbnB1dC9keW5hbWljLWlucHV0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxPQUFPLENBQUM7QUFrQmhELE1BQU0sT0FBTyxZQUFhLFNBQVEsMEJBQXlEO0lBZXpGLFlBQVksTUFBMEI7UUFDcEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSEEsU0FBSSxHQUFHLHdCQUF3QixDQUFDO1FBSzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNoRixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNoRixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQztRQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZFZhbHVlQ29uZmlnLCBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC12YWx1ZS1tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fRklFTERfSU5QVVQgPSAnaW5wdXQnO1xuXG5leHBvcnQgdHlwZSBIdG1sSW5wdXRUeXBlID0gJ3RleHQnIHwgJ251bWJlcicgfCAndGVsJyB8ICdlbWFpbCcgfCAncGFzc3dvcmQnIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ2NvbG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljSW5wdXRDb25maWcgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkVmFsdWVDb25maWc8c3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IG51bGw+IHtcbiAgaW5wdXRUeXBlPzogSHRtbElucHV0VHlwZTtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIG1heD86IG51bWJlcjtcbiAgbWluPzogbnVtYmVyO1xuICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgc3RlcD86IG51bWJlcjtcbiAgcGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cDtcbiAgYXV0b2NvbXBsZXRlPzogJ29uJyB8ICdvZmYnO1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIGhpZGVDbGVhckljb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0lucHV0IGV4dGVuZHMgRHluYW1pY0Zvcm1GaWVsZFZhbHVlTW9kZWw8c3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IG51bGw+IHtcbiAgcHVibGljIGlucHV0VHlwZTogSHRtbElucHV0VHlwZTtcbiAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXg6IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBtaW46IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBtYXhMZW5ndGg6IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBtaW5MZW5ndGg6IG51bWJlciB8IG51bGw7XG4gIHB1YmxpYyBzdGVwOiBudW1iZXIgfCBudWxsO1xuICBwdWJsaWMgcGF0dGVybjogc3RyaW5nIHwgUmVnRXhwO1xuICBwdWJsaWMgYXV0b2NvbXBsZXRlOiAnb24nIHwgJ29mZic7XG4gIHB1YmxpYyBwcmVmaXg6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBoaWRlQ2xlYXJJY29uOiBib29sZWFuO1xuXG4gIHB1YmxpYyByZWFkb25seSB0eXBlID0gRFlOQU1JQ19GT1JNX0ZJRUxEX0lOUFVUO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY0lucHV0Q29uZmlnKSB7XG4gICAgc3VwZXIoY29uZmlnKTtcblxuICAgIHRoaXMuaW5wdXRUeXBlID0gY29uZmlnLmlucHV0VHlwZSA/PyAndGV4dCc7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IGNvbmZpZy5wbGFjZWhvbGRlciA/PyBjb25maWcubGFiZWwgPz8gJyc7XG4gICAgdGhpcy5tYXggPSBjb25maWcubWF4ID8/IG51bGw7XG4gICAgdGhpcy5taW4gPSBjb25maWcubWluID8/IG51bGw7XG4gICAgdGhpcy5tYXhMZW5ndGggPSB0eXBlb2YgY29uZmlnLm1heExlbmd0aCA9PT0gJ251bWJlcicgPyBjb25maWcubWF4TGVuZ3RoIDogbnVsbDtcbiAgICB0aGlzLm1pbkxlbmd0aCA9IHR5cGVvZiBjb25maWcubWluTGVuZ3RoID09PSAnbnVtYmVyJyA/IGNvbmZpZy5taW5MZW5ndGggOiBudWxsO1xuICAgIHRoaXMuc3RlcCA9IGNvbmZpZy5zdGVwID8/IG51bGw7XG4gICAgdGhpcy5wYXR0ZXJuID0gY29uZmlnLnBhdHRlcm4gPz8gJyc7XG4gICAgdGhpcy5hdXRvY29tcGxldGUgPSBjb25maWcuYXV0b2NvbXBsZXRlID8/ICdvZmYnO1xuICAgIHRoaXMucHJlZml4ID0gY29uZmlnLnByZWZpeCA/PyBudWxsO1xuICAgIHRoaXMuaGlkZUNsZWFySWNvbiA9IGNvbmZpZy5oaWRlQ2xlYXJJY29uID8/IGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AsyncPipe, NgClass,
|
|
1
|
+
import { AsyncPipe, NgClass, NgIf } from '@angular/common';
|
|
2
2
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatRadioModule } from '@angular/material/radio';
|
|
@@ -11,12 +11,12 @@ export class DymamicRadioGroupComponent extends DynamicFormFieldBase {
|
|
|
11
11
|
super(...arguments);
|
|
12
12
|
this.change = new EventEmitter();
|
|
13
13
|
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
15
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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
16
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DymamicRadioGroupComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
19
|
-
args: [{ standalone: true, imports: [
|
|
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
20
|
}], propDecorators: { model: [{
|
|
21
21
|
type: Input
|
|
22
22
|
}], group: [{
|
|
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
24
24
|
}], change: [{
|
|
25
25
|
type: Output
|
|
26
26
|
}] } });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yYWRpby1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvcmFkaW8tZ3JvdXAvZHluYW1pYy1yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvcmFkaW8tZ3JvdXAvZHluYW1pYy1yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQWtCLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7O0FBVXBGLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxvQkFBb0I7SUFQcEU7O1FBV1ksV0FBTSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0tBQ3ZEOytHQUxZLDBCQUEwQjttR0FBMUIsMEJBQTBCLGlMQ2R2QyxzaEJBY00sc1NETE0sSUFBSSw2RkFBRSxPQUFPLG1GQUFFLG1CQUFtQixtbEJBQUUsY0FBYyxnbEJBQUUsU0FBUzs7NEZBSzVELDBCQUEwQjtrQkFQdEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxTQUFTLENBQUMsWUFDOUQscUJBQXFCOzhCQUt0QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFJhZGlvQ2hhbmdlLCBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgRHluYW1pY1JhZGlvR3JvdXAgfSBmcm9tICcuL2R5bmFtaWMtcmFkaW8tZ3JvdXAubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE5nQ2xhc3MsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdFJhZGlvTW9kdWxlLCBBc3luY1BpcGVdLFxuICBzZWxlY3RvcjogJ2R5bmFtaWMtcmFkaW8tZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtcmFkaW8tZ3JvdXAuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEeW1hbWljUmFkaW9Hcm91cENvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRCYXNlIHtcbiAgQElucHV0KCkgbW9kZWwhOiBEeW5hbWljUmFkaW9Hcm91cDtcbiAgQElucHV0KCkgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1hdFJhZGlvQ2hhbmdlPigpO1xufVxuIiwiPGRpdiBjbGFzcz1cImR5bmFtaWMtcmFkaW8tZ3JvdXAtd3JhcHBlclwiXG4gIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgPGxhYmVsICpuZ0lmPVwibW9kZWwubGFiZWxcIj57e21vZGVsLmxhYmVsfX08L2xhYmVsPlxuICA8bWF0LXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbE5hbWVdPVwibW9kZWwubmFtZVwiXG4gICAgY2xhc3M9XCJyYWRpby1ncm91cFwiXG4gICAgW25nQ2xhc3NdPVwieydpbmxpbmUnOiBtb2RlbC5pbmxpbmV9XCJcbiAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIj5cbiAgICBAZm9yKG9wdGlvbiBvZiBtb2RlbC5vcHRpb25zJCB8IGFzeW5jOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICA8bWF0LXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIm1vZGVsLmxhYmVsUG9zaXRpb25cIj5cbiAgICAgIHt7b3B0aW9uLmxhYmVsfX1cbiAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgfVxuICA8L21hdC1yYWRpby1ncm91cD5cbjwvZGl2PiJdfQ==
|
|
@@ -4,10 +4,10 @@ import { DynamicFormFieldBase } from '../../models/classes/dynamic-form-field-ba
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/forms";
|
|
6
6
|
export class DynamicReadonlyComponent extends DynamicFormFieldBase {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
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
9
|
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicReadonlyComponent, decorators: [{
|
|
11
11
|
type: Component,
|
|
12
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
13
|
}], propDecorators: { model: [{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AsyncPipe,
|
|
1
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
|
2
2
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatOptionModule } from '@angular/material/core';
|
|
@@ -17,15 +17,12 @@ export class DynamicSelectComponent extends DynamicFormFieldBase {
|
|
|
17
17
|
super(...arguments);
|
|
18
18
|
this.change = new EventEmitter();
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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 <mat-option *ngFor=\"let option of options; trackBy: trackByFn\"\n [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n </mat-select>\n </ng-container>\n\n <ng-template #nativeSelect>\n <select matNativeControl\n (selectionchange)=\"onChange($event)\">\n <option *ngFor=\"let option of options\"\n [value]=\"option.value\">\n {{option.label}}\n </option>\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 <mat-optgroup *ngFor=\"let group of groupedOptions\"\n [label]=\"group.name\">\n <mat-option *ngFor=\"let option of group.options; trackBy: trackByFn\"\n [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n </mat-optgroup>\n </mat-select>\n </ng-container>\n\n <ng-template #nativeSelectGrouped>\n <select matNativeControl\n (selectionchange)=\"onChange($event)\">\n <optgroup *ngFor=\"let group of groupedOptions\"\n [label]=\"group.name\">\n <option *ngFor=\"let option of group.options\"\n [value]=\"option.value\">\n {{option.label}}\n </option>\n </optgroup>\n </select>\n </ng-template>\n </ng-container>\n\n <mat-hint *ngIf=\"model.hint\"\n align=\"start\">{{model.hint}}</mat-hint>\n\n <ng-container *ngFor=\"let validator of model.validators\"\n ngProjectAs=\"mat-error\">\n <mat-error *ngIf=\"hasError(validator.name)\">{{validator.message}}</mat-error>\n </ng-container>\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: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatOptgroup, selector: "mat-optgroup", inputs: ["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"] }] }); }
|
|
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"] }] }); }
|
|
25
22
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicSelectComponent, decorators: [{
|
|
27
24
|
type: Component,
|
|
28
|
-
args: [{ standalone: true, imports: [NgIf,
|
|
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"] }]
|
|
29
26
|
}], propDecorators: { model: [{
|
|
30
27
|
type: Input
|
|
31
28
|
}], group: [{
|
|
@@ -33,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
33
30
|
}], change: [{
|
|
34
31
|
type: Output
|
|
35
32
|
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL2NvbnRyb2xzL3NlbGVjdC9keW5hbWljLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvc2VsZWN0L2R5bmFtaWMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQW1CLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7O0FBVXBGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxvQkFBb0I7SUFQaEU7O1FBV1ksV0FBTSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO0tBQ3hEOytHQUxZLHNCQUFzQjttR0FBdEIsc0JBQXNCLDRLQ2pCbkMsKzRFQXlFaUIsb0lEN0RMLElBQUksNEZBQUUsa0JBQWtCLCtkQUFFLG1CQUFtQixneUJBQUUsZUFBZSxvekJBQUUsZUFBZSwwQkFBRSxTQUFTLDZDQUFFLGNBQWM7OzRGQUt6RyxzQkFBc0I7a0JBUGxDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxZQUMzRyxnQkFBZ0I7OEJBS2pCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlLCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEJhc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhc3Nlcy9keW5hbWljLWZvcm0tZmllbGQtYmFzZSc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0IH0gZnJvbSAnLi9keW5hbWljLXNlbGVjdC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRTZWxlY3RNb2R1bGUsIE1hdE9wdGlvbk1vZHVsZSwgQXN5bmNQaXBlLCBNYXRJbnB1dE1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLXNlbGVjdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUZpZWxkQmFzZSB7XG4gIEBJbnB1dCgpIG1vZGVsITogRHluYW1pY1NlbGVjdDxzdHJpbmc+O1xuICBASW5wdXQoKSBncm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWF0U2VsZWN0Q2hhbmdlPigpO1xufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICBbaWRdPVwiaWRcIlxuICBjb2xvcj1cInByaW1hcnlcIj5cbiAgPG1hdC1sYWJlbD57e21vZGVsLmxhYmVsfX08L21hdC1sYWJlbD5cblxuICA8IS0tIFRlbXBsYXRlIGZvciBzZWxlY3Qgd2l0aG91dCBncm91cGVkIG9wdGlvbnMgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5vcHRpb25zJCB8IGFzeW5jIGFzIG9wdGlvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVsLm5hdGl2ZSBlbHNlIG5hdGl2ZVNlbGVjdFwiPlxuICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJtb2RlbC5uYW1lXCJcbiAgICAgICAgW211bHRpcGxlXT1cIm1vZGVsLm11bHRpcGxlXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIEBmb3Iob3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAge3tvcHRpb24ubGFiZWx9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbmF0aXZlU2VsZWN0PlxuICAgICAgPHNlbGVjdCBtYXROYXRpdmVDb250cm9sXG4gICAgICAgIChzZWxlY3Rpb25jaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICBAZm9yKG9wdGlvbiBvZiBvcHRpb25zOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAge3tvcHRpb24ubGFiZWx9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgfVxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBUZW1wbGF0ZSBmb3Igc2VsZWN0IHdpdGggZ3JvdXBlZCBvcHRpb25zIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuZ3JvdXBlZE9wdGlvbnMkIHwgYXN5bmMgYXMgZ3JvdXBlZE9wdGlvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVsLm5hdGl2ZSBlbHNlIG5hdGl2ZVNlbGVjdEdyb3VwZWRcIj5cbiAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwibW9kZWwubmFtZVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICBAZm9yKGdyb3VwIG9mIGdyb3VwZWRPcHRpb25zOyB0cmFjayBncm91cC5uYW1lKSB7XG4gICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cImdyb3VwLm5hbWVcIj5cbiAgICAgICAgICBAZm9yKG9wdGlvbiBvZiBncm91cC5vcHRpb25zOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICB7e29wdGlvbi5sYWJlbH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgIH1cblxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNuYXRpdmVTZWxlY3RHcm91cGVkPlxuICAgICAgPHNlbGVjdCBtYXROYXRpdmVDb250cm9sXG4gICAgICAgIChzZWxlY3Rpb25jaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICBAZm9yKGdyb3VwIG9mIGdyb3VwZWRPcHRpb25zOyB0cmFjayBncm91cC5uYW1lKSB7PVxuICAgICAgICA8b3B0Z3JvdXAgW2xhYmVsXT1cImdyb3VwLm5hbWVcIj5cbiAgICAgICAgICBAZm9yKG9wdGlvbiBvZiBncm91cC5vcHRpb25zOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgIHt7b3B0aW9uLmxhYmVsfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvb3B0Z3JvdXA+XG4gICAgICAgIH1cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxtYXQtaGludCAqbmdJZj1cIm1vZGVsLmhpbnRcIlxuICAgIGFsaWduPVwic3RhcnRcIj57e21vZGVsLmhpbnR9fTwvbWF0LWhpbnQ+XG5cbiAgQGZvcih2YWxpZGF0b3Igb2YgbW9kZWwudmFsaWRhdG9yczsgdHJhY2sgdmFsaWRhdG9yLm5hbWUpIHtcbiAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cIm1hdC1lcnJvclwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJoYXNFcnJvcih2YWxpZGF0b3IubmFtZSlcIj57e3ZhbGlkYXRvci5tZXNzYWdlfX08L21hdC1lcnJvcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIH1cbjwvbWF0LWZvcm0tZmllbGQ+Il19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NgIf } from '@angular/common';
|
|
2
2
|
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
@@ -27,12 +27,12 @@ export class DynamicTextareaComponent extends DynamicFormFieldBase {
|
|
|
27
27
|
}
|
|
28
28
|
this.change.emit(event);
|
|
29
29
|
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicTextareaComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
|
-
args: [{ standalone: true, imports: [NgIf,
|
|
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
36
|
}], propDecorators: { textarea: [{
|
|
37
37
|
type: ViewChild,
|
|
38
38
|
args: [MatInput, { static: true }]
|
|
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
43
43
|
}], change: [{
|
|
44
44
|
type: Output
|
|
45
45
|
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvdGV4dGFyZWEvZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvY29udHJvbHMvdGV4dGFyZWEvZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7OztBQVdwRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsb0JBQW9CO0lBUGxFOztRQWFZLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztLQWtCOUQ7SUFoQkMsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFvQztRQUNsRCx3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUE4QixDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0F2QlUsd0JBQXdCO21HQUF4Qix3QkFBd0IsaU1BQ3hCLFFBQVEscUZDakJyQixnL0JBOEJpQixzRkRuQkwsSUFBSSw0RkFBRSxrQkFBa0IsK2RBQUUsY0FBYyx5a0JBQUUsbUJBQW1COzs0RkFLNUQsd0JBQXdCO2tCQVBwQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLENBQUMsWUFDOUQsa0JBQWtCOzhCQUtXLFFBQVE7c0JBQTlDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFNUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0LCBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRCYXNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLWZpZWxkLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEeW5hbWljVGV4dGFyZWEgfSBmcm9tICcuL2R5bmFtaWMtdGV4dGFyZWEubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2R5bmFtaWMtdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogWydtYXQtZm9ybS1maWVsZCB7d2lkdGg6IDEwMCU7fSddXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRCYXNlIHtcbiAgQFZpZXdDaGlsZChNYXRJbnB1dCwgeyBzdGF0aWM6IHRydWUgfSkgdGV4dGFyZWEhOiBNYXRJbnB1dDtcblxuICBASW5wdXQoKSBtb2RlbCE6IER5bmFtaWNUZXh0YXJlYTtcbiAgQElucHV0KCkgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtRmllbGRFdmVudD4oKTtcblxuICBnZXQgdmFsdWVDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRleHRhcmVhPy52YWx1ZSA/IHRoaXMudGV4dGFyZWEudmFsdWUubGVuZ3RoIDogMDtcbiAgfVxuXG4gIGdldCBtYXhDb3VudFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy52YWx1ZUNvdW50fSAvICR7dGhpcy5tb2RlbC5tYXhMZW5ndGh9YDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZShldmVudDogRXZlbnQgfCBEeW5hbWljRm9ybUZpZWxkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBJZ25vcmUgdGhlIG5hdGl2ZSBIVE1MIDUgY2hhbmdlIGV2ZW50XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlLmVtaXQoZXZlbnQgYXMgRHluYW1pY0Zvcm1GaWVsZEV2ZW50KTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICBbaWRdPVwiaWRcIlxuICBjb2xvcj1cInByaW1hcnlcIj5cbiAgPG1hdC1sYWJlbCAqbmdJZj1cIm1vZGVsLmxhYmVsXCI+e3ttb2RlbC5sYWJlbH19PC9tYXQtbGFiZWw+XG5cbiAgPHRleHRhcmVhIG1hdElucHV0XG4gICAgW2Nka1RleHRhcmVhQXV0b3NpemVdPVwibW9kZWwucmVzaXplXCJcbiAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cIm1vZGVsLnJvd3NcIlxuICAgIFtjZGtBdXRvc2l6ZU1heFJvd3NdPVwibW9kZWwucmVzaXplTWF4Um93c1wiXG4gICAgW2lkXT1cImlkXCJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm1vZGVsLm5hbWVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJtb2RlbC5wbGFjZWhvbGRlclwiXG4gICAgW2F0dHIubWluTGVuZ3RoXT1cIm1vZGVsLm1pbkxlbmd0aFwiXG4gICAgW2F0dHIubWF4TGVuZ3RoXT1cIm1vZGVsLm1heExlbmd0aFwiXG4gICAgW3Jvd3NdPVwibW9kZWwucm93c1wiXG4gICAgW2F1dG9jb21wbGV0ZV09XCJtb2RlbC5hdXRvY29tcGxldGVcIlxuICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxuICA8L3RleHRhcmVhPlxuXG4gIDxtYXQtaGludCAqbmdJZj1cIm1vZGVsLmhpbnRcIlxuICAgIGFsaWduPVwic3RhcnRcIj57e21vZGVsLmhpbnR9fTwvbWF0LWhpbnQ+XG5cbiAgPG1hdC1oaW50ICpuZ0lmPVwibW9kZWwubWF4TGVuZ3RoXCJcbiAgICBhbGlnbj1cImVuZFwiPnt7bWF4Q291bnRUZXh0fX08L21hdC1oaW50PlxuXG4gIEBmb3IodmFsaWRhdG9yIG9mIG1vZGVsLnZhbGlkYXRvcnM7IHRyYWNrIHZhbGlkYXRvci5uYW1lKSB7XG4gIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJtYXQtZXJyb3JcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaGFzRXJyb3IodmFsaWRhdG9yLm5hbWUpXCI+e3t2YWxpZGF0b3IubWVzc2FnZX19PC9tYXQtZXJyb3I+XG4gIDwvbmctY29udGFpbmVyPlxuICB9XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
|
|
@@ -4,6 +4,7 @@ export class DynamicTextarea extends DynamicFormFieldValueModel {
|
|
|
4
4
|
constructor(config) {
|
|
5
5
|
super(config);
|
|
6
6
|
this.type = DYNAMIC_FORM_FIELD_TEXTAREA;
|
|
7
|
+
this.placeholder = config.placeholder ?? '';
|
|
7
8
|
this.minLength = config.minLength ?? 0;
|
|
8
9
|
this.maxLength = config.minLength ?? null;
|
|
9
10
|
this.autocomplete = config.autocomplete ?? 'off';
|
|
@@ -12,4 +13,4 @@ export class DynamicTextarea extends DynamicFormFieldValueModel {
|
|
|
12
13
|
this.resizeMaxRows = config.resizeMaxRows ?? null;
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10ZXh0YXJlYS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1keW5hbWljLWZvcm0vc3JjL2xpYi9jb250cm9scy90ZXh0YXJlYS9keW5hbWljLXRleHRhcmVhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0IsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5SCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxVQUFVLENBQUM7QUFhdEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsMEJBQWdEO0lBV25GLFlBQVksTUFBNkI7UUFDdkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSEEsU0FBSSxHQUFHLDJCQUEyQixDQUFDO1FBS2pELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7SUFDcEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZFZhbHVlQ29uZmlnLCBEeW5hbWljRm9ybUZpZWxkVmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC12YWx1ZS1tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fRklFTERfVEVYVEFSRUEgPSAndGV4dGFyZWEnO1xuZXhwb3J0IHR5cGUgRHluYW1pY1RleHRhcmVhVmFsdWUgPSBzdHJpbmcgfCBudWxsO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNUZXh0YXJlYUNvbmZpZyBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRWYWx1ZUNvbmZpZzxEeW5hbWljVGV4dGFyZWFWYWx1ZT4ge1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIGF1dG9jb21wbGV0ZT86ICdvbicgfCAnb2ZmJztcbiAgcm93cz86IG51bWJlcjtcbiAgcmVzaXplPzogYm9vbGVhbjtcbiAgcmVzaXplTWF4Um93cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNUZXh0YXJlYSBleHRlbmRzIER5bmFtaWNGb3JtRmllbGRWYWx1ZU1vZGVsPER5bmFtaWNUZXh0YXJlYVZhbHVlPiB7XG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBwdWJsaWMgbWluTGVuZ3RoOiBudW1iZXIgfCBudWxsO1xuICBwdWJsaWMgbWF4TGVuZ3RoOiBudW1iZXIgfCBudWxsO1xuICBwdWJsaWMgYXV0b2NvbXBsZXRlOiAnb24nIHwgJ29mZic7XG4gIHB1YmxpYyByb3dzOiBudW1iZXI7XG4gIHB1YmxpYyByZXNpemU6IGJvb2xlYW47XG4gIHB1YmxpYyByZXNpemVNYXhSb3dzOiBudW1iZXIgfCBudWxsO1xuXG4gIHB1YmxpYyByZWFkb25seSB0eXBlID0gRFlOQU1JQ19GT1JNX0ZJRUxEX1RFWFRBUkVBO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY1RleHRhcmVhQ29uZmlnKSB7XG4gICAgc3VwZXIoY29uZmlnKTtcblxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSBjb25maWcucGxhY2Vob2xkZXIgPz8gJyc7XG4gICAgdGhpcy5taW5MZW5ndGggPSBjb25maWcubWluTGVuZ3RoID8/IDA7XG4gICAgdGhpcy5tYXhMZW5ndGggPSBjb25maWcubWluTGVuZ3RoID8/IG51bGw7XG4gICAgdGhpcy5hdXRvY29tcGxldGUgPSBjb25maWcuYXV0b2NvbXBsZXRlID8/ICdvZmYnO1xuICAgIHRoaXMucm93cyA9IGNvbmZpZy5yb3dzID8/IDM7XG4gICAgdGhpcy5yZXNpemUgPSBjb25maWcucmVzaXplID8/IHRydWU7XG4gICAgdGhpcy5yZXNpemVNYXhSb3dzID0gY29uZmlnLnJlc2l6ZU1heFJvd3MgPz8gbnVsbDtcbiAgfVxufVxuIl19
|
|
@@ -25,4 +25,4 @@ export class DynamicFormFieldBase {
|
|
|
25
25
|
return this.control.hasError(name);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHluYW1pYy1mb3JtL3NyYy9saWIvbW9kZWxzL2NsYXNzZXMvZHluYW1pYy1mb3JtLWZpZWxkLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxPQUFnQixvQkFBb0I7SUFNeEMsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFjO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUZpZWxkTW9kZWwgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1maWVsZC1tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0Zvcm1GaWVsZCB7XG4gIGdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBtb2RlbDogRHluYW1pY0Zvcm1GaWVsZE1vZGVsO1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY0Zvcm1GaWVsZEJhc2UgaW1wbGVtZW50cyBEeW5hbWljRm9ybUZpZWxkIHtcbiAgZ3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBtb2RlbCE6IER5bmFtaWNGb3JtRmllbGRNb2RlbDtcblxuICBjaGFuZ2UhOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5pZCA/PyB0aGlzLm1vZGVsLm5hbWU7XG4gIH1cblxuICBnZXQgY29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmdyb3VwLmdldCh0aGlzLm1vZGVsLm5hbWUpO1xuXG4gICAgaWYgKCFjdHJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVkIEZvcm1Hcm91cCBkb2VzIG5vdCBjb250YWluIGEgY29udHJvbCB3aXRoIHRoZSBuYW1lICR7dGhpcy5tb2RlbC5uYW1lfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3RybDtcbiAgfVxuXG4gIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wudmFsaWQ7XG4gIH1cblxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuaW52YWxpZDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZShldmVudDogdW5rbm93bikge1xuICAgIHRoaXMuY2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0Q29udHJvbCgpIHtcbiAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm1vZGVsLm5hbWUpPy5yZXNldCgpO1xuICB9XG5cbiAgcHVibGljIGhhc0Vycm9yKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuaGFzRXJyb3IobmFtZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { signal } from '@angular/core';
|
|
1
2
|
import { BehaviorSubject } from 'rxjs';
|
|
2
3
|
export class DynamicFormFieldModel {
|
|
3
4
|
constructor(config) {
|
|
4
|
-
this.hidden = config.hidden ?? false;
|
|
5
5
|
this.id = config.id ?? config.name;
|
|
6
6
|
this.width = config.width ?? 100;
|
|
7
7
|
this.label = config.label ?? null;
|
|
@@ -13,6 +13,7 @@ export class DynamicFormFieldModel {
|
|
|
13
13
|
// Create a disabled Subject and Observable to change the state of the FormControl inside DynamicFormFieldComponent by subscribing to disabledChange
|
|
14
14
|
this.disabled$ = new BehaviorSubject(config.disabled ?? false);
|
|
15
15
|
this.disabledChange = this.disabled$.asObservable();
|
|
16
|
+
this.$hidden = signal(config.hidden ?? false);
|
|
16
17
|
}
|
|
17
18
|
get disabled() {
|
|
18
19
|
return this.disabled$.getValue();
|
|
@@ -20,5 +21,11 @@ export class DynamicFormFieldModel {
|
|
|
20
21
|
set disabled(disable) {
|
|
21
22
|
this.disabled$.next(disable);
|
|
22
23
|
}
|
|
24
|
+
get hidden() {
|
|
25
|
+
return this.$hidden();
|
|
26
|
+
}
|
|
27
|
+
set hidden(hidden) {
|
|
28
|
+
this.$hidden.set(hidden);
|
|
29
|
+
}
|
|
23
30
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWZpZWxkLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWR5bmFtaWMtZm9ybS9zcmMvbGliL21vZGVscy9jbGFzc2VzL2R5bmFtaWMtZm9ybS1maWVsZC1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBS25ELE1BQU0sT0FBZ0IscUJBQXFCO0lBZ0J6QyxZQUFZLE1BQThCO1FBQ3hDLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQztRQUUxQyxvSkFBb0o7UUFDcEosSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLE9BQWdCO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBZTtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2R5bmFtaWMtZm9ybS1maWVsZC1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtRmllbGRSZWxhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLWZpZWxkLXJlbGF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybVZhbGlkYXRvciB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLXZhbGlkYXRvci5pbnRlcmZhY2UnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY0Zvcm1GaWVsZE1vZGVsIHtcbiAgcHVibGljIGlkOiBzdHJpbmc7XG4gIHB1YmxpYyB3aWR0aDogbnVtYmVyO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBoaW50OiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgdmFsaWRhdG9yczogRHluYW1pY0Zvcm1WYWxpZGF0b3JbXTtcbiAgcHVibGljIHVwZGF0ZU9uOiAnc3VibWl0JyB8ICdibHVyJyB8ICdjaGFuZ2UnO1xuICBwdWJsaWMgcmVsYXRpb25zOiBEeW5hbWljRm9ybUZpZWxkUmVsYXRpb25bXSB8IG51bGw7XG4gIHB1YmxpYyBkaXNhYmxlZENoYW5nZTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBhYnN0cmFjdCByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNhYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSAkaGlkZGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IER5bmFtaWNGb3JtRmllbGRDb25maWcpIHtcbiAgICB0aGlzLmlkID0gY29uZmlnLmlkID8/IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMud2lkdGggPSBjb25maWcud2lkdGggPz8gMTAwO1xuICAgIHRoaXMubGFiZWwgPSBjb25maWcubGFiZWwgPz8gbnVsbDtcbiAgICB0aGlzLm5hbWUgPSBjb25maWcubmFtZTtcbiAgICB0aGlzLmhpbnQgPSBjb25maWcuaGludCA/PyBudWxsO1xuICAgIHRoaXMudmFsaWRhdG9ycyA9IGNvbmZpZy52YWxpZGF0b3JzID8/IFtdO1xuICAgIHRoaXMudXBkYXRlT24gPSBjb25maWcudXBkYXRlT24gPz8gJ2NoYW5nZSc7XG4gICAgdGhpcy5yZWxhdGlvbnMgPSBjb25maWcucmVsYXRpb25zID8/IG51bGw7XG5cbiAgICAvLyBDcmVhdGUgYSBkaXNhYmxlZCBTdWJqZWN0IGFuZCBPYnNlcnZhYmxlIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIEZvcm1Db250cm9sIGluc2lkZSBEeW5hbWljRm9ybUZpZWxkQ29tcG9uZW50IGJ5IHN1YnNjcmliaW5nIHRvIGRpc2FibGVkQ2hhbmdlXG4gICAgdGhpcy5kaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGNvbmZpZy5kaXNhYmxlZCA/PyBmYWxzZSk7XG4gICAgdGhpcy5kaXNhYmxlZENoYW5nZSA9IHRoaXMuZGlzYWJsZWQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgdGhpcy4kaGlkZGVuID0gc2lnbmFsKGNvbmZpZy5oaWRkZW4gPz8gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG4gIHNldCBkaXNhYmxlZChkaXNhYmxlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dChkaXNhYmxlKTtcbiAgfVxuXG4gIGdldCBoaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuJGhpZGRlbigpO1xuICB9XG4gIHNldCBoaWRkZW4oaGlkZGVuOiBib29sZWFuKSB7XG4gICAgdGhpcy4kaGlkZGVuLnNldChoaWRkZW4pO1xuICB9XG59XG4iXX0=
|