@covalent/dynamic-forms 4.1.1-beta.3 → 4.1.1-develop.1

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.
@@ -1,9 +1,9 @@
1
1
  import { Component, Directive, Input, HostBinding, TemplateRef, ChangeDetectorRef, Type, } from '@angular/core';
2
2
  import { ViewChild, ViewContainerRef } from '@angular/core';
3
3
  import { ComponentFactoryResolver, forwardRef, } from '@angular/core';
4
- import { NG_VALUE_ACCESSOR, AbstractControl, } from '@angular/forms';
4
+ import { NG_VALUE_ACCESSOR, AbstractControl } from '@angular/forms';
5
5
  import { CdkPortal } from '@angular/cdk/portal';
6
- import { mixinControlValueAccessor, } from './behaviors/control-value-accesor.mixin';
6
+ import { mixinControlValueAccessor, } from '@covalent/core/common';
7
7
  import { TdDynamicFormsService, } from './services/dynamic-forms.service';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "./services/dynamic-forms.service";
@@ -175,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
175
175
  type: HostBinding,
176
176
  args: ['attr.min']
177
177
  }] } });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1keW5hbWljLWZvcm1zL3NyYy9saWIvZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUlYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUNMLHdCQUF3QixFQUV4QixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixlQUFlLEdBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFDTCx5QkFBeUIsR0FFMUIsTUFBTSx5Q0FBeUMsQ0FBQztBQUVqRCxPQUFPLEVBR0wscUJBQXFCLEdBRXRCLE1BQU0sa0NBQWtDLENBQUM7OztBQUUxQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW1CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO0lBQUcsQ0FBQztDQUM3RDtBQUVELDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FDckMseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUdsRCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsU0FBUztJQUVqRSxZQUNrQixXQUE2QixFQUM3QyxnQkFBa0M7UUFFbEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBSHJCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUkvQyxDQUFDOztp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bUJBQUM7b0JBQ1QsU0FBUyxFQUFFO3dCQUNULHFCQUFxQjt3QkFDckI7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxnQ0FBZ0M7aUJBQzNDO21MQVVVLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJbEQsT0FBTztzQkFEVixXQUFXO3VCQUFDLFVBQVU7Z0JBTW5CLE9BQU87c0JBRFYsV0FBVzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBIb3N0QmluZGluZyxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBGb3JtQ29udHJvbCxcbiAgQWJzdHJhY3RDb250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDZGtQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuaW1wb3J0IHtcbiAgbWl4aW5Db250cm9sVmFsdWVBY2Nlc3NvcixcbiAgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLFxufSBmcm9tICcuL2JlaGF2aW9ycy9jb250cm9sLXZhbHVlLWFjY2Vzb3IubWl4aW4nO1xuXG5pbXBvcnQge1xuICBUZER5bmFtaWNFbGVtZW50LFxuICBUZER5bmFtaWNUeXBlLFxuICBUZER5bmFtaWNGb3Jtc1NlcnZpY2UsXG4gIElUZER5bmFtaWNFbGVtZW50Q3VzdG9tQ29uZmlnLFxufSBmcm9tICcuL3NlcnZpY2VzL2R5bmFtaWMtZm9ybXMuc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBUZER5bmFtaWNFbGVtZW50QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxufVxuXG4vKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgKi9cbmV4cG9ydCBjb25zdCBfVGREeW5hbWljRWxlbWVudE1peGluQmFzZSA9XG4gIG1peGluQ29udHJvbFZhbHVlQWNjZXNzb3IoVGREeW5hbWljRWxlbWVudEJhc2UpO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdGREeW5hbWljRm9ybXNFcnJvcl1uZy10ZW1wbGF0ZScgfSlcbmV4cG9ydCBjbGFzcyBUZER5bmFtaWNGb3Jtc0Vycm9yVGVtcGxhdGVEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xuICBASW5wdXQoKSB0ZER5bmFtaWNGb3Jtc0Vycm9yPzogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgb3ZlcnJpZGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHtcbiAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RkRHluYW1pY0NvbnRhaW5lcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBUZER5bmFtaWNFbGVtZW50RGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICBwcm92aWRlcnM6IFtcbiAgICBUZER5bmFtaWNGb3Jtc1NlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUZER5bmFtaWNFbGVtZW50Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiAndGQtZHluYW1pYy1lbGVtZW50JyxcbiAgdGVtcGxhdGU6ICc8ZGl2IHRkRHluYW1pY0NvbnRhaW5lcj48L2Rpdj4nLFxufSlcbmV4cG9ydCBjbGFzcyBUZER5bmFtaWNFbGVtZW50Q29tcG9uZW50XG4gIGV4dGVuZHMgX1RkRHluYW1pY0VsZW1lbnRNaXhpbkJhc2VcbiAgaW1wbGVtZW50cyBJQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25DaGFuZ2VzXG57XG4gIHByaXZhdGUgX2luc3RhbmNlOiBhbnk7XG5cbiAgLyoqXG4gICAqIFNldHMgZm9ybSBjb250cm9sIG9mIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgZHluYW1pY0NvbnRyb2whOiBBYnN0cmFjdENvbnRyb2w7XG5cbiAgLyoqXG4gICAqIFNldHMgbGFiZWwgdG8gYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWwgPSAnJztcblxuICAvKipcbiAgICogU2V0cyBoaW50IHRvIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGhpbnQ/ID0gJyc7XG5cbiAgLyoqXG4gICAqIFNldHMgbmFtZSB0byBiZSBkaXNwbGF5ZWQgYXMgYXR0cmlidXRlLlxuICAgKi9cbiAgQElucHV0KCkgbmFtZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBTZXRzIHR5cGUgb3IgZWxlbWVudCBvZiBlbGVtZW50IHRvIGJlIHJlbmRlcmVkLlxuICAgKiBUaHJvd3MgZXJyb3IgaWYgZG9lcyBub3QgZXhpc3Qgb3Igbm8gc3VwcG9ydGVkLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZT86IFRkRHluYW1pY0VsZW1lbnQgfCBUZER5bmFtaWNUeXBlIHwgVHlwZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBTZXRzIHJlcXVpcmVkIHZhbGlkYXRpb24gY2hlY2t1cCAoaWYgc3VwcG9ydGVkIGJ5IGVsZW1lbnQpLlxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ/OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXRzIG1pbiB2YWxpZGF0aW9uIGNoZWNrdXAgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIG1pbj86IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0cyBtYXggdmFsaWRhdGlvbiBjaGVja3VwIChpZiBzdXBwb3J0ZWQgYnkgZWxlbWVudCkuXG4gICAqL1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldHMgbWluTGVuZ3RoIHZhbGlkYXRpb24gY2hlY2t1cCAoaWYgc3VwcG9ydGVkIGJ5IGVsZW1lbnQpLlxuICAgKi9cbiAgQElucHV0KCkgbWluTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXRzIG1heExlbmd0aCB2YWxpZGF0aW9uIGNoZWNrdXAgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIG1heExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0cyBzZWxlY3Rpb25zIGZvciBhcnJheSBlbGVtZW50cyAoaWYgc3VwcG9ydGVkIGJ5IGVsZW1lbnQpLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0aW9ucz86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBTZXRzIG11bHRpcGxlIHByb3BlcnR5IGZvciBhcnJheSBlbGVtZW50cyAoaWYgc3VwcG9ydGVkIGJ5IGVsZW1lbnQpLlxuICAgKi9cbiAgQElucHV0KCkgbXVsdGlwbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXRzIGFueSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgb24gY3VzdG9tIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbUNvbmZpZz86IElUZER5bmFtaWNFbGVtZW50Q3VzdG9tQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBTZXRzIGVycm9yIG1lc3NhZ2UgdGVtcGxhdGUgc28gaXQgY2FuIGJlIGluamVjdGVkIGludG8gZHluYW1pYyBjb21wb25lbnRzLlxuICAgKi9cbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwbGFjZWhvbGRlciBtZXNzYWdlXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcj8gPSAnJztcblxuICBAVmlld0NoaWxkKFRkRHluYW1pY0VsZW1lbnREaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGNoaWxkRWxlbWVudCE6IFRkRHluYW1pY0VsZW1lbnREaXJlY3RpdmU7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm1heCcpXG4gIGdldCBtYXhBdHRyKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMubWF4O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm1pbicpXG4gIGdldCBtaW5BdHRyKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMubWluO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBfZHluYW1pY0Zvcm1zU2VydmljZTogVGREeW5hbWljRm9ybXNTZXJ2aWNlLFxuICAgIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIoX2NoYW5nZURldGVjdG9yUmVmKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvbmVudDogYW55ID1cbiAgICAgIDxhbnk+dGhpcy50eXBlIGluc3RhbmNlb2YgVHlwZVxuICAgICAgICA/IHRoaXMudHlwZVxuICAgICAgICA6IHRoaXMuX2R5bmFtaWNGb3Jtc1NlcnZpY2UuZ2V0RHluYW1pY0VsZW1lbnQodGhpcy50eXBlKTtcbiAgICBjb25zdCByZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG4gICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KVxuICAgICAgLmNyZWF0ZSh0aGlzLmNoaWxkRWxlbWVudC52aWV3Q29udGFpbmVyLmluamVjdG9yKTtcbiAgICB0aGlzLmNoaWxkRWxlbWVudC52aWV3Q29udGFpbmVyLmluc2VydChyZWYuaG9zdFZpZXcpO1xuICAgIHRoaXMuX2luc3RhbmNlID0gcmVmLmluc3RhbmNlO1xuICAgIHRoaXMuX2luc3RhbmNlLmNvbnRyb2wgPSB0aGlzLmR5bmFtaWNDb250cm9sO1xuICAgIHRoaXMuX2luc3RhbmNlLmxhYmVsID0gdGhpcy5sYWJlbDtcbiAgICB0aGlzLl9pbnN0YW5jZS5oaW50ID0gdGhpcy5oaW50O1xuICAgIHRoaXMuX2luc3RhbmNlLm5hbWUgPSB0aGlzLm5hbWU7XG4gICAgdGhpcy5faW5zdGFuY2UudHlwZSA9IHRoaXMudHlwZTtcbiAgICB0aGlzLl9pbnN0YW5jZS52YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy5faW5zdGFuY2UucmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkO1xuICAgIHRoaXMuX2luc3RhbmNlLm1pbiA9IHRoaXMubWluO1xuICAgIHRoaXMuX2luc3RhbmNlLm1heCA9IHRoaXMubWF4O1xuICAgIHRoaXMuX2luc3RhbmNlLm1pbkxlbmd0aCA9IHRoaXMubWluTGVuZ3RoO1xuICAgIHRoaXMuX2luc3RhbmNlLm1heExlbmd0aCA9IHRoaXMubWF4TGVuZ3RoO1xuICAgIHRoaXMuX2luc3RhbmNlLnNlbGVjdGlvbnMgPSB0aGlzLnNlbGVjdGlvbnM7XG4gICAgdGhpcy5faW5zdGFuY2UubXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlO1xuICAgIHRoaXMuX2luc3RhbmNlLmVycm9yTWVzc2FnZVRlbXBsYXRlID0gdGhpcy5lcnJvck1lc3NhZ2VUZW1wbGF0ZTtcbiAgICB0aGlzLl9pbnN0YW5jZS5wbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgaWYgKHRoaXMuY3VzdG9tQ29uZmlnKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLmN1c3RvbUNvbmZpZykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUNvbmZpZykge1xuICAgICAgICAgIHRoaXMuX2luc3RhbmNlW25hbWVdID0gdGhpcy5jdXN0b21Db25maWdbbmFtZV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFzc2lnbiBhbnkgaW5wdXRzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2luc3RhbmNlKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMoY2hhbmdlcykpIHtcbiAgICAgICAgdGhpcy5faW5zdGFuY2VbcHJvcF0gPSBjaGFuZ2VzW3Byb3BdLmN1cnJlbnRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1keW5hbWljLWZvcm1zL3NyYy9saWIvZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUlYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUNMLHdCQUF3QixFQUV4QixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQ0wseUJBQXlCLEdBRTFCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUdMLHFCQUFxQixHQUV0QixNQUFNLGtDQUFrQyxDQUFDOzs7QUFFMUMsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFtQixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtJQUFHLENBQUM7Q0FDN0Q7QUFFRCw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQ3JDLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFHbEQsTUFBTSxPQUFPLG9DQUFxQyxTQUFRLFNBQVM7SUFFakUsWUFDa0IsV0FBNkIsRUFDN0MsZ0JBQWtDO1FBRWxDLEtBQUssQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUhyQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFJL0MsQ0FBQzs7aUlB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QUFDO29CQUNULFNBQVMsRUFBRTt3QkFDVCxxQkFBcUI7d0JBQ3JCOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsZ0NBQWdDO2lCQUMzQzttTEFVVSxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWxELE9BQU87c0JBRFYsV0FBVzt1QkFBQyxVQUFVO2dCQU1uQixPQUFPO3NCQURWLFdBQVc7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgSG9zdEJpbmRpbmcsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2RrUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbmltcG9ydCB7XG4gIG1peGluQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIElDb250cm9sVmFsdWVBY2Nlc3Nvcixcbn0gZnJvbSAnQGNvdmFsZW50L2NvcmUvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgVGREeW5hbWljRWxlbWVudCxcbiAgVGREeW5hbWljVHlwZSxcbiAgVGREeW5hbWljRm9ybXNTZXJ2aWNlLFxuICBJVGREeW5hbWljRWxlbWVudEN1c3RvbUNvbmZpZyxcbn0gZnJvbSAnLi9zZXJ2aWNlcy9keW5hbWljLWZvcm1zLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRWxlbWVudEJhc2Uge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbn1cblxuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXG5leHBvcnQgY29uc3QgX1RkRHluYW1pY0VsZW1lbnRNaXhpbkJhc2UgPVxuICBtaXhpbkNvbnRyb2xWYWx1ZUFjY2Vzc29yKFRkRHluYW1pY0VsZW1lbnRCYXNlKTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3RkRHluYW1pY0Zvcm1zRXJyb3JdbmctdGVtcGxhdGUnIH0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRm9ybXNFcnJvclRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcbiAgQElucHV0KCkgdGREeW5hbWljRm9ybXNFcnJvcj86IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG92ZXJyaWRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7XG4gICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZER5bmFtaWNDb250YWluZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRWxlbWVudERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgVGREeW5hbWljRm9ybXNTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGREeW5hbWljRWxlbWVudENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBzZWxlY3RvcjogJ3RkLWR5bmFtaWMtZWxlbWVudCcsXG4gIHRlbXBsYXRlOiAnPGRpdiB0ZER5bmFtaWNDb250YWluZXI+PC9kaXY+Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRWxlbWVudENvbXBvbmVudFxuICBleHRlbmRzIF9UZER5bmFtaWNFbGVtZW50TWl4aW5CYXNlXG4gIGltcGxlbWVudHMgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBwcml2YXRlIF9pbnN0YW5jZTogYW55O1xuXG4gIC8qKlxuICAgKiBTZXRzIGZvcm0gY29udHJvbCBvZiB0aGUgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIGR5bmFtaWNDb250cm9sITogQWJzdHJhY3RDb250cm9sO1xuXG4gIC8qKlxuICAgKiBTZXRzIGxhYmVsIHRvIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIFNldHMgaGludCB0byBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBoaW50PyA9ICcnO1xuXG4gIC8qKlxuICAgKiBTZXRzIG5hbWUgdG8gYmUgZGlzcGxheWVkIGFzIGF0dHJpYnV0ZS5cbiAgICovXG4gIEBJbnB1dCgpIG5hbWUgPSAnJztcblxuICAvKipcbiAgICogU2V0cyB0eXBlIG9yIGVsZW1lbnQgb2YgZWxlbWVudCB0byBiZSByZW5kZXJlZC5cbiAgICogVGhyb3dzIGVycm9yIGlmIGRvZXMgbm90IGV4aXN0IG9yIG5vIHN1cHBvcnRlZC5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU/OiBUZER5bmFtaWNFbGVtZW50IHwgVGREeW5hbWljVHlwZSB8IFR5cGU8YW55PjtcblxuICAvKipcbiAgICogU2V0cyByZXF1aXJlZCB2YWxpZGF0aW9uIGNoZWNrdXAgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyBtaW4gdmFsaWRhdGlvbiBjaGVja3VwIChpZiBzdXBwb3J0ZWQgYnkgZWxlbWVudCkuXG4gICAqL1xuICBASW5wdXQoKSBtaW4/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldHMgbWF4IHZhbGlkYXRpb24gY2hlY2t1cCAoaWYgc3VwcG9ydGVkIGJ5IGVsZW1lbnQpLlxuICAgKi9cbiAgQElucHV0KCkgbWF4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXRzIG1pbkxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrdXAgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIG1pbkxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0cyBtYXhMZW5ndGggdmFsaWRhdGlvbiBjaGVja3VwIChpZiBzdXBwb3J0ZWQgYnkgZWxlbWVudCkuXG4gICAqL1xuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldHMgc2VsZWN0aW9ucyBmb3IgYXJyYXkgZWxlbWVudHMgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGlvbnM/OiBhbnlbXTtcblxuICAvKipcbiAgICogU2V0cyBtdWx0aXBsZSBwcm9wZXJ0eSBmb3IgYXJyYXkgZWxlbWVudHMgKGlmIHN1cHBvcnRlZCBieSBlbGVtZW50KS5cbiAgICovXG4gIEBJbnB1dCgpIG11bHRpcGxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyBhbnkgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIG9uIGN1c3RvbSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21Db25maWc/OiBJVGREeW5hbWljRWxlbWVudEN1c3RvbUNvbmZpZztcblxuICAvKipcbiAgICogU2V0cyBlcnJvciBtZXNzYWdlIHRlbXBsYXRlIHNvIGl0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGR5bmFtaWMgY29tcG9uZW50cy5cbiAgICovXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcGxhY2Vob2xkZXIgbWVzc2FnZVxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/ID0gJyc7XG5cbiAgQFZpZXdDaGlsZChUZER5bmFtaWNFbGVtZW50RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjaGlsZEVsZW1lbnQhOiBUZER5bmFtaWNFbGVtZW50RGlyZWN0aXZlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5tYXgnKVxuICBnZXQgbWF4QXR0cigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1heDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5taW4nKVxuICBnZXQgbWluQXR0cigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1pbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgX2R5bmFtaWNGb3Jtc1NlcnZpY2U6IFRkRHluYW1pY0Zvcm1zU2VydmljZSxcbiAgICBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKF9jaGFuZ2VEZXRlY3RvclJlZik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wb25lbnQ6IGFueSA9XG4gICAgICA8YW55PnRoaXMudHlwZSBpbnN0YW5jZW9mIFR5cGVcbiAgICAgICAgPyB0aGlzLnR5cGVcbiAgICAgICAgOiB0aGlzLl9keW5hbWljRm9ybXNTZXJ2aWNlLmdldER5bmFtaWNFbGVtZW50KHRoaXMudHlwZSk7XG4gICAgY29uc3QgcmVmOiBDb21wb25lbnRSZWY8YW55PiA9IHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudClcbiAgICAgIC5jcmVhdGUodGhpcy5jaGlsZEVsZW1lbnQudmlld0NvbnRhaW5lci5pbmplY3Rvcik7XG4gICAgdGhpcy5jaGlsZEVsZW1lbnQudmlld0NvbnRhaW5lci5pbnNlcnQocmVmLmhvc3RWaWV3KTtcbiAgICB0aGlzLl9pbnN0YW5jZSA9IHJlZi5pbnN0YW5jZTtcbiAgICB0aGlzLl9pbnN0YW5jZS5jb250cm9sID0gdGhpcy5keW5hbWljQ29udHJvbDtcbiAgICB0aGlzLl9pbnN0YW5jZS5sYWJlbCA9IHRoaXMubGFiZWw7XG4gICAgdGhpcy5faW5zdGFuY2UuaGludCA9IHRoaXMuaGludDtcbiAgICB0aGlzLl9pbnN0YW5jZS5uYW1lID0gdGhpcy5uYW1lO1xuICAgIHRoaXMuX2luc3RhbmNlLnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgdGhpcy5faW5zdGFuY2UudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMuX2luc3RhbmNlLnJlcXVpcmVkID0gdGhpcy5yZXF1aXJlZDtcbiAgICB0aGlzLl9pbnN0YW5jZS5taW4gPSB0aGlzLm1pbjtcbiAgICB0aGlzLl9pbnN0YW5jZS5tYXggPSB0aGlzLm1heDtcbiAgICB0aGlzLl9pbnN0YW5jZS5taW5MZW5ndGggPSB0aGlzLm1pbkxlbmd0aDtcbiAgICB0aGlzLl9pbnN0YW5jZS5tYXhMZW5ndGggPSB0aGlzLm1heExlbmd0aDtcbiAgICB0aGlzLl9pbnN0YW5jZS5zZWxlY3Rpb25zID0gdGhpcy5zZWxlY3Rpb25zO1xuICAgIHRoaXMuX2luc3RhbmNlLm11bHRpcGxlID0gdGhpcy5tdWx0aXBsZTtcbiAgICB0aGlzLl9pbnN0YW5jZS5lcnJvck1lc3NhZ2VUZW1wbGF0ZSA9IHRoaXMuZXJyb3JNZXNzYWdlVGVtcGxhdGU7XG4gICAgdGhpcy5faW5zdGFuY2UucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgIGlmICh0aGlzLmN1c3RvbUNvbmZpZykge1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5jdXN0b21Db25maWcpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21Db25maWcpIHtcbiAgICAgICAgICB0aGlzLl9pbnN0YW5jZVtuYW1lXSA9IHRoaXMuY3VzdG9tQ29uZmlnW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhc3NpZ24gYW55IGlucHV0cyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbnN0YW5jZSkge1xuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKGNoYW5nZXMpKSB7XG4gICAgICAgIHRoaXMuX2luc3RhbmNlW3Byb3BdID0gY2hhbmdlc1twcm9wXS5jdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -20,7 +20,7 @@ export class TdDynamicFileInputComponent {
20
20
  }
