@covalent/dynamic-forms 4.1.2 → 4.1.5
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/lib/dynamic-element.component.mjs +11 -13
- package/fesm2015/covalent-dynamic-forms.mjs +10 -11
- package/fesm2015/covalent-dynamic-forms.mjs.map +1 -1
- package/fesm2020/covalent-dynamic-forms.mjs +10 -11
- package/fesm2020/covalent-dynamic-forms.mjs.map +1 -1
- package/lib/dynamic-element.component.d.ts +3 -4
- package/package.json +2 -2
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Component, Directive, Input, HostBinding, TemplateRef, ChangeDetectorRef, Type, } from '@angular/core';
|
|
1
|
+
import { Component, Directive, Input, HostBinding, TemplateRef, ChangeDetectorRef, Type, Injector, } from '@angular/core';
|
|
2
2
|
import { ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { ComponentFactoryResolver, forwardRef, } from '@angular/core';
|
|
4
3
|
import { NG_VALUE_ACCESSOR, AbstractControl } from '@angular/forms';
|
|
5
4
|
import { CdkPortal } from '@angular/cdk/portal';
|
|
6
5
|
import { mixinControlValueAccessor, } from '@covalent/core/common';
|
|
@@ -42,9 +41,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
42
41
|
}]
|
|
43
42
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
|
|
44
43
|
export class TdDynamicElementComponent extends _TdDynamicElementMixinBase {
|
|
45
|
-
constructor(
|
|
44
|
+
constructor(_injector, _dynamicFormsService, _changeDetectorRef) {
|
|
46
45
|
super(_changeDetectorRef);
|
|
47
|
-
this.
|
|
46
|
+
this._injector = _injector;
|
|
48
47
|
this._dynamicFormsService = _dynamicFormsService;
|
|
49
48
|
/**
|
|
50
49
|
* Sets label to be displayed.
|
|
@@ -73,10 +72,9 @@ export class TdDynamicElementComponent extends _TdDynamicElementMixinBase {
|
|
|
73
72
|
const component = this.type instanceof Type
|
|
74
73
|
? this.type
|
|
75
74
|
: this._dynamicFormsService.getDynamicElement(this.type);
|
|
76
|
-
const ref = this.
|
|
77
|
-
.
|
|
78
|
-
|
|
79
|
-
this.childElement.viewContainer.insert(ref.hostView);
|
|
75
|
+
const ref = this.childElement.viewContainer.createComponent(component, {
|
|
76
|
+
injector: this._injector,
|
|
77
|
+
});
|
|
80
78
|
this._instance = ref.instance;
|
|
81
79
|
this._instance.control = this.dynamicControl;
|
|
82
80
|
this._instance.label = this.label;
|
|
@@ -112,12 +110,12 @@ export class TdDynamicElementComponent extends _TdDynamicElementMixinBase {
|
|
|
112
110
|
}
|
|
113
111
|
}
|
|
114
112
|
}
|
|
115
|
-
TdDynamicElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicElementComponent, deps: [{ token: i0.
|
|
113
|
+
TdDynamicElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicElementComponent, deps: [{ token: i0.Injector }, { token: i1.TdDynamicFormsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
116
114
|
TdDynamicElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicElementComponent, selector: "td-dynamic-element", inputs: { dynamicControl: "dynamicControl", label: "label", hint: "hint", name: "name", type: "type", required: "required", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength", selections: "selections", multiple: "multiple", customConfig: "customConfig", errorMessageTemplate: "errorMessageTemplate", placeholder: "placeholder" }, host: { properties: { "attr.max": "this.maxAttr", "attr.min": "this.minAttr" } }, providers: [
|
|
117
115
|
TdDynamicFormsService,
|
|
118
116
|
{
|
|
119
117
|
provide: NG_VALUE_ACCESSOR,
|
|
120
|
-
useExisting:
|
|
118
|
+
useExisting: TdDynamicElementComponent,
|
|
121
119
|
multi: true,
|
|
122
120
|
},
|
|
123
121
|
], viewQueries: [{ propertyName: "childElement", first: true, predicate: TdDynamicElementDirective, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<div tdDynamicContainer></div>', isInline: true, directives: [{ type: TdDynamicElementDirective, selector: "[tdDynamicContainer]" }] });
|
|
@@ -128,14 +126,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
128
126
|
TdDynamicFormsService,
|
|
129
127
|
{
|
|
130
128
|
provide: NG_VALUE_ACCESSOR,
|
|
131
|
-
useExisting:
|
|
129
|
+
useExisting: TdDynamicElementComponent,
|
|
132
130
|
multi: true,
|
|
133
131
|
},
|
|
134
132
|
],
|
|
135
133
|
selector: 'td-dynamic-element',
|
|
136
134
|
template: '<div tdDynamicContainer></div>',
|
|
137
135
|
}]
|
|
138
|
-
}], ctorParameters: function () { return [{ type: i0.
|
|
136
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TdDynamicFormsService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { dynamicControl: [{
|
|
139
137
|
type: Input
|
|
140
138
|
}], label: [{
|
|
141
139
|
type: Input
|
|
@@ -175,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
175
173
|
type: HostBinding,
|
|
176
174
|
args: ['attr.min']
|
|
177
175
|
}] } });
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1keW5hbWljLWZvcm1zL3NyYy9saWIvZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUlYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUNMLHdCQUF3QixFQUV4QixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQ0wseUJBQXlCLEdBRTFCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUdMLHFCQUFxQixHQUV0QixNQUFNLGtDQUFrQyxDQUFDOzs7QUFFMUMsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFtQixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtJQUFHLENBQUM7Q0FDN0Q7QUFFRCw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQ3JDLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFHbEQsTUFBTSxPQUFPLG9DQUFxQyxTQUFRLFNBQVM7SUFFakUsWUFDa0IsV0FBNkIsRUFDN0MsZ0JBQWtDO1FBRWxDLEtBQUssQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUhyQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFJL0MsQ0FBQzs7aUlB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QUFDO29CQUNULFNBQVMsRUFBRTt3QkFDVCxxQkFBcUI7d0JBQ3JCOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsZ0NBQWdDO2lCQUMzQzttTEFVVSxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWxELE9BQU87c0JBRFYsV0FBVzt1QkFBQyxVQUFVO2dCQU1uQixPQUFPO3NCQURWLFdBQVc7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgSG9zdEJpbmRpbmcsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2RrUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbmltcG9ydCB7XG4gIG1peGluQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIElDb250cm9sVmFsdWVBY2Nlc3Nvcixcbn0gZnJvbSAnQGNvdmFsZW50L2NvcmUvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgVGREeW5hbWljRWxlbWVudCxcbiAgVGREeW5hbWljVHlwZSxcbiAgVGREeW5hbWljRm9ybXNTZXJ2aWNlLFxuICBJVGREeW5hbWljRWxlbWVudEN1c3RvbUNvbmZpZyxcbn0gZnJvbSAnLi9zZXJ2aWNlcy9keW5hbWljLWZvcm1zLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRWxlbWVudEJhc2Uge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbn1cblxuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXG5leHBvcnQgY29uc3QgX1RkRHluYW1pY0VsZW1lbnRNaXhpbkJhc2UgPVxuICBtaXhpbkNvbnRyb2xWYWx1ZUFjY2Vzc29yKFRkRHluYW1pY0VsZW1lbnRCYXNlKTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3RkRHluYW1pY0Zvcm1zRXJyb3JdbmctdGVtcGxhdGUnIH0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRm9ybXNFcnJvclRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcbiAgQElucHV0KCkgdGREeW5hbWljRm9ybXNFcnJvcj86IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG92ZXJyaWRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7XG4gICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZER5bmFtaWNDb250YWluZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRWxlbWVudERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgVGREeW5hbWljRm9ybXNTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGREeW5hbWljRWxlbWVudENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBzZWxlY3RvcjogJ3RkLWR5bmFtaWMtZWxlbWVudCcsXG4gIHRlbXBsYXRlOiAnPGRpdiB0ZER5bmFtaWNDb250YWluZXI+PC9kaXY+Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRWxlbWVudENvbXBvbmVudFxuICBleHRlbmRzIF9UZER5bmFtaWNFbGVtZW50TWl4aW5CYXNlXG4gIGltcGxlbWVudHMgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBwcml2YXRlIF9pbnN0YW5jZTogYW55O1xuXG4gIC8qKlxuICAgKiBTZXRzIGZvcm0gY29udHJvbCBvZiB0aGUgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIGR5bmFtaWNDb250cm9sITogQWJzdHJhY3RDb250cm9sO1xuXG4gIC8qKlxuICAgKiBTZXRzIGxhYmVsIHRvIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIFNldHMgaGludCB0byBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBoaW50PyA9ICcnO1xuXG4gIC8qKlxuICAgKiBTZXRzIG5hbWUgdG8gYmUgZGlzcGxheWVkIGFzIGF0dHJpYnV0ZS5cbiAgICovXG4gIEBJbnB1dCgpIG5hbWUgPSAnJztcblxuICAvKipcbiAgICogU2V0cyB0eXBlIG9yIGVsZW1lbnQgb2YgZWxlbWVudCB0byBiZSByZW5kZXJlZC5cbiAgICogVGhyb3dzIGVycm9yIGlmIGRvZXMgbm90IGV4aXN0IG9yIG5vIHN1cHBvcnRlZC5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU/OiBUZER5bmFtaWNFbGVtZW50IHwgVGREeW5hbWljVHlwZSB8IFR5cGU8YW55PjtcblxuICAvKipcbiAgICogU2V0cyByZXF1aXJlZCB2YWxpZGF0aW9uIGNoZWNrdXAgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyBtaW4gdmFsaWRhdGlvbiBjaGVja3VwIChpZiBzdXBwb3J0ZWQgYnkgZWxlbWVudCkuXG4gICAqL1xuICBASW5wdXQoKSBtaW4/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldHMgbWF4IHZhbGlkYXRpb24gY2hlY2t1cCAoaWYgc3VwcG9ydGVkIGJ5IGVsZW1lbnQpLlxuICAgKi9cbiAgQElucHV0KCkgbWF4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXRzIG1pbkxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrdXAgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIG1pbkxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0cyBtYXhMZW5ndGggdmFsaWRhdGlvbiBjaGVja3VwIChpZiBzdXBwb3J0ZWQgYnkgZWxlbWVudCkuXG4gICAqL1xuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldHMgc2VsZWN0aW9ucyBmb3IgYXJyYXkgZWxlbWVudHMgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGlvbnM/OiBhbnlbXTtcblxuICAvKipcbiAgICogU2V0cyBtdWx0aXBsZSBwcm9wZXJ0eSBmb3IgYXJyYXkgZWxlbWVudHMgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIG11bHRpcGxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyBhbnkgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIG9uIGN1c3RvbSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21Db25maWc/OiBJVGREeW5hbWljRWxlbWVudEN1c3RvbUNvbmZpZztcblxuICAvKipcbiAgICogU2V0cyBlcnJvciBtZXNzYWdlIHRlbXBsYXRlIHNvIGl0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGR5bmFtaWMgY29tcG9uZW50cy5cbiAgICovXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcGxhY2Vob2xkZXIgbWVzc2FnZVxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/ID0gJyc7XG5cbiAgQFZpZXdDaGlsZChUZER5bmFtaWNFbGVtZW50RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjaGlsZEVsZW1lbnQhOiBUZER5bmFtaWNFbGVtZW50RGlyZWN0aXZlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5tYXgnKVxuICBnZXQgbWF4QXR0cigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1heDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5taW4nKVxuICBnZXQgbWluQXR0cigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1pbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgX2R5bmFtaWNGb3Jtc1NlcnZpY2U6IFRkRHluYW1pY0Zvcm1zU2VydmljZSxcbiAgICBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKF9jaGFuZ2VEZXRlY3RvclJlZik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wb25lbnQ6IGFueSA9XG4gICAgICA8YW55PnRoaXMudHlwZSBpbnN0YW5jZW9mIFR5cGVcbiAgICAgICAgPyB0aGlzLnR5cGVcbiAgICAgICAgOiB0aGlzLl9keW5hbWljRm9ybXNTZXJ2aWNlLmdldER5bmFtaWNFbGVtZW50KHRoaXMudHlwZSk7XG4gICAgY29uc3QgcmVmOiBDb21wb25lbnRSZWY8YW55PiA9IHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudClcbiAgICAgIC5jcmVhdGUodGhpcy5jaGlsZEVsZW1lbnQudmlld0NvbnRhaW5lci5pbmplY3Rvcik7XG4gICAgdGhpcy5jaGlsZEVsZW1lbnQudmlld0NvbnRhaW5lci5pbnNlcnQocmVmLmhvc3RWaWV3KTtcbiAgICB0aGlzLl9pbnN0YW5jZSA9IHJlZi5pbnN0YW5jZTtcbiAgICB0aGlzLl9pbnN0YW5jZS5jb250cm9sID0gdGhpcy5keW5hbWljQ29udHJvbDtcbiAgICB0aGlzLl9pbnN0YW5jZS5sYWJlbCA9IHRoaXMubGFiZWw7XG4gICAgdGhpcy5faW5zdGFuY2UuaGludCA9IHRoaXMuaGludDtcbiAgICB0aGlzLl9pbnN0YW5jZS5uYW1lID0gdGhpcy5uYW1lO1xuICAgIHRoaXMuX2luc3RhbmNlLnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgdGhpcy5faW5zdGFuY2UudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMuX2luc3RhbmNlLnJlcXVpcmVkID0gdGhpcy5yZXF1aXJlZDtcbiAgICB0aGlzLl9pbnN0YW5jZS5taW4gPSB0aGlzLm1pbjtcbiAgICB0aGlzLl9pbnN0YW5jZS5tYXggPSB0aGlzLm1heDtcbiAgICB0aGlzLl9pbnN0YW5jZS5taW5MZW5ndGggPSB0aGlzLm1pbkxlbmd0aDtcbiAgICB0aGlzLl9pbnN0YW5jZS5tYXhMZW5ndGggPSB0aGlzLm1heExlbmd0aDtcbiAgICB0aGlzLl9pbnN0YW5jZS5zZWxlY3Rpb25zID0gdGhpcy5zZWxlY3Rpb25zO1xuICAgIHRoaXMuX2luc3RhbmNlLm11bHRpcGxlID0gdGhpcy5tdWx0aXBsZTtcbiAgICB0aGlzLl9pbnN0YW5jZS5lcnJvck1lc3NhZ2VUZW1wbGF0ZSA9IHRoaXMuZXJyb3JNZXNzYWdlVGVtcGxhdGU7XG4gICAgdGhpcy5faW5zdGFuY2UucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgIGlmICh0aGlzLmN1c3RvbUNvbmZpZykge1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5jdXN0b21Db25maWcpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21Db25maWcpIHtcbiAgICAgICAgICB0aGlzLl9pbnN0YW5jZVtuYW1lXSA9IHRoaXMuY3VzdG9tQ29uZmlnW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhc3NpZ24gYW55IGlucHV0cyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbnN0YW5jZSkge1xuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKGNoYW5nZXMpKSB7XG4gICAgICAgIHRoaXMuX2luc3RhbmNlW3Byb3BdID0gY2hhbmdlc1twcm9wXS5jdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1keW5hbWljLWZvcm1zL3NyYy9saWIvZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUlYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsSUFBSSxFQUNKLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsT0FBTyxFQUNMLHlCQUF5QixHQUUxQixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFHTCxxQkFBcUIsR0FFdEIsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRTFDLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBbUIsa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7SUFBRyxDQUFDO0NBQzdEO0FBRUQsOEJBQThCO0FBQzlCLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUNyQyx5QkFBeUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBR2xELE1BQU0sT0FBTyxvQ0FBcUMsU0FBUSxTQUFTO0lBRWpFLFlBQ2tCLFdBQTZCLEVBQzdDLGdCQUFrQztRQUVsQyxLQUFLLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFIckIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0lBSS9DLENBQUM7O2lJQVBVLG9DQUFvQztxSEFBcEMsb0NBQW9DOzJGQUFwQyxvQ0FBb0M7a0JBRGhE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aUJBQzNDO21LQVVVLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJbEQsT0FBTztzQkFEVixXQUFXO3VCQUFDLFVBQVU7Z0JBTW5CLE9BQU87c0JBRFYsV0FBVzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBIb3N0QmluZGluZyxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgVHlwZSxcbiAgSW5qZWN0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2RrUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbmltcG9ydCB7XG4gIG1peGluQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIElDb250cm9sVmFsdWVBY2Nlc3Nvcixcbn0gZnJvbSAnQGNvdmFsZW50L2NvcmUvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgVGREeW5hbWljRWxlbWVudCxcbiAgVGREeW5hbWljVHlwZSxcbiAgVGREeW5hbWljRm9ybXNTZXJ2aWNlLFxuICBJVGREeW5hbWljRWxlbWVudEN1c3RvbUNvbmZpZyxcbn0gZnJvbSAnLi9zZXJ2aWNlcy9keW5hbWljLWZvcm1zLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRWxlbWVudEJhc2Uge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbn1cblxuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXG5leHBvcnQgY29uc3QgX1RkRHluYW1pY0VsZW1lbnRNaXhpbkJhc2UgPVxuICBtaXhpbkNvbnRyb2xWYWx1ZUFjY2Vzc29yKFRkRHluYW1pY0VsZW1lbnRCYXNlKTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3RkRHluYW1pY0Zvcm1zRXJyb3JdbmctdGVtcGxhdGUnIH0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRm9ybXNFcnJvclRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcbiAgQElucHV0KCkgdGREeW5hbWljRm9ybXNFcnJvcj86IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG92ZXJyaWRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7XG4gICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZER5bmFtaWNDb250YWluZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRWxlbWVudERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgVGREeW5hbWljRm9ybXNTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFRkRHluYW1pY0VsZW1lbnRDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBzZWxlY3RvcjogJ3RkLWR5bmFtaWMtZWxlbWVudCcsXG4gIHRlbXBsYXRlOiAnPGRpdiB0ZER5bmFtaWNDb250YWluZXI+PC9kaXY+Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRWxlbWVudENvbXBvbmVudFxuICBleHRlbmRzIF9UZER5bmFtaWNFbGVtZW50TWl4aW5CYXNlXG4gIGltcGxlbWVudHMgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBwcml2YXRlIF9pbnN0YW5jZTogYW55O1xuXG4gIC8qKlxuICAgKiBTZXRzIGZvcm0gY29udHJvbCBvZiB0aGUgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIGR5bmFtaWNDb250cm9sITogQWJzdHJhY3RDb250cm9sO1xuXG4gIC8qKlxuICAgKiBTZXRzIGxhYmVsIHRvIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIFNldHMgaGludCB0byBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBoaW50PyA9ICcnO1xuXG4gIC8qKlxuICAgKiBTZXRzIG5hbWUgdG8gYmUgZGlzcGxheWVkIGFzIGF0dHJpYnV0ZS5cbiAgICovXG4gIEBJbnB1dCgpIG5hbWUgPSAnJztcblxuICAvKipcbiAgICogU2V0cyB0eXBlIG9yIGVsZW1lbnQgb2YgZWxlbWVudCB0byBiZSByZW5kZXJlZC5cbiAgICogVGhyb3dzIGVycm9yIGlmIGRvZXMgbm90IGV4aXN0IG9yIG5vIHN1cHBvcnRlZC5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU/OiBUZER5bmFtaWNFbGVtZW50IHwgVGREeW5hbWljVHlwZSB8IFR5cGU8YW55PjtcblxuICAvKipcbiAgICogU2V0cyByZXF1aXJlZCB2YWxpZGF0aW9uIGNoZWNrdXAgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyBtaW4gdmFsaWRhdGlvbiBjaGVja3VwIChpZiBzdXBwb3J0ZWQgYnkgZWxlbWVudCkuXG4gICAqL1xuICBASW5wdXQoKSBtaW4/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldHMgbWF4IHZhbGlkYXRpb24gY2hlY2t1cCAoaWYgc3VwcG9ydGVkIGJ5IGVsZW1lbnQpLlxuICAgKi9cbiAgQElucHV0KCkgbWF4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXRzIG1pbkxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrdXAgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIG1pbkxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0cyBtYXhMZW5ndGggdmFsaWRhdGlvbiBjaGVja3VwIChpZiBzdXBwb3J0ZWQgYnkgZWxlbWVudCkuXG4gICAqL1xuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldHMgc2VsZWN0aW9ucyBmb3IgYXJyYXkgZWxlbWVudHMgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGlvbnM/OiBhbnlbXTtcblxuICAvKipcbiAgICogU2V0cyBtdWx0aXBsZSBwcm9wZXJ0eSBmb3IgYXJyYXkgZWxlbWVudHMgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIG11bHRpcGxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyBhbnkgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIG9uIGN1c3RvbSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21Db25maWc/OiBJVGREeW5hbWljRWxlbWVudEN1c3RvbUNvbmZpZztcblxuICAvKipcbiAgICogU2V0cyBlcnJvciBtZXNzYWdlIHRlbXBsYXRlIHNvIGl0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGR5bmFtaWMgY29tcG9uZW50cy5cbiAgICovXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcGxhY2Vob2xkZXIgbWVzc2FnZVxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/ID0gJyc7XG5cbiAgQFZpZXdDaGlsZChUZER5bmFtaWNFbGVtZW50RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjaGlsZEVsZW1lbnQhOiBUZER5bmFtaWNFbGVtZW50RGlyZWN0aXZlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5tYXgnKVxuICBnZXQgbWF4QXR0cigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1heDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5taW4nKVxuICBnZXQgbWluQXR0cigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1pbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIF9keW5hbWljRm9ybXNTZXJ2aWNlOiBUZER5bmFtaWNGb3Jtc1NlcnZpY2UsXG4gICAgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcihfY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50OiBhbnkgPVxuICAgICAgPGFueT50aGlzLnR5cGUgaW5zdGFuY2VvZiBUeXBlXG4gICAgICAgID8gdGhpcy50eXBlXG4gICAgICAgIDogdGhpcy5fZHluYW1pY0Zvcm1zU2VydmljZS5nZXREeW5hbWljRWxlbWVudCh0aGlzLnR5cGUpO1xuICAgIGNvbnN0IHJlZiA9IHRoaXMuY2hpbGRFbGVtZW50LnZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xuICAgICAgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuICAgIH0pO1xuICAgIHRoaXMuX2luc3RhbmNlID0gcmVmLmluc3RhbmNlO1xuICAgIHRoaXMuX2luc3RhbmNlLmNvbnRyb2wgPSB0aGlzLmR5bmFtaWNDb250cm9sO1xuICAgIHRoaXMuX2luc3RhbmNlLmxhYmVsID0gdGhpcy5sYWJlbDtcbiAgICB0aGlzLl9pbnN0YW5jZS5oaW50ID0gdGhpcy5oaW50O1xuICAgIHRoaXMuX2luc3RhbmNlLm5hbWUgPSB0aGlzLm5hbWU7XG4gICAgdGhpcy5faW5zdGFuY2UudHlwZSA9IHRoaXMudHlwZTtcbiAgICB0aGlzLl9pbnN0YW5jZS52YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy5faW5zdGFuY2UucmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkO1xuICAgIHRoaXMuX2luc3RhbmNlLm1pbiA9IHRoaXMubWluO1xuICAgIHRoaXMuX2luc3RhbmNlLm1heCA9IHRoaXMubWF4O1xuICAgIHRoaXMuX2luc3RhbmNlLm1pbkxlbmd0aCA9IHRoaXMubWluTGVuZ3RoO1xuICAgIHRoaXMuX2luc3RhbmNlLm1heExlbmd0aCA9IHRoaXMubWF4TGVuZ3RoO1xuICAgIHRoaXMuX2luc3RhbmNlLnNlbGVjdGlvbnMgPSB0aGlzLnNlbGVjdGlvbnM7XG4gICAgdGhpcy5faW5zdGFuY2UubXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlO1xuICAgIHRoaXMuX2luc3RhbmNlLmVycm9yTWVzc2FnZVRlbXBsYXRlID0gdGhpcy5lcnJvck1lc3NhZ2VUZW1wbGF0ZTtcbiAgICB0aGlzLl9pbnN0YW5jZS5wbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgaWYgKHRoaXMuY3VzdG9tQ29uZmlnKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLmN1c3RvbUNvbmZpZykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUNvbmZpZykge1xuICAgICAgICAgIHRoaXMuX2luc3RhbmNlW25hbWVdID0gdGhpcy5jdXN0b21Db25maWdbbmFtZV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFzc2lnbiBhbnkgaW5wdXRzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2luc3RhbmNlKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMoY2hhbmdlcykpIHtcbiAgICAgICAgdGhpcy5faW5zdGFuY2VbcHJvcF0gPSBjaGFuZ2VzW3Byb3BdLmN1cnJlbnRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Injectable, Optional, SkipSelf, Directive, Input, Type,
|
|
2
|
+
import { Component, Injectable, Optional, SkipSelf, Directive, Input, Type, ViewChild, HostBinding, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';
|
|
3
3
|
import * as i4 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i3 from '@angular/forms';
|
|
@@ -329,9 +329,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
329
329
|
}]
|
|
330
330
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
|
|
331
331
|
class TdDynamicElementComponent extends _TdDynamicElementMixinBase {
|
|
332
|
-
constructor(
|
|
332
|
+
constructor(_injector, _dynamicFormsService, _changeDetectorRef) {
|
|
333
333
|
super(_changeDetectorRef);
|
|
334
|
-
this.
|
|
334
|
+
this._injector = _injector;
|
|
335
335
|
this._dynamicFormsService = _dynamicFormsService;
|
|
336
336
|
/**
|
|
337
337
|
* Sets label to be displayed.
|
|
@@ -360,10 +360,9 @@ class TdDynamicElementComponent extends _TdDynamicElementMixinBase {
|
|
|
360
360
|
const component = this.type instanceof Type
|
|
361
361
|
? this.type
|
|
362
362
|
: this._dynamicFormsService.getDynamicElement(this.type);
|
|
363
|
-
const ref = this.
|
|
364
|
-
.
|
|
365
|
-
|
|
366
|
-
this.childElement.viewContainer.insert(ref.hostView);
|
|
363
|
+
const ref = this.childElement.viewContainer.createComponent(component, {
|
|
364
|
+
injector: this._injector,
|
|
365
|
+
});
|
|
367
366
|
this._instance = ref.instance;
|
|
368
367
|
this._instance.control = this.dynamicControl;
|
|
369
368
|
this._instance.label = this.label;
|
|
@@ -399,12 +398,12 @@ class TdDynamicElementComponent extends _TdDynamicElementMixinBase {
|
|
|
399
398
|
}
|
|
400
399
|
}
|
|
401
400
|
}
|
|
402
|
-
TdDynamicElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicElementComponent, deps: [{ token: i0.
|
|
401
|
+
TdDynamicElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicElementComponent, deps: [{ token: i0.Injector }, { token: TdDynamicFormsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
403
402
|
TdDynamicElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicElementComponent, selector: "td-dynamic-element", inputs: { dynamicControl: "dynamicControl", label: "label", hint: "hint", name: "name", type: "type", required: "required", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength", selections: "selections", multiple: "multiple", customConfig: "customConfig", errorMessageTemplate: "errorMessageTemplate", placeholder: "placeholder" }, host: { properties: { "attr.max": "this.maxAttr", "attr.min": "this.minAttr" } }, providers: [
|
|
404
403
|
TdDynamicFormsService,
|
|
405
404
|
{
|
|
406
405
|
provide: NG_VALUE_ACCESSOR,
|
|
407
|
-
useExisting:
|
|
406
|
+
useExisting: TdDynamicElementComponent,
|
|
408
407
|
multi: true,
|
|
409
408
|
},
|
|
410
409
|
], viewQueries: [{ propertyName: "childElement", first: true, predicate: TdDynamicElementDirective, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<div tdDynamicContainer></div>', isInline: true, directives: [{ type: TdDynamicElementDirective, selector: "[tdDynamicContainer]" }] });
|
|
@@ -415,14 +414,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
415
414
|
TdDynamicFormsService,
|
|
416
415
|
{
|
|
417
416
|
provide: NG_VALUE_ACCESSOR,
|
|
418
|
-
useExisting:
|
|
417
|
+
useExisting: TdDynamicElementComponent,
|
|
419
418
|
multi: true,
|
|
420
419
|
},
|
|
421
420
|
],
|
|
422
421
|
selector: 'td-dynamic-element',
|
|
423
422
|
template: '<div tdDynamicContainer></div>',
|
|
424
423
|
}]
|
|
425
|
-
}], ctorParameters: function () { return [{ type: i0.
|
|
424
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: TdDynamicFormsService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { dynamicControl: [{
|
|
426
425
|
type: Input
|
|
427
426
|
}], label: [{
|
|
428
427
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"covalent-dynamic-forms.mjs","sources":["../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.html","../../../../libs/angular-dynamic-forms/src/lib/services/dynamic-forms.service.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-element.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.module.ts","../../../../libs/angular-dynamic-forms/src/covalent-dynamic-forms.ts"],"sourcesContent":["import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-input',\n styleUrls: ['./dynamic-input.component.scss'],\n templateUrl: './dynamic-input.component.html',\n})\nexport class TdDynamicInputComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n type!: string;\n\n required = false;\n\n name = '';\n\n min?: number;\n\n max?: number;\n\n minLength?: number;\n\n maxLength?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-input-wrapper\">\n <mat-form-field class=\"td-dynamic-input-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.minLength]=\"minLength\"\n [attr.maxLength]=\"maxLength\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-file-input',\n styleUrls: ['./dynamic-file-input.component.scss'],\n templateUrl: './dynamic-file-input.component.html',\n})\nexport class TdDynamicFileInputComponent {\n control!: FormControl;\n\n required = false;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n\n _handlefileDrop(value: any): void {\n this.control?.setValue(value);\n }\n}\n","<div class=\"td-dynamic-file-input-wrapper\">\n <mat-form-field\n tdFileDrop\n class=\"td-dynamic-file-input-field\"\n floatLabel=\"never\"\n [disabled]=\"control?.disabled\"\n (fileDrop)=\"_handlefileDrop($event)\"\n (click)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.enter)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.delete)=\"fileInput.clear()\"\n (keyup.backspace)=\"fileInput.clear()\"\n >\n <mat-label>{{ label }}</mat-label>\n <input\n matInput\n [value]=\"control?.value?.name\"\n [placeholder]=\"placeholder\"\n [attr.name]=\"name\"\n [disabled]=\"control?.disabled\"\n readonly\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n <button\n mat-icon-button\n *ngIf=\"control.value\"\n (click)=\"fileInput.clear()\"\n (keyup.enter)=\"fileInput.clear()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <td-file-input class=\"td-file-input\" #fileInput [formControl]=\"control\">\n <mat-icon>folder</mat-icon>\n <span>{{ label }}</span>\n </td-file-input>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-textarea',\n styleUrls: ['./dynamic-textarea.component.scss'],\n templateUrl: './dynamic-textarea.component.html',\n})\nexport class TdDynamicTextareaComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-textarea-wrapper\">\n <mat-form-field class=\"td-dynamic-textarea-field\">\n <mat-label>{{ label }}</mat-label>\n <textarea\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n rows=\"4\"\n ></textarea>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slide-toggle',\n styleUrls: ['./dynamic-slide-toggle.component.scss'],\n templateUrl: './dynamic-slide-toggle.component.html',\n})\nexport class TdDynamicSlideToggleComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-slide-toggle-wrapper\">\n <mat-slide-toggle\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [required]=\"required\"\n >\n {{ label }}\n </mat-slide-toggle>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-checkbox',\n styleUrls: ['./dynamic-checkbox.component.scss'],\n templateUrl: './dynamic-checkbox.component.html',\n})\nexport class TdDynamicCheckboxComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-checkbox-wrapper\">\n <mat-checkbox [formControl]=\"control\" [name]=\"name\" [required]=\"required\">\n {{ label }}\n </mat-checkbox>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, ChangeDetectorRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slider',\n styleUrls: ['./dynamic-slider.component.scss'],\n templateUrl: './dynamic-slider.component.html',\n})\nexport class TdDynamicSliderComponent {\n control!: FormControl;\n\n label = '';\n\n required = false;\n\n name = '';\n\n hint = '';\n\n min?: number;\n\n max?: number;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n _handleBlur(): void {\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n class=\"td-dynamic-slider-wrapper mat-form-field mat-form-field-can-float mat-form-field-should-float\"\n [class.mat-focused]=\"slider._isActive\"\n>\n <span class=\"mat-form-field-label-wrapper\">\n <label class=\"mat-form-field-label mat-primary td-slider-label\">\n {{ label }}\n <span\n *ngIf=\"required && !control?.disabled\"\n class=\"mat-form-field-required-marker\"\n >*</span\n >\n </label>\n </span>\n <div class=\"td-dynamic-slider-field\">\n <mat-slider\n #slider\n class=\"td-dynamic-slider\"\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n thumbLabel\n tickInterval=\"auto\"\n [required]=\"required\"\n (blur)=\"_handleBlur()\"\n ></mat-slider>\n </div>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-select',\n styleUrls: ['./dynamic-select.component.scss'],\n templateUrl: './dynamic-select.component.html',\n})\nexport class TdDynamicSelectComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n selections?: any[];\n\n multiple?: boolean;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-select-wrapper\">\n <mat-form-field class=\"td-dynamic-select-field\">\n <mat-label>{{ label }}</mat-label>\n <mat-select\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [multiple]=\"multiple\"\n >\n <mat-option\n *ngFor=\"let selection of selections\"\n [value]=\"selection.value || selection\"\n >\n {{ selection.label || selection }}\n </mat-option>\n </mat-select>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-datepicker',\n styleUrls: ['./dynamic-datepicker.component.scss'],\n templateUrl: './dynamic-datepicker.component.html',\n})\nexport class TdDynamicDatepickerComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n type?: string;\n\n required = false;\n\n min?: number;\n\n max?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-datepicker-wrapper\">\n <mat-form-field class=\"td-dynamic-datepicker-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [matDatepicker]=\"dynamicDatePicker\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n <mat-datepicker-toggle\n matSuffix\n [for]=\"dynamicDatePicker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #dynamicDatePicker></mat-datepicker>\n </mat-form-field>\n</div>\n","import { Injectable, Provider, SkipSelf, Optional, Type } from '@angular/core';\nimport { Validators, ValidatorFn, FormControl } from '@angular/forms';\n\nimport { TdDynamicInputComponent } from '../dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from '../dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from '../dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from '../dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from '../dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from '../dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from '../dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from '../dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nexport enum TdDynamicType {\n Text = 'text',\n Boolean = 'boolean',\n Number = 'number',\n Array = 'array',\n Date = 'date',\n}\n\nexport enum TdDynamicElement {\n Input = 'input',\n Datepicker = 'datepicker',\n Password = 'password',\n Textarea = 'textarea',\n Slider = 'slider',\n SlideToggle = 'slide-toggle',\n Checkbox = 'checkbox',\n Select = 'select',\n FileInput = 'file-input',\n}\n\nexport interface ITdDynamicElementValidator {\n validator: ValidatorFn;\n}\n\n// Property values to be set in custom component\nexport interface ITdDynamicElementCustomConfig {\n [name: string]: any;\n}\n\nexport interface ITdDynamicElementConfig {\n label?: string;\n name: string;\n hint?: string;\n type: TdDynamicType | TdDynamicElement | Type<any>;\n required?: boolean;\n disabled?: boolean;\n min?: any;\n max?: any;\n minLength?: any;\n maxLength?: any;\n selections?: string[] | { value: any; label: string }[];\n multiple?: boolean;\n default?: any;\n flex?: number;\n validators?: ITdDynamicElementValidator[];\n customConfig?: ITdDynamicElementCustomConfig;\n placeholder?: string;\n}\n\nexport const DYNAMIC_ELEMENT_NAME_REGEX = /^[^0-9][^@]*$/;\n\n@Injectable()\nexport class TdDynamicFormsService {\n /**\n * Method to validate if the [name] is a proper element name.\n * Throws error if name is not valid.\n */\n validateDynamicElementName(name: string): void {\n if (!DYNAMIC_ELEMENT_NAME_REGEX.test(name)) {\n throw new Error('Dynamic element name: \"${name}\" is not valid.');\n }\n }\n\n /**\n * Gets component to be rendered depending on [TdDynamicElement | TdDynamicType]\n * Throws error if it does not exists or not supported.\n */\n getDynamicElement(\n element: TdDynamicElement | TdDynamicType | Type<any> | undefined\n ): any {\n switch (element) {\n case TdDynamicType.Text:\n case TdDynamicType.Number:\n case TdDynamicElement.Input:\n case TdDynamicElement.Password:\n return TdDynamicInputComponent;\n case TdDynamicElement.Textarea:\n return TdDynamicTextareaComponent;\n case TdDynamicType.Boolean:\n case TdDynamicElement.SlideToggle:\n return TdDynamicSlideToggleComponent;\n case TdDynamicElement.Checkbox:\n return TdDynamicCheckboxComponent;\n case TdDynamicElement.Slider:\n return TdDynamicSliderComponent;\n case TdDynamicType.Array:\n case TdDynamicElement.Select:\n return TdDynamicSelectComponent;\n case TdDynamicElement.FileInput:\n return TdDynamicFileInputComponent;\n case TdDynamicElement.Datepicker:\n case TdDynamicType.Date:\n return TdDynamicDatepickerComponent;\n default:\n throw new Error(\n `Error: type ${element} does not exist or not supported.`\n );\n }\n }\n\n /**\n * Creates form control for element depending [ITdDynamicElementConfig] properties.\n */\n createFormControl(config: ITdDynamicElementConfig): FormControl {\n const validator = this.createValidators(config);\n return new FormControl(\n { value: config.default, disabled: config.disabled },\n validator\n );\n }\n\n /**\n * Creates form validationdepending [ITdDynamicElementConfig] properties.\n */\n createValidators(config: ITdDynamicElementConfig): ValidatorFn | null {\n let validator: ValidatorFn | null = null;\n if (config.required) {\n validator = Validators.required;\n }\n if (config.max || config.max === 0) {\n validator = Validators.compose([\n validator,\n Validators.max(parseFloat(config.max)),\n ]);\n }\n if (config.min || config.min === 0) {\n validator = Validators.compose([\n validator,\n Validators.min(parseFloat(config.min)),\n ]);\n }\n if (config.maxLength || config.maxLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.maxLength(parseFloat(config.maxLength)),\n ]);\n }\n if (config.minLength || config.minLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.minLength(parseFloat(config.minLength)),\n ]);\n }\n // Add provided custom validators to the validator function\n if (config.validators) {\n config.validators.forEach(\n (validatorConfig: ITdDynamicElementValidator) => {\n validator = Validators.compose([\n validator,\n validatorConfig.validator,\n ]);\n }\n );\n }\n return validator;\n }\n}\n\nexport function DYNAMIC_FORMS_PROVIDER_FACTORY(\n parent: TdDynamicFormsService\n): TdDynamicFormsService {\n return parent || new TdDynamicFormsService();\n}\n\nexport const DYNAMIC_FORMS_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDynamicFormsService,\n deps: [[new Optional(), new SkipSelf(), TdDynamicFormsService]],\n useFactory: DYNAMIC_FORMS_PROVIDER_FACTORY,\n};\n","import {\n Component,\n Directive,\n Input,\n HostBinding,\n OnInit,\n SimpleChanges,\n OnChanges,\n TemplateRef,\n ChangeDetectorRef,\n Type,\n} from '@angular/core';\nimport { ViewChild, ViewContainerRef } from '@angular/core';\nimport {\n ComponentFactoryResolver,\n ComponentRef,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, AbstractControl } from '@angular/forms';\nimport { CdkPortal } from '@angular/cdk/portal';\n\nimport {\n mixinControlValueAccessor,\n IControlValueAccessor,\n} from '@covalent/core/common';\n\nimport {\n TdDynamicElement,\n TdDynamicType,\n TdDynamicFormsService,\n ITdDynamicElementCustomConfig,\n} from './services/dynamic-forms.service';\n\nexport class TdDynamicElementBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDynamicElementMixinBase =\n mixinControlValueAccessor(TdDynamicElementBase);\n\n@Directive({ selector: '[tdDynamicFormsError]ng-template' })\nexport class TdDynamicFormsErrorTemplateDirective extends CdkPortal {\n @Input() tdDynamicFormsError?: string;\n constructor(\n public override templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[tdDynamicContainer]',\n})\nexport class TdDynamicElementDirective {\n constructor(public viewContainer: ViewContainerRef) {}\n}\n\n@Component({\n providers: [\n TdDynamicFormsService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDynamicElementComponent),\n multi: true,\n },\n ],\n selector: 'td-dynamic-element',\n template: '<div tdDynamicContainer></div>',\n})\nexport class TdDynamicElementComponent\n extends _TdDynamicElementMixinBase\n implements IControlValueAccessor, OnInit, OnChanges\n{\n private _instance: any;\n\n /**\n * Sets form control of the element.\n */\n @Input() dynamicControl!: AbstractControl;\n\n /**\n * Sets label to be displayed.\n */\n @Input() label = '';\n\n /**\n * Sets hint to be displayed.\n */\n @Input() hint? = '';\n\n /**\n * Sets name to be displayed as attribute.\n */\n @Input() name = '';\n\n /**\n * Sets type or element of element to be rendered.\n * Throws error if does not exist or no supported.\n */\n @Input() type?: TdDynamicElement | TdDynamicType | Type<any>;\n\n /**\n * Sets required validation checkup (if supported by element).\n */\n @Input() required?: boolean | string | undefined;\n\n /**\n * Sets min validation checkup (if supported by element).\n */\n @Input() min?: number;\n\n /**\n * Sets max validation checkup (if supported by element).\n */\n @Input() max?: number;\n\n /**\n * Sets minLength validation checkup (if supported by element).\n */\n @Input() minLength?: number;\n\n /**\n * Sets maxLength validation checkup (if supported by element).\n */\n @Input() maxLength?: number;\n\n /**\n * Sets selections for array elements (if supported by element).\n */\n @Input() selections?: any[];\n\n /**\n * Sets multiple property for array elements (if supported by element).\n */\n @Input() multiple?: boolean;\n\n /**\n * Sets any additional properties on custom component.\n */\n @Input() customConfig?: ITdDynamicElementCustomConfig;\n\n /**\n * Sets error message template so it can be injected into dynamic components.\n */\n @Input() errorMessageTemplate!: TemplateRef<any> | undefined;\n\n /**\n * Sets the placeholder message\n */\n @Input() placeholder? = '';\n\n @ViewChild(TdDynamicElementDirective, { static: true })\n childElement!: TdDynamicElementDirective;\n\n @HostBinding('attr.max')\n get maxAttr(): any {\n return this.max;\n }\n\n @HostBinding('attr.min')\n get minAttr(): any {\n return this.min;\n }\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _dynamicFormsService: TdDynamicFormsService,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n const component: any =\n <any>this.type instanceof Type\n ? this.type\n : this._dynamicFormsService.getDynamicElement(this.type);\n const ref: ComponentRef<any> = this._componentFactoryResolver\n .resolveComponentFactory(component)\n .create(this.childElement.viewContainer.injector);\n this.childElement.viewContainer.insert(ref.hostView);\n this._instance = ref.instance;\n this._instance.control = this.dynamicControl;\n this._instance.label = this.label;\n this._instance.hint = this.hint;\n this._instance.name = this.name;\n this._instance.type = this.type;\n this._instance.value = this.value;\n this._instance.required = this.required;\n this._instance.min = this.min;\n this._instance.max = this.max;\n this._instance.minLength = this.minLength;\n this._instance.maxLength = this.maxLength;\n this._instance.selections = this.selections;\n this._instance.multiple = this.multiple;\n this._instance.errorMessageTemplate = this.errorMessageTemplate;\n this._instance.placeholder = this.placeholder;\n if (this.customConfig) {\n Object.getOwnPropertyNames(this.customConfig).forEach((name: string) => {\n if (this.customConfig) {\n this._instance[name] = this.customConfig[name];\n }\n });\n }\n }\n\n /**\n * Reassign any inputs that have changed\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._instance) {\n for (const prop of Object.keys(changes)) {\n this._instance[prop] = changes[prop].currentValue;\n }\n }\n }\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n TemplateRef,\n QueryList,\n AfterContentInit,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup, FormBuilder, AbstractControl } from '@angular/forms';\n\nimport {\n TdDynamicFormsService,\n ITdDynamicElementConfig,\n} from './services/dynamic-forms.service';\nimport { TdDynamicFormsErrorTemplateDirective } from './dynamic-element.component';\n\nimport { timer, Subject, Observable } from 'rxjs';\nimport { takeUntil, filter } from 'rxjs/operators';\n\n@Component({\n selector: 'td-dynamic-forms',\n templateUrl: './dynamic-forms.component.html',\n styleUrls: ['./dynamic-forms.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDynamicFormsComponent implements AfterContentInit, OnDestroy {\n private _renderedElements: ITdDynamicElementConfig[] = [];\n private _elements!: ITdDynamicElementConfig[];\n private _templateMap: Map<string, TemplateRef<any>> = new Map<\n string,\n TemplateRef<any>\n >();\n private _destroy$: Subject<any> = new Subject();\n private _destroyControl$: Subject<string> = new Subject();\n\n @ContentChildren(TdDynamicFormsErrorTemplateDirective, { descendants: true })\n _errorTemplates!: QueryList<TdDynamicFormsErrorTemplateDirective>;\n dynamicForm!: FormGroup;\n\n /**\n * elements: ITdDynamicElementConfig[]\n * JS Object that will render the elements depending on its config.\n * [name] property is required.\n */\n @Input()\n set elements(elements: ITdDynamicElementConfig[]) {\n if (elements) {\n this._elements = elements;\n } else {\n this._elements = [];\n }\n this._rerenderElements();\n }\n get elements(): ITdDynamicElementConfig[] {\n return this._renderedElements;\n }\n\n /**\n * Getter property for dynamic [FormGroup].\n */\n get form(): FormGroup {\n return this.dynamicForm;\n }\n\n /**\n * Getter property for [valid] of dynamic [FormGroup].\n */\n get valid(): boolean {\n if (this.dynamicForm) {\n return this.dynamicForm.valid;\n }\n return false;\n }\n\n /**\n * Getter property for [value] of dynamic [FormGroup].\n */\n get value(): any {\n if (this.dynamicForm) {\n return this.dynamicForm.value;\n }\n return {};\n }\n\n /**\n * Getter property for [errors] of dynamic [FormGroup].\n */\n get errors(): { [name: string]: any } {\n if (this.dynamicForm) {\n const errors: { [name: string]: any } = {};\n for (const name of Object.keys(this.dynamicForm.controls)) {\n errors[name] = this.dynamicForm.controls[name].errors;\n }\n return errors;\n }\n return {};\n }\n\n /**\n * Getter property for [controls] of dynamic [FormGroup].\n */\n get controls(): { [key: string]: AbstractControl } {\n if (this.dynamicForm) {\n return this.dynamicForm.controls;\n }\n return {};\n }\n\n constructor(\n private _formBuilder: FormBuilder,\n private _dynamicFormsService: TdDynamicFormsService,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this.dynamicForm = this._formBuilder.group({});\n }\n\n ngAfterContentInit(): void {\n this._updateErrorTemplates();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next(0);\n this._destroy$.complete();\n this._destroyControl$.complete();\n }\n\n /**\n * Refreshes the form and rerenders all validator/element modifications.\n */\n refresh(): void {\n this._rerenderElements();\n this._updateErrorTemplates();\n }\n\n /**\n * Getter method for error template references\n */\n getErrorTemplateRef(name: string): TemplateRef<any> | undefined {\n return this._templateMap.get(name);\n }\n\n /**\n * Loads error templates and sets them in a map for faster access.\n */\n private _updateErrorTemplates(): void {\n this._templateMap = new Map<string, TemplateRef<any>>();\n for (const errorTemplate of this._errorTemplates.toArray()) {\n this._templateMap.set(\n errorTemplate.tdDynamicFormsError ?? '',\n errorTemplate.templateRef\n );\n }\n }\n\n private _rerenderElements(): void {\n this._clearRemovedElements();\n this._renderedElements = [];\n const duplicates: string[] = [];\n this._elements.forEach((elem: ITdDynamicElementConfig) => {\n this._dynamicFormsService.validateDynamicElementName(elem.name);\n if (duplicates.indexOf(elem.name) > -1) {\n throw new Error(`Dynamic element name: \"${elem.name}\" is duplicated`);\n }\n duplicates.push(elem.name);\n const dynamicElement: AbstractControl | null = this.dynamicForm.get(\n elem.name\n );\n if (!dynamicElement) {\n this.dynamicForm.addControl(\n elem.name,\n this._dynamicFormsService.createFormControl(elem)\n );\n this._subscribeToControlStatusChanges(elem.name);\n } else {\n dynamicElement.setValue(elem.default);\n dynamicElement.markAsPristine();\n dynamicElement.markAsUntouched();\n if (elem.disabled) {\n dynamicElement.disable();\n } else {\n dynamicElement.enable();\n }\n dynamicElement.setValidators(\n this._dynamicFormsService.createValidators(elem)\n );\n }\n // copy objects so they are only changes when calling this method\n this._renderedElements.push(Object.assign({}, elem));\n });\n // call a change detection since the whole form might change\n this._changeDetectorRef.detectChanges();\n timer(0)\n .toPromise()\n .then(() => {\n // call a markForCheck so elements are rendered correctly in OnPush\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _clearRemovedElements(): void {\n this._renderedElements = this._renderedElements.filter(\n (renderedElement: ITdDynamicElementConfig) =>\n !this._elements.some(\n (element: ITdDynamicElementConfig) =>\n element.name === renderedElement.name\n )\n );\n // remove elements that were removed from the array\n this._renderedElements.forEach((elem: ITdDynamicElementConfig) => {\n this._destroyControl$.next(elem.name);\n this.dynamicForm.removeControl(elem.name);\n });\n }\n\n // Updates component when manually adding errors to controls\n private _subscribeToControlStatusChanges(elementName: string): void {\n const control: AbstractControl = this.controls[elementName];\n\n const controlDestroyed$: Observable<any> = this._destroyControl$.pipe(\n filter(\n (destroyedElementName: string) => destroyedElementName === elementName\n )\n );\n\n control.statusChanges\n .pipe(takeUntil(this._destroy$), takeUntil(controlDestroyed$))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<form [formGroup]=\"dynamicForm\" novalidate>\n <div class=\"td-dynamic-form-wrapper\">\n <ng-template let-element ngFor [ngForOf]=\"elements\">\n <div\n class=\"td-dynamic-element-wrapper\"\n [style.max-width.%]=\"element.flex ? element.flex : 100\"\n [style.flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-ms-flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-webkit-box-flex]=\"1\"\n >\n <td-dynamic-element\n #dynamicElement\n *ngIf=\"dynamicForm.controls[element.name]\"\n [formControlName]=\"element.name\"\n [dynamicControl]=\"dynamicForm.controls[element.name]\"\n [id]=\"element.name\"\n [name]=\"element.name\"\n [label]=\"element.label || element.name\"\n [hint]=\"element.hint\"\n [type]=\"element.type\"\n [required]=\"element.required ?? false\"\n [min]=\"element.min\"\n [max]=\"element.max\"\n [minLength]=\"element.minLength\"\n [maxLength]=\"element.maxLength\"\n [selections]=\"element.selections\"\n [multiple]=\"element.multiple\"\n [customConfig]=\"element.customConfig\"\n [errorMessageTemplate]=\"getErrorTemplateRef(element.name)\"\n [placeholder]=\"element.placeholder\"\n ></td-dynamic-element>\n </div>\n </ng-template>\n </div>\n <ng-content></ng-content>\n</form>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\n\nimport { CovalentFileModule } from '@covalent/core/file';\n\nimport { TdDynamicFormsComponent } from './dynamic-forms.component';\nimport {\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n} from './dynamic-element.component';\nimport { DYNAMIC_FORMS_PROVIDER } from './services/dynamic-forms.service';\n\nimport { TdDynamicInputComponent } from './dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from './dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from './dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from './dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from './dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from './dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from './dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from './dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nconst TD_DYNAMIC_FORMS: Type<any>[] = [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n];\n\nconst TD_DYNAMIC_FORMS_ENTRY_COMPONENTS: Type<any>[] = [\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n];\n\n@NgModule({\n declarations: [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatCheckboxModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDatepickerModule,\n CovalentFileModule,\n ],\n exports: [...TD_DYNAMIC_FORMS, ...TD_DYNAMIC_FORMS_ENTRY_COMPONENTS],\n providers: [DYNAMIC_FORMS_PROVIDER],\n})\nexport class CovalentDynamicFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"covalent-dynamic-forms.mjs","sources":["../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.html","../../../../libs/angular-dynamic-forms/src/lib/services/dynamic-forms.service.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-element.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.module.ts","../../../../libs/angular-dynamic-forms/src/covalent-dynamic-forms.ts"],"sourcesContent":["import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-input',\n styleUrls: ['./dynamic-input.component.scss'],\n templateUrl: './dynamic-input.component.html',\n})\nexport class TdDynamicInputComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n type!: string;\n\n required = false;\n\n name = '';\n\n min?: number;\n\n max?: number;\n\n minLength?: number;\n\n maxLength?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-input-wrapper\">\n <mat-form-field class=\"td-dynamic-input-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.minLength]=\"minLength\"\n [attr.maxLength]=\"maxLength\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-file-input',\n styleUrls: ['./dynamic-file-input.component.scss'],\n templateUrl: './dynamic-file-input.component.html',\n})\nexport class TdDynamicFileInputComponent {\n control!: FormControl;\n\n required = false;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n\n _handlefileDrop(value: any): void {\n this.control?.setValue(value);\n }\n}\n","<div class=\"td-dynamic-file-input-wrapper\">\n <mat-form-field\n tdFileDrop\n class=\"td-dynamic-file-input-field\"\n floatLabel=\"never\"\n [disabled]=\"control?.disabled\"\n (fileDrop)=\"_handlefileDrop($event)\"\n (click)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.enter)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.delete)=\"fileInput.clear()\"\n (keyup.backspace)=\"fileInput.clear()\"\n >\n <mat-label>{{ label }}</mat-label>\n <input\n matInput\n [value]=\"control?.value?.name\"\n [placeholder]=\"placeholder\"\n [attr.name]=\"name\"\n [disabled]=\"control?.disabled\"\n readonly\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n <button\n mat-icon-button\n *ngIf=\"control.value\"\n (click)=\"fileInput.clear()\"\n (keyup.enter)=\"fileInput.clear()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <td-file-input class=\"td-file-input\" #fileInput [formControl]=\"control\">\n <mat-icon>folder</mat-icon>\n <span>{{ label }}</span>\n </td-file-input>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-textarea',\n styleUrls: ['./dynamic-textarea.component.scss'],\n templateUrl: './dynamic-textarea.component.html',\n})\nexport class TdDynamicTextareaComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-textarea-wrapper\">\n <mat-form-field class=\"td-dynamic-textarea-field\">\n <mat-label>{{ label }}</mat-label>\n <textarea\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n rows=\"4\"\n ></textarea>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slide-toggle',\n styleUrls: ['./dynamic-slide-toggle.component.scss'],\n templateUrl: './dynamic-slide-toggle.component.html',\n})\nexport class TdDynamicSlideToggleComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-slide-toggle-wrapper\">\n <mat-slide-toggle\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [required]=\"required\"\n >\n {{ label }}\n </mat-slide-toggle>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-checkbox',\n styleUrls: ['./dynamic-checkbox.component.scss'],\n templateUrl: './dynamic-checkbox.component.html',\n})\nexport class TdDynamicCheckboxComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-checkbox-wrapper\">\n <mat-checkbox [formControl]=\"control\" [name]=\"name\" [required]=\"required\">\n {{ label }}\n </mat-checkbox>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, ChangeDetectorRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slider',\n styleUrls: ['./dynamic-slider.component.scss'],\n templateUrl: './dynamic-slider.component.html',\n})\nexport class TdDynamicSliderComponent {\n control!: FormControl;\n\n label = '';\n\n required = false;\n\n name = '';\n\n hint = '';\n\n min?: number;\n\n max?: number;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n _handleBlur(): void {\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n class=\"td-dynamic-slider-wrapper mat-form-field mat-form-field-can-float mat-form-field-should-float\"\n [class.mat-focused]=\"slider._isActive\"\n>\n <span class=\"mat-form-field-label-wrapper\">\n <label class=\"mat-form-field-label mat-primary td-slider-label\">\n {{ label }}\n <span\n *ngIf=\"required && !control?.disabled\"\n class=\"mat-form-field-required-marker\"\n >*</span\n >\n </label>\n </span>\n <div class=\"td-dynamic-slider-field\">\n <mat-slider\n #slider\n class=\"td-dynamic-slider\"\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n thumbLabel\n tickInterval=\"auto\"\n [required]=\"required\"\n (blur)=\"_handleBlur()\"\n ></mat-slider>\n </div>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-select',\n styleUrls: ['./dynamic-select.component.scss'],\n templateUrl: './dynamic-select.component.html',\n})\nexport class TdDynamicSelectComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n selections?: any[];\n\n multiple?: boolean;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-select-wrapper\">\n <mat-form-field class=\"td-dynamic-select-field\">\n <mat-label>{{ label }}</mat-label>\n <mat-select\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [multiple]=\"multiple\"\n >\n <mat-option\n *ngFor=\"let selection of selections\"\n [value]=\"selection.value || selection\"\n >\n {{ selection.label || selection }}\n </mat-option>\n </mat-select>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-datepicker',\n styleUrls: ['./dynamic-datepicker.component.scss'],\n templateUrl: './dynamic-datepicker.component.html',\n})\nexport class TdDynamicDatepickerComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n type?: string;\n\n required = false;\n\n min?: number;\n\n max?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-datepicker-wrapper\">\n <mat-form-field class=\"td-dynamic-datepicker-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [matDatepicker]=\"dynamicDatePicker\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n <mat-datepicker-toggle\n matSuffix\n [for]=\"dynamicDatePicker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #dynamicDatePicker></mat-datepicker>\n </mat-form-field>\n</div>\n","import { Injectable, Provider, SkipSelf, Optional, Type } from '@angular/core';\nimport { Validators, ValidatorFn, FormControl } from '@angular/forms';\n\nimport { TdDynamicInputComponent } from '../dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from '../dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from '../dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from '../dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from '../dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from '../dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from '../dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from '../dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nexport enum TdDynamicType {\n Text = 'text',\n Boolean = 'boolean',\n Number = 'number',\n Array = 'array',\n Date = 'date',\n}\n\nexport enum TdDynamicElement {\n Input = 'input',\n Datepicker = 'datepicker',\n Password = 'password',\n Textarea = 'textarea',\n Slider = 'slider',\n SlideToggle = 'slide-toggle',\n Checkbox = 'checkbox',\n Select = 'select',\n FileInput = 'file-input',\n}\n\nexport interface ITdDynamicElementValidator {\n validator: ValidatorFn;\n}\n\n// Property values to be set in custom component\nexport interface ITdDynamicElementCustomConfig {\n [name: string]: any;\n}\n\nexport interface ITdDynamicElementConfig {\n label?: string;\n name: string;\n hint?: string;\n type: TdDynamicType | TdDynamicElement | Type<any>;\n required?: boolean;\n disabled?: boolean;\n min?: any;\n max?: any;\n minLength?: any;\n maxLength?: any;\n selections?: string[] | { value: any; label: string }[];\n multiple?: boolean;\n default?: any;\n flex?: number;\n validators?: ITdDynamicElementValidator[];\n customConfig?: ITdDynamicElementCustomConfig;\n placeholder?: string;\n}\n\nexport const DYNAMIC_ELEMENT_NAME_REGEX = /^[^0-9][^@]*$/;\n\n@Injectable()\nexport class TdDynamicFormsService {\n /**\n * Method to validate if the [name] is a proper element name.\n * Throws error if name is not valid.\n */\n validateDynamicElementName(name: string): void {\n if (!DYNAMIC_ELEMENT_NAME_REGEX.test(name)) {\n throw new Error('Dynamic element name: \"${name}\" is not valid.');\n }\n }\n\n /**\n * Gets component to be rendered depending on [TdDynamicElement | TdDynamicType]\n * Throws error if it does not exists or not supported.\n */\n getDynamicElement(\n element: TdDynamicElement | TdDynamicType | Type<any> | undefined\n ): any {\n switch (element) {\n case TdDynamicType.Text:\n case TdDynamicType.Number:\n case TdDynamicElement.Input:\n case TdDynamicElement.Password:\n return TdDynamicInputComponent;\n case TdDynamicElement.Textarea:\n return TdDynamicTextareaComponent;\n case TdDynamicType.Boolean:\n case TdDynamicElement.SlideToggle:\n return TdDynamicSlideToggleComponent;\n case TdDynamicElement.Checkbox:\n return TdDynamicCheckboxComponent;\n case TdDynamicElement.Slider:\n return TdDynamicSliderComponent;\n case TdDynamicType.Array:\n case TdDynamicElement.Select:\n return TdDynamicSelectComponent;\n case TdDynamicElement.FileInput:\n return TdDynamicFileInputComponent;\n case TdDynamicElement.Datepicker:\n case TdDynamicType.Date:\n return TdDynamicDatepickerComponent;\n default:\n throw new Error(\n `Error: type ${element} does not exist or not supported.`\n );\n }\n }\n\n /**\n * Creates form control for element depending [ITdDynamicElementConfig] properties.\n */\n createFormControl(config: ITdDynamicElementConfig): FormControl {\n const validator = this.createValidators(config);\n return new FormControl(\n { value: config.default, disabled: config.disabled },\n validator\n );\n }\n\n /**\n * Creates form validationdepending [ITdDynamicElementConfig] properties.\n */\n createValidators(config: ITdDynamicElementConfig): ValidatorFn | null {\n let validator: ValidatorFn | null = null;\n if (config.required) {\n validator = Validators.required;\n }\n if (config.max || config.max === 0) {\n validator = Validators.compose([\n validator,\n Validators.max(parseFloat(config.max)),\n ]);\n }\n if (config.min || config.min === 0) {\n validator = Validators.compose([\n validator,\n Validators.min(parseFloat(config.min)),\n ]);\n }\n if (config.maxLength || config.maxLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.maxLength(parseFloat(config.maxLength)),\n ]);\n }\n if (config.minLength || config.minLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.minLength(parseFloat(config.minLength)),\n ]);\n }\n // Add provided custom validators to the validator function\n if (config.validators) {\n config.validators.forEach(\n (validatorConfig: ITdDynamicElementValidator) => {\n validator = Validators.compose([\n validator,\n validatorConfig.validator,\n ]);\n }\n );\n }\n return validator;\n }\n}\n\nexport function DYNAMIC_FORMS_PROVIDER_FACTORY(\n parent: TdDynamicFormsService\n): TdDynamicFormsService {\n return parent || new TdDynamicFormsService();\n}\n\nexport const DYNAMIC_FORMS_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDynamicFormsService,\n deps: [[new Optional(), new SkipSelf(), TdDynamicFormsService]],\n useFactory: DYNAMIC_FORMS_PROVIDER_FACTORY,\n};\n","import {\n Component,\n Directive,\n Input,\n HostBinding,\n OnInit,\n SimpleChanges,\n OnChanges,\n TemplateRef,\n ChangeDetectorRef,\n Type,\n Injector,\n} from '@angular/core';\nimport { ViewChild, ViewContainerRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, AbstractControl } from '@angular/forms';\nimport { CdkPortal } from '@angular/cdk/portal';\n\nimport {\n mixinControlValueAccessor,\n IControlValueAccessor,\n} from '@covalent/core/common';\n\nimport {\n TdDynamicElement,\n TdDynamicType,\n TdDynamicFormsService,\n ITdDynamicElementCustomConfig,\n} from './services/dynamic-forms.service';\n\nexport class TdDynamicElementBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDynamicElementMixinBase =\n mixinControlValueAccessor(TdDynamicElementBase);\n\n@Directive({ selector: '[tdDynamicFormsError]ng-template' })\nexport class TdDynamicFormsErrorTemplateDirective extends CdkPortal {\n @Input() tdDynamicFormsError?: string;\n constructor(\n public override templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[tdDynamicContainer]',\n})\nexport class TdDynamicElementDirective {\n constructor(public viewContainer: ViewContainerRef) {}\n}\n\n@Component({\n providers: [\n TdDynamicFormsService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: TdDynamicElementComponent,\n multi: true,\n },\n ],\n selector: 'td-dynamic-element',\n template: '<div tdDynamicContainer></div>',\n})\nexport class TdDynamicElementComponent\n extends _TdDynamicElementMixinBase\n implements IControlValueAccessor, OnInit, OnChanges\n{\n private _instance: any;\n\n /**\n * Sets form control of the element.\n */\n @Input() dynamicControl!: AbstractControl;\n\n /**\n * Sets label to be displayed.\n */\n @Input() label = '';\n\n /**\n * Sets hint to be displayed.\n */\n @Input() hint? = '';\n\n /**\n * Sets name to be displayed as attribute.\n */\n @Input() name = '';\n\n /**\n * Sets type or element of element to be rendered.\n * Throws error if does not exist or no supported.\n */\n @Input() type?: TdDynamicElement | TdDynamicType | Type<any>;\n\n /**\n * Sets required validation checkup (if supported by element).\n */\n @Input() required?: boolean | string | undefined;\n\n /**\n * Sets min validation checkup (if supported by element).\n */\n @Input() min?: number;\n\n /**\n * Sets max validation checkup (if supported by element).\n */\n @Input() max?: number;\n\n /**\n * Sets minLength validation checkup (if supported by element).\n */\n @Input() minLength?: number;\n\n /**\n * Sets maxLength validation checkup (if supported by element).\n */\n @Input() maxLength?: number;\n\n /**\n * Sets selections for array elements (if supported by element).\n */\n @Input() selections?: any[];\n\n /**\n * Sets multiple property for array elements (if supported by element).\n */\n @Input() multiple?: boolean;\n\n /**\n * Sets any additional properties on custom component.\n */\n @Input() customConfig?: ITdDynamicElementCustomConfig;\n\n /**\n * Sets error message template so it can be injected into dynamic components.\n */\n @Input() errorMessageTemplate!: TemplateRef<any> | undefined;\n\n /**\n * Sets the placeholder message\n */\n @Input() placeholder? = '';\n\n @ViewChild(TdDynamicElementDirective, { static: true })\n childElement!: TdDynamicElementDirective;\n\n @HostBinding('attr.max')\n get maxAttr(): any {\n return this.max;\n }\n\n @HostBinding('attr.min')\n get minAttr(): any {\n return this.min;\n }\n\n constructor(\n private _injector: Injector,\n private _dynamicFormsService: TdDynamicFormsService,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n const component: any =\n <any>this.type instanceof Type\n ? this.type\n : this._dynamicFormsService.getDynamicElement(this.type);\n const ref = this.childElement.viewContainer.createComponent(component, {\n injector: this._injector,\n });\n this._instance = ref.instance;\n this._instance.control = this.dynamicControl;\n this._instance.label = this.label;\n this._instance.hint = this.hint;\n this._instance.name = this.name;\n this._instance.type = this.type;\n this._instance.value = this.value;\n this._instance.required = this.required;\n this._instance.min = this.min;\n this._instance.max = this.max;\n this._instance.minLength = this.minLength;\n this._instance.maxLength = this.maxLength;\n this._instance.selections = this.selections;\n this._instance.multiple = this.multiple;\n this._instance.errorMessageTemplate = this.errorMessageTemplate;\n this._instance.placeholder = this.placeholder;\n if (this.customConfig) {\n Object.getOwnPropertyNames(this.customConfig).forEach((name: string) => {\n if (this.customConfig) {\n this._instance[name] = this.customConfig[name];\n }\n });\n }\n }\n\n /**\n * Reassign any inputs that have changed\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._instance) {\n for (const prop of Object.keys(changes)) {\n this._instance[prop] = changes[prop].currentValue;\n }\n }\n }\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n TemplateRef,\n QueryList,\n AfterContentInit,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup, FormBuilder, AbstractControl } from '@angular/forms';\n\nimport {\n TdDynamicFormsService,\n ITdDynamicElementConfig,\n} from './services/dynamic-forms.service';\nimport { TdDynamicFormsErrorTemplateDirective } from './dynamic-element.component';\n\nimport { timer, Subject, Observable } from 'rxjs';\nimport { takeUntil, filter } from 'rxjs/operators';\n\n@Component({\n selector: 'td-dynamic-forms',\n templateUrl: './dynamic-forms.component.html',\n styleUrls: ['./dynamic-forms.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDynamicFormsComponent implements AfterContentInit, OnDestroy {\n private _renderedElements: ITdDynamicElementConfig[] = [];\n private _elements!: ITdDynamicElementConfig[];\n private _templateMap: Map<string, TemplateRef<any>> = new Map<\n string,\n TemplateRef<any>\n >();\n private _destroy$: Subject<any> = new Subject();\n private _destroyControl$: Subject<string> = new Subject();\n\n @ContentChildren(TdDynamicFormsErrorTemplateDirective, { descendants: true })\n _errorTemplates!: QueryList<TdDynamicFormsErrorTemplateDirective>;\n dynamicForm!: FormGroup;\n\n /**\n * elements: ITdDynamicElementConfig[]\n * JS Object that will render the elements depending on its config.\n * [name] property is required.\n */\n @Input()\n set elements(elements: ITdDynamicElementConfig[]) {\n if (elements) {\n this._elements = elements;\n } else {\n this._elements = [];\n }\n this._rerenderElements();\n }\n get elements(): ITdDynamicElementConfig[] {\n return this._renderedElements;\n }\n\n /**\n * Getter property for dynamic [FormGroup].\n */\n get form(): FormGroup {\n return this.dynamicForm;\n }\n\n /**\n * Getter property for [valid] of dynamic [FormGroup].\n */\n get valid(): boolean {\n if (this.dynamicForm) {\n return this.dynamicForm.valid;\n }\n return false;\n }\n\n /**\n * Getter property for [value] of dynamic [FormGroup].\n */\n get value(): any {\n if (this.dynamicForm) {\n return this.dynamicForm.value;\n }\n return {};\n }\n\n /**\n * Getter property for [errors] of dynamic [FormGroup].\n */\n get errors(): { [name: string]: any } {\n if (this.dynamicForm) {\n const errors: { [name: string]: any } = {};\n for (const name of Object.keys(this.dynamicForm.controls)) {\n errors[name] = this.dynamicForm.controls[name].errors;\n }\n return errors;\n }\n return {};\n }\n\n /**\n * Getter property for [controls] of dynamic [FormGroup].\n */\n get controls(): { [key: string]: AbstractControl } {\n if (this.dynamicForm) {\n return this.dynamicForm.controls;\n }\n return {};\n }\n\n constructor(\n private _formBuilder: FormBuilder,\n private _dynamicFormsService: TdDynamicFormsService,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this.dynamicForm = this._formBuilder.group({});\n }\n\n ngAfterContentInit(): void {\n this._updateErrorTemplates();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next(0);\n this._destroy$.complete();\n this._destroyControl$.complete();\n }\n\n /**\n * Refreshes the form and rerenders all validator/element modifications.\n */\n refresh(): void {\n this._rerenderElements();\n this._updateErrorTemplates();\n }\n\n /**\n * Getter method for error template references\n */\n getErrorTemplateRef(name: string): TemplateRef<any> | undefined {\n return this._templateMap.get(name);\n }\n\n /**\n * Loads error templates and sets them in a map for faster access.\n */\n private _updateErrorTemplates(): void {\n this._templateMap = new Map<string, TemplateRef<any>>();\n for (const errorTemplate of this._errorTemplates.toArray()) {\n this._templateMap.set(\n errorTemplate.tdDynamicFormsError ?? '',\n errorTemplate.templateRef\n );\n }\n }\n\n private _rerenderElements(): void {\n this._clearRemovedElements();\n this._renderedElements = [];\n const duplicates: string[] = [];\n this._elements.forEach((elem: ITdDynamicElementConfig) => {\n this._dynamicFormsService.validateDynamicElementName(elem.name);\n if (duplicates.indexOf(elem.name) > -1) {\n throw new Error(`Dynamic element name: \"${elem.name}\" is duplicated`);\n }\n duplicates.push(elem.name);\n const dynamicElement: AbstractControl | null = this.dynamicForm.get(\n elem.name\n );\n if (!dynamicElement) {\n this.dynamicForm.addControl(\n elem.name,\n this._dynamicFormsService.createFormControl(elem)\n );\n this._subscribeToControlStatusChanges(elem.name);\n } else {\n dynamicElement.setValue(elem.default);\n dynamicElement.markAsPristine();\n dynamicElement.markAsUntouched();\n if (elem.disabled) {\n dynamicElement.disable();\n } else {\n dynamicElement.enable();\n }\n dynamicElement.setValidators(\n this._dynamicFormsService.createValidators(elem)\n );\n }\n // copy objects so they are only changes when calling this method\n this._renderedElements.push(Object.assign({}, elem));\n });\n // call a change detection since the whole form might change\n this._changeDetectorRef.detectChanges();\n timer(0)\n .toPromise()\n .then(() => {\n // call a markForCheck so elements are rendered correctly in OnPush\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _clearRemovedElements(): void {\n this._renderedElements = this._renderedElements.filter(\n (renderedElement: ITdDynamicElementConfig) =>\n !this._elements.some(\n (element: ITdDynamicElementConfig) =>\n element.name === renderedElement.name\n )\n );\n // remove elements that were removed from the array\n this._renderedElements.forEach((elem: ITdDynamicElementConfig) => {\n this._destroyControl$.next(elem.name);\n this.dynamicForm.removeControl(elem.name);\n });\n }\n\n // Updates component when manually adding errors to controls\n private _subscribeToControlStatusChanges(elementName: string): void {\n const control: AbstractControl = this.controls[elementName];\n\n const controlDestroyed$: Observable<any> = this._destroyControl$.pipe(\n filter(\n (destroyedElementName: string) => destroyedElementName === elementName\n )\n );\n\n control.statusChanges\n .pipe(takeUntil(this._destroy$), takeUntil(controlDestroyed$))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<form [formGroup]=\"dynamicForm\" novalidate>\n <div class=\"td-dynamic-form-wrapper\">\n <ng-template let-element ngFor [ngForOf]=\"elements\">\n <div\n class=\"td-dynamic-element-wrapper\"\n [style.max-width.%]=\"element.flex ? element.flex : 100\"\n [style.flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-ms-flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-webkit-box-flex]=\"1\"\n >\n <td-dynamic-element\n #dynamicElement\n *ngIf=\"dynamicForm.controls[element.name]\"\n [formControlName]=\"element.name\"\n [dynamicControl]=\"dynamicForm.controls[element.name]\"\n [id]=\"element.name\"\n [name]=\"element.name\"\n [label]=\"element.label || element.name\"\n [hint]=\"element.hint\"\n [type]=\"element.type\"\n [required]=\"element.required ?? false\"\n [min]=\"element.min\"\n [max]=\"element.max\"\n [minLength]=\"element.minLength\"\n [maxLength]=\"element.maxLength\"\n [selections]=\"element.selections\"\n [multiple]=\"element.multiple\"\n [customConfig]=\"element.customConfig\"\n [errorMessageTemplate]=\"getErrorTemplateRef(element.name)\"\n [placeholder]=\"element.placeholder\"\n ></td-dynamic-element>\n </div>\n </ng-template>\n </div>\n <ng-content></ng-content>\n</form>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\n\nimport { CovalentFileModule } from '@covalent/core/file';\n\nimport { TdDynamicFormsComponent } from './dynamic-forms.component';\nimport {\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n} from './dynamic-element.component';\nimport { DYNAMIC_FORMS_PROVIDER } from './services/dynamic-forms.service';\n\nimport { TdDynamicInputComponent } from './dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from './dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from './dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from './dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from './dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from './dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from './dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from './dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nconst TD_DYNAMIC_FORMS: Type<any>[] = [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n];\n\nconst TD_DYNAMIC_FORMS_ENTRY_COMPONENTS: Type<any>[] = [\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n];\n\n@NgModule({\n declarations: [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatCheckboxModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDatepickerModule,\n CovalentFileModule,\n ],\n exports: [...TD_DYNAMIC_FORMS, ...TD_DYNAMIC_FORMS_ENTRY_COMPONENTS],\n providers: [DYNAMIC_FORMS_PROVIDER],\n})\nexport class CovalentDynamicFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Injectable, Optional, SkipSelf, Directive, Input, Type,
|
|
2
|
+
import { Component, Injectable, Optional, SkipSelf, Directive, Input, Type, ViewChild, HostBinding, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';
|
|
3
3
|
import * as i4 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i3 from '@angular/forms';
|
|
@@ -328,9 +328,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
328
328
|
}]
|
|
329
329
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
|
|
330
330
|
class TdDynamicElementComponent extends _TdDynamicElementMixinBase {
|
|
331
|
-
constructor(
|
|
331
|
+
constructor(_injector, _dynamicFormsService, _changeDetectorRef) {
|
|
332
332
|
super(_changeDetectorRef);
|
|
333
|
-
this.
|
|
333
|
+
this._injector = _injector;
|
|
334
334
|
this._dynamicFormsService = _dynamicFormsService;
|
|
335
335
|
/**
|
|
336
336
|
* Sets label to be displayed.
|
|
@@ -359,10 +359,9 @@ class TdDynamicElementComponent extends _TdDynamicElementMixinBase {
|
|
|
359
359
|
const component = this.type instanceof Type
|
|
360
360
|
? this.type
|
|
361
361
|
: this._dynamicFormsService.getDynamicElement(this.type);
|
|
362
|
-
const ref = this.
|
|
363
|
-
.
|
|
364
|
-
|
|
365
|
-
this.childElement.viewContainer.insert(ref.hostView);
|
|
362
|
+
const ref = this.childElement.viewContainer.createComponent(component, {
|
|
363
|
+
injector: this._injector,
|
|
364
|
+
});
|
|
366
365
|
this._instance = ref.instance;
|
|
367
366
|
this._instance.control = this.dynamicControl;
|
|
368
367
|
this._instance.label = this.label;
|
|
@@ -398,12 +397,12 @@ class TdDynamicElementComponent extends _TdDynamicElementMixinBase {
|
|
|
398
397
|
}
|
|
399
398
|
}
|
|
400
399
|
}
|
|
401
|
-
TdDynamicElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicElementComponent, deps: [{ token: i0.
|
|
400
|
+
TdDynamicElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicElementComponent, deps: [{ token: i0.Injector }, { token: TdDynamicFormsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
402
401
|
TdDynamicElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicElementComponent, selector: "td-dynamic-element", inputs: { dynamicControl: "dynamicControl", label: "label", hint: "hint", name: "name", type: "type", required: "required", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength", selections: "selections", multiple: "multiple", customConfig: "customConfig", errorMessageTemplate: "errorMessageTemplate", placeholder: "placeholder" }, host: { properties: { "attr.max": "this.maxAttr", "attr.min": "this.minAttr" } }, providers: [
|
|
403
402
|
TdDynamicFormsService,
|
|
404
403
|
{
|
|
405
404
|
provide: NG_VALUE_ACCESSOR,
|
|
406
|
-
useExisting:
|
|
405
|
+
useExisting: TdDynamicElementComponent,
|
|
407
406
|
multi: true,
|
|
408
407
|
},
|
|
409
408
|
], viewQueries: [{ propertyName: "childElement", first: true, predicate: TdDynamicElementDirective, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<div tdDynamicContainer></div>', isInline: true, directives: [{ type: TdDynamicElementDirective, selector: "[tdDynamicContainer]" }] });
|
|
@@ -414,14 +413,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
414
413
|
TdDynamicFormsService,
|
|
415
414
|
{
|
|
416
415
|
provide: NG_VALUE_ACCESSOR,
|
|
417
|
-
useExisting:
|
|
416
|
+
useExisting: TdDynamicElementComponent,
|
|
418
417
|
multi: true,
|
|
419
418
|
},
|
|
420
419
|
],
|
|
421
420
|
selector: 'td-dynamic-element',
|
|
422
421
|
template: '<div tdDynamicContainer></div>',
|
|
423
422
|
}]
|
|
424
|
-
}], ctorParameters: function () { return [{ type: i0.
|
|
423
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: TdDynamicFormsService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { dynamicControl: [{
|
|
425
424
|
type: Input
|
|
426
425
|
}], label: [{
|
|
427
426
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"covalent-dynamic-forms.mjs","sources":["../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.html","../../../../libs/angular-dynamic-forms/src/lib/services/dynamic-forms.service.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-element.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.module.ts","../../../../libs/angular-dynamic-forms/src/covalent-dynamic-forms.ts"],"sourcesContent":["import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-input',\n styleUrls: ['./dynamic-input.component.scss'],\n templateUrl: './dynamic-input.component.html',\n})\nexport class TdDynamicInputComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n type!: string;\n\n required = false;\n\n name = '';\n\n min?: number;\n\n max?: number;\n\n minLength?: number;\n\n maxLength?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-input-wrapper\">\n <mat-form-field class=\"td-dynamic-input-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.minLength]=\"minLength\"\n [attr.maxLength]=\"maxLength\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-file-input',\n styleUrls: ['./dynamic-file-input.component.scss'],\n templateUrl: './dynamic-file-input.component.html',\n})\nexport class TdDynamicFileInputComponent {\n control!: FormControl;\n\n required = false;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n\n _handlefileDrop(value: any): void {\n this.control?.setValue(value);\n }\n}\n","<div class=\"td-dynamic-file-input-wrapper\">\n <mat-form-field\n tdFileDrop\n class=\"td-dynamic-file-input-field\"\n floatLabel=\"never\"\n [disabled]=\"control?.disabled\"\n (fileDrop)=\"_handlefileDrop($event)\"\n (click)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.enter)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.delete)=\"fileInput.clear()\"\n (keyup.backspace)=\"fileInput.clear()\"\n >\n <mat-label>{{ label }}</mat-label>\n <input\n matInput\n [value]=\"control?.value?.name\"\n [placeholder]=\"placeholder\"\n [attr.name]=\"name\"\n [disabled]=\"control?.disabled\"\n readonly\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n <button\n mat-icon-button\n *ngIf=\"control.value\"\n (click)=\"fileInput.clear()\"\n (keyup.enter)=\"fileInput.clear()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <td-file-input class=\"td-file-input\" #fileInput [formControl]=\"control\">\n <mat-icon>folder</mat-icon>\n <span>{{ label }}</span>\n </td-file-input>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-textarea',\n styleUrls: ['./dynamic-textarea.component.scss'],\n templateUrl: './dynamic-textarea.component.html',\n})\nexport class TdDynamicTextareaComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-textarea-wrapper\">\n <mat-form-field class=\"td-dynamic-textarea-field\">\n <mat-label>{{ label }}</mat-label>\n <textarea\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n rows=\"4\"\n ></textarea>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slide-toggle',\n styleUrls: ['./dynamic-slide-toggle.component.scss'],\n templateUrl: './dynamic-slide-toggle.component.html',\n})\nexport class TdDynamicSlideToggleComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-slide-toggle-wrapper\">\n <mat-slide-toggle\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [required]=\"required\"\n >\n {{ label }}\n </mat-slide-toggle>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-checkbox',\n styleUrls: ['./dynamic-checkbox.component.scss'],\n templateUrl: './dynamic-checkbox.component.html',\n})\nexport class TdDynamicCheckboxComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-checkbox-wrapper\">\n <mat-checkbox [formControl]=\"control\" [name]=\"name\" [required]=\"required\">\n {{ label }}\n </mat-checkbox>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, ChangeDetectorRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slider',\n styleUrls: ['./dynamic-slider.component.scss'],\n templateUrl: './dynamic-slider.component.html',\n})\nexport class TdDynamicSliderComponent {\n control!: FormControl;\n\n label = '';\n\n required = false;\n\n name = '';\n\n hint = '';\n\n min?: number;\n\n max?: number;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n _handleBlur(): void {\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n class=\"td-dynamic-slider-wrapper mat-form-field mat-form-field-can-float mat-form-field-should-float\"\n [class.mat-focused]=\"slider._isActive\"\n>\n <span class=\"mat-form-field-label-wrapper\">\n <label class=\"mat-form-field-label mat-primary td-slider-label\">\n {{ label }}\n <span\n *ngIf=\"required && !control?.disabled\"\n class=\"mat-form-field-required-marker\"\n >*</span\n >\n </label>\n </span>\n <div class=\"td-dynamic-slider-field\">\n <mat-slider\n #slider\n class=\"td-dynamic-slider\"\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n thumbLabel\n tickInterval=\"auto\"\n [required]=\"required\"\n (blur)=\"_handleBlur()\"\n ></mat-slider>\n </div>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-select',\n styleUrls: ['./dynamic-select.component.scss'],\n templateUrl: './dynamic-select.component.html',\n})\nexport class TdDynamicSelectComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n selections?: any[];\n\n multiple?: boolean;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-select-wrapper\">\n <mat-form-field class=\"td-dynamic-select-field\">\n <mat-label>{{ label }}</mat-label>\n <mat-select\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [multiple]=\"multiple\"\n >\n <mat-option\n *ngFor=\"let selection of selections\"\n [value]=\"selection.value || selection\"\n >\n {{ selection.label || selection }}\n </mat-option>\n </mat-select>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-datepicker',\n styleUrls: ['./dynamic-datepicker.component.scss'],\n templateUrl: './dynamic-datepicker.component.html',\n})\nexport class TdDynamicDatepickerComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n type?: string;\n\n required = false;\n\n min?: number;\n\n max?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-datepicker-wrapper\">\n <mat-form-field class=\"td-dynamic-datepicker-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [matDatepicker]=\"dynamicDatePicker\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n <mat-datepicker-toggle\n matSuffix\n [for]=\"dynamicDatePicker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #dynamicDatePicker></mat-datepicker>\n </mat-form-field>\n</div>\n","import { Injectable, Provider, SkipSelf, Optional, Type } from '@angular/core';\nimport { Validators, ValidatorFn, FormControl } from '@angular/forms';\n\nimport { TdDynamicInputComponent } from '../dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from '../dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from '../dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from '../dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from '../dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from '../dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from '../dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from '../dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nexport enum TdDynamicType {\n Text = 'text',\n Boolean = 'boolean',\n Number = 'number',\n Array = 'array',\n Date = 'date',\n}\n\nexport enum TdDynamicElement {\n Input = 'input',\n Datepicker = 'datepicker',\n Password = 'password',\n Textarea = 'textarea',\n Slider = 'slider',\n SlideToggle = 'slide-toggle',\n Checkbox = 'checkbox',\n Select = 'select',\n FileInput = 'file-input',\n}\n\nexport interface ITdDynamicElementValidator {\n validator: ValidatorFn;\n}\n\n// Property values to be set in custom component\nexport interface ITdDynamicElementCustomConfig {\n [name: string]: any;\n}\n\nexport interface ITdDynamicElementConfig {\n label?: string;\n name: string;\n hint?: string;\n type: TdDynamicType | TdDynamicElement | Type<any>;\n required?: boolean;\n disabled?: boolean;\n min?: any;\n max?: any;\n minLength?: any;\n maxLength?: any;\n selections?: string[] | { value: any; label: string }[];\n multiple?: boolean;\n default?: any;\n flex?: number;\n validators?: ITdDynamicElementValidator[];\n customConfig?: ITdDynamicElementCustomConfig;\n placeholder?: string;\n}\n\nexport const DYNAMIC_ELEMENT_NAME_REGEX = /^[^0-9][^@]*$/;\n\n@Injectable()\nexport class TdDynamicFormsService {\n /**\n * Method to validate if the [name] is a proper element name.\n * Throws error if name is not valid.\n */\n validateDynamicElementName(name: string): void {\n if (!DYNAMIC_ELEMENT_NAME_REGEX.test(name)) {\n throw new Error('Dynamic element name: \"${name}\" is not valid.');\n }\n }\n\n /**\n * Gets component to be rendered depending on [TdDynamicElement | TdDynamicType]\n * Throws error if it does not exists or not supported.\n */\n getDynamicElement(\n element: TdDynamicElement | TdDynamicType | Type<any> | undefined\n ): any {\n switch (element) {\n case TdDynamicType.Text:\n case TdDynamicType.Number:\n case TdDynamicElement.Input:\n case TdDynamicElement.Password:\n return TdDynamicInputComponent;\n case TdDynamicElement.Textarea:\n return TdDynamicTextareaComponent;\n case TdDynamicType.Boolean:\n case TdDynamicElement.SlideToggle:\n return TdDynamicSlideToggleComponent;\n case TdDynamicElement.Checkbox:\n return TdDynamicCheckboxComponent;\n case TdDynamicElement.Slider:\n return TdDynamicSliderComponent;\n case TdDynamicType.Array:\n case TdDynamicElement.Select:\n return TdDynamicSelectComponent;\n case TdDynamicElement.FileInput:\n return TdDynamicFileInputComponent;\n case TdDynamicElement.Datepicker:\n case TdDynamicType.Date:\n return TdDynamicDatepickerComponent;\n default:\n throw new Error(\n `Error: type ${element} does not exist or not supported.`\n );\n }\n }\n\n /**\n * Creates form control for element depending [ITdDynamicElementConfig] properties.\n */\n createFormControl(config: ITdDynamicElementConfig): FormControl {\n const validator = this.createValidators(config);\n return new FormControl(\n { value: config.default, disabled: config.disabled },\n validator\n );\n }\n\n /**\n * Creates form validationdepending [ITdDynamicElementConfig] properties.\n */\n createValidators(config: ITdDynamicElementConfig): ValidatorFn | null {\n let validator: ValidatorFn | null = null;\n if (config.required) {\n validator = Validators.required;\n }\n if (config.max || config.max === 0) {\n validator = Validators.compose([\n validator,\n Validators.max(parseFloat(config.max)),\n ]);\n }\n if (config.min || config.min === 0) {\n validator = Validators.compose([\n validator,\n Validators.min(parseFloat(config.min)),\n ]);\n }\n if (config.maxLength || config.maxLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.maxLength(parseFloat(config.maxLength)),\n ]);\n }\n if (config.minLength || config.minLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.minLength(parseFloat(config.minLength)),\n ]);\n }\n // Add provided custom validators to the validator function\n if (config.validators) {\n config.validators.forEach(\n (validatorConfig: ITdDynamicElementValidator) => {\n validator = Validators.compose([\n validator,\n validatorConfig.validator,\n ]);\n }\n );\n }\n return validator;\n }\n}\n\nexport function DYNAMIC_FORMS_PROVIDER_FACTORY(\n parent: TdDynamicFormsService\n): TdDynamicFormsService {\n return parent || new TdDynamicFormsService();\n}\n\nexport const DYNAMIC_FORMS_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDynamicFormsService,\n deps: [[new Optional(), new SkipSelf(), TdDynamicFormsService]],\n useFactory: DYNAMIC_FORMS_PROVIDER_FACTORY,\n};\n","import {\n Component,\n Directive,\n Input,\n HostBinding,\n OnInit,\n SimpleChanges,\n OnChanges,\n TemplateRef,\n ChangeDetectorRef,\n Type,\n} from '@angular/core';\nimport { ViewChild, ViewContainerRef } from '@angular/core';\nimport {\n ComponentFactoryResolver,\n ComponentRef,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, AbstractControl } from '@angular/forms';\nimport { CdkPortal } from '@angular/cdk/portal';\n\nimport {\n mixinControlValueAccessor,\n IControlValueAccessor,\n} from '@covalent/core/common';\n\nimport {\n TdDynamicElement,\n TdDynamicType,\n TdDynamicFormsService,\n ITdDynamicElementCustomConfig,\n} from './services/dynamic-forms.service';\n\nexport class TdDynamicElementBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDynamicElementMixinBase =\n mixinControlValueAccessor(TdDynamicElementBase);\n\n@Directive({ selector: '[tdDynamicFormsError]ng-template' })\nexport class TdDynamicFormsErrorTemplateDirective extends CdkPortal {\n @Input() tdDynamicFormsError?: string;\n constructor(\n public override templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[tdDynamicContainer]',\n})\nexport class TdDynamicElementDirective {\n constructor(public viewContainer: ViewContainerRef) {}\n}\n\n@Component({\n providers: [\n TdDynamicFormsService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDynamicElementComponent),\n multi: true,\n },\n ],\n selector: 'td-dynamic-element',\n template: '<div tdDynamicContainer></div>',\n})\nexport class TdDynamicElementComponent\n extends _TdDynamicElementMixinBase\n implements IControlValueAccessor, OnInit, OnChanges\n{\n private _instance: any;\n\n /**\n * Sets form control of the element.\n */\n @Input() dynamicControl!: AbstractControl;\n\n /**\n * Sets label to be displayed.\n */\n @Input() label = '';\n\n /**\n * Sets hint to be displayed.\n */\n @Input() hint? = '';\n\n /**\n * Sets name to be displayed as attribute.\n */\n @Input() name = '';\n\n /**\n * Sets type or element of element to be rendered.\n * Throws error if does not exist or no supported.\n */\n @Input() type?: TdDynamicElement | TdDynamicType | Type<any>;\n\n /**\n * Sets required validation checkup (if supported by element).\n */\n @Input() required?: boolean | string | undefined;\n\n /**\n * Sets min validation checkup (if supported by element).\n */\n @Input() min?: number;\n\n /**\n * Sets max validation checkup (if supported by element).\n */\n @Input() max?: number;\n\n /**\n * Sets minLength validation checkup (if supported by element).\n */\n @Input() minLength?: number;\n\n /**\n * Sets maxLength validation checkup (if supported by element).\n */\n @Input() maxLength?: number;\n\n /**\n * Sets selections for array elements (if supported by element).\n */\n @Input() selections?: any[];\n\n /**\n * Sets multiple property for array elements (if supported by element).\n */\n @Input() multiple?: boolean;\n\n /**\n * Sets any additional properties on custom component.\n */\n @Input() customConfig?: ITdDynamicElementCustomConfig;\n\n /**\n * Sets error message template so it can be injected into dynamic components.\n */\n @Input() errorMessageTemplate!: TemplateRef<any> | undefined;\n\n /**\n * Sets the placeholder message\n */\n @Input() placeholder? = '';\n\n @ViewChild(TdDynamicElementDirective, { static: true })\n childElement!: TdDynamicElementDirective;\n\n @HostBinding('attr.max')\n get maxAttr(): any {\n return this.max;\n }\n\n @HostBinding('attr.min')\n get minAttr(): any {\n return this.min;\n }\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _dynamicFormsService: TdDynamicFormsService,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n const component: any =\n <any>this.type instanceof Type\n ? this.type\n : this._dynamicFormsService.getDynamicElement(this.type);\n const ref: ComponentRef<any> = this._componentFactoryResolver\n .resolveComponentFactory(component)\n .create(this.childElement.viewContainer.injector);\n this.childElement.viewContainer.insert(ref.hostView);\n this._instance = ref.instance;\n this._instance.control = this.dynamicControl;\n this._instance.label = this.label;\n this._instance.hint = this.hint;\n this._instance.name = this.name;\n this._instance.type = this.type;\n this._instance.value = this.value;\n this._instance.required = this.required;\n this._instance.min = this.min;\n this._instance.max = this.max;\n this._instance.minLength = this.minLength;\n this._instance.maxLength = this.maxLength;\n this._instance.selections = this.selections;\n this._instance.multiple = this.multiple;\n this._instance.errorMessageTemplate = this.errorMessageTemplate;\n this._instance.placeholder = this.placeholder;\n if (this.customConfig) {\n Object.getOwnPropertyNames(this.customConfig).forEach((name: string) => {\n if (this.customConfig) {\n this._instance[name] = this.customConfig[name];\n }\n });\n }\n }\n\n /**\n * Reassign any inputs that have changed\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._instance) {\n for (const prop of Object.keys(changes)) {\n this._instance[prop] = changes[prop].currentValue;\n }\n }\n }\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n TemplateRef,\n QueryList,\n AfterContentInit,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup, FormBuilder, AbstractControl } from '@angular/forms';\n\nimport {\n TdDynamicFormsService,\n ITdDynamicElementConfig,\n} from './services/dynamic-forms.service';\nimport { TdDynamicFormsErrorTemplateDirective } from './dynamic-element.component';\n\nimport { timer, Subject, Observable } from 'rxjs';\nimport { takeUntil, filter } from 'rxjs/operators';\n\n@Component({\n selector: 'td-dynamic-forms',\n templateUrl: './dynamic-forms.component.html',\n styleUrls: ['./dynamic-forms.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDynamicFormsComponent implements AfterContentInit, OnDestroy {\n private _renderedElements: ITdDynamicElementConfig[] = [];\n private _elements!: ITdDynamicElementConfig[];\n private _templateMap: Map<string, TemplateRef<any>> = new Map<\n string,\n TemplateRef<any>\n >();\n private _destroy$: Subject<any> = new Subject();\n private _destroyControl$: Subject<string> = new Subject();\n\n @ContentChildren(TdDynamicFormsErrorTemplateDirective, { descendants: true })\n _errorTemplates!: QueryList<TdDynamicFormsErrorTemplateDirective>;\n dynamicForm!: FormGroup;\n\n /**\n * elements: ITdDynamicElementConfig[]\n * JS Object that will render the elements depending on its config.\n * [name] property is required.\n */\n @Input()\n set elements(elements: ITdDynamicElementConfig[]) {\n if (elements) {\n this._elements = elements;\n } else {\n this._elements = [];\n }\n this._rerenderElements();\n }\n get elements(): ITdDynamicElementConfig[] {\n return this._renderedElements;\n }\n\n /**\n * Getter property for dynamic [FormGroup].\n */\n get form(): FormGroup {\n return this.dynamicForm;\n }\n\n /**\n * Getter property for [valid] of dynamic [FormGroup].\n */\n get valid(): boolean {\n if (this.dynamicForm) {\n return this.dynamicForm.valid;\n }\n return false;\n }\n\n /**\n * Getter property for [value] of dynamic [FormGroup].\n */\n get value(): any {\n if (this.dynamicForm) {\n return this.dynamicForm.value;\n }\n return {};\n }\n\n /**\n * Getter property for [errors] of dynamic [FormGroup].\n */\n get errors(): { [name: string]: any } {\n if (this.dynamicForm) {\n const errors: { [name: string]: any } = {};\n for (const name of Object.keys(this.dynamicForm.controls)) {\n errors[name] = this.dynamicForm.controls[name].errors;\n }\n return errors;\n }\n return {};\n }\n\n /**\n * Getter property for [controls] of dynamic [FormGroup].\n */\n get controls(): { [key: string]: AbstractControl } {\n if (this.dynamicForm) {\n return this.dynamicForm.controls;\n }\n return {};\n }\n\n constructor(\n private _formBuilder: FormBuilder,\n private _dynamicFormsService: TdDynamicFormsService,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this.dynamicForm = this._formBuilder.group({});\n }\n\n ngAfterContentInit(): void {\n this._updateErrorTemplates();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next(0);\n this._destroy$.complete();\n this._destroyControl$.complete();\n }\n\n /**\n * Refreshes the form and rerenders all validator/element modifications.\n */\n refresh(): void {\n this._rerenderElements();\n this._updateErrorTemplates();\n }\n\n /**\n * Getter method for error template references\n */\n getErrorTemplateRef(name: string): TemplateRef<any> | undefined {\n return this._templateMap.get(name);\n }\n\n /**\n * Loads error templates and sets them in a map for faster access.\n */\n private _updateErrorTemplates(): void {\n this._templateMap = new Map<string, TemplateRef<any>>();\n for (const errorTemplate of this._errorTemplates.toArray()) {\n this._templateMap.set(\n errorTemplate.tdDynamicFormsError ?? '',\n errorTemplate.templateRef\n );\n }\n }\n\n private _rerenderElements(): void {\n this._clearRemovedElements();\n this._renderedElements = [];\n const duplicates: string[] = [];\n this._elements.forEach((elem: ITdDynamicElementConfig) => {\n this._dynamicFormsService.validateDynamicElementName(elem.name);\n if (duplicates.indexOf(elem.name) > -1) {\n throw new Error(`Dynamic element name: \"${elem.name}\" is duplicated`);\n }\n duplicates.push(elem.name);\n const dynamicElement: AbstractControl | null = this.dynamicForm.get(\n elem.name\n );\n if (!dynamicElement) {\n this.dynamicForm.addControl(\n elem.name,\n this._dynamicFormsService.createFormControl(elem)\n );\n this._subscribeToControlStatusChanges(elem.name);\n } else {\n dynamicElement.setValue(elem.default);\n dynamicElement.markAsPristine();\n dynamicElement.markAsUntouched();\n if (elem.disabled) {\n dynamicElement.disable();\n } else {\n dynamicElement.enable();\n }\n dynamicElement.setValidators(\n this._dynamicFormsService.createValidators(elem)\n );\n }\n // copy objects so they are only changes when calling this method\n this._renderedElements.push(Object.assign({}, elem));\n });\n // call a change detection since the whole form might change\n this._changeDetectorRef.detectChanges();\n timer(0)\n .toPromise()\n .then(() => {\n // call a markForCheck so elements are rendered correctly in OnPush\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _clearRemovedElements(): void {\n this._renderedElements = this._renderedElements.filter(\n (renderedElement: ITdDynamicElementConfig) =>\n !this._elements.some(\n (element: ITdDynamicElementConfig) =>\n element.name === renderedElement.name\n )\n );\n // remove elements that were removed from the array\n this._renderedElements.forEach((elem: ITdDynamicElementConfig) => {\n this._destroyControl$.next(elem.name);\n this.dynamicForm.removeControl(elem.name);\n });\n }\n\n // Updates component when manually adding errors to controls\n private _subscribeToControlStatusChanges(elementName: string): void {\n const control: AbstractControl = this.controls[elementName];\n\n const controlDestroyed$: Observable<any> = this._destroyControl$.pipe(\n filter(\n (destroyedElementName: string) => destroyedElementName === elementName\n )\n );\n\n control.statusChanges\n .pipe(takeUntil(this._destroy$), takeUntil(controlDestroyed$))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<form [formGroup]=\"dynamicForm\" novalidate>\n <div class=\"td-dynamic-form-wrapper\">\n <ng-template let-element ngFor [ngForOf]=\"elements\">\n <div\n class=\"td-dynamic-element-wrapper\"\n [style.max-width.%]=\"element.flex ? element.flex : 100\"\n [style.flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-ms-flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-webkit-box-flex]=\"1\"\n >\n <td-dynamic-element\n #dynamicElement\n *ngIf=\"dynamicForm.controls[element.name]\"\n [formControlName]=\"element.name\"\n [dynamicControl]=\"dynamicForm.controls[element.name]\"\n [id]=\"element.name\"\n [name]=\"element.name\"\n [label]=\"element.label || element.name\"\n [hint]=\"element.hint\"\n [type]=\"element.type\"\n [required]=\"element.required ?? false\"\n [min]=\"element.min\"\n [max]=\"element.max\"\n [minLength]=\"element.minLength\"\n [maxLength]=\"element.maxLength\"\n [selections]=\"element.selections\"\n [multiple]=\"element.multiple\"\n [customConfig]=\"element.customConfig\"\n [errorMessageTemplate]=\"getErrorTemplateRef(element.name)\"\n [placeholder]=\"element.placeholder\"\n ></td-dynamic-element>\n </div>\n </ng-template>\n </div>\n <ng-content></ng-content>\n</form>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\n\nimport { CovalentFileModule } from '@covalent/core/file';\n\nimport { TdDynamicFormsComponent } from './dynamic-forms.component';\nimport {\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n} from './dynamic-element.component';\nimport { DYNAMIC_FORMS_PROVIDER } from './services/dynamic-forms.service';\n\nimport { TdDynamicInputComponent } from './dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from './dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from './dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from './dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from './dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from './dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from './dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from './dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nconst TD_DYNAMIC_FORMS: Type<any>[] = [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n];\n\nconst TD_DYNAMIC_FORMS_ENTRY_COMPONENTS: Type<any>[] = [\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n];\n\n@NgModule({\n declarations: [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatCheckboxModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDatepickerModule,\n CovalentFileModule,\n ],\n exports: [...TD_DYNAMIC_FORMS, ...TD_DYNAMIC_FORMS_ENTRY_COMPONENTS],\n providers: [DYNAMIC_FORMS_PROVIDER],\n})\nexport class CovalentDynamicFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAQa,uBAAuB;IALpC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAIV,aAAQ,GAAG,KAAK,CAAC;QAEjB,SAAI,GAAG,EAAE,CAAC;QAYV,gBAAW,GAAG,EAAE,CAAC;KAClB;;oHAxBY,uBAAuB;wGAAvB,uBAAuB,wDCRpC,mxBA4BA;2FDpBa,uBAAuB;kBALnC,SAAS;+BACE,kBAAkB;;;MEIjB,2BAA2B;IALxC;QAQE,aAAQ,GAAG,KAAK,CAAC;QAEjB,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAIV,gBAAW,GAAG,EAAE,CAAC;KAKlB;IAHC,eAAe,CAAC,KAAU;QACxB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC/B;;wHAjBU,2BAA2B;4GAA3B,2BAA2B,6DCRxC,81CA6CA;2FDrCa,2BAA2B;kBALvC,SAAS;+BACE,uBAAuB;;;MEItB,0BAA0B;IALvC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAEV,aAAQ,GAAG,KAAK,CAAC;QAIjB,gBAAW,GAAG,EAAE,CAAC;KAClB;;uHAdY,0BAA0B;2GAA1B,0BAA0B,2DCRvC,iqBAwBA;2FDhBa,0BAA0B;kBALtC,SAAS;+BACE,qBAAqB;;;MEIpB,6BAA6B;IAL1C;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAEV,aAAQ,GAAG,KAAK,CAAC;KAClB;;0HAVY,6BAA6B;8GAA7B,6BAA6B,+DCR1C,yRAUA;2FDFa,6BAA6B;kBALzC,SAAS;+BACE,yBAAyB;;;MEIxB,0BAA0B;IALvC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAEV,aAAQ,GAAG,KAAK,CAAC;KAClB;;uHAVY,0BAA0B;2GAA1B,0BAA0B,2DCRvC,qPAMA;2FDEa,0BAA0B;kBALtC,SAAS;+BACE,qBAAqB;;;MEIpB,wBAAwB;IAenC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QAZzD,UAAK,GAAG,EAAE,CAAC;QAEX,aAAQ,GAAG,KAAK,CAAC;QAEjB,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;KAMmD;IAE7D,WAAW;QACT,UAAU,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACJ;;qHArBU,wBAAwB;yGAAxB,wBAAwB,yDCRrC,k4BA8BA;2FDtBa,wBAAwB;kBALpC,SAAS;+BACE,mBAAmB;;;MEIlB,wBAAwB;IALrC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAEV,aAAQ,GAAG,KAAK,CAAC;QAQjB,gBAAW,GAAG,EAAE,CAAC;KAClB;;qHAlBY,wBAAwB;yGAAxB,wBAAwB,yDCRrC,80BA6BA;2FDrBa,wBAAwB;kBALpC,SAAS;+BACE,mBAAmB;;;MEIlB,4BAA4B;IALzC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAIV,aAAQ,GAAG,KAAK,CAAC;QAQjB,gBAAW,GAAG,EAAE,CAAC;KAClB;;yHApBY,4BAA4B;6GAA5B,4BAA4B,6DCRzC,i4BA+BA;2FDvBa,4BAA4B;kBALxC,SAAS;+BACE,uBAAuB;;;IEQvB;AAAZ,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,8BAAa,CAAA;AACf,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;IAEW;AAAZ,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,6CAAyB,CAAA;IACzB,yCAAqB,CAAA;IACrB,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;IACjB,gDAA4B,CAAA;IAC5B,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;IACjB,4CAAwB,CAAA;AAC1B,CAAC,EAVW,gBAAgB,KAAhB,gBAAgB,QAU3B;MA+BY,0BAA0B,GAAG,gBAAgB;MAG7C,qBAAqB;;;;;IAKhC,0BAA0B,CAAC,IAAY;QACrC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;SAClE;KACF;;;;;IAMD,iBAAiB,CACf,OAAiE;QAEjE,QAAQ,OAAO;YACb,KAAK,aAAa,CAAC,IAAI,CAAC;YACxB,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,gBAAgB,CAAC,KAAK,CAAC;YAC5B,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,OAAO,uBAAuB,CAAC;YACjC,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,OAAO,0BAA0B,CAAC;YACpC,KAAK,aAAa,CAAC,OAAO,CAAC;YAC3B,KAAK,gBAAgB,CAAC,WAAW;gBAC/B,OAAO,6BAA6B,CAAC;YACvC,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,OAAO,0BAA0B,CAAC;YACpC,KAAK,gBAAgB,CAAC,MAAM;gBAC1B,OAAO,wBAAwB,CAAC;YAClC,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,gBAAgB,CAAC,MAAM;gBAC1B,OAAO,wBAAwB,CAAC;YAClC,KAAK,gBAAgB,CAAC,SAAS;gBAC7B,OAAO,2BAA2B,CAAC;YACrC,KAAK,gBAAgB,CAAC,UAAU,CAAC;YACjC,KAAK,aAAa,CAAC,IAAI;gBACrB,OAAO,4BAA4B,CAAC;YACtC;gBACE,MAAM,IAAI,KAAK,CACb,eAAe,OAAO,mCAAmC,CAC1D,CAAC;SACL;KACF;;;;IAKD,iBAAiB,CAAC,MAA+B;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,IAAI,WAAW,CACpB,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EACpD,SAAS,CACV,CAAC;KACH;;;;IAKD,gBAAgB,CAAC,MAA+B;QAC9C,IAAI,SAAS,GAAuB,IAAI,CAAC;QACzC,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;SACjC;QACD,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE;YAClC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;gBAC7B,SAAS;gBACT,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACvC,CAAC,CAAC;SACJ;QACD,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE;YAClC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;gBAC7B,SAAS;gBACT,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACvC,CAAC,CAAC;SACJ;QACD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,EAAE;YAC9C,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;gBAC7B,SAAS;gBACT,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACnD,CAAC,CAAC;SACJ;QACD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,EAAE;YAC9C,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;gBAC7B,SAAS;gBACT,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACnD,CAAC,CAAC;SACJ;;QAED,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,MAAM,CAAC,UAAU,CAAC,OAAO,CACvB,CAAC,eAA2C;gBAC1C,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;oBAC7B,SAAS;oBACT,eAAe,CAAC,SAAS;iBAC1B,CAAC,CAAC;aACJ,CACF,CAAC;SACH;QACD,OAAO,SAAS,CAAC;KAClB;;kHAvGU,qBAAqB;sHAArB,qBAAqB;2FAArB,qBAAqB;kBADjC,UAAU;;SA2GK,8BAA8B,CAC5C,MAA6B;IAE7B,OAAO,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;AAC/C,CAAC;MAEY,sBAAsB,GAAa;;IAE9C,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC/D,UAAU,EAAE,8BAA8B;;;MCnJ/B,oBAAoB;IAC/B,YAAmB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAI;CAC7D;AAED;MACa,0BAA0B,GACrC,yBAAyB,CAAC,oBAAoB,EAAE;MAGrC,oCAAqC,SAAQ,SAAS;IAEjE,YACkB,WAA6B,EAC7C,gBAAkC;QAElC,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAHrB,gBAAW,GAAX,WAAW,CAAkB;KAI9C;;iIAPU,oCAAoC;qHAApC,oCAAoC;2FAApC,oCAAoC;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,kCAAkC,EAAE;iIAEhD,mBAAmB;sBAA3B,KAAK;;MAYK,yBAAyB;IACpC,YAAmB,aAA+B;QAA/B,kBAAa,GAAb,aAAa,CAAkB;KAAI;;sHAD3C,yBAAyB;0GAAzB,yBAAyB;2FAAzB,yBAAyB;kBAHrC,SAAS;mBAAC;oBACT,QAAQ,EAAE,sBAAsB;iBACjC;;MAiBY,yBACX,SAAQ,0BAA0B;IA8FlC,YACU,yBAAmD,EACnD,oBAA2C,EACnD,kBAAqC;QAErC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAJlB,8BAAyB,GAAzB,yBAAyB,CAA0B;QACnD,yBAAoB,GAApB,oBAAoB,CAAuB;;;;QAnF5C,UAAK,GAAG,EAAE,CAAC;;;;QAKX,SAAI,GAAI,EAAE,CAAC;;;;QAKX,SAAI,GAAG,EAAE,CAAC;;;;QAwDV,gBAAW,GAAI,EAAE,CAAC;KAqB1B;IAhBD,IACI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IAED,IACI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IAUD,QAAQ;QACN,MAAM,SAAS,GACR,IAAI,CAAC,IAAI,YAAY,IAAI;cAC1B,IAAI,CAAC,IAAI;cACT,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAsB,IAAI,CAAC,yBAAyB;aAC1D,uBAAuB,CAAC,SAAS,CAAC;aAClC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAChE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9C,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAY;gBACjE,IAAI,IAAI,CAAC,YAAY,EAAE;oBACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iBAChD;aACF,CAAC,CAAC;SACJ;KACF;;;;IAKD,WAAW,CAAC,OAAsB;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;aACnD;SACF;KACF;;sHAlJU,yBAAyB;0GAAzB,yBAAyB,6dAXzB;QACT,qBAAqB;QACrB;YACE,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;YACxD,KAAK,EAAE,IAAI;SACZ;KACF,wEAsFU,yBAAyB,0GApF1B,gCAAgC,uCAd/B,yBAAyB;2FAgBzB,yBAAyB;kBAZrC,SAAS;mBAAC;oBACT,SAAS,EAAE;wBACT,qBAAqB;wBACrB;4BACE,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;4BACxD,KAAK,EAAE,IAAI;yBACZ;qBACF;oBACD,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,gCAAgC;iBAC3C;gLAUU,cAAc;sBAAtB,KAAK;gBAKG,KAAK;sBAAb,KAAK;gBAKG,IAAI;sBAAZ,KAAK;gBAKG,IAAI;sBAAZ,KAAK;gBAMG,IAAI;sBAAZ,KAAK;gBAKG,QAAQ;sBAAhB,KAAK;gBAKG,GAAG;sBAAX,KAAK;gBAKG,GAAG;sBAAX,KAAK;gBAKG,SAAS;sBAAjB,KAAK;gBAKG,SAAS;sBAAjB,KAAK;gBAKG,UAAU;sBAAlB,KAAK;gBAKG,QAAQ;sBAAhB,KAAK;gBAKG,YAAY;sBAApB,KAAK;gBAKG,oBAAoB;sBAA5B,KAAK;gBAKG,WAAW;sBAAnB,KAAK;gBAGN,YAAY;sBADX,SAAS;uBAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAIlD,OAAO;sBADV,WAAW;uBAAC,UAAU;gBAMnB,OAAO;sBADV,WAAW;uBAAC,UAAU;;;MCrIZ,uBAAuB;IAmFlC,YACU,YAAyB,EACzB,oBAA2C,EAC3C,kBAAqC;QAFrC,iBAAY,GAAZ,YAAY,CAAa;QACzB,yBAAoB,GAApB,oBAAoB,CAAuB;QAC3C,uBAAkB,GAAlB,kBAAkB,CAAmB;QArFvC,sBAAiB,GAA8B,EAAE,CAAC;QAElD,iBAAY,GAAkC,IAAI,GAAG,EAG1D,CAAC;QACI,cAAS,GAAiB,IAAI,OAAO,EAAE,CAAC;QACxC,qBAAgB,GAAoB,IAAI,OAAO,EAAE,CAAC;QAgFxD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KAChD;;;;;;IAtED,IACI,QAAQ,CAAC,QAAmC;QAC9C,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;;;;IAKD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;;;IAKD,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SAC/B;QACD,OAAO,KAAK,CAAC;KACd;;;;IAKD,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SAC/B;QACD,OAAO,EAAE,CAAC;KACX;;;;IAKD,IAAI,MAAM;QACR,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACzD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;aACvD;YACD,OAAO,MAAM,CAAC;SACf;QACD,OAAO,EAAE,CAAC;KACX;;;;IAKD,IAAI,QAAQ;QACV,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;SAClC;QACD,OAAO,EAAE,CAAC;KACX;IAUD,kBAAkB;QAChB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,WAAW;QACT,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;KAClC;;;;IAKD,OAAO;QACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;;;IAKD,mBAAmB,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC;;;;IAKO,qBAAqB;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;QACxD,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;YAC1D,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,aAAa,CAAC,mBAAmB,IAAI,EAAE,EACvC,aAAa,CAAC,WAAW,CAC1B,CAAC;SACH;KACF;IAEO,iBAAiB;QACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAA6B;YACnD,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBACtC,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC;aACvE;YACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,cAAc,GAA2B,IAAI,CAAC,WAAW,CAAC,GAAG,CACjE,IAAI,CAAC,IAAI,CACV,CAAC;YACF,IAAI,CAAC,cAAc,EAAE;gBACnB,IAAI,CAAC,WAAW,CAAC,UAAU,CACzB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAClD,CAAC;gBACF,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClD;iBAAM;gBACL,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtC,cAAc,CAAC,cAAc,EAAE,CAAC;gBAChC,cAAc,CAAC,eAAe,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,cAAc,CAAC,OAAO,EAAE,CAAC;iBAC1B;qBAAM;oBACL,cAAc,CAAC,MAAM,EAAE,CAAC;iBACzB;gBACD,cAAc,CAAC,aAAa,CAC1B,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CACjD,CAAC;aACH;;YAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;SACtD,CAAC,CAAC;;QAEH,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;QACxC,KAAK,CAAC,CAAC,CAAC;aACL,SAAS,EAAE;aACX,IAAI,CAAC;;YAEJ,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACN;IAEO,qBAAqB;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CACpD,CAAC,eAAwC,KACvC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAClB,CAAC,OAAgC,KAC/B,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CACxC,CACJ,CAAC;;QAEF,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAA6B;YAC3D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3C,CAAC,CAAC;KACJ;;IAGO,gCAAgC,CAAC,WAAmB;QAC1D,MAAM,OAAO,GAAoB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE5D,MAAM,iBAAiB,GAAoB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACnE,MAAM,CACJ,CAAC,oBAA4B,KAAK,oBAAoB,KAAK,WAAW,CACvE,CACF,CAAC;QAEF,OAAO,CAAC,aAAa;aAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;aAC7D,SAAS,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACN;;oHA5MU,uBAAuB;wGAAvB,uBAAuB,0HAUjB,oCAAoC,gDCtCvD,48CAoCA;2FDRa,uBAAuB;kBANnC,SAAS;+BACE,kBAAkB,mBAGX,uBAAuB,CAAC,MAAM;mKAa/C,eAAe;sBADd,eAAe;uBAAC,oCAAoC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAUxE,QAAQ;sBADX,KAAK;;;AEdR,MAAM,gBAAgB,GAAgB;IACpC,uBAAuB;IACvB,yBAAyB;IACzB,yBAAyB;IACzB,oCAAoC;CACrC,CAAC;AAEF,MAAM,iCAAiC,GAAgB;IACrD,uBAAuB;IACvB,2BAA2B;IAC3B,0BAA0B;IAC1B,6BAA6B;IAC7B,0BAA0B;IAC1B,wBAAwB;IACxB,wBAAwB;IACxB,4BAA4B;CAC7B,CAAC;MAkCW,0BAA0B;;uHAA1B,0BAA0B;wHAA1B,0BAA0B,iBA9BnC,uBAAuB;QACvB,yBAAyB;QACzB,yBAAyB;QACzB,oCAAoC;QACpC,uBAAuB;QACvB,2BAA2B;QAC3B,0BAA0B;QAC1B,6BAA6B;QAC7B,0BAA0B;QAC1B,wBAAwB;QACxB,wBAAwB;QACxB,4BAA4B,aAG5B,YAAY;QACZ,mBAAmB;QACnB,kBAAkB;QAClB,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,eAAe;QACf,oBAAoB;QACpB,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,kBAAkB,aA5CpB,uBAAuB;QACvB,yBAAyB;QACzB,yBAAyB;QACzB,oCAAoC,EAIpC,uBAAuB;QACvB,2BAA2B;QAC3B,0BAA0B;QAC1B,6BAA6B;QAC7B,0BAA0B;QAC1B,wBAAwB;QACxB,wBAAwB;QACxB,4BAA4B;wHAmCjB,0BAA0B,aAF1B,CAAC,sBAAsB,CAAC,YAf1B;YACP,YAAY;YACZ,mBAAmB;YACnB,kBAAkB;YAClB,cAAc;YACd,eAAe;YACf,iBAAiB;YACjB,eAAe;YACf,oBAAoB;YACpB,aAAa;YACb,eAAe;YACf,mBAAmB;YACnB,kBAAkB;SACnB;2FAIU,0BAA0B;kBAhCtC,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,uBAAuB;wBACvB,yBAAyB;wBACzB,yBAAyB;wBACzB,oCAAoC;wBACpC,uBAAuB;wBACvB,2BAA2B;wBAC3B,0BAA0B;wBAC1B,6BAA6B;wBAC7B,0BAA0B;wBAC1B,wBAAwB;wBACxB,wBAAwB;wBACxB,4BAA4B;qBAC7B;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,iBAAiB;wBACjB,eAAe;wBACf,oBAAoB;wBACpB,aAAa;wBACb,eAAe;wBACf,mBAAmB;wBACnB,kBAAkB;qBACnB;oBACD,OAAO,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,iCAAiC,CAAC;oBACpE,SAAS,EAAE,CAAC,sBAAsB,CAAC;iBACpC;;;AClFD;;;;;;"}
|
|
1
|
+
{"version":3,"file":"covalent-dynamic-forms.mjs","sources":["../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.html","../../../../libs/angular-dynamic-forms/src/lib/services/dynamic-forms.service.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-element.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.module.ts","../../../../libs/angular-dynamic-forms/src/covalent-dynamic-forms.ts"],"sourcesContent":["import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-input',\n styleUrls: ['./dynamic-input.component.scss'],\n templateUrl: './dynamic-input.component.html',\n})\nexport class TdDynamicInputComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n type!: string;\n\n required = false;\n\n name = '';\n\n min?: number;\n\n max?: number;\n\n minLength?: number;\n\n maxLength?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-input-wrapper\">\n <mat-form-field class=\"td-dynamic-input-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.minLength]=\"minLength\"\n [attr.maxLength]=\"maxLength\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-file-input',\n styleUrls: ['./dynamic-file-input.component.scss'],\n templateUrl: './dynamic-file-input.component.html',\n})\nexport class TdDynamicFileInputComponent {\n control!: FormControl;\n\n required = false;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n\n _handlefileDrop(value: any): void {\n this.control?.setValue(value);\n }\n}\n","<div class=\"td-dynamic-file-input-wrapper\">\n <mat-form-field\n tdFileDrop\n class=\"td-dynamic-file-input-field\"\n floatLabel=\"never\"\n [disabled]=\"control?.disabled\"\n (fileDrop)=\"_handlefileDrop($event)\"\n (click)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.enter)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.delete)=\"fileInput.clear()\"\n (keyup.backspace)=\"fileInput.clear()\"\n >\n <mat-label>{{ label }}</mat-label>\n <input\n matInput\n [value]=\"control?.value?.name\"\n [placeholder]=\"placeholder\"\n [attr.name]=\"name\"\n [disabled]=\"control?.disabled\"\n readonly\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n <button\n mat-icon-button\n *ngIf=\"control.value\"\n (click)=\"fileInput.clear()\"\n (keyup.enter)=\"fileInput.clear()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <td-file-input class=\"td-file-input\" #fileInput [formControl]=\"control\">\n <mat-icon>folder</mat-icon>\n <span>{{ label }}</span>\n </td-file-input>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-textarea',\n styleUrls: ['./dynamic-textarea.component.scss'],\n templateUrl: './dynamic-textarea.component.html',\n})\nexport class TdDynamicTextareaComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-textarea-wrapper\">\n <mat-form-field class=\"td-dynamic-textarea-field\">\n <mat-label>{{ label }}</mat-label>\n <textarea\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n rows=\"4\"\n ></textarea>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slide-toggle',\n styleUrls: ['./dynamic-slide-toggle.component.scss'],\n templateUrl: './dynamic-slide-toggle.component.html',\n})\nexport class TdDynamicSlideToggleComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-slide-toggle-wrapper\">\n <mat-slide-toggle\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [required]=\"required\"\n >\n {{ label }}\n </mat-slide-toggle>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-checkbox',\n styleUrls: ['./dynamic-checkbox.component.scss'],\n templateUrl: './dynamic-checkbox.component.html',\n})\nexport class TdDynamicCheckboxComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-checkbox-wrapper\">\n <mat-checkbox [formControl]=\"control\" [name]=\"name\" [required]=\"required\">\n {{ label }}\n </mat-checkbox>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, ChangeDetectorRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slider',\n styleUrls: ['./dynamic-slider.component.scss'],\n templateUrl: './dynamic-slider.component.html',\n})\nexport class TdDynamicSliderComponent {\n control!: FormControl;\n\n label = '';\n\n required = false;\n\n name = '';\n\n hint = '';\n\n min?: number;\n\n max?: number;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n _handleBlur(): void {\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n class=\"td-dynamic-slider-wrapper mat-form-field mat-form-field-can-float mat-form-field-should-float\"\n [class.mat-focused]=\"slider._isActive\"\n>\n <span class=\"mat-form-field-label-wrapper\">\n <label class=\"mat-form-field-label mat-primary td-slider-label\">\n {{ label }}\n <span\n *ngIf=\"required && !control?.disabled\"\n class=\"mat-form-field-required-marker\"\n >*</span\n >\n </label>\n </span>\n <div class=\"td-dynamic-slider-field\">\n <mat-slider\n #slider\n class=\"td-dynamic-slider\"\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n thumbLabel\n tickInterval=\"auto\"\n [required]=\"required\"\n (blur)=\"_handleBlur()\"\n ></mat-slider>\n </div>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-select',\n styleUrls: ['./dynamic-select.component.scss'],\n templateUrl: './dynamic-select.component.html',\n})\nexport class TdDynamicSelectComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n selections?: any[];\n\n multiple?: boolean;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-select-wrapper\">\n <mat-form-field class=\"td-dynamic-select-field\">\n <mat-label>{{ label }}</mat-label>\n <mat-select\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [multiple]=\"multiple\"\n >\n <mat-option\n *ngFor=\"let selection of selections\"\n [value]=\"selection.value || selection\"\n >\n {{ selection.label || selection }}\n </mat-option>\n </mat-select>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-datepicker',\n styleUrls: ['./dynamic-datepicker.component.scss'],\n templateUrl: './dynamic-datepicker.component.html',\n})\nexport class TdDynamicDatepickerComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n type?: string;\n\n required = false;\n\n min?: number;\n\n max?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-datepicker-wrapper\">\n <mat-form-field class=\"td-dynamic-datepicker-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [matDatepicker]=\"dynamicDatePicker\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n <mat-datepicker-toggle\n matSuffix\n [for]=\"dynamicDatePicker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #dynamicDatePicker></mat-datepicker>\n </mat-form-field>\n</div>\n","import { Injectable, Provider, SkipSelf, Optional, Type } from '@angular/core';\nimport { Validators, ValidatorFn, FormControl } from '@angular/forms';\n\nimport { TdDynamicInputComponent } from '../dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from '../dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from '../dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from '../dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from '../dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from '../dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from '../dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from '../dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nexport enum TdDynamicType {\n Text = 'text',\n Boolean = 'boolean',\n Number = 'number',\n Array = 'array',\n Date = 'date',\n}\n\nexport enum TdDynamicElement {\n Input = 'input',\n Datepicker = 'datepicker',\n Password = 'password',\n Textarea = 'textarea',\n Slider = 'slider',\n SlideToggle = 'slide-toggle',\n Checkbox = 'checkbox',\n Select = 'select',\n FileInput = 'file-input',\n}\n\nexport interface ITdDynamicElementValidator {\n validator: ValidatorFn;\n}\n\n// Property values to be set in custom component\nexport interface ITdDynamicElementCustomConfig {\n [name: string]: any;\n}\n\nexport interface ITdDynamicElementConfig {\n label?: string;\n name: string;\n hint?: string;\n type: TdDynamicType | TdDynamicElement | Type<any>;\n required?: boolean;\n disabled?: boolean;\n min?: any;\n max?: any;\n minLength?: any;\n maxLength?: any;\n selections?: string[] | { value: any; label: string }[];\n multiple?: boolean;\n default?: any;\n flex?: number;\n validators?: ITdDynamicElementValidator[];\n customConfig?: ITdDynamicElementCustomConfig;\n placeholder?: string;\n}\n\nexport const DYNAMIC_ELEMENT_NAME_REGEX = /^[^0-9][^@]*$/;\n\n@Injectable()\nexport class TdDynamicFormsService {\n /**\n * Method to validate if the [name] is a proper element name.\n * Throws error if name is not valid.\n */\n validateDynamicElementName(name: string): void {\n if (!DYNAMIC_ELEMENT_NAME_REGEX.test(name)) {\n throw new Error('Dynamic element name: \"${name}\" is not valid.');\n }\n }\n\n /**\n * Gets component to be rendered depending on [TdDynamicElement | TdDynamicType]\n * Throws error if it does not exists or not supported.\n */\n getDynamicElement(\n element: TdDynamicElement | TdDynamicType | Type<any> | undefined\n ): any {\n switch (element) {\n case TdDynamicType.Text:\n case TdDynamicType.Number:\n case TdDynamicElement.Input:\n case TdDynamicElement.Password:\n return TdDynamicInputComponent;\n case TdDynamicElement.Textarea:\n return TdDynamicTextareaComponent;\n case TdDynamicType.Boolean:\n case TdDynamicElement.SlideToggle:\n return TdDynamicSlideToggleComponent;\n case TdDynamicElement.Checkbox:\n return TdDynamicCheckboxComponent;\n case TdDynamicElement.Slider:\n return TdDynamicSliderComponent;\n case TdDynamicType.Array:\n case TdDynamicElement.Select:\n return TdDynamicSelectComponent;\n case TdDynamicElement.FileInput:\n return TdDynamicFileInputComponent;\n case TdDynamicElement.Datepicker:\n case TdDynamicType.Date:\n return TdDynamicDatepickerComponent;\n default:\n throw new Error(\n `Error: type ${element} does not exist or not supported.`\n );\n }\n }\n\n /**\n * Creates form control for element depending [ITdDynamicElementConfig] properties.\n */\n createFormControl(config: ITdDynamicElementConfig): FormControl {\n const validator = this.createValidators(config);\n return new FormControl(\n { value: config.default, disabled: config.disabled },\n validator\n );\n }\n\n /**\n * Creates form validationdepending [ITdDynamicElementConfig] properties.\n */\n createValidators(config: ITdDynamicElementConfig): ValidatorFn | null {\n let validator: ValidatorFn | null = null;\n if (config.required) {\n validator = Validators.required;\n }\n if (config.max || config.max === 0) {\n validator = Validators.compose([\n validator,\n Validators.max(parseFloat(config.max)),\n ]);\n }\n if (config.min || config.min === 0) {\n validator = Validators.compose([\n validator,\n Validators.min(parseFloat(config.min)),\n ]);\n }\n if (config.maxLength || config.maxLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.maxLength(parseFloat(config.maxLength)),\n ]);\n }\n if (config.minLength || config.minLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.minLength(parseFloat(config.minLength)),\n ]);\n }\n // Add provided custom validators to the validator function\n if (config.validators) {\n config.validators.forEach(\n (validatorConfig: ITdDynamicElementValidator) => {\n validator = Validators.compose([\n validator,\n validatorConfig.validator,\n ]);\n }\n );\n }\n return validator;\n }\n}\n\nexport function DYNAMIC_FORMS_PROVIDER_FACTORY(\n parent: TdDynamicFormsService\n): TdDynamicFormsService {\n return parent || new TdDynamicFormsService();\n}\n\nexport const DYNAMIC_FORMS_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDynamicFormsService,\n deps: [[new Optional(), new SkipSelf(), TdDynamicFormsService]],\n useFactory: DYNAMIC_FORMS_PROVIDER_FACTORY,\n};\n","import {\n Component,\n Directive,\n Input,\n HostBinding,\n OnInit,\n SimpleChanges,\n OnChanges,\n TemplateRef,\n ChangeDetectorRef,\n Type,\n Injector,\n} from '@angular/core';\nimport { ViewChild, ViewContainerRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, AbstractControl } from '@angular/forms';\nimport { CdkPortal } from '@angular/cdk/portal';\n\nimport {\n mixinControlValueAccessor,\n IControlValueAccessor,\n} from '@covalent/core/common';\n\nimport {\n TdDynamicElement,\n TdDynamicType,\n TdDynamicFormsService,\n ITdDynamicElementCustomConfig,\n} from './services/dynamic-forms.service';\n\nexport class TdDynamicElementBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDynamicElementMixinBase =\n mixinControlValueAccessor(TdDynamicElementBase);\n\n@Directive({ selector: '[tdDynamicFormsError]ng-template' })\nexport class TdDynamicFormsErrorTemplateDirective extends CdkPortal {\n @Input() tdDynamicFormsError?: string;\n constructor(\n public override templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[tdDynamicContainer]',\n})\nexport class TdDynamicElementDirective {\n constructor(public viewContainer: ViewContainerRef) {}\n}\n\n@Component({\n providers: [\n TdDynamicFormsService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: TdDynamicElementComponent,\n multi: true,\n },\n ],\n selector: 'td-dynamic-element',\n template: '<div tdDynamicContainer></div>',\n})\nexport class TdDynamicElementComponent\n extends _TdDynamicElementMixinBase\n implements IControlValueAccessor, OnInit, OnChanges\n{\n private _instance: any;\n\n /**\n * Sets form control of the element.\n */\n @Input() dynamicControl!: AbstractControl;\n\n /**\n * Sets label to be displayed.\n */\n @Input() label = '';\n\n /**\n * Sets hint to be displayed.\n */\n @Input() hint? = '';\n\n /**\n * Sets name to be displayed as attribute.\n */\n @Input() name = '';\n\n /**\n * Sets type or element of element to be rendered.\n * Throws error if does not exist or no supported.\n */\n @Input() type?: TdDynamicElement | TdDynamicType | Type<any>;\n\n /**\n * Sets required validation checkup (if supported by element).\n */\n @Input() required?: boolean | string | undefined;\n\n /**\n * Sets min validation checkup (if supported by element).\n */\n @Input() min?: number;\n\n /**\n * Sets max validation checkup (if supported by element).\n */\n @Input() max?: number;\n\n /**\n * Sets minLength validation checkup (if supported by element).\n */\n @Input() minLength?: number;\n\n /**\n * Sets maxLength validation checkup (if supported by element).\n */\n @Input() maxLength?: number;\n\n /**\n * Sets selections for array elements (if supported by element).\n */\n @Input() selections?: any[];\n\n /**\n * Sets multiple property for array elements (if supported by element).\n */\n @Input() multiple?: boolean;\n\n /**\n * Sets any additional properties on custom component.\n */\n @Input() customConfig?: ITdDynamicElementCustomConfig;\n\n /**\n * Sets error message template so it can be injected into dynamic components.\n */\n @Input() errorMessageTemplate!: TemplateRef<any> | undefined;\n\n /**\n * Sets the placeholder message\n */\n @Input() placeholder? = '';\n\n @ViewChild(TdDynamicElementDirective, { static: true })\n childElement!: TdDynamicElementDirective;\n\n @HostBinding('attr.max')\n get maxAttr(): any {\n return this.max;\n }\n\n @HostBinding('attr.min')\n get minAttr(): any {\n return this.min;\n }\n\n constructor(\n private _injector: Injector,\n private _dynamicFormsService: TdDynamicFormsService,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n const component: any =\n <any>this.type instanceof Type\n ? this.type\n : this._dynamicFormsService.getDynamicElement(this.type);\n const ref = this.childElement.viewContainer.createComponent(component, {\n injector: this._injector,\n });\n this._instance = ref.instance;\n this._instance.control = this.dynamicControl;\n this._instance.label = this.label;\n this._instance.hint = this.hint;\n this._instance.name = this.name;\n this._instance.type = this.type;\n this._instance.value = this.value;\n this._instance.required = this.required;\n this._instance.min = this.min;\n this._instance.max = this.max;\n this._instance.minLength = this.minLength;\n this._instance.maxLength = this.maxLength;\n this._instance.selections = this.selections;\n this._instance.multiple = this.multiple;\n this._instance.errorMessageTemplate = this.errorMessageTemplate;\n this._instance.placeholder = this.placeholder;\n if (this.customConfig) {\n Object.getOwnPropertyNames(this.customConfig).forEach((name: string) => {\n if (this.customConfig) {\n this._instance[name] = this.customConfig[name];\n }\n });\n }\n }\n\n /**\n * Reassign any inputs that have changed\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._instance) {\n for (const prop of Object.keys(changes)) {\n this._instance[prop] = changes[prop].currentValue;\n }\n }\n }\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n TemplateRef,\n QueryList,\n AfterContentInit,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup, FormBuilder, AbstractControl } from '@angular/forms';\n\nimport {\n TdDynamicFormsService,\n ITdDynamicElementConfig,\n} from './services/dynamic-forms.service';\nimport { TdDynamicFormsErrorTemplateDirective } from './dynamic-element.component';\n\nimport { timer, Subject, Observable } from 'rxjs';\nimport { takeUntil, filter } from 'rxjs/operators';\n\n@Component({\n selector: 'td-dynamic-forms',\n templateUrl: './dynamic-forms.component.html',\n styleUrls: ['./dynamic-forms.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDynamicFormsComponent implements AfterContentInit, OnDestroy {\n private _renderedElements: ITdDynamicElementConfig[] = [];\n private _elements!: ITdDynamicElementConfig[];\n private _templateMap: Map<string, TemplateRef<any>> = new Map<\n string,\n TemplateRef<any>\n >();\n private _destroy$: Subject<any> = new Subject();\n private _destroyControl$: Subject<string> = new Subject();\n\n @ContentChildren(TdDynamicFormsErrorTemplateDirective, { descendants: true })\n _errorTemplates!: QueryList<TdDynamicFormsErrorTemplateDirective>;\n dynamicForm!: FormGroup;\n\n /**\n * elements: ITdDynamicElementConfig[]\n * JS Object that will render the elements depending on its config.\n * [name] property is required.\n */\n @Input()\n set elements(elements: ITdDynamicElementConfig[]) {\n if (elements) {\n this._elements = elements;\n } else {\n this._elements = [];\n }\n this._rerenderElements();\n }\n get elements(): ITdDynamicElementConfig[] {\n return this._renderedElements;\n }\n\n /**\n * Getter property for dynamic [FormGroup].\n */\n get form(): FormGroup {\n return this.dynamicForm;\n }\n\n /**\n * Getter property for [valid] of dynamic [FormGroup].\n */\n get valid(): boolean {\n if (this.dynamicForm) {\n return this.dynamicForm.valid;\n }\n return false;\n }\n\n /**\n * Getter property for [value] of dynamic [FormGroup].\n */\n get value(): any {\n if (this.dynamicForm) {\n return this.dynamicForm.value;\n }\n return {};\n }\n\n /**\n * Getter property for [errors] of dynamic [FormGroup].\n */\n get errors(): { [name: string]: any } {\n if (this.dynamicForm) {\n const errors: { [name: string]: any } = {};\n for (const name of Object.keys(this.dynamicForm.controls)) {\n errors[name] = this.dynamicForm.controls[name].errors;\n }\n return errors;\n }\n return {};\n }\n\n /**\n * Getter property for [controls] of dynamic [FormGroup].\n */\n get controls(): { [key: string]: AbstractControl } {\n if (this.dynamicForm) {\n return this.dynamicForm.controls;\n }\n return {};\n }\n\n constructor(\n private _formBuilder: FormBuilder,\n private _dynamicFormsService: TdDynamicFormsService,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this.dynamicForm = this._formBuilder.group({});\n }\n\n ngAfterContentInit(): void {\n this._updateErrorTemplates();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next(0);\n this._destroy$.complete();\n this._destroyControl$.complete();\n }\n\n /**\n * Refreshes the form and rerenders all validator/element modifications.\n */\n refresh(): void {\n this._rerenderElements();\n this._updateErrorTemplates();\n }\n\n /**\n * Getter method for error template references\n */\n getErrorTemplateRef(name: string): TemplateRef<any> | undefined {\n return this._templateMap.get(name);\n }\n\n /**\n * Loads error templates and sets them in a map for faster access.\n */\n private _updateErrorTemplates(): void {\n this._templateMap = new Map<string, TemplateRef<any>>();\n for (const errorTemplate of this._errorTemplates.toArray()) {\n this._templateMap.set(\n errorTemplate.tdDynamicFormsError ?? '',\n errorTemplate.templateRef\n );\n }\n }\n\n private _rerenderElements(): void {\n this._clearRemovedElements();\n this._renderedElements = [];\n const duplicates: string[] = [];\n this._elements.forEach((elem: ITdDynamicElementConfig) => {\n this._dynamicFormsService.validateDynamicElementName(elem.name);\n if (duplicates.indexOf(elem.name) > -1) {\n throw new Error(`Dynamic element name: \"${elem.name}\" is duplicated`);\n }\n duplicates.push(elem.name);\n const dynamicElement: AbstractControl | null = this.dynamicForm.get(\n elem.name\n );\n if (!dynamicElement) {\n this.dynamicForm.addControl(\n elem.name,\n this._dynamicFormsService.createFormControl(elem)\n );\n this._subscribeToControlStatusChanges(elem.name);\n } else {\n dynamicElement.setValue(elem.default);\n dynamicElement.markAsPristine();\n dynamicElement.markAsUntouched();\n if (elem.disabled) {\n dynamicElement.disable();\n } else {\n dynamicElement.enable();\n }\n dynamicElement.setValidators(\n this._dynamicFormsService.createValidators(elem)\n );\n }\n // copy objects so they are only changes when calling this method\n this._renderedElements.push(Object.assign({}, elem));\n });\n // call a change detection since the whole form might change\n this._changeDetectorRef.detectChanges();\n timer(0)\n .toPromise()\n .then(() => {\n // call a markForCheck so elements are rendered correctly in OnPush\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _clearRemovedElements(): void {\n this._renderedElements = this._renderedElements.filter(\n (renderedElement: ITdDynamicElementConfig) =>\n !this._elements.some(\n (element: ITdDynamicElementConfig) =>\n element.name === renderedElement.name\n )\n );\n // remove elements that were removed from the array\n this._renderedElements.forEach((elem: ITdDynamicElementConfig) => {\n this._destroyControl$.next(elem.name);\n this.dynamicForm.removeControl(elem.name);\n });\n }\n\n // Updates component when manually adding errors to controls\n private _subscribeToControlStatusChanges(elementName: string): void {\n const control: AbstractControl = this.controls[elementName];\n\n const controlDestroyed$: Observable<any> = this._destroyControl$.pipe(\n filter(\n (destroyedElementName: string) => destroyedElementName === elementName\n )\n );\n\n control.statusChanges\n .pipe(takeUntil(this._destroy$), takeUntil(controlDestroyed$))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<form [formGroup]=\"dynamicForm\" novalidate>\n <div class=\"td-dynamic-form-wrapper\">\n <ng-template let-element ngFor [ngForOf]=\"elements\">\n <div\n class=\"td-dynamic-element-wrapper\"\n [style.max-width.%]=\"element.flex ? element.flex : 100\"\n [style.flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-ms-flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-webkit-box-flex]=\"1\"\n >\n <td-dynamic-element\n #dynamicElement\n *ngIf=\"dynamicForm.controls[element.name]\"\n [formControlName]=\"element.name\"\n [dynamicControl]=\"dynamicForm.controls[element.name]\"\n [id]=\"element.name\"\n [name]=\"element.name\"\n [label]=\"element.label || element.name\"\n [hint]=\"element.hint\"\n [type]=\"element.type\"\n [required]=\"element.required ?? false\"\n [min]=\"element.min\"\n [max]=\"element.max\"\n [minLength]=\"element.minLength\"\n [maxLength]=\"element.maxLength\"\n [selections]=\"element.selections\"\n [multiple]=\"element.multiple\"\n [customConfig]=\"element.customConfig\"\n [errorMessageTemplate]=\"getErrorTemplateRef(element.name)\"\n [placeholder]=\"element.placeholder\"\n ></td-dynamic-element>\n </div>\n </ng-template>\n </div>\n <ng-content></ng-content>\n</form>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\n\nimport { CovalentFileModule } from '@covalent/core/file';\n\nimport { TdDynamicFormsComponent } from './dynamic-forms.component';\nimport {\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n} from './dynamic-element.component';\nimport { DYNAMIC_FORMS_PROVIDER } from './services/dynamic-forms.service';\n\nimport { TdDynamicInputComponent } from './dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from './dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from './dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from './dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from './dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from './dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from './dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from './dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nconst TD_DYNAMIC_FORMS: Type<any>[] = [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n];\n\nconst TD_DYNAMIC_FORMS_ENTRY_COMPONENTS: Type<any>[] = [\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n];\n\n@NgModule({\n declarations: [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatCheckboxModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDatepickerModule,\n CovalentFileModule,\n ],\n exports: [...TD_DYNAMIC_FORMS, ...TD_DYNAMIC_FORMS_ENTRY_COMPONENTS],\n providers: [DYNAMIC_FORMS_PROVIDER],\n})\nexport class CovalentDynamicFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { OnInit, SimpleChanges, OnChanges, TemplateRef, ChangeDetectorRef, Type } from '@angular/core';
|
|
1
|
+
import { OnInit, SimpleChanges, OnChanges, TemplateRef, ChangeDetectorRef, Type, Injector } from '@angular/core';
|
|
2
2
|
import { ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { ComponentFactoryResolver } from '@angular/core';
|
|
4
3
|
import { AbstractControl } from '@angular/forms';
|
|
5
4
|
import { CdkPortal } from '@angular/cdk/portal';
|
|
6
5
|
import { IControlValueAccessor } from '@covalent/core/common';
|
|
@@ -25,7 +24,7 @@ export declare class TdDynamicElementDirective {
|
|
|
25
24
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TdDynamicElementDirective, "[tdDynamicContainer]", never, {}, {}, never>;
|
|
26
25
|
}
|
|
27
26
|
export declare class TdDynamicElementComponent extends _TdDynamicElementMixinBase implements IControlValueAccessor, OnInit, OnChanges {
|
|
28
|
-
private
|
|
27
|
+
private _injector;
|
|
29
28
|
private _dynamicFormsService;
|
|
30
29
|
private _instance;
|
|
31
30
|
/**
|
|
@@ -92,7 +91,7 @@ export declare class TdDynamicElementComponent extends _TdDynamicElementMixinBas
|
|
|
92
91
|
childElement: TdDynamicElementDirective;
|
|
93
92
|
get maxAttr(): any;
|
|
94
93
|
get minAttr(): any;
|
|
95
|
-
constructor(
|
|
94
|
+
constructor(_injector: Injector, _dynamicFormsService: TdDynamicFormsService, _changeDetectorRef: ChangeDetectorRef);
|
|
96
95
|
ngOnInit(): void;
|
|
97
96
|
/**
|
|
98
97
|
* Reassign any inputs that have changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@covalent/dynamic-forms",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.5",
|
|
4
4
|
"description": "Teradata UI Platform Dynamic Forms Module",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"@angular/common": "^13.2.0",
|
|
23
23
|
"@angular/core": "^13.2.0",
|
|
24
|
-
"@covalent/core": "4.1.
|
|
24
|
+
"@covalent/core": "4.1.5",
|
|
25
25
|
"@angular/router": "^13.2.0",
|
|
26
26
|
"@angular/platform-browser": "^13.2.0",
|
|
27
27
|
"@angular/material": "^13.2.1",
|