@3kles/kles-material-dynamicforms 1.1.20 → 14.0.2
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/esm2020/3kles-kles-material-dynamicforms.mjs +5 -0
- package/esm2020/lib/decorators/component.decorator.mjs +7 -0
- package/esm2020/lib/directive/dynamic-component.directive.mjs +44 -0
- package/esm2020/lib/directive/dynamic-field.directive.mjs +50 -0
- package/esm2020/lib/dynamic-form.component.mjs +247 -0
- package/esm2020/lib/enums/type.enum.mjs +19 -0
- package/esm2020/lib/fields/array.component.mjs +53 -0
- package/esm2020/lib/fields/badge.component.mjs +40 -0
- package/esm2020/lib/fields/button-form.component.mjs +44 -0
- package/esm2020/lib/fields/button-submit.component.mjs +38 -0
- package/esm2020/lib/fields/button-toogle-group.component.mjs +51 -0
- package/esm2020/lib/fields/buttonchecker-form.component.mjs +44 -0
- package/esm2020/lib/fields/buttonfile-form.component.mjs +42 -0
- package/esm2020/lib/fields/checkbox.component.mjs +50 -0
- package/esm2020/lib/fields/chip.component.mjs +41 -0
- package/esm2020/lib/fields/color.component.mjs +84 -0
- package/esm2020/lib/fields/date.component.mjs +52 -0
- package/esm2020/lib/fields/field.abstract.mjs +66 -0
- package/esm2020/lib/fields/group.component.mjs +44 -0
- package/esm2020/lib/fields/icon.component.mjs +28 -0
- package/esm2020/lib/fields/input.clearable.component.mjs +112 -0
- package/esm2020/lib/fields/input.component.mjs +158 -0
- package/esm2020/lib/fields/label.component.mjs +40 -0
- package/esm2020/lib/fields/line-break.component.mjs +23 -0
- package/esm2020/lib/fields/link.component.mjs +32 -0
- package/esm2020/lib/fields/list-field.component.mjs +114 -0
- package/esm2020/lib/fields/radio.component.mjs +49 -0
- package/esm2020/lib/fields/select.component.mjs +211 -0
- package/esm2020/lib/fields/select.search.component.mjs +307 -0
- package/esm2020/lib/fields/selection-list.component.mjs +63 -0
- package/esm2020/lib/fields/slide-toggle.component.mjs +43 -0
- package/esm2020/lib/fields/text.component.mjs +40 -0
- package/esm2020/lib/fields/textarea.component.mjs +56 -0
- package/esm2020/lib/forms/button-control.component.mjs +115 -0
- package/esm2020/lib/forms/buttonchecker-control.component.mjs +85 -0
- package/esm2020/lib/forms/buttonfile-control.component.mjs +118 -0
- package/esm2020/lib/interfaces/component.interface.mjs +2 -0
- package/esm2020/lib/interfaces/directive.interface.mjs +2 -0
- package/esm2020/lib/interfaces/field.config.interface.mjs +2 -0
- package/esm2020/lib/interfaces/field.interface.mjs +2 -0
- package/esm2020/lib/interfaces/validator.interface.mjs +2 -0
- package/esm2020/lib/kles-material-dynamicforms.module.mjs +191 -0
- package/esm2020/lib/matcher/form-error.matcher.mjs +16 -0
- package/esm2020/lib/modules/material.module.mjs +278 -0
- package/esm2020/lib/pipe/array.pipe.mjs +22 -0
- package/esm2020/lib/pipe/transform.pipe.mjs +27 -0
- package/esm2020/lib/validators/autocomplete.validator.mjs +23 -0
- package/esm2020/public-api.mjs +59 -0
- package/fesm2015/3kles-kles-material-dynamicforms.mjs +2839 -0
- package/fesm2015/3kles-kles-material-dynamicforms.mjs.map +1 -0
- package/fesm2020/3kles-kles-material-dynamicforms.mjs +2835 -0
- package/fesm2020/3kles-kles-material-dynamicforms.mjs.map +1 -0
- package/{3kles-kles-material-dynamicforms.d.ts → index.d.ts} +1 -1
- package/lib/decorators/component.decorator.d.ts +8 -0
- package/lib/directive/dynamic-component.directive.d.ts +5 -3
- package/lib/directive/dynamic-field.directive.d.ts +7 -5
- package/lib/dynamic-form.component.d.ts +6 -3
- package/lib/enums/type.enum.d.ts +4 -1
- package/lib/fields/array.component.d.ts +5 -2
- package/lib/fields/badge.component.d.ts +3 -0
- package/lib/fields/button-form.component.d.ts +3 -0
- package/lib/fields/button-submit.component.d.ts +3 -0
- package/lib/fields/button-toogle-group.component.d.ts +3 -0
- package/lib/fields/buttonchecker-form.component.d.ts +3 -0
- package/lib/fields/buttonfile-form.component.d.ts +3 -0
- package/lib/fields/checkbox.component.d.ts +4 -1
- package/lib/fields/chip.component.d.ts +3 -0
- package/lib/fields/color.component.d.ts +3 -0
- package/lib/fields/date.component.d.ts +3 -0
- package/lib/fields/field.abstract.d.ts +5 -2
- package/lib/fields/group.component.d.ts +5 -2
- package/lib/fields/icon.component.d.ts +3 -0
- package/lib/fields/input.clearable.component.d.ts +3 -0
- package/lib/fields/input.component.d.ts +3 -0
- package/lib/fields/label.component.d.ts +3 -0
- package/lib/fields/line-break.component.d.ts +5 -2
- package/lib/fields/link.component.d.ts +3 -0
- package/lib/fields/list-field.component.d.ts +6 -3
- package/lib/fields/radio.component.d.ts +3 -0
- package/lib/fields/select.component.d.ts +3 -0
- package/lib/fields/select.search.component.d.ts +6 -3
- package/lib/fields/selection-list.component.d.ts +3 -0
- package/lib/fields/slide-toggle.component.d.ts +3 -0
- package/lib/fields/text.component.d.ts +3 -0
- package/lib/fields/textarea.component.d.ts +3 -0
- package/lib/forms/button-control.component.d.ts +3 -0
- package/lib/forms/buttonchecker-control.component.d.ts +3 -0
- package/lib/forms/buttonfile-control.component.d.ts +3 -0
- package/lib/interfaces/field.config.interface.d.ts +2 -2
- package/lib/interfaces/field.interface.d.ts +2 -2
- package/lib/kles-material-dynamicforms.module.d.ts +45 -0
- package/lib/matcher/form-error.matcher.d.ts +5 -2
- package/lib/modules/material.module.d.ts +40 -0
- package/lib/pipe/array.pipe.d.ts +3 -0
- package/lib/pipe/transform.pipe.d.ts +3 -0
- package/package.json +22 -12
- package/public-api.d.ts +2 -0
- package/3kles-kles-material-dynamicforms.metadata.json +0 -1
- package/bundles/3kles-kles-material-dynamicforms.umd.js +0 -1980
- package/bundles/3kles-kles-material-dynamicforms.umd.js.map +0 -1
- package/bundles/3kles-kles-material-dynamicforms.umd.min.js +0 -16
- package/bundles/3kles-kles-material-dynamicforms.umd.min.js.map +0 -1
- package/esm2015/3kles-kles-material-dynamicforms.js +0 -6
- package/esm2015/lib/directive/dynamic-component.directive.js +0 -50
- package/esm2015/lib/directive/dynamic-field.directive.js +0 -95
- package/esm2015/lib/dynamic-form.component.js +0 -260
- package/esm2015/lib/enums/type.enum.js +0 -16
- package/esm2015/lib/fields/array.component.js +0 -37
- package/esm2015/lib/fields/badge.component.js +0 -23
- package/esm2015/lib/fields/button-form.component.js +0 -31
- package/esm2015/lib/fields/button-submit.component.js +0 -23
- package/esm2015/lib/fields/button-toogle-group.component.js +0 -35
- package/esm2015/lib/fields/buttonchecker-form.component.js +0 -31
- package/esm2015/lib/fields/buttonfile-form.component.js +0 -30
- package/esm2015/lib/fields/checkbox.component.js +0 -27
- package/esm2015/lib/fields/chip.component.js +0 -26
- package/esm2015/lib/fields/color.component.js +0 -61
- package/esm2015/lib/fields/date.component.js +0 -31
- package/esm2015/lib/fields/field.abstract.js +0 -68
- package/esm2015/lib/fields/group.component.js +0 -32
- package/esm2015/lib/fields/icon.component.js +0 -21
- package/esm2015/lib/fields/input.clearable.component.js +0 -59
- package/esm2015/lib/fields/input.component.js +0 -104
- package/esm2015/lib/fields/label.component.js +0 -26
- package/esm2015/lib/fields/line-break.component.js +0 -22
- package/esm2015/lib/fields/link.component.js +0 -23
- package/esm2015/lib/fields/list-field.component.js +0 -88
- package/esm2015/lib/fields/radio.component.js +0 -30
- package/esm2015/lib/fields/select.component.js +0 -127
- package/esm2015/lib/fields/select.search.component.js +0 -205
- package/esm2015/lib/fields/selection-list.component.js +0 -43
- package/esm2015/lib/fields/slide-toggle.component.js +0 -27
- package/esm2015/lib/fields/text.component.js +0 -23
- package/esm2015/lib/fields/textarea.component.js +0 -35
- package/esm2015/lib/forms/button-control.component.js +0 -102
- package/esm2015/lib/forms/buttonchecker-control.component.js +0 -53
- package/esm2015/lib/forms/buttonfile-control.component.js +0 -103
- package/esm2015/lib/interfaces/component.interface.js +0 -1
- package/esm2015/lib/interfaces/directive.interface.js +0 -1
- package/esm2015/lib/interfaces/field.config.interface.js +0 -1
- package/esm2015/lib/interfaces/field.interface.js +0 -1
- package/esm2015/lib/interfaces/validator.interface.js +0 -1
- package/esm2015/lib/kles-material-dynamicforms.module.js +0 -116
- package/esm2015/lib/matcher/form-error.matcher.js +0 -9
- package/esm2015/lib/modules/material.module.js +0 -129
- package/esm2015/lib/pipe/array.pipe.js +0 -20
- package/esm2015/lib/pipe/transform.pipe.js +0 -25
- package/esm2015/lib/validators/autocomplete.validator.js +0 -23
- package/esm2015/public-api.js +0 -51
- package/esm5/3kles-kles-material-dynamicforms.js +0 -6
- package/esm5/lib/directive/dynamic-component.directive.js +0 -51
- package/esm5/lib/directive/dynamic-field.directive.js +0 -96
- package/esm5/lib/dynamic-form.component.js +0 -262
- package/esm5/lib/enums/type.enum.js +0 -16
- package/esm5/lib/fields/array.component.js +0 -31
- package/esm5/lib/fields/badge.component.js +0 -24
- package/esm5/lib/fields/button-form.component.js +0 -24
- package/esm5/lib/fields/button-submit.component.js +0 -24
- package/esm5/lib/fields/button-toogle-group.component.js +0 -31
- package/esm5/lib/fields/buttonchecker-form.component.js +0 -24
- package/esm5/lib/fields/buttonfile-form.component.js +0 -24
- package/esm5/lib/fields/checkbox.component.js +0 -22
- package/esm5/lib/fields/chip.component.js +0 -22
- package/esm5/lib/fields/color.component.js +0 -49
- package/esm5/lib/fields/date.component.js +0 -22
- package/esm5/lib/fields/field.abstract.js +0 -70
- package/esm5/lib/fields/group.component.js +0 -30
- package/esm5/lib/fields/icon.component.js +0 -22
- package/esm5/lib/fields/input.clearable.component.js +0 -22
- package/esm5/lib/fields/input.component.js +0 -73
- package/esm5/lib/fields/label.component.js +0 -25
- package/esm5/lib/fields/line-break.component.js +0 -23
- package/esm5/lib/fields/link.component.js +0 -24
- package/esm5/lib/fields/list-field.component.js +0 -68
- package/esm5/lib/fields/radio.component.js +0 -22
- package/esm5/lib/fields/select.component.js +0 -59
- package/esm5/lib/fields/select.search.component.js +0 -119
- package/esm5/lib/fields/selection-list.component.js +0 -32
- package/esm5/lib/fields/slide-toggle.component.js +0 -22
- package/esm5/lib/fields/text.component.js +0 -24
- package/esm5/lib/fields/textarea.component.js +0 -25
- package/esm5/lib/forms/button-control.component.js +0 -95
- package/esm5/lib/forms/buttonchecker-control.component.js +0 -37
- package/esm5/lib/forms/buttonfile-control.component.js +0 -119
- package/esm5/lib/interfaces/component.interface.js +0 -1
- package/esm5/lib/interfaces/directive.interface.js +0 -1
- package/esm5/lib/interfaces/field.config.interface.js +0 -1
- package/esm5/lib/interfaces/field.interface.js +0 -1
- package/esm5/lib/interfaces/validator.interface.js +0 -1
- package/esm5/lib/kles-material-dynamicforms.module.js +0 -119
- package/esm5/lib/matcher/form-error.matcher.js +0 -11
- package/esm5/lib/modules/material.module.js +0 -132
- package/esm5/lib/pipe/array.pipe.js +0 -23
- package/esm5/lib/pipe/transform.pipe.js +0 -28
- package/esm5/lib/validators/autocomplete.validator.js +0 -23
- package/esm5/public-api.js +0 -51
- package/fesm2015/3kles-kles-material-dynamicforms.js +0 -2087
- package/fesm2015/3kles-kles-material-dynamicforms.js.map +0 -1
- package/fesm5/3kles-kles-material-dynamicforms.js +0 -1766
- package/fesm5/3kles-kles-material-dynamicforms.js.map +0 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiM2tsZXMta2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy9zcmMvM2tsZXMta2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const componentMapper = [];
|
|
2
|
+
export function FieldMapper(config) {
|
|
3
|
+
return (target) => {
|
|
4
|
+
componentMapper.push({ component: target, type: config.type });
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zL3NyYy9saWIvZGVjb3JhdG9ycy9jb21wb25lbnQuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBNkMsRUFBRSxDQUFDO0FBRTVFLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBc0I7SUFDOUMsT0FBTyxDQUFDLE1BQWlCLEVBQUUsRUFBRTtRQUN6QixlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IGNvbXBvbmVudE1hcHBlcjogeyBjb21wb25lbnQ6IFR5cGU8YW55PjsgdHlwZTogc3RyaW5nIH1bXSA9IFtdO1xuXG5leHBvcnQgZnVuY3Rpb24gRmllbGRNYXBwZXIoY29uZmlnOiB7dHlwZTogc3RyaW5nfSl7XG4gICAgcmV0dXJuICh0YXJnZXQ6IFR5cGU8YW55PikgPT4ge1xuICAgICAgICBjb21wb25lbnRNYXBwZXIucHVzaCh7IGNvbXBvbmVudDogdGFyZ2V0LCB0eXBlOiBjb25maWcudHlwZSB9KTtcbiAgICB9O1xufVxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class KlesComponentDirective {
|
|
4
|
+
constructor(container) {
|
|
5
|
+
this.container = container;
|
|
6
|
+
}
|
|
7
|
+
ngOnInit() {
|
|
8
|
+
this.buildComponent();
|
|
9
|
+
}
|
|
10
|
+
ngOnChanges(changes) {
|
|
11
|
+
if (changes.component && !changes.component.isFirstChange()) {
|
|
12
|
+
this.component = changes.component.currentValue;
|
|
13
|
+
this.buildComponent();
|
|
14
|
+
}
|
|
15
|
+
if (changes.value && !changes.value.isFirstChange()) {
|
|
16
|
+
this.value = changes.value.currentValue;
|
|
17
|
+
this.componentRef.instance.value = this.value;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
buildComponent() {
|
|
21
|
+
if (this.componentRef) {
|
|
22
|
+
this.componentRef.destroy();
|
|
23
|
+
}
|
|
24
|
+
this.componentRef = this.container.createComponent(this.component);
|
|
25
|
+
this.componentRef.instance.component = this.component;
|
|
26
|
+
this.componentRef.instance.value = this.value;
|
|
27
|
+
this.componentRef.instance.field = this.field;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
KlesComponentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesComponentDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
31
|
+
KlesComponentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.4", type: KlesComponentDirective, selector: "[klesComponent]", inputs: { component: "component", value: "value", field: "field" }, usesOnChanges: true, ngImport: i0 });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesComponentDirective, decorators: [{
|
|
33
|
+
type: Directive,
|
|
34
|
+
args: [{
|
|
35
|
+
selector: '[klesComponent]'
|
|
36
|
+
}]
|
|
37
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { component: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], value: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], field: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}] } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9kaXJlY3RpdmUvZHluYW1pYy1jb21wb25lbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUEwRSxNQUFNLGVBQWUsQ0FBQzs7QUFPekgsTUFBTSxPQUFPLHNCQUFzQjtJQU8vQixZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFJLENBQUM7SUFFcEQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztZQUNoRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDakQ7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbEQsQ0FBQzs7bUhBaENRLHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSGxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtpQkFDOUI7dUdBRVksU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmLCBDb21wb25lbnRSZWYsIFR5cGUsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUtsZXNGaWVsZENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmllbGQuY29uZmlnLmludGVyZmFjZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdba2xlc0NvbXBvbmVudF0nXG59KVxuZXhwb3J0IGNsYXNzIEtsZXNDb21wb25lbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgY29tcG9uZW50OiBUeXBlPGFueT47XG4gICAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgICBASW5wdXQoKSBmaWVsZD86IElLbGVzRmllbGRDb25maWc7XG5cbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbXBvbmVudCAmJiAhY2hhbmdlcy5jb21wb25lbnQuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNoYW5nZXMuY29tcG9uZW50LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy52YWx1ZSAmJiAhY2hhbmdlcy52YWx1ZS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBjaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkQ29tcG9uZW50KCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50O1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS52YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkID0gdGhpcy5maWVsZDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { componentMapper } from '../decorators/component.decorator';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class KlesDynamicFieldDirective {
|
|
5
|
+
constructor(container) {
|
|
6
|
+
this.container = container;
|
|
7
|
+
}
|
|
8
|
+
ngOnDestroy() {
|
|
9
|
+
if (this.componentRef) {
|
|
10
|
+
this.componentRef.destroy();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.buildComponent();
|
|
15
|
+
}
|
|
16
|
+
ngOnChanges(changes) {
|
|
17
|
+
if (changes.group) {
|
|
18
|
+
this.group = changes.group.currentValue;
|
|
19
|
+
}
|
|
20
|
+
if (changes.field) {
|
|
21
|
+
this.field = changes.field.currentValue;
|
|
22
|
+
this.buildComponent();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
buildComponent() {
|
|
26
|
+
if (this.componentRef) {
|
|
27
|
+
this.componentRef.destroy();
|
|
28
|
+
}
|
|
29
|
+
this.componentRef = this.container.createComponent(this.field.component
|
|
30
|
+
|| componentMapper.find(element => element.type === this.field.type)?.component);
|
|
31
|
+
this.componentRef.instance.field = this.field;
|
|
32
|
+
this.componentRef.instance.group = this.group;
|
|
33
|
+
this.componentRef.instance.siblingFields = this.siblingFields;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
KlesDynamicFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesDynamicFieldDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
37
|
+
KlesDynamicFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.4", type: KlesDynamicFieldDirective, selector: "[klesDynamicField]", inputs: { field: "field", group: "group", siblingFields: "siblingFields" }, usesOnChanges: true, ngImport: i0 });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesDynamicFieldDirective, decorators: [{
|
|
39
|
+
type: Directive,
|
|
40
|
+
args: [{
|
|
41
|
+
selector: '[klesDynamicField]'
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { field: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], group: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], siblingFields: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}] } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGVzLW1hdGVyaWFsLWR5bmFtaWNmb3Jtcy9zcmMvbGliL2RpcmVjdGl2ZS9keW5hbWljLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUFFLEtBQUssRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQU1wRSxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLFlBQXNCLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUksQ0FBQztJQUV0RCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDM0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztlQUNoRSxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXJGLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2xFLENBQUM7O3NIQXZDUSx5QkFBeUI7MEdBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7aUJBQ2pDO3VHQUVZLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmLCBDb21wb25lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBUeXBlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tcG9uZW50TWFwcGVyIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9jb21wb25lbnQuZGVjb3JhdG9yJztcbmltcG9ydCB7IElLbGVzRmllbGRDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ZpZWxkLmNvbmZpZy5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1trbGVzRHluYW1pY0ZpZWxkXSdcbn0pXG5leHBvcnQgY2xhc3MgS2xlc0R5bmFtaWNGaWVsZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGZpZWxkOiBJS2xlc0ZpZWxkQ29uZmlnO1xuICAgIEBJbnB1dCgpIGdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xuICAgIEBJbnB1dCgpIHNpYmxpbmdGaWVsZHM6IElLbGVzRmllbGRDb25maWdbXTtcblxuICAgIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7IH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50KCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5ncm91cCkge1xuICAgICAgICAgICAgdGhpcy5ncm91cCA9IGNoYW5nZXMuZ3JvdXAuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkID0gY2hhbmdlcy5maWVsZC5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBidWlsZENvbXBvbmVudCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodGhpcy5maWVsZC5jb21wb25lbnRcbiAgICAgICAgICAgIHx8IGNvbXBvbmVudE1hcHBlci5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC50eXBlID09PSB0aGlzLmZpZWxkLnR5cGUpPy5jb21wb25lbnQpO1xuXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkID0gdGhpcy5maWVsZDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zaWJsaW5nRmllbGRzID0gdGhpcy5zaWJsaW5nRmllbGRzO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { EnumType } from './enums/type.enum';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "./directive/dynamic-field.directive";
|
|
8
|
+
export class KlesDynamicFormComponent {
|
|
9
|
+
constructor(fb) {
|
|
10
|
+
this.fb = fb;
|
|
11
|
+
this.fields = [];
|
|
12
|
+
this.validators = [];
|
|
13
|
+
this.asyncValidators = [];
|
|
14
|
+
// tslint:disable-next-line: no-output-native
|
|
15
|
+
this.submit = new EventEmitter();
|
|
16
|
+
this._onLoaded = new EventEmitter();
|
|
17
|
+
this.direction = 'column';
|
|
18
|
+
this.orientationClass = 'dynamic-form-column';
|
|
19
|
+
this.orientationItemClass = 'dynamic-form-column-item';
|
|
20
|
+
}
|
|
21
|
+
get value() {
|
|
22
|
+
return this.form.value;
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
this.form = this.createForm();
|
|
26
|
+
this.orientationClass = this.direction === 'row' ? 'dynamic-form-row' : 'dynamic-form-column';
|
|
27
|
+
this.orientationItemClass = this.direction === 'row' ? 'dynamic-form-row-item' : 'dynamic-form-column-item';
|
|
28
|
+
this._onLoaded.emit();
|
|
29
|
+
}
|
|
30
|
+
ngOnChanges(changes) {
|
|
31
|
+
if (!changes.fields?.firstChange) {
|
|
32
|
+
this.updateForm();
|
|
33
|
+
// this.form = this.createControl();
|
|
34
|
+
// this.form.controls = {};
|
|
35
|
+
this._onLoaded.emit();
|
|
36
|
+
}
|
|
37
|
+
if (!changes.validators?.firstChange && this.form) {
|
|
38
|
+
this.form.setValidators(this.validators.map(v => v.validator));
|
|
39
|
+
}
|
|
40
|
+
if (!changes.asyncValidators?.firstChange && this.form) {
|
|
41
|
+
this.form.setAsyncValidators(this.asyncValidators.map(v => v.validator));
|
|
42
|
+
}
|
|
43
|
+
if (!changes.direction?.firstChange) {
|
|
44
|
+
this.orientationClass = this.direction === 'row' ? 'dynamic-form-row' : 'dynamic-form-column';
|
|
45
|
+
this.orientationItemClass = this.direction === 'row' ? 'dynamic-form-row-item' : 'dynamic-form-column-item';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
onSubmit(event) {
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
event.stopPropagation();
|
|
51
|
+
if (this.form.valid) {
|
|
52
|
+
this.submit.emit(this.form.value);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.validateAllFormFields(this.form);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
reset() {
|
|
59
|
+
this.form.reset();
|
|
60
|
+
}
|
|
61
|
+
updateForm() {
|
|
62
|
+
Object.keys(this.form.controls).filter(key => {
|
|
63
|
+
return !this.fields.map(field => field.name).includes(key);
|
|
64
|
+
}).forEach(key => {
|
|
65
|
+
this.form.removeControl(key);
|
|
66
|
+
});
|
|
67
|
+
this.fields
|
|
68
|
+
.filter(field => !this.form.controls[field.name])
|
|
69
|
+
.forEach(field => {
|
|
70
|
+
if (field.type === EnumType.lineBreak) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const control = this.createControl(field);
|
|
74
|
+
this.form.addControl(field.name, control);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
createControl(field) {
|
|
78
|
+
if (field.type === EnumType.array) {
|
|
79
|
+
const array = this.fb.array([]);
|
|
80
|
+
if (field.value && Array.isArray(field.value)) {
|
|
81
|
+
if (field.collections && Array.isArray(field.collections)) {
|
|
82
|
+
field.value.forEach(val => {
|
|
83
|
+
const group = this.fb.group({});
|
|
84
|
+
field.collections.forEach(subfield => {
|
|
85
|
+
const data = val[subfield.name] || null;
|
|
86
|
+
const control = this.createControl({ ...subfield, ...(data && { value: data }) });
|
|
87
|
+
group.addControl(subfield.name, control);
|
|
88
|
+
});
|
|
89
|
+
array.push(group);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const group = this.fb.group({});
|
|
95
|
+
field.collections.forEach(subfield => {
|
|
96
|
+
const control = this.createControl({ ...subfield });
|
|
97
|
+
group.addControl(subfield.name, control);
|
|
98
|
+
});
|
|
99
|
+
array.push(group);
|
|
100
|
+
}
|
|
101
|
+
// field.value.forEach((data: any) => {
|
|
102
|
+
// const subGroup = this.fb.group({});
|
|
103
|
+
// field.collections.forEach(subfield => {
|
|
104
|
+
// const control = this.createControl(subfield);
|
|
105
|
+
// subGroup.addControl(subfield.name, control);
|
|
106
|
+
// });
|
|
107
|
+
// array.push(subGroup);
|
|
108
|
+
// });
|
|
109
|
+
return array;
|
|
110
|
+
}
|
|
111
|
+
else if (field.type === EnumType.group) {
|
|
112
|
+
const subGroup = this.fb.group({});
|
|
113
|
+
if (field.collections && Array.isArray(field.collections)) {
|
|
114
|
+
field.collections.forEach(subfield => {
|
|
115
|
+
const control = this.createControl(subfield);
|
|
116
|
+
subGroup.addControl(subfield.name, control);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return subGroup;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
const control = this.fb.control(field.value, {
|
|
123
|
+
validators: this.bindValidations(field.validations || []),
|
|
124
|
+
asyncValidators: this.bindAsyncValidations(field.asyncValidations || []),
|
|
125
|
+
updateOn: field.updateOn || 'change'
|
|
126
|
+
});
|
|
127
|
+
if (field.disabled) {
|
|
128
|
+
control.disable();
|
|
129
|
+
}
|
|
130
|
+
return control;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// private createControl(field: IKlesFieldConfig): AbstractControl {
|
|
134
|
+
// if (field.type === 'listField') {
|
|
135
|
+
// const array = this.fb.array([]);
|
|
136
|
+
// field.value.forEach((data: any) => {
|
|
137
|
+
// const subGroup = this.fb.group({});
|
|
138
|
+
// field.collections.forEach(subfield => {
|
|
139
|
+
// const control = this.fb.control(
|
|
140
|
+
// data[subfield.name] ? data[subfield.name] : null,
|
|
141
|
+
// this.bindValidations(subfield.validations || []),
|
|
142
|
+
// this.bindAsyncValidations(subfield.asyncValidations || [])
|
|
143
|
+
// );
|
|
144
|
+
// subGroup.addControl(subfield.name, control);
|
|
145
|
+
// });
|
|
146
|
+
// array.push(subGroup);
|
|
147
|
+
// });
|
|
148
|
+
// return array;
|
|
149
|
+
// } else if (field.type === 'group') {
|
|
150
|
+
// const subGroup = this.fb.group({});
|
|
151
|
+
// if (field.collections && Array.isArray(field.collections)) {
|
|
152
|
+
// field.collections.forEach(subfield => {
|
|
153
|
+
// const control = this.fb.control(
|
|
154
|
+
// subfield.value,
|
|
155
|
+
// this.bindValidations(subfield.validations || []),
|
|
156
|
+
// this.bindAsyncValidations(subfield.asyncValidations || [])
|
|
157
|
+
// );
|
|
158
|
+
// if (subfield.disabled) {
|
|
159
|
+
// control.disable();
|
|
160
|
+
// }
|
|
161
|
+
// subGroup.addControl(subfield.name, control);
|
|
162
|
+
// });
|
|
163
|
+
// }
|
|
164
|
+
// return subGroup;
|
|
165
|
+
// } else {
|
|
166
|
+
// const control = this.fb.control(
|
|
167
|
+
// field.value,
|
|
168
|
+
// this.bindValidations(field.validations || []),
|
|
169
|
+
// this.bindAsyncValidations(field.asyncValidations || [])
|
|
170
|
+
// );
|
|
171
|
+
// if (field.disabled) {
|
|
172
|
+
// control.disable();
|
|
173
|
+
// }
|
|
174
|
+
// return control;
|
|
175
|
+
// }
|
|
176
|
+
// }
|
|
177
|
+
createForm() {
|
|
178
|
+
const group = this.fb.group({});
|
|
179
|
+
this.fields.forEach(field => {
|
|
180
|
+
if (field.type === EnumType.lineBreak) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const control = this.createControl(field);
|
|
184
|
+
group.addControl(field.name, control);
|
|
185
|
+
});
|
|
186
|
+
group.setValidators(this.validators.map(v => v.validator));
|
|
187
|
+
group.setAsyncValidators(this.asyncValidators.map(v => v.validator));
|
|
188
|
+
return group;
|
|
189
|
+
}
|
|
190
|
+
bindValidations(validations) {
|
|
191
|
+
if (validations.length > 0) {
|
|
192
|
+
const validList = [];
|
|
193
|
+
validations.forEach(valid => {
|
|
194
|
+
validList.push(valid.validator);
|
|
195
|
+
});
|
|
196
|
+
return Validators.compose(validList);
|
|
197
|
+
}
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
bindAsyncValidations(validations) {
|
|
201
|
+
if (validations.length > 0) {
|
|
202
|
+
const validList = [];
|
|
203
|
+
validations.forEach(valid => {
|
|
204
|
+
validList.push(valid.validator);
|
|
205
|
+
});
|
|
206
|
+
return Validators.composeAsync(validList);
|
|
207
|
+
}
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
validateAllFormFields(formGroup) {
|
|
211
|
+
Object.keys(formGroup.controls).forEach(field => {
|
|
212
|
+
const control = formGroup.get(field);
|
|
213
|
+
control.markAsTouched({ onlySelf: true });
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
KlesDynamicFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesDynamicFormComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
218
|
+
KlesDynamicFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.4", type: KlesDynamicFormComponent, selector: "app-kles-dynamic-form", inputs: { fields: "fields", validators: "validators", asyncValidators: "asyncValidators", direction: "direction" }, outputs: { submit: "submit", _onLoaded: "_onLoaded" }, exportAs: ["klesDynamicForm"], usesOnChanges: true, ngImport: i0, template: `
|
|
219
|
+
<form class="{{orientationClass}}" [formGroup]="form" (submit)="onSubmit($event)">
|
|
220
|
+
<ng-container *ngFor="let field of fields;" class="{{orientationItemClass}}" klesDynamicField [field]="field" [group]="form" [siblingFields]="fields">
|
|
221
|
+
</ng-container>
|
|
222
|
+
<!--<button (click)="reset()" mat-raised-button color="primary">RESET</button>-->
|
|
223
|
+
</form>
|
|
224
|
+
`, isInline: true, styles: [".dynamic-form-column{display:flex;flex-direction:column}\n", ".dynamic-form-column>*{width:100%}\n", ".dynamic-form-row{display:inline-flex;flex-wrap:wrap;gap:10px}\n", ".dynamic-form-row>*{width:100%}\n", ".dynamic-form-row-item{margin-right:10px}\n", ".dynamic-form-column-item{margin-bottom:10px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: i3.KlesDynamicFieldDirective, selector: "[klesDynamicField]", inputs: ["field", "group", "siblingFields"] }] });
|
|
225
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesDynamicFormComponent, decorators: [{
|
|
226
|
+
type: Component,
|
|
227
|
+
args: [{ exportAs: 'klesDynamicForm', selector: 'app-kles-dynamic-form', template: `
|
|
228
|
+
<form class="{{orientationClass}}" [formGroup]="form" (submit)="onSubmit($event)">
|
|
229
|
+
<ng-container *ngFor="let field of fields;" class="{{orientationItemClass}}" klesDynamicField [field]="field" [group]="form" [siblingFields]="fields">
|
|
230
|
+
</ng-container>
|
|
231
|
+
<!--<button (click)="reset()" mat-raised-button color="primary">RESET</button>-->
|
|
232
|
+
</form>
|
|
233
|
+
`, styles: [".dynamic-form-column{display:flex;flex-direction:column}\n", ".dynamic-form-column>*{width:100%}\n", ".dynamic-form-row{display:inline-flex;flex-wrap:wrap;gap:10px}\n", ".dynamic-form-row>*{width:100%}\n", ".dynamic-form-row-item{margin-right:10px}\n", ".dynamic-form-column-item{margin-bottom:10px}\n"] }]
|
|
234
|
+
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }]; }, propDecorators: { fields: [{
|
|
235
|
+
type: Input
|
|
236
|
+
}], validators: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}], asyncValidators: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}], submit: [{
|
|
241
|
+
type: Output
|
|
242
|
+
}], _onLoaded: [{
|
|
243
|
+
type: Output
|
|
244
|
+
}], direction: [{
|
|
245
|
+
type: Input
|
|
246
|
+
}] } });
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2tsZXMtbWF0ZXJpYWwtZHluYW1pY2Zvcm1zL3NyYy9saWIvZHluYW1pYy1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQXdDLFVBQVUsRUFBa0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBMkI3QyxNQUFNLE9BQU8sd0JBQXdCO0lBa0JqQyxZQUFvQixFQUFzQjtRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQWpCakMsV0FBTSxHQUF1QixFQUFFLENBQUM7UUFDaEMsZUFBVSxHQUFrQyxFQUFFLENBQUM7UUFDL0Msb0JBQWUsR0FBdUMsRUFBRSxDQUFDO1FBQ2xFLDZDQUE2QztRQUNuQyxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEMsY0FBUyxHQUFxQixRQUFRLENBQUM7UUFHaEQscUJBQWdCLEdBQStDLHFCQUFxQixDQUFDO1FBQ3JGLHlCQUFvQixHQUF5RCwwQkFBMEIsQ0FBQztJQU0xRCxDQUFDO0lBSi9DLElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUtELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FB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eyBPbkluaXQsIENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm4sIEFzeW5jVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVudW1UeXBlIH0gZnJvbSAnLi9lbnVtcy90eXBlLmVudW0nO1xuaW1wb3J0IHsgSUtsZXNGaWVsZENvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWVsZC5jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IElLbGVzVmFsaWRhdG9yIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3ZhbGlkYXRvci5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBleHBvcnRBczogJ2tsZXNEeW5hbWljRm9ybScsXG4gICAgc2VsZWN0b3I6ICdhcHAta2xlcy1keW5hbWljLWZvcm0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGZvcm0gY2xhc3M9XCJ7e29yaWVudGF0aW9uQ2xhc3N9fVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHM7XCIgY2xhc3M9XCJ7e29yaWVudGF0aW9uSXRlbUNsYXNzfX1cIiBrbGVzRHluYW1pY0ZpZWxkIFtmaWVsZF09XCJmaWVsZFwiIFtncm91cF09XCJmb3JtXCIgW3NpYmxpbmdGaWVsZHNdPVwiZmllbGRzXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8IS0tPGJ1dHRvbiAoY2xpY2spPVwicmVzZXQoKVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPlJFU0VUPC9idXR0b24+LS0+XG4gICAgPC9mb3JtPlxuICAgIGAsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIC8vICcuZHluYW1pYy1mb3JtIHtkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uO30nLFxuICAgICAgICAvLycuZHluYW1pYy1mb3JtIHtkaXNwbGF5OiBmbGV4O30nLFxuICAgICAgICAvLycuZHluYW1pYy1mb3JtIHsgd2lkdGg6IDEwMCU7IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1jb2x1bW4geyBkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1jb2x1bW4gPiAqIHsgd2lkdGg6IDEwMCU7IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1yb3cgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweCB9JyxcbiAgICAgICAgJy5keW5hbWljLWZvcm0tcm93ID4gKiB7IHdpZHRoOiAxMDAlOyB9JyxcbiAgICAgICAgJy5keW5hbWljLWZvcm0tcm93LWl0ZW0geyBtYXJnaW4tcmlnaHQ6IDEwcHg7IH0nLFxuICAgICAgICAnLmR5bmFtaWMtZm9ybS1jb2x1bW4taXRlbSB7IG1hcmdpbi1ib3R0b206IDEwcHg7IH0nLFxuICAgIF1cblxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgZmllbGRzOiBJS2xlc0ZpZWxkQ29uZmlnW10gPSBbXTtcbiAgICBASW5wdXQoKSB2YWxpZGF0b3JzOiBJS2xlc1ZhbGlkYXRvcjxWYWxpZGF0b3JGbj5bXSA9IFtdO1xuICAgIEBJbnB1dCgpIGFzeW5jVmFsaWRhdG9yczogSUtsZXNWYWxpZGF0b3I8QXN5bmNWYWxpZGF0b3JGbj5bXSA9IFtdO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKSBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIF9vbkxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIGRpcmVjdGlvbjogJ2NvbHVtbicgfCAncm93JyA9ICdjb2x1bW4nO1xuXG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgICBvcmllbnRhdGlvbkNsYXNzOiAnZHluYW1pYy1mb3JtLWNvbHVtbicgfCAnZHluYW1pYy1mb3JtLXJvdycgPSAnZHluYW1pYy1mb3JtLWNvbHVtbic7XG4gICAgb3JpZW50YXRpb25JdGVtQ2xhc3M6ICdkeW5hbWljLWZvcm0tY29sdW1uLWl0ZW0nIHwgJ2R5bmFtaWMtZm9ybS1yb3ctaXRlbScgPSAnZHluYW1pYy1mb3JtLWNvbHVtbi1pdGVtJztcblxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIpIHsgfVxuXG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgICAgIHRoaXMub3JpZW50YXRpb25DbGFzcyA9IHRoaXMuZGlyZWN0aW9uID09PSAncm93JyA/ICdkeW5hbWljLWZvcm0tcm93JyA6ICdkeW5hbWljLWZvcm0tY29sdW1uJztcbiAgICAgICAgdGhpcy5vcmllbnRhdGlvbkl0ZW1DbGFzcyA9IHRoaXMuZGlyZWN0aW9uID09PSAncm93JyA/ICdkeW5hbWljLWZvcm0tcm93LWl0ZW0nIDogJ2R5bmFtaWMtZm9ybS1jb2x1bW4taXRlbSc7XG4gICAgICAgIHRoaXMuX29uTG9hZGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghY2hhbmdlcy5maWVsZHM/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgIC8vIHRoaXMuZm9ybSA9IHRoaXMuY3JlYXRlQ29udHJvbCgpO1xuICAgICAgICAgICAgLy8gdGhpcy5mb3JtLmNvbnRyb2xzID0ge307XG4gICAgICAgICAgICB0aGlzLl9vbkxvYWRlZC5lbWl0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNoYW5nZXMudmFsaWRhdG9ycz8uZmlyc3RDaGFuZ2UgJiYgdGhpcy5mb3JtKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRvcnMubWFwKHYgPT4gdi52YWxpZGF0b3IpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2hhbmdlcy5hc3luY1ZhbGlkYXRvcnM/LmZpcnN0Q2hhbmdlICYmIHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLmFzeW5jVmFsaWRhdG9ycy5tYXAodiA9PiB2LnZhbGlkYXRvcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjaGFuZ2VzLmRpcmVjdGlvbj8uZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZW50YXRpb25DbGFzcyA9IHRoaXMuZGlyZWN0aW9uID09PSAncm93JyA/ICdkeW5hbWljLWZvcm0tcm93JyA6ICdkeW5hbWljLWZvcm0tY29sdW1uJztcbiAgICAgICAgICAgIHRoaXMub3JpZW50YXRpb25JdGVtQ2xhc3MgPSB0aGlzLmRpcmVjdGlvbiA9PT0gJ3JvdycgPyAnZHluYW1pYy1mb3JtLXJvdy1pdGVtJyA6ICdkeW5hbWljLWZvcm0tY29sdW1uLWl0ZW0nO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBvblN1Ym1pdChldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0LmVtaXQodGhpcy5mb3JtLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKHRoaXMuZm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIHVwZGF0ZUZvcm0oKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZmlsdGVyKGtleSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKS5pbmNsdWRlcyhrZXkpO1xuICAgICAgICB9KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbChrZXkpO1xuICAgICAgICB9KTtcblxuXG4gICAgICAgIHRoaXMuZmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKGZpZWxkID0+ICF0aGlzLmZvcm0uY29udHJvbHNbZmllbGQubmFtZV0pXG4gICAgICAgICAgICAuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IEVudW1UeXBlLmxpbmVCcmVhaykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2woZmllbGQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGZpZWxkLm5hbWUsIGNvbnRyb2wpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb250cm9sKGZpZWxkOiBJS2xlc0ZpZWxkQ29uZmlnKTogQWJzdHJhY3RDb250cm9sIHtcblxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gRW51bVR5cGUuYXJyYXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5mYi5hcnJheShbXSk7XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC52YWx1ZSAmJiBBcnJheS5pc0FycmF5KGZpZWxkLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5jb2xsZWN0aW9ucyAmJiBBcnJheS5pc0FycmF5KGZpZWxkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC52YWx1ZS5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuY29sbGVjdGlvbnMuZm9yRWFjaChzdWJmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHZhbFtzdWJmaWVsZC5uYW1lXSB8fCBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2woeyAuLi5zdWJmaWVsZCwgLi4uKGRhdGEgJiYgeyB2YWx1ZTogZGF0YSB9KSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5hZGRDb250cm9sKHN1YmZpZWxkLm5hbWUsIGNvbnRyb2wpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgICAgICAgICAgICAgIGZpZWxkLmNvbGxlY3Rpb25zLmZvckVhY2goc3ViZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sKHsgLi4uc3ViZmllbGQgfSk7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmFkZENvbnRyb2woc3ViZmllbGQubmFtZSwgY29udHJvbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYXJyYXkucHVzaChncm91cCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGZpZWxkLnZhbHVlLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gICAgIGNvbnN0IHN1Ykdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgICAgICAgICAvLyAgICAgZmllbGQuY29sbGVjdGlvbnMuZm9yRWFjaChzdWJmaWVsZCA9PiB7XG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2woc3ViZmllbGQpO1xuICAgICAgICAgICAgLy8gICAgICAgICBzdWJHcm91cC5hZGRDb250cm9sKHN1YmZpZWxkLm5hbWUsIGNvbnRyb2wpO1xuICAgICAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAgICAgLy8gICAgIGFycmF5LnB1c2goc3ViR3JvdXApO1xuICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gRW51bVR5cGUuZ3JvdXApIHtcbiAgICAgICAgICAgIGNvbnN0IHN1Ykdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgICAgICAgICBpZiAoZmllbGQuY29sbGVjdGlvbnMgJiYgQXJyYXkuaXNBcnJheShmaWVsZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5jb2xsZWN0aW9ucy5mb3JFYWNoKHN1YmZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuY3JlYXRlQ29udHJvbChzdWJmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIHN1Ykdyb3VwLmFkZENvbnRyb2woc3ViZmllbGQubmFtZSwgY29udHJvbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3ViR3JvdXA7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgZmllbGQudmFsdWUsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiB0aGlzLmJpbmRWYWxpZGF0aW9ucyhmaWVsZC52YWxpZGF0aW9ucyB8fCBbXSksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jVmFsaWRhdG9yczogdGhpcy5iaW5kQXN5bmNWYWxpZGF0aW9ucyhmaWVsZC5hc3luY1ZhbGlkYXRpb25zIHx8IFtdKSxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlT246IGZpZWxkLnVwZGF0ZU9uIHx8ICdjaGFuZ2UnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChmaWVsZC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2w7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG4gICAgLy8gcHJpdmF0ZSBjcmVhdGVDb250cm9sKGZpZWxkOiBJS2xlc0ZpZWxkQ29uZmlnKTogQWJzdHJhY3RDb250cm9sIHtcblxuICAgIC8vICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2xpc3RGaWVsZCcpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5mYi5hcnJheShbXSk7XG5cbiAgICAvLyAgICAgICAgIGZpZWxkLnZhbHVlLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgIC8vICAgICAgICAgICAgIGNvbnN0IHN1Ykdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgLy8gICAgICAgICAgICAgZmllbGQuY29sbGVjdGlvbnMuZm9yRWFjaChzdWJmaWVsZCA9PiB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2woXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBkYXRhW3N1YmZpZWxkLm5hbWVdID8gZGF0YVtzdWJmaWVsZC5uYW1lXSA6IG51bGwsXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRWYWxpZGF0aW9ucyhzdWJmaWVsZC52YWxpZGF0aW9ucyB8fCBbXSksXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRBc3luY1ZhbGlkYXRpb25zKHN1YmZpZWxkLmFzeW5jVmFsaWRhdGlvbnMgfHwgW10pXG4gICAgLy8gICAgICAgICAgICAgICAgICk7XG4gICAgLy8gICAgICAgICAgICAgICAgIHN1Ykdyb3VwLmFkZENvbnRyb2woc3ViZmllbGQubmFtZSwgY29udHJvbCk7XG4gICAgLy8gICAgICAgICAgICAgfSk7XG4gICAgLy8gICAgICAgICAgICAgYXJyYXkucHVzaChzdWJHcm91cCk7XG4gICAgLy8gICAgICAgICB9KTtcbiAgICAvLyAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAvLyAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgLy8gICAgICAgICBjb25zdCBzdWJHcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgIC8vICAgICAgICAgaWYgKGZpZWxkLmNvbGxlY3Rpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGQuY29sbGVjdGlvbnMpKSB7XG4gICAgLy8gICAgICAgICAgICAgZmllbGQuY29sbGVjdGlvbnMuZm9yRWFjaChzdWJmaWVsZCA9PiB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2woXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBzdWJmaWVsZC52YWx1ZSxcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZFZhbGlkYXRpb25zKHN1YmZpZWxkLnZhbGlkYXRpb25zIHx8IFtdKSxcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZEFzeW5jVmFsaWRhdGlvbnMoc3ViZmllbGQuYXN5bmNWYWxpZGF0aW9ucyB8fCBbXSlcbiAgICAvLyAgICAgICAgICAgICAgICAgKTtcbiAgICAvLyAgICAgICAgICAgICAgICAgaWYgKHN1YmZpZWxkLmRpc2FibGVkKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAvLyAgICAgICAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgICAgICAgICBzdWJHcm91cC5hZGRDb250cm9sKHN1YmZpZWxkLm5hbWUsIGNvbnRyb2wpO1xuICAgIC8vICAgICAgICAgICAgIH0pO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgICAgcmV0dXJuIHN1Ykdyb3VwO1xuXG4gICAgLy8gICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mYi5jb250cm9sKFxuICAgIC8vICAgICAgICAgICAgIGZpZWxkLnZhbHVlLFxuICAgIC8vICAgICAgICAgICAgIHRoaXMuYmluZFZhbGlkYXRpb25zKGZpZWxkLnZhbGlkYXRpb25zIHx8IFtdKSxcbiAgICAvLyAgICAgICAgICAgICB0aGlzLmJpbmRBc3luY1ZhbGlkYXRpb25zKGZpZWxkLmFzeW5jVmFsaWRhdGlvbnMgfHwgW10pXG4gICAgLy8gICAgICAgICApO1xuICAgIC8vICAgICAgICAgaWYgKGZpZWxkLmRpc2FibGVkKSB7XG4gICAgLy8gICAgICAgICAgICAgY29udHJvbC5kaXNhYmxlKCk7XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgICByZXR1cm4gY29udHJvbDtcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuXG5cbiAgICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG5cbiAgICAgICAgdGhpcy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBFbnVtVHlwZS5saW5lQnJlYWspIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sKGZpZWxkKTtcblxuICAgICAgICAgICAgZ3JvdXAuYWRkQ29udHJvbChmaWVsZC5uYW1lLCBjb250cm9sKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZ3JvdXAuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRvcnMubWFwKHYgPT4gdi52YWxpZGF0b3IpKTtcbiAgICAgICAgZ3JvdXAuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzLm1hcCh2ID0+IHYudmFsaWRhdG9yKSk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBiaW5kVmFsaWRhdGlvbnModmFsaWRhdGlvbnM6IElLbGVzVmFsaWRhdG9yPFZhbGlkYXRvckZuPltdKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICBpZiAodmFsaWRhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRMaXN0ID0gW107XG4gICAgICAgICAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKHZhbGlkID0+IHtcbiAgICAgICAgICAgICAgICB2YWxpZExpc3QucHVzaCh2YWxpZC52YWxpZGF0b3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkTGlzdCk7XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgYmluZEFzeW5jVmFsaWRhdGlvbnModmFsaWRhdGlvbnM6IElLbGVzVmFsaWRhdG9yPEFzeW5jVmFsaWRhdG9yRm4+W10pOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkTGlzdCA9IFtdO1xuICAgICAgICAgICAgdmFsaWRhdGlvbnMuZm9yRWFjaCh2YWxpZCA9PiB7XG4gICAgICAgICAgICAgICAgdmFsaWRMaXN0LnB1c2godmFsaWQudmFsaWRhdG9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMuY29tcG9zZUFzeW5jKHZhbGlkTGlzdCk7XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQWxsRm9ybUZpZWxkcyhmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZpZWxkKTtcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export var EnumType;
|
|
2
|
+
(function (EnumType) {
|
|
3
|
+
EnumType["input"] = "input";
|
|
4
|
+
EnumType["select"] = "select";
|
|
5
|
+
EnumType["text"] = "text";
|
|
6
|
+
EnumType["button"] = "button";
|
|
7
|
+
EnumType["checkbox"] = "checkbox";
|
|
8
|
+
EnumType["number"] = "number";
|
|
9
|
+
EnumType["time"] = "time";
|
|
10
|
+
EnumType["date"] = "date";
|
|
11
|
+
EnumType["color"] = "color";
|
|
12
|
+
EnumType["list"] = "list";
|
|
13
|
+
EnumType["multi"] = "multi";
|
|
14
|
+
EnumType["array"] = "array";
|
|
15
|
+
EnumType["group"] = "group";
|
|
16
|
+
EnumType["lineBreak"] = "lineBreak";
|
|
17
|
+
EnumType["badge"] = "badge";
|
|
18
|
+
})(EnumType || (EnumType = {}));
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9lbnVtcy90eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksUUFnQlg7QUFoQkQsV0FBWSxRQUFRO0lBQ2hCLDJCQUFlLENBQUE7SUFDZiw2QkFBaUIsQ0FBQTtJQUNqQix5QkFBYSxDQUFBO0lBQ2IsNkJBQWlCLENBQUE7SUFDakIsaUNBQXFCLENBQUE7SUFDckIsNkJBQWlCLENBQUE7SUFDakIseUJBQWEsQ0FBQTtJQUNiLHlCQUFhLENBQUE7SUFDYiwyQkFBZSxDQUFBO0lBQ2YseUJBQWEsQ0FBQTtJQUNiLDJCQUFlLENBQUE7SUFDZiwyQkFBZSxDQUFBO0lBQ2YsMkJBQWUsQ0FBQTtJQUNmLG1DQUF1QixDQUFBO0lBQ3ZCLDJCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQWhCVyxRQUFRLEtBQVIsUUFBUSxRQWdCbkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBFbnVtVHlwZSB7XG4gICAgaW5wdXQgPSAnaW5wdXQnLFxuICAgIHNlbGVjdCA9ICdzZWxlY3QnLFxuICAgIHRleHQgPSAndGV4dCcsXG4gICAgYnV0dG9uID0gJ2J1dHRvbicsXG4gICAgY2hlY2tib3ggPSAnY2hlY2tib3gnLFxuICAgIG51bWJlciA9ICdudW1iZXInLFxuICAgIHRpbWUgPSAndGltZScsXG4gICAgZGF0ZSA9ICdkYXRlJyxcbiAgICBjb2xvciA9ICdjb2xvcicsXG4gICAgbGlzdCA9ICdsaXN0JyxcbiAgICBtdWx0aSA9ICdtdWx0aScsXG4gICAgYXJyYXkgPSAnYXJyYXknLFxuICAgIGdyb3VwID0gJ2dyb3VwJyxcbiAgICBsaW5lQnJlYWsgPSAnbGluZUJyZWFrJyxcbiAgICBiYWRnZSA9ICdiYWRnZSdcbn0iXX0=
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import { FieldMapper } from '../decorators/component.decorator';
|
|
4
|
+
import { EnumType } from '../enums/type.enum';
|
|
5
|
+
import { KlesFieldAbstract } from './field.abstract';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
9
|
+
import * as i3 from "@angular/flex-layout/extended";
|
|
10
|
+
import * as i4 from "../directive/dynamic-field.directive";
|
|
11
|
+
let KlesFormArrayComponent = class KlesFormArrayComponent extends KlesFieldAbstract {
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
// this.subGroup = this.group.controls[this.field.name] as FormGroup;
|
|
14
|
+
super.ngOnInit();
|
|
15
|
+
this.formArray = this.group.controls[this.field.name];
|
|
16
|
+
}
|
|
17
|
+
ngOnDestroy() {
|
|
18
|
+
super.ngOnDestroy();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
KlesFormArrayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesFormArrayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
+
KlesFormArrayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.4", type: KlesFormArrayComponent, selector: "kles-array", usesInheritance: true, ngImport: i0, template: `
|
|
23
|
+
<div [formGroup]="group">
|
|
24
|
+
<ng-container [formArrayName]="field.name">
|
|
25
|
+
<div class="group-container" *ngFor="let subGroup of formArray.controls let index = index;"
|
|
26
|
+
[ngClass]="field.direction === 'column' ? 'column': 'row'">
|
|
27
|
+
<ng-container *ngFor="let subfield of field.collections;"
|
|
28
|
+
klesDynamicField [field]="subfield" [group]="subGroup" [siblingFields]="field.collections">
|
|
29
|
+
</ng-container>
|
|
30
|
+
</div>
|
|
31
|
+
</ng-container>
|
|
32
|
+
</div>
|
|
33
|
+
`, isInline: true, styles: ["mat-form-field{width:100%}\n", ":host{display:flex;flex-direction:inherit}\n", ".group-container{display:flex;flex-direction:inherit}\n", ".row{gap:10px;flex-direction:row}\n", ".column{flex-direction:column;gap:0px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i3.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i4.KlesDynamicFieldDirective, selector: "[klesDynamicField]", inputs: ["field", "group", "siblingFields"] }] });
|
|
34
|
+
KlesFormArrayComponent = __decorate([
|
|
35
|
+
FieldMapper({ type: EnumType.array })
|
|
36
|
+
], KlesFormArrayComponent);
|
|
37
|
+
export { KlesFormArrayComponent };
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesFormArrayComponent, decorators: [{
|
|
39
|
+
type: Component,
|
|
40
|
+
args: [{ selector: 'kles-array', template: `
|
|
41
|
+
<div [formGroup]="group">
|
|
42
|
+
<ng-container [formArrayName]="field.name">
|
|
43
|
+
<div class="group-container" *ngFor="let subGroup of formArray.controls let index = index;"
|
|
44
|
+
[ngClass]="field.direction === 'column' ? 'column': 'row'">
|
|
45
|
+
<ng-container *ngFor="let subfield of field.collections;"
|
|
46
|
+
klesDynamicField [field]="subfield" [group]="subGroup" [siblingFields]="field.collections">
|
|
47
|
+
</ng-container>
|
|
48
|
+
</div>
|
|
49
|
+
</ng-container>
|
|
50
|
+
</div>
|
|
51
|
+
`, styles: ["mat-form-field{width:100%}\n", ":host{display:flex;flex-direction:inherit}\n", ".group-container{display:flex;flex-direction:inherit}\n", ".row{gap:10px;flex-direction:row}\n", ".column{flex-direction:column;gap:0px}\n"] }]
|
|
52
|
+
}] });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvYXJyYXkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7SUF3QnhDLHNCQUFzQixTQUF0QixzQkFBdUIsU0FBUSxpQkFBaUI7SUFNekQsUUFBUTtRQUNKLHFFQUFxRTtRQUNyRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBcUIsQ0FBQztJQUM5RSxDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDO0NBQ0osQ0FBQTttSEFmWSxzQkFBc0I7dUdBQXRCLHNCQUFzQix5RUFuQnJCOzs7Ozs7Ozs7OztDQVdiO0FBUVksc0JBQXNCO0lBdEJsQyxXQUFXLENBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBQyxDQUFDO0dBc0J2QixzQkFBc0IsQ0FlbEM7U0FmWSxzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFyQmxDLFNBQVM7K0JBQ0ksWUFBWSxZQUNaOzs7Ozs7Ozs7OztDQVdiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkTWFwcGVyIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9jb21wb25lbnQuZGVjb3JhdG9yJztcbmltcG9ydCB7IEVudW1UeXBlIH0gZnJvbSAnLi4vZW51bXMvdHlwZS5lbnVtJztcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi9maWVsZC5hYnN0cmFjdCc7XG5cbkBGaWVsZE1hcHBlcih7dHlwZTogRW51bVR5cGUuYXJyYXl9KVxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbGVzLWFycmF5JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtQXJyYXlOYW1lXT1cImZpZWxkLm5hbWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgc3ViR3JvdXAgb2YgZm9ybUFycmF5LmNvbnRyb2xzIGxldCBpbmRleCA9IGluZGV4O1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJmaWVsZC5kaXJlY3Rpb24gPT09ICdjb2x1bW4nID8gJ2NvbHVtbic6ICdyb3cnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViZmllbGQgb2YgZmllbGQuY29sbGVjdGlvbnM7XCJcbiAgICAgICAgICAgICAgICAgICAga2xlc0R5bmFtaWNGaWVsZCBbZmllbGRdPVwic3ViZmllbGRcIiBbZ3JvdXBdPVwic3ViR3JvdXBcIiBbc2libGluZ0ZpZWxkc109XCJmaWVsZC5jb2xsZWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuYCxcbiAgICBzdHlsZXM6IFsnbWF0LWZvcm0tZmllbGQge3dpZHRoOiBjYWxjKDEwMCUpfScsXG4gICAgICAgICc6aG9zdCB7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246IGluaGVyaXR9JyxcbiAgICAgICAgJy5ncm91cC1jb250YWluZXIge2Rpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246IGluaGVyaXR9JyxcbiAgICAgICAgJy5yb3cgeyBnYXA6IDEwcHg7IGZsZXgtZGlyZWN0aW9uOiByb3cgfScsXG4gICAgICAgICcuY29sdW1uIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAwcHh9J1xuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1BcnJheUNvbXBvbmVudCBleHRlbmRzIEtsZXNGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLy8gc3ViR3JvdXA6IEZvcm1Hcm91cFxuXG4gICAgZm9ybUFycmF5OiBVbnR5cGVkRm9ybUFycmF5O1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIHRoaXMuc3ViR3JvdXAgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGQubmFtZV0gYXMgRm9ybUdyb3VwO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5uYW1lXSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import { FieldMapper } from '../decorators/component.decorator';
|
|
4
|
+
import { EnumType } from '../enums/type.enum';
|
|
5
|
+
import { KlesFieldAbstract } from './field.abstract';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/flex-layout/extended";
|
|
9
|
+
import * as i3 from "@angular/material/badge";
|
|
10
|
+
import * as i4 from "@angular/material/tooltip";
|
|
11
|
+
let KlesFormBadgeComponent = class KlesFormBadgeComponent extends KlesFieldAbstract {
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
super.ngOnInit();
|
|
14
|
+
}
|
|
15
|
+
ngOnDestroy() {
|
|
16
|
+
super.ngOnDestroy();
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
KlesFormBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesFormBadgeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
KlesFormBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.4", type: KlesFormBadgeComponent, selector: "kles-form-badge", usesInheritance: true, ngImport: i0, template: `
|
|
21
|
+
<span matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass"
|
|
22
|
+
matBadge="{{group.controls[field.name].value}}" matBadgeOverlap="false" matBadgeColor="{{field.color}}">
|
|
23
|
+
</span>
|
|
24
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
25
|
+
KlesFormBadgeComponent = __decorate([
|
|
26
|
+
FieldMapper({ type: EnumType.badge })
|
|
27
|
+
], KlesFormBadgeComponent);
|
|
28
|
+
export { KlesFormBadgeComponent };
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesFormBadgeComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{
|
|
32
|
+
selector: 'kles-form-badge',
|
|
33
|
+
template: `
|
|
34
|
+
<span matTooltip="{{field.tooltip}}" [attr.id]="field.id" [ngClass]="field.ngClass"
|
|
35
|
+
matBadge="{{group.controls[field.name].value}}" matBadgeOverlap="false" matBadgeColor="{{field.color}}">
|
|
36
|
+
</span>
|
|
37
|
+
`
|
|
38
|
+
}]
|
|
39
|
+
}] });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvYmFkZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7SUFXeEMsc0JBQXNCLFNBQXRCLHNCQUF1QixTQUFRLGlCQUFpQjtJQUV6RCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDSixDQUFBO21IQVRZLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDhFQU5yQjs7OztDQUliO0FBRVksc0JBQXNCO0lBVGxDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7R0FTekIsc0JBQXNCLENBU2xDO1NBVFksc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBUmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7O0NBSWI7aUJBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZE1hcHBlciB9IGZyb20gJy4uL2RlY29yYXRvcnMvY29tcG9uZW50LmRlY29yYXRvcic7XG5pbXBvcnQgeyBFbnVtVHlwZSB9IGZyb20gJy4uL2VudW1zL3R5cGUuZW51bSc7XG5pbXBvcnQgeyBLbGVzRmllbGRBYnN0cmFjdCB9IGZyb20gJy4vZmllbGQuYWJzdHJhY3QnO1xuXG5ARmllbGRNYXBwZXIoeyB0eXBlOiBFbnVtVHlwZS5iYWRnZSB9KVxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tYmFkZ2UnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPHNwYW4gbWF0VG9vbHRpcD1cInt7ZmllbGQudG9vbHRpcH19XCIgW2F0dHIuaWRdPVwiZmllbGQuaWRcIiBbbmdDbGFzc109XCJmaWVsZC5uZ0NsYXNzXCIgXG4gICAgICAgIG1hdEJhZGdlPVwie3tncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXS52YWx1ZX19XCIgbWF0QmFkZ2VPdmVybGFwPVwiZmFsc2VcIiBtYXRCYWRnZUNvbG9yPVwie3tmaWVsZC5jb2xvcn19XCI+XG4gICAgPC9zcGFuPlxuYFxufSlcbmV4cG9ydCBjbGFzcyBLbGVzRm9ybUJhZGdlQ29tcG9uZW50IGV4dGVuZHMgS2xlc0ZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { KlesFieldAbstract } from './field.abstract';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "../forms/button-control.component";
|
|
6
|
+
export class KlesFormButtonComponent extends KlesFieldAbstract {
|
|
7
|
+
ngOnInit() {
|
|
8
|
+
super.ngOnInit();
|
|
9
|
+
}
|
|
10
|
+
ngOnDestroy() {
|
|
11
|
+
super.ngOnDestroy();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
KlesFormButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesFormButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
KlesFormButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.4", type: KlesFormButtonComponent, selector: "kles-form-button", usesInheritance: true, ngImport: i0, template: `
|
|
16
|
+
<div [formGroup]="group">
|
|
17
|
+
<kles-button
|
|
18
|
+
[attr.id]="field.id" [classButton]="field.ngClass"
|
|
19
|
+
[name]="field.name" [label]="field.label" [color]="field.color"
|
|
20
|
+
[icon]="field.icon"
|
|
21
|
+
[iconSvg]="field.iconSvg"
|
|
22
|
+
[value]="field.value"
|
|
23
|
+
[formControlName]="field.name"
|
|
24
|
+
[tooltip]="field.tooltip">
|
|
25
|
+
</kles-button>
|
|
26
|
+
</div>
|
|
27
|
+
`, isInline: true, dependencies: [{ 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: "component", type: i2.KlesButtonComponent, selector: "kles-button", inputs: ["name", "label", "color", "icon", "iconSvg", "disabled", "classButton", "value", "tooltip"] }] });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: KlesFormButtonComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ selector: 'kles-form-button', template: `
|
|
31
|
+
<div [formGroup]="group">
|
|
32
|
+
<kles-button
|
|
33
|
+
[attr.id]="field.id" [classButton]="field.ngClass"
|
|
34
|
+
[name]="field.name" [label]="field.label" [color]="field.color"
|
|
35
|
+
[icon]="field.icon"
|
|
36
|
+
[iconSvg]="field.iconSvg"
|
|
37
|
+
[value]="field.value"
|
|
38
|
+
[formControlName]="field.name"
|
|
39
|
+
[tooltip]="field.tooltip">
|
|
40
|
+
</kles-button>
|
|
41
|
+
</div>
|
|
42
|
+
` }]
|
|
43
|
+
}] });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xlcy1tYXRlcmlhbC1keW5hbWljZm9ybXMvc3JjL2xpYi9maWVsZHMvYnV0dG9uLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFvQnJELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxpQkFBaUI7SUFFMUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOztvSEFSUSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwrRUFmdEI7Ozs7Ozs7Ozs7OztLQVlUOzJGQUdRLHVCQUF1QjtrQkFqQm5DLFNBQVM7K0JBQ0ksa0JBQWtCLFlBQ2xCOzs7Ozs7Ozs7Ozs7S0FZVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uSW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtsZXNGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi9maWVsZC5hYnN0cmFjdCc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbGVzLWZvcm0tYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgICAgICA8a2xlcy1idXR0b25cbiAgICAgICAgICAgIFthdHRyLmlkXT1cImZpZWxkLmlkXCIgW2NsYXNzQnV0dG9uXT1cImZpZWxkLm5nQ2xhc3NcIiBcbiAgICAgICAgICAgIFtuYW1lXT1cImZpZWxkLm5hbWVcIiBbbGFiZWxdPVwiZmllbGQubGFiZWxcIiBbY29sb3JdPVwiZmllbGQuY29sb3JcIiBcbiAgICAgICAgICAgIFtpY29uXT1cImZpZWxkLmljb25cIlxuICAgICAgICAgICAgW2ljb25TdmddPVwiZmllbGQuaWNvblN2Z1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZmllbGQudmFsdWVcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cImZpZWxkLnRvb2x0aXBcIj5cbiAgICAgICAgPC9rbGVzLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgS2xlc0Zvcm1CdXR0b25Db21wb25lbnQgZXh0ZW5kcyBLbGVzRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
|