ngx-config-form
Version:
use configuration to generate form
110 lines • 9.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input } from '@angular/core';
import { BaseInput } from '../../../common/baseInput';
export class CheckboxComponent extends BaseInput {
constructor() {
super();
this.isMultiple = true;
this.result = [];
}
/**
* @return {?}
*/
ngOnInit() {
const _super = Object.create(null, {
ngOnInit: { get: () => super.ngOnInit }
});
return tslib_1.__awaiter(this, void 0, void 0, function* () {
_super.ngOnInit.call(this);
this.cfForm.onReady().subscribe((/**
* @return {?}
*/
() => {
this.setData();
}));
});
}
/**
* @return {?}
*/
ngOnDestroy() {
super.ngOnDestroy();
}
/**
* @private
* @return {?}
*/
setData() {
if (this.elem.value) {
this.result = this.elem.value.toString().split(',');
}
this.defaultValue = this.cfFormSetting[this.propName].items[0].value;
}
/**
* @param {?} event
* @param {?} cb
* @param {?} value
* @return {?}
*/
chagne(event, cb, value) {
event.preventDefault();
event.stopPropagation();
/** @type {?} */
const index = this.result.indexOf(value);
if (cb.checked && index === -1) {
this.result.push(value);
}
if (!cb.checked && index !== -1) {
this.result.splice(index, 1);
}
if (!this.isMultiple && cb.checked) {
this.result = [];
this.result.push(value);
}
if (this.result.length === 0) {
this.result = this.defaultValue.split(',');
}
/** @type {?} */
const v = this.result.filter((/**
* @param {?} a
* @return {?}
*/
a => a)).join(',');
this.elem.setValue(v);
this.elem.markAsDirty();
}
}
CheckboxComponent.decorators = [
{ type: Component, args: [{
selector: 'cf-inputs-checkbox',
template: "<ng-container [formGroup]=\"cfFormGroup\">\n <ng-container [formGroupName]=\"propName\">\n <ng-container *ngFor=\"let item of cfFormSetting[propName].items\">\n <ng-container *ngIf=\"{ \n elem: cfFormGroup.get([propName, item.name]) \n }; let info\">\n <label [for]=\"item.name\" *ngIf=\"item.args['alias']\">{{item.args['alias']}}</label>\n <div class=\"d-block cbList\">\n <div class=\"form-check form-check-inline\" *ngFor=\"let c of item.args['options'];let i=index\">\n <label class=\"form-check-label\">\n <input type=\"checkbox\"\n class=\"form-check-input\" \n name=\"{{item.name}}-{{i}}\"\n #cb\n [checked]=\"info.elem.value && info.elem.value.indexOf(c.value)!==-1\"\n (change)=\"chagne($event, cb, c.value)\">\n {{c.text}}\n </label>\n </div>\n </div>\n <input type=\"hidden\" [formControlName]=\"item.name\"/>\n\n <small class=\"form-text text-muted\" *ngIf=\"item.args['murmur']\">\n {{item.args['murmur']}}\n </small>\n \n <ng-container *ngIf=\"isShowErrorMsg && info.elem.dirty && info.elem.errors\">\n <small class=\"form-text text-danger\" *ngFor=\"let vName of ObjectUtil.keys(info.elem.errors)\">\n {{item.validators[vName].msg}}\n </small>\n </ng-container>\n\n <!-- <hr />\n item.args.options : {{item.args.options | json}} <br />\n info.elem.dirty : {{ info.elem.dirty | json }} <br />\n info.elem.errors: {{ info.elem.errors | json }} <br />\n info.elem.value: {{ info.elem.value | json }}\n <hr /> -->\n\n </ng-container>\n </ng-container> \n </ng-container>\n</ng-container>\n",
styles: [".cbList{margin-bottom:-.5rem}"]
}] }
];
/** @nocollapse */
CheckboxComponent.ctorParameters = () => [];
CheckboxComponent.propDecorators = {
propName: [{ type: Input }],
isMultiple: [{ type: Input }]
};
if (false) {
/** @type {?} */
CheckboxComponent.prototype.propName;
/** @type {?} */
CheckboxComponent.prototype.isMultiple;
/**
* @type {?}
* @private
*/
CheckboxComponent.prototype.defaultValue;
/**
* @type {?}
* @private
*/
CheckboxComponent.prototype.result;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNvbmZpZy1mb3JtLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW5wdXRzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPdEQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFNBQVM7SUFROUM7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQU5ELGVBQVUsR0FBRyxJQUFJLENBQUM7UUFHbkIsV0FBTSxHQUFhLEVBQUUsQ0FBQztJQUk5QixDQUFDOzs7O0lBRUssUUFBUTs7Ozs7WUFDWixPQUFNLFFBQVEsWUFBRztZQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVM7OztZQUFDLEdBQUcsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLENBQUMsRUFBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBOzs7O0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7OztJQUVPLE9BQU87UUFDYixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3ZFLENBQUM7Ozs7Ozs7SUFFRCxNQUFNLENBQUMsS0FBWSxFQUFFLEVBQUUsRUFBRSxLQUFLO1FBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7O2NBRWxCLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDeEMsSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1Qzs7Y0FDSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7O1lBeERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixzeURBQXdDOzthQUV6Qzs7Ozs7dUJBR0UsS0FBSzt5QkFDTCxLQUFLOzs7O0lBRE4scUNBQTBCOztJQUMxQix1Q0FBMkI7Ozs7O0lBRTNCLHlDQUE2Qjs7Ozs7SUFDN0IsbUNBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9iYXNlSW5wdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjZi1pbnB1dHMtY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHByb3BOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzTXVsdGlwbGUgPSB0cnVlO1xuXG4gIHByaXZhdGUgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuY2ZGb3JtLm9uUmVhZHkoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXREYXRhKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXRhKCkge1xuICAgIGlmICh0aGlzLmVsZW0udmFsdWUpIHtcbiAgICAgIHRoaXMucmVzdWx0ID0gdGhpcy5lbGVtLnZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJywnKTtcbiAgICB9XG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLmNmRm9ybVNldHRpbmdbdGhpcy5wcm9wTmFtZV0uaXRlbXNbMF0udmFsdWU7XG4gIH1cblxuICBjaGFnbmUoZXZlbnQ6IEV2ZW50LCBjYiwgdmFsdWUpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3VsdC5pbmRleE9mKHZhbHVlKTtcbiAgICBpZiAoY2IuY2hlY2tlZCAmJiBpbmRleCA9PT0gLTEpIHtcbiAgICAgIHRoaXMucmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBpZiAoIWNiLmNoZWNrZWQgJiYgaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLnJlc3VsdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNNdWx0aXBsZSAmJiBjYi5jaGVja2VkKSB7XG4gICAgICB0aGlzLnJlc3VsdCA9IFtdO1xuICAgICAgdGhpcy5yZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucmVzdWx0ID0gdGhpcy5kZWZhdWx0VmFsdWUuc3BsaXQoJywnKTtcbiAgICB9XG4gICAgY29uc3QgdiA9IHRoaXMucmVzdWx0LmZpbHRlcihhID0+IGEpLmpvaW4oJywnKTtcbiAgICB0aGlzLmVsZW0uc2V0VmFsdWUodik7XG4gICAgdGhpcy5lbGVtLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxufVxuIl19