@covalent/dynamic-forms 4.1.3 → 4.1.6
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/esm2020/lib/dynamic-elements/dynamic-input/dynamic-input.component.mjs +3 -3
- package/fesm2015/covalent-dynamic-forms.mjs +12 -13
- package/fesm2015/covalent-dynamic-forms.mjs.map +1 -1
- package/fesm2020/covalent-dynamic-forms.mjs +12 -13
- 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==
|
|
@@ -14,9 +14,9 @@ export class TdDynamicInputComponent {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
TdDynamicInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
-
TdDynamicInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicInputComponent, selector: "td-dynamic-input", ngImport: i0, template: "<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 [
|
|
17
|
+
TdDynamicInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicInputComponent, selector: "td-dynamic-input", ngImport: i0, template: "<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 [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", styles: [".td-dynamic-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-input-wrapper .td-dynamic-input-field{flex:1;box-sizing:border-box}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1.MatLabel, selector: "mat-label" }, { type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
18
18
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicInputComponent, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
|
-
args: [{ selector: 'td-dynamic-input', template: "<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 [
|
|
20
|
+
args: [{ selector: 'td-dynamic-input', template: "<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 [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", styles: [".td-dynamic-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-input-wrapper .td-dynamic-input-field{flex:1;box-sizing:border-box}\n"] }]
|
|
21
21
|
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZHluYW1pYy1mb3Jtcy9zcmMvbGliL2R5bmFtaWMtZWxlbWVudHMvZHluYW1pYy1pbnB1dC9keW5hbWljLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1keW5hbWljLWZvcm1zL3NyYy9saWIvZHluYW1pYy1lbGVtZW50cy9keW5hbWljLWlucHV0L2R5bmFtaWMtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXZELE1BQU0sT0FBTyx1QkFBdUI7SUFMcEM7UUFRRSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVgsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUlWLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQVlWLGdCQUFXLEdBQUcsRUFBRSxDQUFDO0tBQ2xCOztvSEF4QlksdUJBQXVCO3dHQUF2Qix1QkFBdUIsd0RDUnBDLDh3QkE0QkE7MkZEcEJhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtZHluYW1pYy1pbnB1dCcsXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUZER5bmFtaWNJbnB1dENvbXBvbmVudCB7XG4gIGNvbnRyb2whOiBGb3JtQ29udHJvbDtcblxuICBsYWJlbCA9ICcnO1xuXG4gIGhpbnQgPSAnJztcblxuICB0eXBlITogc3RyaW5nO1xuXG4gIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgbmFtZSA9ICcnO1xuXG4gIG1pbj86IG51bWJlcjtcblxuICBtYXg/OiBudW1iZXI7XG5cbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xuXG4gIG1heExlbmd0aD86IG51bWJlcjtcblxuICBlcnJvck1lc3NhZ2VUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcGxhY2Vob2xkZXIgPSAnJztcbn1cbiIsIjxkaXYgY2xhc3M9XCJ0ZC1keW5hbWljLWlucHV0LXdyYXBwZXJcIj5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidGQtZHluYW1pYy1pbnB1dC1maWVsZFwiPlxuICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgICNlbGVtZW50SW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgW2F0dHIubWluTGVuZ3RoXT1cIm1pbkxlbmd0aFwiXG4gICAgICBbYXR0ci5tYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAvPlxuICAgIDxtYXQtaGludD57eyBoaW50IH19PC9tYXQtaGludD5cbiAgICA8bWF0LWVycm9yPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yTWVzc2FnZVRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICBjb250cm9sOiBjb250cm9sLFxuICAgICAgICAgIGVycm9yczogY29udHJvbD8uZXJyb3JzXG4gICAgICAgIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -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';
|
|
@@ -40,10 +40,10 @@ class TdDynamicInputComponent {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
TdDynamicInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
-
TdDynamicInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicInputComponent, selector: "td-dynamic-input", ngImport: i0, template: "<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 [
|
|
43
|
+
TdDynamicInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicInputComponent, selector: "td-dynamic-input", ngImport: i0, template: "<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 [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", styles: [".td-dynamic-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-input-wrapper .td-dynamic-input-field{flex:1;box-sizing:border-box}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1.MatLabel, selector: "mat-label" }, { type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
44
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicInputComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
46
|
-
args: [{ selector: 'td-dynamic-input', template: "<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 [
|
|
46
|
+
args: [{ selector: 'td-dynamic-input', template: "<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 [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", styles: [".td-dynamic-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-input-wrapper .td-dynamic-input-field{flex:1;box-sizing:border-box}\n"] }]
|
|
47
47
|
}] });
|
|
48
48
|
|
|
49
49
|
class TdDynamicFileInputComponent {
|
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,MAAA,IAAI,CAAC,OAAO,0CAAE,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,6CAA6C,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,kCACH,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,MAAA,aAAa,CAAC,mBAAmB,mCAAI,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 [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';
|
|
@@ -40,10 +40,10 @@ class TdDynamicInputComponent {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
TdDynamicInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
-
TdDynamicInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicInputComponent, selector: "td-dynamic-input", ngImport: i0, template: "<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 [
|
|
43
|
+
TdDynamicInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicInputComponent, selector: "td-dynamic-input", ngImport: i0, template: "<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 [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", styles: [".td-dynamic-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-input-wrapper .td-dynamic-input-field{flex:1;box-sizing:border-box}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1.MatLabel, selector: "mat-label" }, { type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
44
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicInputComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
46
|
-
args: [{ selector: 'td-dynamic-input', template: "<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 [
|
|
46
|
+
args: [{ selector: 'td-dynamic-input', template: "<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 [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", styles: [".td-dynamic-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-input-wrapper .td-dynamic-input-field{flex:1;box-sizing:border-box}\n"] }]
|
|
47
47
|
}] });
|
|
48
48
|
|
|
49
49
|
class TdDynamicFileInputComponent {
|
|
@@ -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":"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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 [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.6",
|
|
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.6",
|
|
25
25
|
"@angular/router": "^13.2.0",
|
|
26
26
|
"@angular/platform-browser": "^13.2.0",
|
|
27
27
|
"@angular/material": "^13.2.1",
|