21
21
  }
22
22
  TdDynamicFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
- TdDynamicFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicFileInputComponent, selector: "td-dynamic-file-input", ngImport: i0, template: "<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", styles: [".td-dynamic-file-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-file-input-wrapper .td-dynamic-file-input-field{flex:1;box-sizing:border-box}.td-file-input{margin-left:10px}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.TdFileInputComponent, selector: "td-file-input", inputs: ["color", "multiple", "accept", "disabled", "value"], outputs: ["selectFile"] }], directives: [{ type: i4.TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
23
+ TdDynamicFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicFileInputComponent, selector: "td-dynamic-file-input", ngImport: i0, template: "<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", styles: [".td-dynamic-file-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-file-input-wrapper .td-dynamic-file-input-field{flex:1;box-sizing:border-box}.td-file-input{margin-left:10px}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.TdFileInputComponent, selector: "td-file-input", inputs: ["disabled", "value", "color", "multiple", "accept"], outputs: ["selectFile"] }], directives: [{ type: i4.TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicFileInputComponent, decorators: [{
25
25
  type: Component,
26
26
  args: [{ selector: 'td-dynamic-file-input', template: "<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", styles: [".td-dynamic-file-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-file-input-wrapper .td-dynamic-file-input-field{flex:1;box-sizing:border-box}.td-file-input{margin-left:10px}\n"] }]
@@ -25,50 +25,11 @@ import { MatDatepickerModule } from '@angular/material/datepicker';
25
25
  import * as i4$1 from '@covalent/core/file';
26
26
  import { CovalentFileModule } from '@covalent/core/file';
27
27
  import { CdkPortal } from '@angular/cdk/portal';
28
- import { Subject, timer } from 'rxjs';
28
+ import { mixinControlValueAccessor } from '@covalent/core/common';
29
29
  import * as i3$2 from '@angular/material/core';
30
+ import { Subject, timer } from 'rxjs';
30
31
  import { filter, takeUntil } from 'rxjs/operators';
31
32
 
32
- const noop = () => {
33
- // empty method
34
- };
35
- /** Mixin to augment a component with ngModel support. */
36
- function mixinControlValueAccessor(base, initialValue) {
37
- return class extends base {
38
- constructor(...args) {
39
- super(...args);
40
- this._value = initialValue instanceof Array
41
- ? Object.assign([], initialValue)
42
- : initialValue;
43
- this.onChange = (_) => noop;
44
- this.onTouched = () => noop;
45
- this._subjectValueChanges = new Subject();
46
- this.valueChanges = this._subjectValueChanges.asObservable();
47
- }
48
- set value(v) {
49
- if (v !== this._value) {
50
- this._value = v;
51
- this.onChange(v);
52
- this._changeDetectorRef.markForCheck();
53
- this._subjectValueChanges.next(v);
54
- }
55
- }
56
- get value() {
57
- return this._value;
58
- }
59
- writeValue(value) {
60
- this.value = value;
61
- this._changeDetectorRef.markForCheck();
62
- }
63
- registerOnChange(fn) {
64
- this.onChange = fn;
65
- }
66
- registerOnTouched(fn) {
67
- this.onTouched = fn;
68
- }
69
- };
70
- }
71
-
72
33
  class TdDynamicInputComponent {
73
34
  constructor() {
74
35
  this.label = '';
@@ -99,7 +60,7 @@ class TdDynamicFileInputComponent {
99
60
  }
100
61
  }
101
62
  TdDynamicFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
102
- TdDynamicFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicFileInputComponent, selector: "td-dynamic-file-input", ngImport: i0, template: "<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", styles: [".td-dynamic-file-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-file-input-wrapper .td-dynamic-file-input-field{flex:1;box-sizing:border-box}.td-file-input{margin-left:10px}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.TdFileInputComponent, selector: "td-file-input", inputs: ["color", "multiple", "accept", "disabled", "value"], outputs: ["selectFile"] }], directives: [{ type: i4$1.TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }, { 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: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
63
+ TdDynamicFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicFileInputComponent, selector: "td-dynamic-file-input", ngImport: i0, template: "<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", styles: [".td-dynamic-file-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-file-input-wrapper .td-dynamic-file-input-field{flex:1;box-sizing:border-box}.td-file-input{margin-left:10px}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.TdFileInputComponent, selector: "td-file-input", inputs: ["disabled", "value", "color", "multiple", "accept"], outputs: ["selectFile"] }], directives: [{ type: i4$1.TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }, { 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: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
103
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicFileInputComponent, decorators: [{
104
65
  type: Component,
105
66
  args: [{ selector: 'td-dynamic-file-input', template: "<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", styles: [".td-dynamic-file-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-file-input-wrapper .td-dynamic-file-input-field{flex:1;box-sizing:border-box}.td-file-input{margin-left:10px}\n"] }]
@@ -1 +1 @@
1
- {"version":3,"file":"covalent-dynamic-forms.mjs","sources":["../../../../libs/angular-dynamic-forms/src/lib/behaviors/control-value-accesor.mixin.ts","../../../../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 { ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\nconst noop: any = () => {\n // empty method\n};\n\nexport interface IControlValueAccessor extends ControlValueAccessor {\n value: any;\n valueChanges: Observable<any>;\n onChange: (_: any) => any;\n onTouched: () => any;\n}\n\nexport interface IHasChangeDetectorRef {\n _changeDetectorRef: ChangeDetectorRef;\n}\n\n/** Mixin to augment a component with ngModel support. */\nexport function mixinControlValueAccessor<\n T extends Constructor<IHasChangeDetectorRef>\n>(base: T, initialValue?: any): Constructor<IControlValueAccessor> & T {\n return class extends base {\n private _value: any =\n initialValue instanceof Array\n ? Object.assign([], initialValue)\n : initialValue;\n private _subjectValueChanges: Subject<any>;\n valueChanges: Observable<any>;\n\n constructor(...args: any[]) {\n super(...args);\n this._subjectValueChanges = new Subject<any>();\n this.valueChanges = this._subjectValueChanges.asObservable();\n }\n\n set value(v: any) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n this._changeDetectorRef.markForCheck();\n this._subjectValueChanges.next(v);\n }\n }\n get value(): any {\n return this._value;\n }\n\n writeValue(value: any): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onChange = (_: any) => noop;\n onTouched = () => noop;\n };\n}\n","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 {\n NG_VALUE_ACCESSOR,\n FormControl,\n AbstractControl,\n} from '@angular/forms';\nimport { CdkPortal } from '@angular/cdk/portal';\n\nimport {\n mixinControlValueAccessor,\n IControlValueAccessor,\n} from './behaviors/control-value-accesor.mixin';\n\nimport {\n TdDynamicElement,\n TdDynamicType,\n TdDynamicFormsService,\n ITdDynamicElementCustomConfig,\n} from './services/dynamic-forms.service';\n\nexport class TdDynamicElementBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDynamicElementMixinBase =\n mixinControlValueAccessor(TdDynamicElementBase);\n\n@Directive({ selector: '[tdDynamicFormsError]ng-template' })\nexport class TdDynamicFormsErrorTemplateDirective extends CdkPortal {\n @Input() tdDynamicFormsError?: string;\n constructor(\n public override templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[tdDynamicContainer]',\n})\nexport class TdDynamicElementDirective {\n constructor(public viewContainer: ViewContainerRef) {}\n}\n\n@Component({\n providers: [\n TdDynamicFormsService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDynamicElementComponent),\n multi: true,\n },\n ],\n selector: 'td-dynamic-element',\n template: '<div tdDynamicContainer></div>',\n})\nexport class TdDynamicElementComponent\n extends _TdDynamicElementMixinBase\n implements IControlValueAccessor, OnInit, OnChanges\n{\n private _instance: any;\n\n /**\n * Sets form control of the element.\n */\n @Input() dynamicControl!: AbstractControl;\n\n /**\n * Sets label to be displayed.\n */\n @Input() label = '';\n\n /**\n * Sets hint to be displayed.\n */\n @Input() hint? = '';\n\n /**\n * Sets name to be displayed as attribute.\n */\n @Input() name = '';\n\n /**\n * Sets type or element of element to be rendered.\n * Throws error if does not exist or no supported.\n */\n @Input() type?: TdDynamicElement | TdDynamicType | Type<any>;\n\n /**\n * Sets required validation checkup (if supported by element).\n */\n @Input() required?: boolean | string | undefined;\n\n /**\n * Sets min validation checkup (if supported by element).\n */\n @Input() min?: number;\n\n /**\n * Sets max validation checkup (if supported by element).\n */\n @Input() max?: number;\n\n /**\n * Sets minLength validation checkup (if supported by element).\n */\n @Input() minLength?: number;\n\n /**\n * Sets maxLength validation checkup (if supported by element).\n */\n @Input() maxLength?: number;\n\n /**\n * Sets selections for array elements (if supported by element).\n */\n @Input() selections?: any[];\n\n /**\n * Sets multiple property for array elements (if supported by element).\n */\n @Input() multiple?: boolean;\n\n /**\n * Sets any additional properties on custom component.\n */\n @Input() customConfig?: ITdDynamicElementCustomConfig;\n\n /**\n * Sets error message template so it can be injected into dynamic components.\n */\n @Input() errorMessageTemplate!: TemplateRef<any> | undefined;\n\n /**\n * Sets the placeholder message\n */\n @Input() placeholder? = '';\n\n @ViewChild(TdDynamicElementDirective, { static: true })\n childElement!: TdDynamicElementDirective;\n\n @HostBinding('attr.max')\n get maxAttr(): any {\n return this.max;\n }\n\n @HostBinding('attr.min')\n get minAttr(): any {\n return this.min;\n }\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _dynamicFormsService: TdDynamicFormsService,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n const component: any =\n <any>this.type instanceof Type\n ? this.type\n : this._dynamicFormsService.getDynamicElement(this.type);\n const ref: ComponentRef<any> = this._componentFactoryResolver\n .resolveComponentFactory(component)\n .create(this.childElement.viewContainer.injector);\n this.childElement.viewContainer.insert(ref.hostView);\n this._instance = ref.instance;\n this._instance.control = this.dynamicControl;\n this._instance.label = this.label;\n this._instance.hint = this.hint;\n this._instance.name = this.name;\n this._instance.type = this.type;\n this._instance.value = this.value;\n this._instance.required = this.required;\n this._instance.min = this.min;\n this._instance.max = this.max;\n this._instance.minLength = this.minLength;\n this._instance.maxLength = this.maxLength;\n this._instance.selections = this.selections;\n this._instance.multiple = this.multiple;\n this._instance.errorMessageTemplate = this.errorMessageTemplate;\n this._instance.placeholder = this.placeholder;\n if (this.customConfig) {\n Object.getOwnPropertyNames(this.customConfig).forEach((name: string) => {\n if (this.customConfig) {\n this._instance[name] = this.customConfig[name];\n }\n });\n }\n }\n\n /**\n * Reassign any inputs that have changed\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._instance) {\n for (const prop of Object.keys(changes)) {\n this._instance[prop] = changes[prop].currentValue;\n }\n }\n }\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n TemplateRef,\n QueryList,\n AfterContentInit,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup, FormBuilder, AbstractControl } from '@angular/forms';\n\nimport {\n TdDynamicFormsService,\n ITdDynamicElementConfig,\n} from './services/dynamic-forms.service';\nimport { TdDynamicFormsErrorTemplateDirective } from './dynamic-element.component';\n\nimport { timer, Subject, Observable } from 'rxjs';\nimport { takeUntil, filter } from 'rxjs/operators';\n\n@Component({\n selector: 'td-dynamic-forms',\n templateUrl: './dynamic-forms.component.html',\n styleUrls: ['./dynamic-forms.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDynamicFormsComponent implements AfterContentInit, OnDestroy {\n private _renderedElements: ITdDynamicElementConfig[] = [];\n private _elements!: ITdDynamicElementConfig[];\n private _templateMap: Map<string, TemplateRef<any>> = new Map<\n string,\n TemplateRef<any>\n >();\n private _destroy$: Subject<any> = new Subject();\n private _destroyControl$: Subject<string> = new Subject();\n\n @ContentChildren(TdDynamicFormsErrorTemplateDirective, { descendants: true })\n _errorTemplates!: QueryList<TdDynamicFormsErrorTemplateDirective>;\n dynamicForm!: FormGroup;\n\n /**\n * elements: ITdDynamicElementConfig[]\n * JS Object that will render the elements depending on its config.\n * [name] property is required.\n */\n @Input()\n set elements(elements: ITdDynamicElementConfig[]) {\n if (elements) {\n this._elements = elements;\n } else {\n this._elements = [];\n }\n this._rerenderElements();\n }\n get elements(): ITdDynamicElementConfig[] {\n return this._renderedElements;\n }\n\n /**\n * Getter property for dynamic [FormGroup].\n */\n get form(): FormGroup {\n return this.dynamicForm;\n }\n\n /**\n * Getter property for [valid] of dynamic [FormGroup].\n */\n get valid(): boolean {\n if (this.dynamicForm) {\n return this.dynamicForm.valid;\n }\n return false;\n }\n\n /**\n * Getter property for [value] of dynamic [FormGroup].\n */\n get value(): any {\n if (this.dynamicForm) {\n return this.dynamicForm.value;\n }\n return {};\n }\n\n /**\n * Getter property for [errors] of dynamic [FormGroup].\n */\n get errors(): { [name: string]: any } {\n if (this.dynamicForm) {\n const errors: { [name: string]: any } = {};\n for (const name of Object.keys(this.dynamicForm.controls)) {\n errors[name] = this.dynamicForm.controls[name].errors;\n }\n return errors;\n }\n return {};\n }\n\n /**\n * Getter property for [controls] of dynamic [FormGroup].\n */\n get controls(): { [key: string]: AbstractControl } {\n if (this.dynamicForm) {\n return this.dynamicForm.controls;\n }\n return {};\n }\n\n constructor(\n private _formBuilder: FormBuilder,\n private _dynamicFormsService: TdDynamicFormsService,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this.dynamicForm = this._formBuilder.group({});\n }\n\n ngAfterContentInit(): void {\n this._updateErrorTemplates();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next(0);\n this._destroy$.complete();\n this._destroyControl$.complete();\n }\n\n /**\n * Refreshes the form and rerenders all validator/element modifications.\n */\n refresh(): void {\n this._rerenderElements();\n this._updateErrorTemplates();\n }\n\n /**\n * Getter method for error template references\n */\n getErrorTemplateRef(name: string): TemplateRef<any> | undefined {\n return this._templateMap.get(name);\n }\n\n /**\n * Loads error templates and sets them in a map for faster access.\n */\n private _updateErrorTemplates(): void {\n this._templateMap = new Map<string, TemplateRef<any>>();\n for (const errorTemplate of this._errorTemplates.toArray()) {\n this._templateMap.set(\n errorTemplate.tdDynamicFormsError ?? '',\n errorTemplate.templateRef\n );\n }\n }\n\n private _rerenderElements(): void {\n this._clearRemovedElements();\n this._renderedElements = [];\n const duplicates: string[] = [];\n this._elements.forEach((elem: ITdDynamicElementConfig) => {\n this._dynamicFormsService.validateDynamicElementName(elem.name);\n if (duplicates.indexOf(elem.name) > -1) {\n throw new Error(`Dynamic element name: \"${elem.name}\" is duplicated`);\n }\n duplicates.push(elem.name);\n const dynamicElement: AbstractControl | null = this.dynamicForm.get(\n elem.name\n );\n if (!dynamicElement) {\n this.dynamicForm.addControl(\n elem.name,\n this._dynamicFormsService.createFormControl(elem)\n );\n this._subscribeToControlStatusChanges(elem.name);\n } else {\n dynamicElement.setValue(elem.default);\n dynamicElement.markAsPristine();\n dynamicElement.markAsUntouched();\n if (elem.disabled) {\n dynamicElement.disable();\n } else {\n dynamicElement.enable();\n }\n dynamicElement.setValidators(\n this._dynamicFormsService.createValidators(elem)\n );\n }\n // copy objects so they are only changes when calling this method\n this._renderedElements.push(Object.assign({}, elem));\n });\n // call a change detection since the whole form might change\n this._changeDetectorRef.detectChanges();\n timer(0)\n .toPromise()\n .then(() => {\n // call a markForCheck so elements are rendered correctly in OnPush\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _clearRemovedElements(): void {\n this._renderedElements = this._renderedElements.filter(\n (renderedElement: ITdDynamicElementConfig) =>\n !this._elements.some(\n (element: ITdDynamicElementConfig) =>\n element.name === renderedElement.name\n )\n );\n // remove elements that were removed from the array\n this._renderedElements.forEach((elem: ITdDynamicElementConfig) => {\n this._destroyControl$.next(elem.name);\n this.dynamicForm.removeControl(elem.name);\n });\n }\n\n // Updates component when manually adding errors to controls\n private _subscribeToControlStatusChanges(elementName: string): void {\n const control: AbstractControl = this.controls[elementName];\n\n const controlDestroyed$: Observable<any> = this._destroyControl$.pipe(\n filter(\n (destroyedElementName: string) => destroyedElementName === elementName\n )\n );\n\n control.statusChanges\n .pipe(takeUntil(this._destroy$), takeUntil(controlDestroyed$))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<form [formGroup]=\"dynamicForm\" novalidate>\n <div class=\"td-dynamic-form-wrapper\">\n <ng-template let-element ngFor [ngForOf]=\"elements\">\n <div\n class=\"td-dynamic-element-wrapper\"\n [style.max-width.%]=\"element.flex ? element.flex : 100\"\n [style.flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-ms-flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-webkit-box-flex]=\"1\"\n >\n <td-dynamic-element\n #dynamicElement\n *ngIf=\"dynamicForm.controls[element.name]\"\n [formControlName]=\"element.name\"\n [dynamicControl]=\"dynamicForm.controls[element.name]\"\n [id]=\"element.name\"\n [name]=\"element.name\"\n [label]=\"element.label || element.name\"\n [hint]=\"element.hint\"\n [type]=\"element.type\"\n [required]=\"element.required ?? false\"\n [min]=\"element.min\"\n [max]=\"element.max\"\n [minLength]=\"element.minLength\"\n [maxLength]=\"element.maxLength\"\n [selections]=\"element.selections\"\n [multiple]=\"element.multiple\"\n [customConfig]=\"element.customConfig\"\n [errorMessageTemplate]=\"getErrorTemplateRef(element.name)\"\n [placeholder]=\"element.placeholder\"\n ></td-dynamic-element>\n </div>\n </ng-template>\n </div>\n <ng-content></ng-content>\n</form>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\n\nimport { CovalentFileModule } from '@covalent/core/file';\n\nimport { TdDynamicFormsComponent } from './dynamic-forms.component';\nimport {\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n} from './dynamic-element.component';\nimport { DYNAMIC_FORMS_PROVIDER } from './services/dynamic-forms.service';\n\nimport { TdDynamicInputComponent } from './dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from './dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from './dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from './dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from './dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from './dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from './dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from './dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nconst TD_DYNAMIC_FORMS: Type<any>[] = [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n];\n\nconst TD_DYNAMIC_FORMS_ENTRY_COMPONENTS: Type<any>[] = [\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n];\n\n@NgModule({\n declarations: [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatCheckboxModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDatepickerModule,\n CovalentFileModule,\n ],\n exports: [...TD_DYNAMIC_FORMS, ...TD_DYNAMIC_FORMS_ENTRY_COMPONENTS],\n providers: [DYNAMIC_FORMS_PROVIDER],\n})\nexport class CovalentDynamicFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"covalent-dynamic-forms.mjs","sources":["../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.html","../../../../libs/angular-dynamic-forms/src/lib/services/dynamic-forms.service.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-element.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.module.ts","../../../../libs/angular-dynamic-forms/src/covalent-dynamic-forms.ts"],"sourcesContent":["import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-input',\n styleUrls: ['./dynamic-input.component.scss'],\n templateUrl: './dynamic-input.component.html',\n})\nexport class TdDynamicInputComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n type!: string;\n\n required = false;\n\n name = '';\n\n min?: number;\n\n max?: number;\n\n minLength?: number;\n\n maxLength?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-input-wrapper\">\n <mat-form-field class=\"td-dynamic-input-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.minLength]=\"minLength\"\n [attr.maxLength]=\"maxLength\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-file-input',\n styleUrls: ['./dynamic-file-input.component.scss'],\n templateUrl: './dynamic-file-input.component.html',\n})\nexport class TdDynamicFileInputComponent {\n control!: FormControl;\n\n required = false;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n\n _handlefileDrop(value: any): void {\n this.control?.setValue(value);\n }\n}\n","<div class=\"td-dynamic-file-input-wrapper\">\n <mat-form-field\n tdFileDrop\n class=\"td-dynamic-file-input-field\"\n floatLabel=\"never\"\n [disabled]=\"control?.disabled\"\n (fileDrop)=\"_handlefileDrop($event)\"\n (click)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.enter)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.delete)=\"fileInput.clear()\"\n (keyup.backspace)=\"fileInput.clear()\"\n >\n <mat-label>{{ label }}</mat-label>\n <input\n matInput\n [value]=\"control?.value?.name\"\n [placeholder]=\"placeholder\"\n [attr.name]=\"name\"\n [disabled]=\"control?.disabled\"\n readonly\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n <button\n mat-icon-button\n *ngIf=\"control.value\"\n (click)=\"fileInput.clear()\"\n (keyup.enter)=\"fileInput.clear()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <td-file-input class=\"td-file-input\" #fileInput [formControl]=\"control\">\n <mat-icon>folder</mat-icon>\n <span>{{ label }}</span>\n </td-file-input>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-textarea',\n styleUrls: ['./dynamic-textarea.component.scss'],\n templateUrl: './dynamic-textarea.component.html',\n})\nexport class TdDynamicTextareaComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-textarea-wrapper\">\n <mat-form-field class=\"td-dynamic-textarea-field\">\n <mat-label>{{ label }}</mat-label>\n <textarea\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n rows=\"4\"\n ></textarea>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slide-toggle',\n styleUrls: ['./dynamic-slide-toggle.component.scss'],\n templateUrl: './dynamic-slide-toggle.component.html',\n})\nexport class TdDynamicSlideToggleComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-slide-toggle-wrapper\">\n <mat-slide-toggle\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [required]=\"required\"\n >\n {{ label }}\n </mat-slide-toggle>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-checkbox',\n styleUrls: ['./dynamic-checkbox.component.scss'],\n templateUrl: './dynamic-checkbox.component.html',\n})\nexport class TdDynamicCheckboxComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-checkbox-wrapper\">\n <mat-checkbox [formControl]=\"control\" [name]=\"name\" [required]=\"required\">\n {{ label }}\n </mat-checkbox>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, ChangeDetectorRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slider',\n styleUrls: ['./dynamic-slider.component.scss'],\n templateUrl: './dynamic-slider.component.html',\n})\nexport class TdDynamicSliderComponent {\n control!: FormControl;\n\n label = '';\n\n required = false;\n\n name = '';\n\n hint = '';\n\n min?: number;\n\n max?: number;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n _handleBlur(): void {\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n class=\"td-dynamic-slider-wrapper mat-form-field mat-form-field-can-float mat-form-field-should-float\"\n [class.mat-focused]=\"slider._isActive\"\n>\n <span class=\"mat-form-field-label-wrapper\">\n <label class=\"mat-form-field-label mat-primary td-slider-label\">\n {{ label }}\n <span\n *ngIf=\"required && !control?.disabled\"\n class=\"mat-form-field-required-marker\"\n >*</span\n >\n </label>\n </span>\n <div class=\"td-dynamic-slider-field\">\n <mat-slider\n #slider\n class=\"td-dynamic-slider\"\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n thumbLabel\n tickInterval=\"auto\"\n [required]=\"required\"\n (blur)=\"_handleBlur()\"\n ></mat-slider>\n </div>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-select',\n styleUrls: ['./dynamic-select.component.scss'],\n templateUrl: './dynamic-select.component.html',\n})\nexport class TdDynamicSelectComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n selections?: any[];\n\n multiple?: boolean;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-select-wrapper\">\n <mat-form-field class=\"td-dynamic-select-field\">\n <mat-label>{{ label }}</mat-label>\n <mat-select\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [multiple]=\"multiple\"\n >\n <mat-option\n *ngFor=\"let selection of selections\"\n [value]=\"selection.value || selection\"\n >\n {{ selection.label || selection }}\n </mat-option>\n </mat-select>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-datepicker',\n styleUrls: ['./dynamic-datepicker.component.scss'],\n templateUrl: './dynamic-datepicker.component.html',\n})\nexport class TdDynamicDatepickerComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n type?: string;\n\n required = false;\n\n min?: number;\n\n max?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-datepicker-wrapper\">\n <mat-form-field class=\"td-dynamic-datepicker-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [matDatepicker]=\"dynamicDatePicker\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n <mat-datepicker-toggle\n matSuffix\n [for]=\"dynamicDatePicker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #dynamicDatePicker></mat-datepicker>\n </mat-form-field>\n</div>\n","import { Injectable, Provider, SkipSelf, Optional, Type } from '@angular/core';\nimport { Validators, ValidatorFn, FormControl } from '@angular/forms';\n\nimport { TdDynamicInputComponent } from '../dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from '../dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from '../dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from '../dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from '../dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from '../dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from '../dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from '../dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nexport enum TdDynamicType {\n Text = 'text',\n Boolean = 'boolean',\n Number = 'number',\n Array = 'array',\n Date = 'date',\n}\n\nexport enum TdDynamicElement {\n Input = 'input',\n Datepicker = 'datepicker',\n Password = 'password',\n Textarea = 'textarea',\n Slider = 'slider',\n SlideToggle = 'slide-toggle',\n Checkbox = 'checkbox',\n Select = 'select',\n FileInput = 'file-input',\n}\n\nexport interface ITdDynamicElementValidator {\n validator: ValidatorFn;\n}\n\n// Property values to be set in custom component\nexport interface ITdDynamicElementCustomConfig {\n [name: string]: any;\n}\n\nexport interface ITdDynamicElementConfig {\n label?: string;\n name: string;\n hint?: string;\n type: TdDynamicType | TdDynamicElement | Type<any>;\n required?: boolean;\n disabled?: boolean;\n min?: any;\n max?: any;\n minLength?: any;\n maxLength?: any;\n selections?: string[] | { value: any; label: string }[];\n multiple?: boolean;\n default?: any;\n flex?: number;\n validators?: ITdDynamicElementValidator[];\n customConfig?: ITdDynamicElementCustomConfig;\n placeholder?: string;\n}\n\nexport const DYNAMIC_ELEMENT_NAME_REGEX = /^[^0-9][^@]*$/;\n\n@Injectable()\nexport class TdDynamicFormsService {\n /**\n * Method to validate if the [name] is a proper element name.\n * Throws error if name is not valid.\n */\n validateDynamicElementName(name: string): void {\n if (!DYNAMIC_ELEMENT_NAME_REGEX.test(name)) {\n throw new Error('Dynamic element name: \"${name}\" is not valid.');\n }\n }\n\n /**\n * Gets component to be rendered depending on [TdDynamicElement | TdDynamicType]\n * Throws error if it does not exists or not supported.\n */\n getDynamicElement(\n element: TdDynamicElement | TdDynamicType | Type<any> | undefined\n ): any {\n switch (element) {\n case TdDynamicType.Text:\n case TdDynamicType.Number:\n case TdDynamicElement.Input:\n case TdDynamicElement.Password:\n return TdDynamicInputComponent;\n case TdDynamicElement.Textarea:\n return TdDynamicTextareaComponent;\n case TdDynamicType.Boolean:\n case TdDynamicElement.SlideToggle:\n return TdDynamicSlideToggleComponent;\n case TdDynamicElement.Checkbox:\n return TdDynamicCheckboxComponent;\n case TdDynamicElement.Slider:\n return TdDynamicSliderComponent;\n case TdDynamicType.Array:\n case TdDynamicElement.Select:\n return TdDynamicSelectComponent;\n case TdDynamicElement.FileInput:\n return TdDynamicFileInputComponent;\n case TdDynamicElement.Datepicker:\n case TdDynamicType.Date:\n return TdDynamicDatepickerComponent;\n default:\n throw new Error(\n `Error: type ${element} does not exist or not supported.`\n );\n }\n }\n\n /**\n * Creates form control for element depending [ITdDynamicElementConfig] properties.\n */\n createFormControl(config: ITdDynamicElementConfig): FormControl {\n const validator = this.createValidators(config);\n return new FormControl(\n { value: config.default, disabled: config.disabled },\n validator\n );\n }\n\n /**\n * Creates form validationdepending [ITdDynamicElementConfig] properties.\n */\n createValidators(config: ITdDynamicElementConfig): ValidatorFn | null {\n let validator: ValidatorFn | null = null;\n if (config.required) {\n validator = Validators.required;\n }\n if (config.max || config.max === 0) {\n validator = Validators.compose([\n validator,\n Validators.max(parseFloat(config.max)),\n ]);\n }\n if (config.min || config.min === 0) {\n validator = Validators.compose([\n validator,\n Validators.min(parseFloat(config.min)),\n ]);\n }\n if (config.maxLength || config.maxLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.maxLength(parseFloat(config.maxLength)),\n ]);\n }\n if (config.minLength || config.minLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.minLength(parseFloat(config.minLength)),\n ]);\n }\n // Add provided custom validators to the validator function\n if (config.validators) {\n config.validators.forEach(\n (validatorConfig: ITdDynamicElementValidator) => {\n validator = Validators.compose([\n validator,\n validatorConfig.validator,\n ]);\n }\n );\n }\n return validator;\n }\n}\n\nexport function DYNAMIC_FORMS_PROVIDER_FACTORY(\n parent: TdDynamicFormsService\n): TdDynamicFormsService {\n return parent || new TdDynamicFormsService();\n}\n\nexport const DYNAMIC_FORMS_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDynamicFormsService,\n deps: [[new Optional(), new SkipSelf(), TdDynamicFormsService]],\n useFactory: DYNAMIC_FORMS_PROVIDER_FACTORY,\n};\n","import {\n Component,\n Directive,\n Input,\n HostBinding,\n OnInit,\n SimpleChanges,\n OnChanges,\n TemplateRef,\n ChangeDetectorRef,\n Type,\n} 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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"}
@@ -26,6 +26,7 @@ import * as i4$1 from '@covalent/core/file';
26
26
  import { CovalentFileModule } from '@covalent/core/file';
27
27
  import * as i3$2 from '@angular/material/core';
28
28
  import { CdkPortal } from '@angular/cdk/portal';
29
+ import { mixinControlValueAccessor } from '@covalent/core/common';
29
30
  import { Subject, timer } from 'rxjs';
30
31
  import { filter, takeUntil } from 'rxjs/operators';
31
32
 
@@ -58,7 +59,7 @@ class TdDynamicFileInputComponent {
58
59
  }
59
60
  }
60
61
  TdDynamicFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- TdDynamicFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicFileInputComponent, selector: "td-dynamic-file-input", ngImport: i0, template: "<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", styles: [".td-dynamic-file-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-file-input-wrapper .td-dynamic-file-input-field{flex:1;box-sizing:border-box}.td-file-input{margin-left:10px}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.TdFileInputComponent, selector: "td-file-input", inputs: ["color", "multiple", "accept", "disabled", "value"], outputs: ["selectFile"] }], directives: [{ type: i4$1.TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }, { 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: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
62
+ TdDynamicFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdDynamicFileInputComponent, selector: "td-dynamic-file-input", ngImport: i0, template: "<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", styles: [".td-dynamic-file-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-file-input-wrapper .td-dynamic-file-input-field{flex:1;box-sizing:border-box}.td-file-input{margin-left:10px}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.TdFileInputComponent, selector: "td-file-input", inputs: ["disabled", "value", "color", "multiple", "accept"], outputs: ["selectFile"] }], directives: [{ type: i4$1.TdFileDropDirective, selector: "[tdFileDrop]", inputs: ["multiple", "disabled"], outputs: ["fileDrop"] }, { 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: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
62
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdDynamicFileInputComponent, decorators: [{
63
64
  type: Component,
64
65
  args: [{ selector: 'td-dynamic-file-input', template: "<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", styles: [".td-dynamic-file-input-wrapper{flex-direction:row;display:flex;box-sizing:border-box}.td-dynamic-file-input-wrapper .td-dynamic-file-input-field{flex:1;box-sizing:border-box}.td-file-input{margin-left:10px}\n"] }]
@@ -292,46 +293,6 @@ const DYNAMIC_FORMS_PROVIDER = {
292
293
  useFactory: DYNAMIC_FORMS_PROVIDER_FACTORY,
293
294
  };
294
295
 
295
- const noop = () => {
296
- // empty method
297
- };
298
- /** Mixin to augment a component with ngModel support. */
299
- function mixinControlValueAccessor(base, initialValue) {
300
- return class extends base {
301
- constructor(...args) {
302
- super(...args);
303
- this._value = initialValue instanceof Array
304
- ? Object.assign([], initialValue)
305
- : initialValue;
306
- this.onChange = (_) => noop;
307
- this.onTouched = () => noop;
308
- this._subjectValueChanges = new Subject();
309
- this.valueChanges = this._subjectValueChanges.asObservable();
310
- }
311
- set value(v) {
312
- if (v !== this._value) {
313
- this._value = v;
314
- this.onChange(v);
315
- this._changeDetectorRef.markForCheck();
316
- this._subjectValueChanges.next(v);
317
- }
318
- }
319
- get value() {
320
- return this._value;
321
- }
322
- writeValue(value) {
323
- this.value = value;
324
- this._changeDetectorRef.markForCheck();
325
- }
326
- registerOnChange(fn) {
327
- this.onChange = fn;
328
- }
329
- registerOnTouched(fn) {
330
- this.onTouched = fn;
331
- }
332
- };
333
- }
334
-
335
296
  class TdDynamicElementBase {
336
297
  constructor(_changeDetectorRef) {
337
298
  this._changeDetectorRef = _changeDetectorRef;
@@ -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/behaviors/control-value-accesor.mixin.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 { ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\nconst noop: any = () => {\n // empty method\n};\n\nexport interface IControlValueAccessor extends ControlValueAccessor {\n value: any;\n valueChanges: Observable<any>;\n onChange: (_: any) => any;\n onTouched: () => any;\n}\n\nexport interface IHasChangeDetectorRef {\n _changeDetectorRef: ChangeDetectorRef;\n}\n\n/** Mixin to augment a component with ngModel support. */\nexport function mixinControlValueAccessor<\n T extends Constructor<IHasChangeDetectorRef>\n>(base: T, initialValue?: any): Constructor<IControlValueAccessor> & T {\n return class extends base {\n private _value: any =\n initialValue instanceof Array\n ? Object.assign([], initialValue)\n : initialValue;\n private _subjectValueChanges: Subject<any>;\n valueChanges: Observable<any>;\n\n constructor(...args: any[]) {\n super(...args);\n this._subjectValueChanges = new Subject<any>();\n this.valueChanges = this._subjectValueChanges.asObservable();\n }\n\n set value(v: any) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n this._changeDetectorRef.markForCheck();\n this._subjectValueChanges.next(v);\n }\n }\n get value(): any {\n return this._value;\n }\n\n writeValue(value: any): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onChange = (_: any) => noop;\n onTouched = () => noop;\n };\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 {\n NG_VALUE_ACCESSOR,\n FormControl,\n AbstractControl,\n} from '@angular/forms';\nimport { CdkPortal } from '@angular/cdk/portal';\n\nimport {\n mixinControlValueAccessor,\n IControlValueAccessor,\n} from './behaviors/control-value-accesor.mixin';\n\nimport {\n TdDynamicElement,\n TdDynamicType,\n TdDynamicFormsService,\n ITdDynamicElementCustomConfig,\n} from './services/dynamic-forms.service';\n\nexport class TdDynamicElementBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDynamicElementMixinBase =\n mixinControlValueAccessor(TdDynamicElementBase);\n\n@Directive({ selector: '[tdDynamicFormsError]ng-template' })\nexport class TdDynamicFormsErrorTemplateDirective extends CdkPortal {\n @Input() tdDynamicFormsError?: string;\n constructor(\n public override templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[tdDynamicContainer]',\n})\nexport class TdDynamicElementDirective {\n constructor(public viewContainer: ViewContainerRef) {}\n}\n\n@Component({\n providers: [\n TdDynamicFormsService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDynamicElementComponent),\n multi: true,\n },\n ],\n selector: 'td-dynamic-element',\n template: '<div tdDynamicContainer></div>',\n})\nexport class TdDynamicElementComponent\n extends _TdDynamicElementMixinBase\n implements IControlValueAccessor, OnInit, OnChanges\n{\n private _instance: any;\n\n /**\n * Sets form control of the element.\n */\n @Input() dynamicControl!: AbstractControl;\n\n /**\n * Sets label to be displayed.\n */\n @Input() label = '';\n\n /**\n * Sets hint to be displayed.\n */\n @Input() hint? = '';\n\n /**\n * Sets name to be displayed as attribute.\n */\n @Input() name = '';\n\n /**\n * Sets type or element of element to be rendered.\n * Throws error if does not exist or no supported.\n */\n @Input() type?: TdDynamicElement | TdDynamicType | Type<any>;\n\n /**\n * Sets required validation checkup (if supported by element).\n */\n @Input() required?: boolean | string | undefined;\n\n /**\n * Sets min validation checkup (if supported by element).\n */\n @Input() min?: number;\n\n /**\n * Sets max validation checkup (if supported by element).\n */\n @Input() max?: number;\n\n /**\n * Sets minLength validation checkup (if supported by element).\n */\n @Input() minLength?: number;\n\n /**\n * Sets maxLength validation checkup (if supported by element).\n */\n @Input() maxLength?: number;\n\n /**\n * Sets selections for array elements (if supported by element).\n */\n @Input() selections?: any[];\n\n /**\n * Sets multiple property for array elements (if supported by element).\n */\n @Input() multiple?: boolean;\n\n /**\n * Sets any additional properties on custom component.\n */\n @Input() customConfig?: ITdDynamicElementCustomConfig;\n\n /**\n * Sets error message template so it can be injected into dynamic components.\n */\n @Input() errorMessageTemplate!: TemplateRef<any> | undefined;\n\n /**\n * Sets the placeholder message\n */\n @Input() placeholder? = '';\n\n @ViewChild(TdDynamicElementDirective, { static: true })\n childElement!: TdDynamicElementDirective;\n\n @HostBinding('attr.max')\n get maxAttr(): any {\n return this.max;\n }\n\n @HostBinding('attr.min')\n get minAttr(): any {\n return this.min;\n }\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _dynamicFormsService: TdDynamicFormsService,\n _changeDetectorRef: ChangeDetectorRef\n ) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n const component: any =\n <any>this.type instanceof Type\n ? this.type\n : this._dynamicFormsService.getDynamicElement(this.type);\n const ref: ComponentRef<any> = this._componentFactoryResolver\n .resolveComponentFactory(component)\n .create(this.childElement.viewContainer.injector);\n this.childElement.viewContainer.insert(ref.hostView);\n this._instance = ref.instance;\n this._instance.control = this.dynamicControl;\n this._instance.label = this.label;\n this._instance.hint = this.hint;\n this._instance.name = this.name;\n this._instance.type = this.type;\n this._instance.value = this.value;\n this._instance.required = this.required;\n this._instance.min = this.min;\n this._instance.max = this.max;\n this._instance.minLength = this.minLength;\n this._instance.maxLength = this.maxLength;\n this._instance.selections = this.selections;\n this._instance.multiple = this.multiple;\n this._instance.errorMessageTemplate = this.errorMessageTemplate;\n this._instance.placeholder = this.placeholder;\n if (this.customConfig) {\n Object.getOwnPropertyNames(this.customConfig).forEach((name: string) => {\n if (this.customConfig) {\n this._instance[name] = this.customConfig[name];\n }\n });\n }\n }\n\n /**\n * Reassign any inputs that have changed\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (this._instance) {\n for (const prop of Object.keys(changes)) {\n this._instance[prop] = changes[prop].currentValue;\n }\n }\n }\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n TemplateRef,\n QueryList,\n AfterContentInit,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup, FormBuilder, AbstractControl } from '@angular/forms';\n\nimport {\n TdDynamicFormsService,\n ITdDynamicElementConfig,\n} from './services/dynamic-forms.service';\nimport { TdDynamicFormsErrorTemplateDirective } from './dynamic-element.component';\n\nimport { timer, Subject, Observable } from 'rxjs';\nimport { takeUntil, filter } from 'rxjs/operators';\n\n@Component({\n selector: 'td-dynamic-forms',\n templateUrl: './dynamic-forms.component.html',\n styleUrls: ['./dynamic-forms.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDynamicFormsComponent implements AfterContentInit, OnDestroy {\n private _renderedElements: ITdDynamicElementConfig[] = [];\n private _elements!: ITdDynamicElementConfig[];\n private _templateMap: Map<string, TemplateRef<any>> = new Map<\n string,\n TemplateRef<any>\n >();\n private _destroy$: Subject<any> = new Subject();\n private _destroyControl$: Subject<string> = new Subject();\n\n @ContentChildren(TdDynamicFormsErrorTemplateDirective, { descendants: true })\n _errorTemplates!: QueryList<TdDynamicFormsErrorTemplateDirective>;\n dynamicForm!: FormGroup;\n\n /**\n * elements: ITdDynamicElementConfig[]\n * JS Object that will render the elements depending on its config.\n * [name] property is required.\n */\n @Input()\n set elements(elements: ITdDynamicElementConfig[]) {\n if (elements) {\n this._elements = elements;\n } else {\n this._elements = [];\n }\n this._rerenderElements();\n }\n get elements(): ITdDynamicElementConfig[] {\n return this._renderedElements;\n }\n\n /**\n * Getter property for dynamic [FormGroup].\n */\n get form(): FormGroup {\n return this.dynamicForm;\n }\n\n /**\n * Getter property for [valid] of dynamic [FormGroup].\n */\n get valid(): boolean {\n if (this.dynamicForm) {\n return this.dynamicForm.valid;\n }\n return false;\n }\n\n /**\n * Getter property for [value] of dynamic [FormGroup].\n */\n get value(): any {\n if (this.dynamicForm) {\n return this.dynamicForm.value;\n }\n return {};\n }\n\n /**\n * Getter property for [errors] of dynamic [FormGroup].\n */\n get errors(): { [name: string]: any } {\n if (this.dynamicForm) {\n const errors: { [name: string]: any } = {};\n for (const name of Object.keys(this.dynamicForm.controls)) {\n errors[name] = this.dynamicForm.controls[name].errors;\n }\n return errors;\n }\n return {};\n }\n\n /**\n * Getter property for [controls] of dynamic [FormGroup].\n */\n get controls(): { [key: string]: AbstractControl } {\n if (this.dynamicForm) {\n return this.dynamicForm.controls;\n }\n return {};\n }\n\n constructor(\n private _formBuilder: FormBuilder,\n private _dynamicFormsService: TdDynamicFormsService,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this.dynamicForm = this._formBuilder.group({});\n }\n\n ngAfterContentInit(): void {\n this._updateErrorTemplates();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next(0);\n this._destroy$.complete();\n this._destroyControl$.complete();\n }\n\n /**\n * Refreshes the form and rerenders all validator/element modifications.\n */\n refresh(): void {\n this._rerenderElements();\n this._updateErrorTemplates();\n }\n\n /**\n * Getter method for error template references\n */\n getErrorTemplateRef(name: string): TemplateRef<any> | undefined {\n return this._templateMap.get(name);\n }\n\n /**\n * Loads error templates and sets them in a map for faster access.\n */\n private _updateErrorTemplates(): void {\n this._templateMap = new Map<string, TemplateRef<any>>();\n for (const errorTemplate of this._errorTemplates.toArray()) {\n this._templateMap.set(\n errorTemplate.tdDynamicFormsError ?? '',\n errorTemplate.templateRef\n );\n }\n }\n\n private _rerenderElements(): void {\n this._clearRemovedElements();\n this._renderedElements = [];\n const duplicates: string[] = [];\n this._elements.forEach((elem: ITdDynamicElementConfig) => {\n this._dynamicFormsService.validateDynamicElementName(elem.name);\n if (duplicates.indexOf(elem.name) > -1) {\n throw new Error(`Dynamic element name: \"${elem.name}\" is duplicated`);\n }\n duplicates.push(elem.name);\n const dynamicElement: AbstractControl | null = this.dynamicForm.get(\n elem.name\n );\n if (!dynamicElement) {\n this.dynamicForm.addControl(\n elem.name,\n this._dynamicFormsService.createFormControl(elem)\n );\n this._subscribeToControlStatusChanges(elem.name);\n } else {\n dynamicElement.setValue(elem.default);\n dynamicElement.markAsPristine();\n dynamicElement.markAsUntouched();\n if (elem.disabled) {\n dynamicElement.disable();\n } else {\n dynamicElement.enable();\n }\n dynamicElement.setValidators(\n this._dynamicFormsService.createValidators(elem)\n );\n }\n // copy objects so they are only changes when calling this method\n this._renderedElements.push(Object.assign({}, elem));\n });\n // call a change detection since the whole form might change\n this._changeDetectorRef.detectChanges();\n timer(0)\n .toPromise()\n .then(() => {\n // call a markForCheck so elements are rendered correctly in OnPush\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _clearRemovedElements(): void {\n this._renderedElements = this._renderedElements.filter(\n (renderedElement: ITdDynamicElementConfig) =>\n !this._elements.some(\n (element: ITdDynamicElementConfig) =>\n element.name === renderedElement.name\n )\n );\n // remove elements that were removed from the array\n this._renderedElements.forEach((elem: ITdDynamicElementConfig) => {\n this._destroyControl$.next(elem.name);\n this.dynamicForm.removeControl(elem.name);\n });\n }\n\n // Updates component when manually adding errors to controls\n private _subscribeToControlStatusChanges(elementName: string): void {\n const control: AbstractControl = this.controls[elementName];\n\n const controlDestroyed$: Observable<any> = this._destroyControl$.pipe(\n filter(\n (destroyedElementName: string) => destroyedElementName === elementName\n )\n );\n\n control.statusChanges\n .pipe(takeUntil(this._destroy$), takeUntil(controlDestroyed$))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<form [formGroup]=\"dynamicForm\" novalidate>\n <div class=\"td-dynamic-form-wrapper\">\n <ng-template let-element ngFor [ngForOf]=\"elements\">\n <div\n class=\"td-dynamic-element-wrapper\"\n [style.max-width.%]=\"element.flex ? element.flex : 100\"\n [style.flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-ms-flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-webkit-box-flex]=\"1\"\n >\n <td-dynamic-element\n #dynamicElement\n *ngIf=\"dynamicForm.controls[element.name]\"\n [formControlName]=\"element.name\"\n [dynamicControl]=\"dynamicForm.controls[element.name]\"\n [id]=\"element.name\"\n [name]=\"element.name\"\n [label]=\"element.label || element.name\"\n [hint]=\"element.hint\"\n [type]=\"element.type\"\n [required]=\"element.required ?? false\"\n [min]=\"element.min\"\n [max]=\"element.max\"\n [minLength]=\"element.minLength\"\n [maxLength]=\"element.maxLength\"\n [selections]=\"element.selections\"\n [multiple]=\"element.multiple\"\n [customConfig]=\"element.customConfig\"\n [errorMessageTemplate]=\"getErrorTemplateRef(element.name)\"\n [placeholder]=\"element.placeholder\"\n ></td-dynamic-element>\n </div>\n </ng-template>\n </div>\n <ng-content></ng-content>\n</form>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\n\nimport { CovalentFileModule } from '@covalent/core/file';\n\nimport { TdDynamicFormsComponent } from './dynamic-forms.component';\nimport {\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n} from './dynamic-element.component';\nimport { DYNAMIC_FORMS_PROVIDER } from './services/dynamic-forms.service';\n\nimport { TdDynamicInputComponent } from './dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from './dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from './dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from './dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from './dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from './dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from './dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from './dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nconst TD_DYNAMIC_FORMS: Type<any>[] = [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n];\n\nconst TD_DYNAMIC_FORMS_ENTRY_COMPONENTS: Type<any>[] = [\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n];\n\n@NgModule({\n declarations: [\n TdDynamicFormsComponent,\n TdDynamicElementComponent,\n TdDynamicElementDirective,\n TdDynamicFormsErrorTemplateDirective,\n TdDynamicInputComponent,\n TdDynamicFileInputComponent,\n TdDynamicTextareaComponent,\n TdDynamicSlideToggleComponent,\n TdDynamicCheckboxComponent,\n TdDynamicSliderComponent,\n TdDynamicSelectComponent,\n TdDynamicDatepickerComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatCheckboxModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDatepickerModule,\n CovalentFileModule,\n ],\n exports: [...TD_DYNAMIC_FORMS, ...TD_DYNAMIC_FORMS_ENTRY_COMPONENTS],\n providers: [DYNAMIC_FORMS_PROVIDER],\n})\nexport class CovalentDynamicFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAQa,uBAAuB;IALpC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAIV,aAAQ,GAAG,KAAK,CAAC;QAEjB,SAAI,GAAG,EAAE,CAAC;QAYV,gBAAW,GAAG,EAAE,CAAC;KAClB;;oHAxBY,uBAAuB;wGAAvB,uBAAuB,wDCRpC,mxBA4BA;2FDpBa,uBAAuB;kBALnC,SAAS;+BACE,kBAAkB;;;MEIjB,2BAA2B;IALxC;QAQE,aAAQ,GAAG,KAAK,CAAC;QAEjB,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAIV,gBAAW,GAAG,EAAE,CAAC;KAKlB;IAHC,eAAe,CAAC,KAAU;QACxB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC/B;;wHAjBU,2BAA2B;4GAA3B,2BAA2B,6DCRxC,81CA6CA;2FDrCa,2BAA2B;kBALvC,SAAS;+BACE,uBAAuB;;;MEItB,0BAA0B;IALvC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAEV,aAAQ,GAAG,KAAK,CAAC;QAIjB,gBAAW,GAAG,EAAE,CAAC;KAClB;;uHAdY,0BAA0B;2GAA1B,0BAA0B,2DCRvC,iqBAwBA;2FDhBa,0BAA0B;kBALtC,SAAS;+BACE,qBAAqB;;;MEIpB,6BAA6B;IAL1C;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAEV,aAAQ,GAAG,KAAK,CAAC;KAClB;;0HAVY,6BAA6B;8GAA7B,6BAA6B,+DCR1C,yRAUA;2FDFa,6BAA6B;kBALzC,SAAS;+BACE,yBAAyB;;;MEIxB,0BAA0B;IALvC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAEV,aAAQ,GAAG,KAAK,CAAC;KAClB;;uHAVY,0BAA0B;2GAA1B,0BAA0B,2DCRvC,qPAMA;2FDEa,0BAA0B;kBALtC,SAAS;+BACE,qBAAqB;;;MEIpB,wBAAwB;IAenC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QAZzD,UAAK,GAAG,EAAE,CAAC;QAEX,aAAQ,GAAG,KAAK,CAAC;QAEjB,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;KAMmD;IAE7D,WAAW;QACT,UAAU,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACJ;;qHArBU,wBAAwB;yGAAxB,wBAAwB,yDCRrC,k4BA8BA;2FDtBa,wBAAwB;kBALpC,SAAS;+BACE,mBAAmB;;;MEIlB,wBAAwB;IALrC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAEV,aAAQ,GAAG,KAAK,CAAC;QAQjB,gBAAW,GAAG,EAAE,CAAC;KAClB;;qHAlBY,wBAAwB;yGAAxB,wBAAwB,yDCRrC,80BA6BA;2FDrBa,wBAAwB;kBALpC,SAAS;+BACE,mBAAmB;;;MEIlB,4BAA4B;IALzC;QAQE,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAG,EAAE,CAAC;QAEV,SAAI,GAAG,EAAE,CAAC;QAIV,aAAQ,GAAG,KAAK,CAAC;QAQjB,gBAAW,GAAG,EAAE,CAAC;KAClB;;yHApBY,4BAA4B;6GAA5B,4BAA4B,6DCRzC,i4BA+BA;2FDvBa,4BAA4B;kBALxC,SAAS;+BACE,uBAAuB;;;IEQvB;AAAZ,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,8BAAa,CAAA;AACf,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;IAEW;AAAZ,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,6CAAyB,CAAA;IACzB,yCAAqB,CAAA;IACrB,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;IACjB,gDAA4B,CAAA;IAC5B,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;IACjB,4CAAwB,CAAA;AAC1B,CAAC,EAVW,gBAAgB,KAAhB,gBAAgB,QAU3B;MA+BY,0BAA0B,GAAG,gBAAgB;MAG7C,qBAAqB;;;;;IAKhC,0BAA0B,CAAC,IAAY;QACrC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;SAClE;KACF;;;;;IAMD,iBAAiB,CACf,OAAiE;QAEjE,QAAQ,OAAO;YACb,KAAK,aAAa,CAAC,IAAI,CAAC;YACxB,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,gBAAgB,CAAC,KAAK,CAAC;YAC5B,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,OAAO,uBAAuB,CAAC;YACjC,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,OAAO,0BAA0B,CAAC;YACpC,KAAK,aAAa,CAAC,OAAO,CAAC;YAC3B,KAAK,gBAAgB,CAAC,WAAW;gBAC/B,OAAO,6BAA6B,CAAC;YACvC,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,OAAO,0BAA0B,CAAC;YACpC,KAAK,gBAAgB,CAAC,MAAM;gBAC1B,OAAO,wBAAwB,CAAC;YAClC,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,gBAAgB,CAAC,MAAM;gBAC1B,OAAO,wBAAwB,CAAC;YAClC,KAAK,gBAAgB,CAAC,SAAS;gBAC7B,OAAO,2BAA2B,CAAC;YACrC,KAAK,gBAAgB,CAAC,UAAU,CAAC;YACjC,KAAK,aAAa,CAAC,IAAI;gBACrB,OAAO,4BAA4B,CAAC;YACtC;gBACE,MAAM,IAAI,KAAK,CACb,eAAe,OAAO,mCAAmC,CAC1D,CAAC;SACL;KACF;;;;IAKD,iBAAiB,CAAC,MAA+B;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,IAAI,WAAW,CACpB,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EACpD,SAAS,CACV,CAAC;KACH;;;;IAKD,gBAAgB,CAAC,MAA+B;QAC9C,IAAI,SAAS,GAAuB,IAAI,CAAC;QACzC,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;SACjC;QACD,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE;YAClC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;gBAC7B,SAAS;gBACT,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACvC,CAAC,CAAC;SACJ;QACD,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE;YAClC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;gBAC7B,SAAS;gBACT,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACvC,CAAC,CAAC;SACJ;QACD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,EAAE;YAC9C,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;gBAC7B,SAAS;gBACT,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACnD,CAAC,CAAC;SACJ;QACD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,EAAE;YAC9C,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;gBAC7B,SAAS;gBACT,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACnD,CAAC,CAAC;SACJ;;QAED,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,MAAM,CAAC,UAAU,CAAC,OAAO,CACvB,CAAC,eAA2C;gBAC1C,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;oBAC7B,SAAS;oBACT,eAAe,CAAC,SAAS;iBAC1B,CAAC,CAAC;aACJ,CACF,CAAC;SACH;QACD,OAAO,SAAS,CAAC;KAClB;;kHAvGU,qBAAqB;sHAArB,qBAAqB;2FAArB,qBAAqB;kBADjC,UAAU;;SA2GK,8BAA8B,CAC5C,MAA6B;IAE7B,OAAO,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;AAC/C,CAAC;MAEY,sBAAsB,GAAa;;IAE9C,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC/D,UAAU,EAAE,8BAA8B;;;AC7K5C,MAAM,IAAI,GAAQ;;AAElB,CAAC,CAAC;AAaF;SACgB,yBAAyB,CAEvC,IAAO,EAAE,YAAkB;IAC3B,OAAO,cAAc,IAAI;QAQvB,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YART,WAAM,GACZ,YAAY,YAAY,KAAK;kBACzB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC;kBAC/B,YAAY,CAAC;YAmCnB,aAAQ,GAAG,CAAC,CAAM,KAAK,IAAI,CAAC;YAC5B,cAAS,GAAG,MAAM,IAAI,CAAC;YA9BrB,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAO,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;SAC9D;QAED,IAAI,KAAK,CAAC,CAAM;YACd,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;gBACrB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACnC;SACF;QACD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,UAAU,CAAC,KAAU;YACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;QAED,gBAAgB,CAAC,EAAO;YACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;QAED,iBAAiB,CAAC,EAAO;YACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;KAIF,CAAC;AACJ;;MC/Ba,oBAAoB;IAC/B,YAAmB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAI;CAC7D;AAED;MACa,0BAA0B,GACrC,yBAAyB,CAAC,oBAAoB,EAAE;MAGrC,oCAAqC,SAAQ,SAAS;IAEjE,YACkB,WAA6B,EAC7C,gBAAkC;QAElC,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAHrB,gBAAW,GAAX,WAAW,CAAkB;KAI9C;;iIAPU,oCAAoC;qHAApC,oCAAoC;2FAApC,oCAAoC;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,kCAAkC,EAAE;iIAEhD,mBAAmB;sBAA3B,KAAK;;MAYK,yBAAyB;IACpC,YAAmB,aAA+B;QAA/B,kBAAa,GAAb,aAAa,CAAkB;KAAI;;sHAD3C,yBAAyB;0GAAzB,yBAAyB;2FAAzB,yBAAyB;kBAHrC,SAAS;mBAAC;oBACT,QAAQ,EAAE,sBAAsB;iBACjC;;MAiBY,yBACX,SAAQ,0BAA0B;IA8FlC,YACU,yBAAmD,EACnD,oBAA2C,EACnD,kBAAqC;QAErC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAJlB,8BAAyB,GAAzB,yBAAyB,CAA0B;QACnD,yBAAoB,GAApB,oBAAoB,CAAuB;;;;QAnF5C,UAAK,GAAG,EAAE,CAAC;;;;QAKX,SAAI,GAAI,EAAE,CAAC;;;;QAKX,SAAI,GAAG,EAAE,CAAC;;;;QAwDV,gBAAW,GAAI,EAAE,CAAC;KAqB1B;IAhBD,IACI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IAED,IACI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IAUD,QAAQ;QACN,MAAM,SAAS,GACR,IAAI,CAAC,IAAI,YAAY,IAAI;cAC1B,IAAI,CAAC,IAAI;cACT,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAsB,IAAI,CAAC,yBAAyB;aAC1D,uBAAuB,CAAC,SAAS,CAAC;aAClC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAChE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9C,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAY;gBACjE,IAAI,IAAI,CAAC,YAAY,EAAE;oBACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iBAChD;aACF,CAAC,CAAC;SACJ;KACF;;;;IAKD,WAAW,CAAC,OAAsB;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;aACnD;SACF;KACF;;sHAlJU,yBAAyB;0GAAzB,yBAAyB,6dAXzB;QACT,qBAAqB;QACrB;YACE,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;YACxD,KAAK,EAAE,IAAI;SACZ;KACF,wEAsFU,yBAAyB,0GApF1B,gCAAgC,uCAd/B,yBAAyB;2FAgBzB,yBAAyB;kBAZrC,SAAS;mBAAC;oBACT,SAAS,EAAE;wBACT,qBAAqB;wBACrB;4BACE,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;4BACxD,KAAK,EAAE,IAAI;yBACZ;qBACF;oBACD,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,gCAAgC;iBAC3C;gLAUU,cAAc;sBAAtB,KAAK;gBAKG,KAAK;sBAAb,KAAK;gBAKG,IAAI;sBAAZ,KAAK;gBAKG,IAAI;sBAAZ,KAAK;gBAMG,IAAI;sBAAZ,KAAK;gBAKG,QAAQ;sBAAhB,KAAK;gBAKG,GAAG;sBAAX,KAAK;gBAKG,GAAG;sBAAX,KAAK;gBAKG,SAAS;sBAAjB,KAAK;gBAKG,SAAS;sBAAjB,KAAK;gBAKG,UAAU;sBAAlB,KAAK;gBAKG,QAAQ;sBAAhB,KAAK;gBAKG,YAAY;sBAApB,KAAK;gBAKG,oBAAoB;sBAA5B,KAAK;gBAKG,WAAW;sBAAnB,KAAK;gBAGN,YAAY;sBADX,SAAS;uBAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAIlD,OAAO;sBADV,WAAW;uBAAC,UAAU;gBAMnB,OAAO;sBADV,WAAW;uBAAC,UAAU;;;MCzIZ,uBAAuB;IAmFlC,YACU,YAAyB,EACzB,oBAA2C,EAC3C,kBAAqC;QAFrC,iBAAY,GAAZ,YAAY,CAAa;QACzB,yBAAoB,GAApB,oBAAoB,CAAuB;QAC3C,uBAAkB,GAAlB,kBAAkB,CAAmB;QArFvC,sBAAiB,GAA8B,EAAE,CAAC;QAElD,iBAAY,GAAkC,IAAI,GAAG,EAG1D,CAAC;QACI,cAAS,GAAiB,IAAI,OAAO,EAAE,CAAC;QACxC,qBAAgB,GAAoB,IAAI,OAAO,EAAE,CAAC;QAgFxD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KAChD;;;;;;IAtED,IACI,QAAQ,CAAC,QAAmC;QAC9C,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;;;;IAKD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;;;IAKD,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SAC/B;QACD,OAAO,KAAK,CAAC;KACd;;;;IAKD,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SAC/B;QACD,OAAO,EAAE,CAAC;KACX;;;;IAKD,IAAI,MAAM;QACR,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACzD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;aACvD;YACD,OAAO,MAAM,CAAC;SACf;QACD,OAAO,EAAE,CAAC;KACX;;;;IAKD,IAAI,QAAQ;QACV,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;SAClC;QACD,OAAO,EAAE,CAAC;KACX;IAUD,kBAAkB;QAChB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,WAAW;QACT,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;KAClC;;;;IAKD,OAAO;QACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;;;IAKD,mBAAmB,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC;;;;IAKO,qBAAqB;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;QACxD,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;YAC1D,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,aAAa,CAAC,mBAAmB,IAAI,EAAE,EACvC,aAAa,CAAC,WAAW,CAC1B,CAAC;SACH;KACF;IAEO,iBAAiB;QACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAA6B;YACnD,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBACtC,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC;aACvE;YACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,cAAc,GAA2B,IAAI,CAAC,WAAW,CAAC,GAAG,CACjE,IAAI,CAAC,IAAI,CACV,CAAC;YACF,IAAI,CAAC,cAAc,EAAE;gBACnB,IAAI,CAAC,WAAW,CAAC,UAAU,CACzB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAClD,CAAC;gBACF,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClD;iBAAM;gBACL,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtC,cAAc,CAAC,cAAc,EAAE,CAAC;gBAChC,cAAc,CAAC,eAAe,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,cAAc,CAAC,OAAO,EAAE,CAAC;iBAC1B;qBAAM;oBACL,cAAc,CAAC,MAAM,EAAE,CAAC;iBACzB;gBACD,cAAc,CAAC,aAAa,CAC1B,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CACjD,CAAC;aACH;;YAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;SACtD,CAAC,CAAC;;QAEH,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;QACxC,KAAK,CAAC,CAAC,CAAC;aACL,SAAS,EAAE;aACX,IAAI,CAAC;;YAEJ,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACN;IAEO,qBAAqB;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CACpD,CAAC,eAAwC,KACvC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAClB,CAAC,OAAgC,KAC/B,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CACxC,CACJ,CAAC;;QAEF,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAA6B;YAC3D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3C,CAAC,CAAC;KACJ;;IAGO,gCAAgC,CAAC,WAAmB;QAC1D,MAAM,OAAO,GAAoB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE5D,MAAM,iBAAiB,GAAoB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACnE,MAAM,CACJ,CAAC,oBAA4B,KAAK,oBAAoB,KAAK,WAAW,CACvE,CACF,CAAC;QAEF,OAAO,CAAC,aAAa;aAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;aAC7D,SAAS,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACN;;oHA5MU,uBAAuB;wGAAvB,uBAAuB,0HAUjB,oCAAoC,gDCtCvD,48CAoCA;2FDRa,uBAAuB;kBANnC,SAAS;+BACE,kBAAkB,mBAGX,uBAAuB,CAAC,MAAM;mKAa/C,eAAe;sBADd,eAAe;uBAAC,oCAAoC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAUxE,QAAQ;sBADX,KAAK;;;AEdR,MAAM,gBAAgB,GAAgB;IACpC,uBAAuB;IACvB,yBAAyB;IACzB,yBAAyB;IACzB,oCAAoC;CACrC,CAAC;AAEF,MAAM,iCAAiC,GAAgB;IACrD,uBAAuB;IACvB,2BAA2B;IAC3B,0BAA0B;IAC1B,6BAA6B;IAC7B,0BAA0B;IAC1B,wBAAwB;IACxB,wBAAwB;IACxB,4BAA4B;CAC7B,CAAC;MAkCW,0BAA0B;;uHAA1B,0BAA0B;wHAA1B,0BAA0B,iBA9BnC,uBAAuB;QACvB,yBAAyB;QACzB,yBAAyB;QACzB,oCAAoC;QACpC,uBAAuB;QACvB,2BAA2B;QAC3B,0BAA0B;QAC1B,6BAA6B;QAC7B,0BAA0B;QAC1B,wBAAwB;QACxB,wBAAwB;QACxB,4BAA4B,aAG5B,YAAY;QACZ,mBAAmB;QACnB,kBAAkB;QAClB,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,eAAe;QACf,oBAAoB;QACpB,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,kBAAkB,aA5CpB,uBAAuB;QACvB,yBAAyB;QACzB,yBAAyB;QACzB,oCAAoC,EAIpC,uBAAuB;QACvB,2BAA2B;QAC3B,0BAA0B;QAC1B,6BAA6B;QAC7B,0BAA0B;QAC1B,wBAAwB;QACxB,wBAAwB;QACxB,4BAA4B;wHAmCjB,0BAA0B,aAF1B,CAAC,sBAAsB,CAAC,YAf1B;YACP,YAAY;YACZ,mBAAmB;YACnB,kBAAkB;YAClB,cAAc;YACd,eAAe;YACf,iBAAiB;YACjB,eAAe;YACf,oBAAoB;YACpB,aAAa;YACb,eAAe;YACf,mBAAmB;YACnB,kBAAkB;SACnB;2FAIU,0BAA0B;kBAhCtC,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,uBAAuB;wBACvB,yBAAyB;wBACzB,yBAAyB;wBACzB,oCAAoC;wBACpC,uBAAuB;wBACvB,2BAA2B;wBAC3B,0BAA0B;wBAC1B,6BAA6B;wBAC7B,0BAA0B;wBAC1B,wBAAwB;wBACxB,wBAAwB;wBACxB,4BAA4B;qBAC7B;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,iBAAiB;wBACjB,eAAe;wBACf,oBAAoB;wBACpB,aAAa;wBACb,eAAe;wBACf,mBAAmB;wBACnB,kBAAkB;qBACnB;oBACD,OAAO,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,iCAAiC,CAAC;oBACpE,SAAS,EAAE,CAAC,sBAAsB,CAAC;iBACpC;;;AClFD;;;;;;"}
1
+ {"version":3,"file":"covalent-dynamic-forms.mjs","sources":["../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-input/dynamic-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-file-input/dynamic-file-input.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-textarea/dynamic-textarea.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-slider/dynamic-slider.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-select/dynamic-select.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.html","../../../../libs/angular-dynamic-forms/src/lib/services/dynamic-forms.service.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-element.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.ts","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.component.html","../../../../libs/angular-dynamic-forms/src/lib/dynamic-forms.module.ts","../../../../libs/angular-dynamic-forms/src/covalent-dynamic-forms.ts"],"sourcesContent":["import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-input',\n styleUrls: ['./dynamic-input.component.scss'],\n templateUrl: './dynamic-input.component.html',\n})\nexport class TdDynamicInputComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n type!: string;\n\n required = false;\n\n name = '';\n\n min?: number;\n\n max?: number;\n\n minLength?: number;\n\n maxLength?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-input-wrapper\">\n <mat-form-field class=\"td-dynamic-input-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.minLength]=\"minLength\"\n [attr.maxLength]=\"maxLength\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-file-input',\n styleUrls: ['./dynamic-file-input.component.scss'],\n templateUrl: './dynamic-file-input.component.html',\n})\nexport class TdDynamicFileInputComponent {\n control!: FormControl;\n\n required = false;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n\n _handlefileDrop(value: any): void {\n this.control?.setValue(value);\n }\n}\n","<div class=\"td-dynamic-file-input-wrapper\">\n <mat-form-field\n tdFileDrop\n class=\"td-dynamic-file-input-field\"\n floatLabel=\"never\"\n [disabled]=\"control?.disabled\"\n (fileDrop)=\"_handlefileDrop($event)\"\n (click)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.enter)=\"!control?.disabled && fileInput.inputElement.click()\"\n (keyup.delete)=\"fileInput.clear()\"\n (keyup.backspace)=\"fileInput.clear()\"\n >\n <mat-label>{{ label }}</mat-label>\n <input\n matInput\n [value]=\"control?.value?.name\"\n [placeholder]=\"placeholder\"\n [attr.name]=\"name\"\n [disabled]=\"control?.disabled\"\n readonly\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n <button\n mat-icon-button\n *ngIf=\"control.value\"\n (click)=\"fileInput.clear()\"\n (keyup.enter)=\"fileInput.clear()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <td-file-input class=\"td-file-input\" #fileInput [formControl]=\"control\">\n <mat-icon>folder</mat-icon>\n <span>{{ label }}</span>\n </td-file-input>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-textarea',\n styleUrls: ['./dynamic-textarea.component.scss'],\n templateUrl: './dynamic-textarea.component.html',\n})\nexport class TdDynamicTextareaComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-textarea-wrapper\">\n <mat-form-field class=\"td-dynamic-textarea-field\">\n <mat-label>{{ label }}</mat-label>\n <textarea\n #elementInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n rows=\"4\"\n ></textarea>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slide-toggle',\n styleUrls: ['./dynamic-slide-toggle.component.scss'],\n templateUrl: './dynamic-slide-toggle.component.html',\n})\nexport class TdDynamicSlideToggleComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-slide-toggle-wrapper\">\n <mat-slide-toggle\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [required]=\"required\"\n >\n {{ label }}\n </mat-slide-toggle>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-checkbox',\n styleUrls: ['./dynamic-checkbox.component.scss'],\n templateUrl: './dynamic-checkbox.component.html',\n})\nexport class TdDynamicCheckboxComponent {\n control!: FormControl;\n\n label = '';\n\n name = '';\n\n hint = '';\n\n required = false;\n}\n","<div class=\"td-dynamic-checkbox-wrapper\">\n <mat-checkbox [formControl]=\"control\" [name]=\"name\" [required]=\"required\">\n {{ label }}\n </mat-checkbox>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, ChangeDetectorRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-slider',\n styleUrls: ['./dynamic-slider.component.scss'],\n templateUrl: './dynamic-slider.component.html',\n})\nexport class TdDynamicSliderComponent {\n control!: FormControl;\n\n label = '';\n\n required = false;\n\n name = '';\n\n hint = '';\n\n min?: number;\n\n max?: number;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n _handleBlur(): void {\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n class=\"td-dynamic-slider-wrapper mat-form-field mat-form-field-can-float mat-form-field-should-float\"\n [class.mat-focused]=\"slider._isActive\"\n>\n <span class=\"mat-form-field-label-wrapper\">\n <label class=\"mat-form-field-label mat-primary td-slider-label\">\n {{ label }}\n <span\n *ngIf=\"required && !control?.disabled\"\n class=\"mat-form-field-required-marker\"\n >*</span\n >\n </label>\n </span>\n <div class=\"td-dynamic-slider-field\">\n <mat-slider\n #slider\n class=\"td-dynamic-slider\"\n [formControl]=\"control\"\n [attr.name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n thumbLabel\n tickInterval=\"auto\"\n [required]=\"required\"\n (blur)=\"_handleBlur()\"\n ></mat-slider>\n </div>\n <span class=\"mat-hint td-dynamic-element-hint\">{{ hint }}</span>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-select',\n styleUrls: ['./dynamic-select.component.scss'],\n templateUrl: './dynamic-select.component.html',\n})\nexport class TdDynamicSelectComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n required = false;\n\n selections?: any[];\n\n multiple?: boolean;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-select-wrapper\">\n <mat-form-field class=\"td-dynamic-select-field\">\n <mat-label>{{ label }}</mat-label>\n <mat-select\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [attr.name]=\"name\"\n [multiple]=\"multiple\"\n >\n <mat-option\n *ngFor=\"let selection of selections\"\n [value]=\"selection.value || selection\"\n >\n {{ selection.label || selection }}\n </mat-option>\n </mat-select>\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n </mat-form-field>\n</div>\n","import { Component, TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'td-dynamic-datepicker',\n styleUrls: ['./dynamic-datepicker.component.scss'],\n templateUrl: './dynamic-datepicker.component.html',\n})\nexport class TdDynamicDatepickerComponent {\n control!: FormControl;\n\n label = '';\n\n hint = '';\n\n name = '';\n\n type?: string;\n\n required = false;\n\n min?: number;\n\n max?: number;\n\n errorMessageTemplate!: TemplateRef<any>;\n\n placeholder = '';\n}\n","<div class=\"td-dynamic-datepicker-wrapper\">\n <mat-form-field class=\"td-dynamic-datepicker-field\">\n <mat-label>{{ label }}</mat-label>\n <input\n #elementInput\n matInput\n [matDatepicker]=\"dynamicDatePicker\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [name]=\"name\"\n [min]=\"min\"\n [max]=\"max\"\n />\n <mat-hint>{{ hint }}</mat-hint>\n <mat-error>\n <ng-template\n [ngTemplateOutlet]=\"errorMessageTemplate\"\n [ngTemplateOutletContext]=\"{\n control: control,\n errors: control?.errors\n }\"\n ></ng-template>\n </mat-error>\n <mat-datepicker-toggle\n matSuffix\n [for]=\"dynamicDatePicker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #dynamicDatePicker></mat-datepicker>\n </mat-form-field>\n</div>\n","import { Injectable, Provider, SkipSelf, Optional, Type } from '@angular/core';\nimport { Validators, ValidatorFn, FormControl } from '@angular/forms';\n\nimport { TdDynamicInputComponent } from '../dynamic-elements/dynamic-input/dynamic-input.component';\nimport { TdDynamicFileInputComponent } from '../dynamic-elements/dynamic-file-input/dynamic-file-input.component';\nimport { TdDynamicTextareaComponent } from '../dynamic-elements/dynamic-textarea/dynamic-textarea.component';\nimport { TdDynamicSlideToggleComponent } from '../dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';\nimport { TdDynamicCheckboxComponent } from '../dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';\nimport { TdDynamicSliderComponent } from '../dynamic-elements/dynamic-slider/dynamic-slider.component';\nimport { TdDynamicSelectComponent } from '../dynamic-elements/dynamic-select/dynamic-select.component';\nimport { TdDynamicDatepickerComponent } from '../dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';\n\nexport enum TdDynamicType {\n Text = 'text',\n Boolean = 'boolean',\n Number = 'number',\n Array = 'array',\n Date = 'date',\n}\n\nexport enum TdDynamicElement {\n Input = 'input',\n Datepicker = 'datepicker',\n Password = 'password',\n Textarea = 'textarea',\n Slider = 'slider',\n SlideToggle = 'slide-toggle',\n Checkbox = 'checkbox',\n Select = 'select',\n FileInput = 'file-input',\n}\n\nexport interface ITdDynamicElementValidator {\n validator: ValidatorFn;\n}\n\n// Property values to be set in custom component\nexport interface ITdDynamicElementCustomConfig {\n [name: string]: any;\n}\n\nexport interface ITdDynamicElementConfig {\n label?: string;\n name: string;\n hint?: string;\n type: TdDynamicType | TdDynamicElement | Type<any>;\n required?: boolean;\n disabled?: boolean;\n min?: any;\n max?: any;\n minLength?: any;\n maxLength?: any;\n selections?: string[] | { value: any; label: string }[];\n multiple?: boolean;\n default?: any;\n flex?: number;\n validators?: ITdDynamicElementValidator[];\n customConfig?: ITdDynamicElementCustomConfig;\n placeholder?: string;\n}\n\nexport const DYNAMIC_ELEMENT_NAME_REGEX = /^[^0-9][^@]*$/;\n\n@Injectable()\nexport class TdDynamicFormsService {\n /**\n * Method to validate if the [name] is a proper element name.\n * Throws error if name is not valid.\n */\n validateDynamicElementName(name: string): void {\n if (!DYNAMIC_ELEMENT_NAME_REGEX.test(name)) {\n throw new Error('Dynamic element name: \"${name}\" is not valid.');\n }\n }\n\n /**\n * Gets component to be rendered depending on [TdDynamicElement | TdDynamicType]\n * Throws error if it does not exists or not supported.\n */\n getDynamicElement(\n element: TdDynamicElement | TdDynamicType | Type<any> | undefined\n ): any {\n switch (element) {\n case TdDynamicType.Text:\n case TdDynamicType.Number:\n case TdDynamicElement.Input:\n case TdDynamicElement.Password:\n return TdDynamicInputComponent;\n case TdDynamicElement.Textarea:\n return TdDynamicTextareaComponent;\n case TdDynamicType.Boolean:\n case TdDynamicElement.SlideToggle:\n return TdDynamicSlideToggleComponent;\n case TdDynamicElement.Checkbox:\n return TdDynamicCheckboxComponent;\n case TdDynamicElement.Slider:\n return TdDynamicSliderComponent;\n case TdDynamicType.Array:\n case TdDynamicElement.Select:\n return TdDynamicSelectComponent;\n case TdDynamicElement.FileInput:\n return TdDynamicFileInputComponent;\n case TdDynamicElement.Datepicker:\n case TdDynamicType.Date:\n return TdDynamicDatepickerComponent;\n default:\n throw new Error(\n `Error: type ${element} does not exist or not supported.`\n );\n }\n }\n\n /**\n * Creates form control for element depending [ITdDynamicElementConfig] properties.\n */\n createFormControl(config: ITdDynamicElementConfig): FormControl {\n const validator = this.createValidators(config);\n return new FormControl(\n { value: config.default, disabled: config.disabled },\n validator\n );\n }\n\n /**\n * Creates form validationdepending [ITdDynamicElementConfig] properties.\n */\n createValidators(config: ITdDynamicElementConfig): ValidatorFn | null {\n let validator: ValidatorFn | null = null;\n if (config.required) {\n validator = Validators.required;\n }\n if (config.max || config.max === 0) {\n validator = Validators.compose([\n validator,\n Validators.max(parseFloat(config.max)),\n ]);\n }\n if (config.min || config.min === 0) {\n validator = Validators.compose([\n validator,\n Validators.min(parseFloat(config.min)),\n ]);\n }\n if (config.maxLength || config.maxLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.maxLength(parseFloat(config.maxLength)),\n ]);\n }\n if (config.minLength || config.minLength === 0) {\n validator = Validators.compose([\n validator,\n Validators.minLength(parseFloat(config.minLength)),\n ]);\n }\n // Add provided custom validators to the validator function\n if (config.validators) {\n config.validators.forEach(\n (validatorConfig: ITdDynamicElementValidator) => {\n validator = Validators.compose([\n validator,\n validatorConfig.validator,\n ]);\n }\n );\n }\n return validator;\n }\n}\n\nexport function DYNAMIC_FORMS_PROVIDER_FACTORY(\n parent: TdDynamicFormsService\n): TdDynamicFormsService {\n return parent || new TdDynamicFormsService();\n}\n\nexport const DYNAMIC_FORMS_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDynamicFormsService,\n deps: [[new Optional(), new SkipSelf(), TdDynamicFormsService]],\n useFactory: DYNAMIC_FORMS_PROVIDER_FACTORY,\n};\n","import {\n Component,\n Directive,\n Input,\n HostBinding,\n OnInit,\n SimpleChanges,\n OnChanges,\n TemplateRef,\n ChangeDetectorRef,\n Type,\n} 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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"}
@@ -3,7 +3,7 @@ import { ViewContainerRef } from '@angular/core';
3
3
  import { ComponentFactoryResolver } from '@angular/core';
4
4
  import { AbstractControl } from '@angular/forms';
5
5
  import { CdkPortal } from '@angular/cdk/portal';
6
- import { IControlValueAccessor } from './behaviors/control-value-accesor.mixin';
6
+ import { IControlValueAccessor } from '@covalent/core/common';
7
7
  import { TdDynamicElement, TdDynamicType, TdDynamicFormsService, ITdDynamicElementCustomConfig } from './services/dynamic-forms.service';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class TdDynamicElementBase {
package/package.json CHANGED
@@ -1,21 +1,38 @@
1
1
  {
2
2
  "name": "@covalent/dynamic-forms",
3
- "version": "4.1.1-beta.3",
3
+ "version": "4.1.1-develop.1",
4
+ "description": "Teradata UI Platform Dynamic Forms Module",
5
+ "keywords": [
6
+ "angular",
7
+ "components",
8
+ "reusable",
9
+ "dynamic",
10
+ "forms"
11
+ ],
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/teradata/covalent.git"
15
+ },
16
+ "bugs": {
17
+ "url": "https://github.com/teradata/covalent/issues"
18
+ },
19
+ "license": "MIT",
20
+ "author": "Teradata UX",
4
21
  "peerDependencies": {
5
22
  "@angular/common": "^13.2.0",
6
23
  "@angular/core": "^13.2.0",
7
- "@angular/forms": "~13.2.0",
24
+ "@covalent/core": "4.1.1-develop.1",
25
+ "@angular/router": "^13.2.0",
26
+ "@angular/platform-browser": "^13.2.0",
27
+ "@angular/material": "^13.2.1",
8
28
  "rxjs": "~7.4.0",
29
+ "@angular/animations": "^13.2.0",
30
+ "@angular/forms": "^13.2.0",
9
31
  "@angular/cdk": "^13.2.1",
10
- "@angular/material": "^13.2.1",
11
- "@angular/platform-browser": "~13.2.0",
12
- "@covalent/core": "4.1.1-beta.3",
13
- "@angular/router": "~13.2.0",
14
- "@angular/animations": "~13.2.0",
15
- "@angular/platform-browser-dynamic": "~13.2.0"
32
+ "@angular/platform-browser-dynamic": "^13.2.0"
16
33
  },
17
34
  "dependencies": {
18
- "tslib": "^2.3.0"
35
+ "tslib": "^2.0.0"
19
36
  },
20
37
  "module": "fesm2015/covalent-dynamic-forms.mjs",
21
38
  "es2020": "fesm2020/covalent-dynamic-forms.mjs",
@@ -1,41 +0,0 @@
1
- import { Subject } from 'rxjs';
2
- const noop = () => {
3
- // empty method
4
- };
5
- /** Mixin to augment a component with ngModel support. */
6
- export function mixinControlValueAccessor(base, initialValue) {
7
- return class extends base {
8
- constructor(...args) {
9
- super(...args);
10
- this._value = initialValue instanceof Array
11
- ? Object.assign([], initialValue)
12
- : initialValue;
13
- this.onChange = (_) => noop;
14
- this.onTouched = () => noop;
15
- this._subjectValueChanges = new Subject();
16
- this.valueChanges = this._subjectValueChanges.asObservable();
17
- }
18
- set value(v) {
19
- if (v !== this._value) {
20
- this._value = v;
21
- this.onChange(v);
22
- this._changeDetectorRef.markForCheck();
23
- this._subjectValueChanges.next(v);
24
- }
25
- }
26
- get value() {
27
- return this._value;
28
- }
29
- writeValue(value) {
30
- this.value = value;
31
- this._changeDetectorRef.markForCheck();
32
- }
33
- registerOnChange(fn) {
34
- this.onChange = fn;
35
- }
36
- registerOnTouched(fn) {
37
- this.onTouched = fn;
38
- }
39
- };
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc29yLm1peGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWR5bmFtaWMtZm9ybXMvc3JjL2xpYi9iZWhhdmlvcnMvY29udHJvbC12YWx1ZS1hY2Nlc29yLm1peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJM0MsTUFBTSxJQUFJLEdBQVEsR0FBRyxFQUFFO0lBQ3JCLGVBQWU7QUFDakIsQ0FBQyxDQUFDO0FBYUYseURBQXlEO0FBQ3pELE1BQU0sVUFBVSx5QkFBeUIsQ0FFdkMsSUFBTyxFQUFFLFlBQWtCO0lBQzNCLE9BQU8sS0FBTSxTQUFRLElBQUk7UUFRdkIsWUFBWSxHQUFHLElBQVc7WUFDeEIsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFSVCxXQUFNLEdBQ1osWUFBWSxZQUFZLEtBQUs7Z0JBQzNCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFtQ25CLGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQzVCLGNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUE5QnJCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1lBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQy9ELENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxDQUFNO1lBQ2QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuQztRQUNILENBQUM7UUFDRCxJQUFJLEtBQUs7WUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckIsQ0FBQztRQUVELFVBQVUsQ0FBQyxLQUFVO1lBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBRUQsZ0JBQWdCLENBQUMsRUFBTztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBRUQsaUJBQWlCLENBQUMsRUFBTztZQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN0QixDQUFDO0tBSUYsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxudHlwZSBDb25zdHJ1Y3RvcjxUPiA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQ7XG5cbmNvbnN0IG5vb3A6IGFueSA9ICgpID0+IHtcbiAgLy8gZW1wdHkgbWV0aG9kXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sVmFsdWVBY2Nlc3NvciBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgdmFsdWU6IGFueTtcbiAgdmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPGFueT47XG4gIG9uQ2hhbmdlOiAoXzogYW55KSA9PiBhbnk7XG4gIG9uVG91Y2hlZDogKCkgPT4gYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIYXNDaGFuZ2VEZXRlY3RvclJlZiB7XG4gIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG59XG5cbi8qKiBNaXhpbiB0byBhdWdtZW50IGEgY29tcG9uZW50IHdpdGggbmdNb2RlbCBzdXBwb3J0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1peGluQ29udHJvbFZhbHVlQWNjZXNzb3I8XG4gIFQgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxJSGFzQ2hhbmdlRGV0ZWN0b3JSZWY+XG4+KGJhc2U6IFQsIGluaXRpYWxWYWx1ZT86IGFueSk6IENvbnN0cnVjdG9yPElDb250cm9sVmFsdWVBY2Nlc3Nvcj4gJiBUIHtcbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgYmFzZSB7XG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueSA9XG4gICAgICBpbml0aWFsVmFsdWUgaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICA/IE9iamVjdC5hc3NpZ24oW10sIGluaXRpYWxWYWx1ZSlcbiAgICAgICAgOiBpbml0aWFsVmFsdWU7XG4gICAgcHJpdmF0ZSBfc3ViamVjdFZhbHVlQ2hhbmdlczogU3ViamVjdDxhbnk+O1xuICAgIHZhbHVlQ2hhbmdlczogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgdGhpcy5fc3ViamVjdFZhbHVlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VzID0gdGhpcy5fc3ViamVjdFZhbHVlQ2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodjogYW55KSB7XG4gICAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHYpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5fc3ViamVjdFZhbHVlQ2hhbmdlcy5uZXh0KHYpO1xuICAgICAgfVxuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiBub29wO1xuICAgIG9uVG91Y2hlZCA9ICgpID0+IG5vb3A7XG4gIH07XG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- import { ChangeDetectorRef } from '@angular/core';
2
- import { ControlValueAccessor } from '@angular/forms';
3
- import { Observable } from 'rxjs';
4
- declare type Constructor<T> = new (...args: any[]) => T;
5
- export interface IControlValueAccessor extends ControlValueAccessor {
6
- value: any;
7
- valueChanges: Observable<any>;
8
- onChange: (_: any) => any;
9
- onTouched: () => any;
10
- }
11
- export interface IHasChangeDetectorRef {
12
- _changeDetectorRef: ChangeDetectorRef;
13
- }
14
- /** Mixin to augment a component with ngModel support. */
15
- export declare function mixinControlValueAccessor<T extends Constructor<IHasChangeDetectorRef>>(base: T, initialValue?: any): Constructor<IControlValueAccessor> & T;
16
- export {};