UNPKG

@noaestudio/forms

Version:

Dynamic forms extension for Covalent

122 lines (118 loc) 11.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Component, forwardRef } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { AbstractControlValueAccessor } from '../abstract-control-value-accesor'; import { TranslateService } from '@ngx-translate/core'; import * as _isjson_ from 'is-json'; const /** @type {?} */ isJSON = _isjson_; export const /** @type {?} */ SELECT_TOGGLE_INPUT_CONTROL_VALUE_ACCESSOR = { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TdDynamicSelectComponent), multi: true, }; export class TdDynamicSelectComponent extends AbstractControlValueAccessor { /** * @param {?} translator */ constructor(translator) { super(); this.translator = translator; this.label = ''; this.required = undefined; this.selections = undefined; this.selectComplex = false; this.selectMultiple = false; this.flex = 100; this.flexPerc = this.flex / 100; } /** * @return {?} */ ngOnInit() { if (this.selections) { this.selections.forEach(sel => { if (sel.label) { sel.label = this.translateLabel(sel.label); } }); } } /** * @param {?} value * @return {?} */ translateLabel(value) { let /** @type {?} */ selectedLang = this.translator.currentLang; let /** @type {?} */ defaultLang = this.translator.defaultLang; if (isJSON(value)) { let /** @type {?} */ json = JSON.parse(value); if (json[selectedLang]) { return json[selectedLang]; } else if (json[defaultLang]) { return json[defaultLang]; } else { for (let /** @type {?} */ entry in json) { return json[entry]; } } } else { return this.translator.instant(value); } } } TdDynamicSelectComponent.decorators = [ { type: Component, args: [{ providers: [SELECT_TOGGLE_INPUT_CONTROL_VALUE_ACCESSOR], selector: 'td-dynamic-select', styles: [`.td-dynamic-select-wrapper{-ms-flex-direction:row;flex-direction:row;display:-ms-flexbox;display:flex;box-sizing:border-box}.td-dynamic-select-wrapper .td-dynamic-select-field{-ms-flex:1;flex:1;box-sizing:border-box}`], template: `<div class="td-dynamic-select-wrapper"> <mat-form-field *ngIf="!selectComplex" class="td-dynamic-select-field"> <mat-select [(ngModel)]="value" [placeholder]="label" [required]="required"> <mat-option *ngFor="let selection of selections" [value]="selection.value || selection">{{selection.label || selection}}</mat-option> </mat-select> </mat-form-field> <ng-select style="padding-bottom: 2.25em;" *ngIf="selectComplex" [(ngModel)]="value" placeholder="{{label + (required ? ' *' : '')}}" [required]="required" [multiple]="selectMultiple" [items]="selections" [searchable]="true" bindLabel="label" bindValue="value" appendTo="body" [style.flex]="flexPerc"> </ng-select> </div> `, },] }, ]; /** @nocollapse */ TdDynamicSelectComponent.ctorParameters = () => [ { type: TranslateService, }, ]; function TdDynamicSelectComponent_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ TdDynamicSelectComponent.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ TdDynamicSelectComponent.ctorParameters; /** @type {?} */ TdDynamicSelectComponent.prototype.control; /** @type {?} */ TdDynamicSelectComponent.prototype.label; /** @type {?} */ TdDynamicSelectComponent.prototype.required; /** @type {?} */ TdDynamicSelectComponent.prototype.selections; /** @type {?} */ TdDynamicSelectComponent.prototype.selectComplex; /** @type {?} */ TdDynamicSelectComponent.prototype.selectMultiple; /** @type {?} */ TdDynamicSelectComponent.prototype.flex; /** @type {?} */ TdDynamicSelectComponent.prototype.flexPerc; /** @type {?} */ TdDynamicSelectComponent.prototype.translator; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvdmFsZW50L2R5bmFtaWMtZm9ybXMvIiwic291cmNlcyI6WyJkeW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGdCQUFnQixDQUFDO0FBRXRGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sS0FBSyxRQUFRLE1BQU0sU0FBUyxDQUFDO0FBRXBDLHVCQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxDQUFDLHVCQUFNLDBDQUEwQyxHQUFRO0lBQzlELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztJQUN2RCxLQUFLLEVBQUUsSUFBSTtDQUNYLENBQUM7QUFxQkYsTUFBTSwrQkFBZ0MsU0FBUSw0QkFBNEI7Ozs7SUFrQnpFLFlBQW9CLFVBQTRCO1FBQy9DLEtBQUssRUFBRSxDQUFDO1FBRFcsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7cUJBZGhDLEVBQUU7d0JBRUUsU0FBUzswQkFFVCxTQUFTOzZCQUVILEtBQUs7OEJBRUosS0FBSztvQkFFaEIsR0FBRzt3QkFFQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUc7S0FJbEM7Ozs7SUFFRCxRQUFRO1FBQ1AsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQzlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNmLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzNDO2FBQ0QsQ0FBQyxDQUFDO1NBQ0g7S0FDRDs7Ozs7SUFFTSxjQUFjLENBQUMsS0FBYTtRQUNsQyxxQkFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7UUFDL0MscUJBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBRTlDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIscUJBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFN0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3pCO1lBQ0QsSUFBSSxDQUFDLENBQUM7Z0JBQ0wsR0FBRyxDQUFDLENBQUMscUJBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ25CO2FBQ0Q7U0FDRDtRQUNELElBQUksQ0FBQyxDQUFDO1lBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RDOzs7O1lBeEVGLFNBQVMsU0FBQztnQkFDVixTQUFTLEVBQUUsQ0FBRSwwQ0FBMEMsQ0FBRTtnQkFDekQsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsTUFBTSxFQUFFLENBQUMsME5BQTBOLENBQUM7Z0JBQ3BPLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztDQWFWO2FBQ0E7Ozs7WUE5QlEsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnLi4vYWJzdHJhY3QtY29udHJvbC12YWx1ZS1hY2Nlc29yJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCAqIGFzIF9pc2pzb25fIGZyb20gJ2lzLWpzb24nO1xyXG5cclxuY29uc3QgaXNKU09OID0gX2lzanNvbl87XHJcblxyXG5leHBvcnQgY29uc3QgU0VMRUNUX1RPR0dMRV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XHJcblx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcblx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGREeW5hbWljU2VsZWN0Q29tcG9uZW50KSxcclxuXHRtdWx0aTogdHJ1ZSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHByb3ZpZGVyczogWyBTRUxFQ1RfVE9HR0xFX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IgXSxcclxuXHRzZWxlY3RvcjogJ3RkLWR5bmFtaWMtc2VsZWN0JyxcclxuXHRzdHlsZXM6IFtgLnRkLWR5bmFtaWMtc2VsZWN0LXdyYXBwZXJ7LW1zLWZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LWRpcmVjdGlvbjpyb3c7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7Ym94LXNpemluZzpib3JkZXItYm94fS50ZC1keW5hbWljLXNlbGVjdC13cmFwcGVyIC50ZC1keW5hbWljLXNlbGVjdC1maWVsZHstbXMtZmxleDoxO2ZsZXg6MTtib3gtc2l6aW5nOmJvcmRlci1ib3h9YF0sXHJcblx0dGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwidGQtZHluYW1pYy1zZWxlY3Qtd3JhcHBlclwiPlxyXG5cclxuXHQ8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhc2VsZWN0Q29tcGxleFwiIGNsYXNzPVwidGQtZHluYW1pYy1zZWxlY3QtZmllbGRcIj5cclxuXHRcdDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwidmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwibGFiZWxcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cclxuXHRcdFx0PG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNlbGVjdGlvbiBvZiBzZWxlY3Rpb25zXCIgW3ZhbHVlXT1cInNlbGVjdGlvbi52YWx1ZSB8fCBzZWxlY3Rpb25cIj57e3NlbGVjdGlvbi5sYWJlbCB8fCBzZWxlY3Rpb259fTwvbWF0LW9wdGlvbj5cclxuXHRcdDwvbWF0LXNlbGVjdD5cclxuXHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuXHQ8bmctc2VsZWN0IHN0eWxlPVwicGFkZGluZy1ib3R0b206IDIuMjVlbTtcIiAqbmdJZj1cInNlbGVjdENvbXBsZXhcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgcGxhY2Vob2xkZXI9XCJ7e2xhYmVsICsgKHJlcXVpcmVkID8gJyAqJyA6ICcnKX19XCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW211bHRpcGxlXT1cInNlbGVjdE11bHRpcGxlXCIgW2l0ZW1zXT1cInNlbGVjdGlvbnNcIlxyXG5cdFx0IFtzZWFyY2hhYmxlXT1cInRydWVcIiBiaW5kTGFiZWw9XCJsYWJlbFwiIGJpbmRWYWx1ZT1cInZhbHVlXCIgYXBwZW5kVG89XCJib2R5XCIgW3N0eWxlLmZsZXhdPVwiZmxleFBlcmNcIj5cclxuXHQ8L25nLXNlbGVjdD5cclxuXHJcbjwvZGl2PlxyXG5gLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGREeW5hbWljU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcblx0Y29udHJvbDogRm9ybUNvbnRyb2w7XHJcblxyXG5cdGxhYmVsOiBzdHJpbmcgPSAnJztcclxuXHJcblx0cmVxdWlyZWQ6IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcblxyXG5cdHNlbGVjdGlvbnM6IGFueVtdID0gdW5kZWZpbmVkO1xyXG5cclxuXHRzZWxlY3RDb21wbGV4IDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRzZWxlY3RNdWx0aXBsZSA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0ZmxleCA6IG51bWJlciA9IDEwMDtcclxuXHJcblx0ZmxleFBlcmMgOiBudW1iZXIgPSB0aGlzLmZsZXggLyAxMDA7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRvcjogVHJhbnNsYXRlU2VydmljZSkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0aWYgKHRoaXMuc2VsZWN0aW9ucykge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGlvbnMuZm9yRWFjaCggc2VsID0+IHtcclxuXHRcdFx0XHRpZiAoc2VsLmxhYmVsKSB7XHJcblx0XHRcdFx0XHRzZWwubGFiZWwgPSB0aGlzLnRyYW5zbGF0ZUxhYmVsKHNlbC5sYWJlbCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHB1YmxpYyB0cmFuc2xhdGVMYWJlbCh2YWx1ZTogc3RyaW5nKSA6IHN0cmluZyB7XHJcblx0XHRsZXQgc2VsZWN0ZWRMYW5nID0gdGhpcy50cmFuc2xhdG9yLmN1cnJlbnRMYW5nO1xyXG5cdFx0bGV0IGRlZmF1bHRMYW5nID0gdGhpcy50cmFuc2xhdG9yLmRlZmF1bHRMYW5nO1xyXG5cclxuXHRcdGlmIChpc0pTT04odmFsdWUpKSB7XHJcblx0XHRcdGxldCBqc29uID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblxyXG5cdFx0XHRpZiAoanNvbltzZWxlY3RlZExhbmddKSB7XHJcblx0XHRcdFx0cmV0dXJuIGpzb25bc2VsZWN0ZWRMYW5nXTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIGlmIChqc29uW2RlZmF1bHRMYW5nXSkge1xyXG5cdFx0XHRcdHJldHVybiBqc29uW2RlZmF1bHRMYW5nXTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRmb3IgKGxldCBlbnRyeSBpbiBqc29uKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4ganNvbltlbnRyeV07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsYXRvci5pbnN0YW50KHZhbHVlKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19