ngx-config-form
Version:
use configuration to generate form
132 lines • 9.91 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Input } from '@angular/core';
import { Subscription } from 'rxjs';
import { filter } from 'rxjs/operators';
/**
* @abstract
*/
export class BaseInput {
constructor() {
this.isShowErrorMsg = true;
// private sbObs: Subscription[] = [];
this.sbObs = new Subscription();
this.ObjectUtil = Object;
}
/**
* @param {?} v
* @return {?}
*/
set cfForm(v) {
this._cfForm = v;
this.cfFormSetting = v.cfFormSetting;
this.cfFormGroup = v.cfFormGroup;
}
/**
* @return {?}
*/
get cfForm() {
return this._cfForm;
}
/**
* @return {?}
*/
ngOnInit() {
this.groupElem = this.cfFormGroup.get(this.propName);
this.elem = this.cfFormGroup.get([this.propName, this.cfFormSetting[this.propName].items[0].name]);
this.elemValidators = this.cfFormSetting[this.propName].items[0].validators;
this.setNotify();
}
/**
* @return {?}
*/
ngOnDestroy() {
this.sbObs.unsubscribe();
}
/**
* @private
* @return {?}
*/
setNotify() {
// set value
this.sbObs.add(this.elem.statusChanges
.pipe(filter((/**
* @param {?} a
* @return {?}
*/
a => a === 'VALID'))).subscribe((/**
* @param {?} a
* @return {?}
*/
a => {
this.cfForm.notifyValueChange(this.propName, this.elem.value);
})));
// send error message
this.sbObs.add(this.elem.statusChanges
.subscribe((/**
* @param {?} a
* @return {?}
*/
a => {
/** @type {?} */
const isValid = a === 'VALID';
/** @type {?} */
const vKey = `${this.propName}_${this.cfFormSetting[this.propName].items[0].name}`;
if (!isValid && this.elem.errors) {
/** @type {?} */
const errorInfo = {};
for (const key of Object.keys(this.elem.errors)) {
errorInfo[key] = {
msg: this.elemValidators[key].msg,
dirty: this.elem.dirty,
};
}
this.cfForm.notifyValidatedInfo(vKey, false, errorInfo);
}
if (isValid) {
this.cfForm.notifyValidatedInfo(vKey, true);
}
})));
}
}
BaseInput.propDecorators = {
cfForm: [{ type: Input }],
isShowErrorMsg: [{ type: Input }]
};
if (false) {
/** @type {?} */
BaseInput.prototype.propName;
/** @type {?} */
BaseInput.prototype._cfForm;
/** @type {?} */
BaseInput.prototype.isShowErrorMsg;
/** @type {?} */
BaseInput.prototype.cfFormSetting;
/** @type {?} */
BaseInput.prototype.cfFormGroup;
/**
* @type {?}
* @protected
*/
BaseInput.prototype.groupElem;
/**
* @type {?}
* @protected
*/
BaseInput.prototype.elem;
/**
* @type {?}
* @protected
*/
BaseInput.prototype.elemValidators;
/**
* @type {?}
* @private
*/
BaseInput.prototype.sbObs;
/** @type {?} */
BaseInput.prototype.ObjectUtil;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUlucHV0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNvbmZpZy1mb3JtLyIsInNvdXJjZXMiOlsibGliL2NvbW1vbi9iYXNlSW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBT3hDLE1BQU0sT0FBZ0IsU0FBUztJQTRCN0I7UUFkUyxtQkFBYyxHQUFHLElBQUksQ0FBQzs7UUFVdkIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkMsZUFBVSxHQUFHLE1BQU0sQ0FBQztJQUVKLENBQUM7Ozs7O0lBdkJqQixJQUNJLE1BQU0sQ0FBQyxDQUFRO1FBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbkMsQ0FBQzs7OztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOzs7O0lBaUJELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFFNUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs7OztJQUVPLFNBQVM7UUFDZixZQUFZO1FBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO2FBQ25DLElBQUksQ0FDSCxNQUFNOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxFQUFDLENBQzNCLENBQUMsU0FBUzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUVOLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7YUFDbkMsU0FBUzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFOztrQkFDUCxPQUFPLEdBQUcsQ0FBQyxLQUFLLE9BQU87O2tCQUN2QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFFbEYsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTs7c0JBQzFCLFNBQVMsR0FBZSxFQUFFO2dCQUNoQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDL0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHO3dCQUNmLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUc7d0JBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7cUJBQ3ZCLENBQUM7aUJBQ0g7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ3pEO1lBRUQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDN0M7UUFDSCxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzs7O3FCQW5FQSxLQUFLOzZCQVNMLEtBQUs7Ozs7SUFaTiw2QkFBMEI7O0lBRTFCLDRCQUFlOztJQVVmLG1DQUErQjs7SUFFL0Isa0NBQTRCOztJQUM1QixnQ0FBdUI7Ozs7O0lBRXZCLDhCQUFxQzs7Ozs7SUFDckMseUJBQWdDOzs7OztJQUNoQyxtQ0FBaUQ7Ozs7O0lBR2pELDBCQUFtQzs7SUFFbkMsK0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUVycm9ySW5mbyB9IGZyb20gJy4vSUVycm9ySW5mbyc7XG5pbXBvcnQgeyBJRm9ybSB9IGZyb20gJy4vSUZvcm0nO1xuaW1wb3J0IHsgSUZvcm1TZXR0aW5nIH0gZnJvbSAnLi9JRm9ybVNldHRpbmcnO1xuaW1wb3J0IHsgSUlucHV0IH0gZnJvbSAnLi9JSW5wdXQnO1xuaW1wb3J0IHsgSUlucHV0VmFsaWRhdG9yU2V0dGluZyB9IGZyb20gJy4vSUlucHV0VmFsaWRhdG9yU2V0dGluZyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSW5wdXQgaW1wbGVtZW50cyBJSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBhYnN0cmFjdCBwcm9wTmFtZTogc3RyaW5nO1xuXG4gIF9jZkZvcm06IElGb3JtO1xuICBASW5wdXQoKVxuICBzZXQgY2ZGb3JtKHY6IElGb3JtKSB7XG4gICAgdGhpcy5fY2ZGb3JtID0gdjtcbiAgICB0aGlzLmNmRm9ybVNldHRpbmcgPSB2LmNmRm9ybVNldHRpbmc7XG4gICAgdGhpcy5jZkZvcm1Hcm91cCA9IHYuY2ZGb3JtR3JvdXA7XG4gIH1cbiAgZ2V0IGNmRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2ZGb3JtO1xuICB9XG4gIEBJbnB1dCgpIGlzU2hvd0Vycm9yTXNnID0gdHJ1ZTtcblxuICBjZkZvcm1TZXR0aW5nOiBJRm9ybVNldHRpbmc7XG4gIGNmRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgcHJvdGVjdGVkIGdyb3VwRWxlbTogQWJzdHJhY3RDb250cm9sO1xuICBwcm90ZWN0ZWQgZWxlbTogQWJzdHJhY3RDb250cm9sO1xuICBwcm90ZWN0ZWQgZWxlbVZhbGlkYXRvcnM6IElJbnB1dFZhbGlkYXRvclNldHRpbmc7XG5cbiAgLy8gcHJpdmF0ZSBzYk9iczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBzYk9icyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBPYmplY3RVdGlsID0gT2JqZWN0O1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ncm91cEVsZW0gPSB0aGlzLmNmRm9ybUdyb3VwLmdldCh0aGlzLnByb3BOYW1lKTtcbiAgICB0aGlzLmVsZW0gPSB0aGlzLmNmRm9ybUdyb3VwLmdldChbdGhpcy5wcm9wTmFtZSwgdGhpcy5jZkZvcm1TZXR0aW5nW3RoaXMucHJvcE5hbWVdLml0ZW1zWzBdLm5hbWVdKTtcbiAgICB0aGlzLmVsZW1WYWxpZGF0b3JzID0gdGhpcy5jZkZvcm1TZXR0aW5nW3RoaXMucHJvcE5hbWVdLml0ZW1zWzBdLnZhbGlkYXRvcnM7XG5cbiAgICB0aGlzLnNldE5vdGlmeSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zYk9icy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXROb3RpZnkoKTogYW55IHtcbiAgICAvLyBzZXQgdmFsdWVcbiAgICB0aGlzLnNiT2JzLmFkZCh0aGlzLmVsZW0uc3RhdHVzQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihhID0+IGEgPT09ICdWQUxJRCcpLFxuICAgICAgKS5zdWJzY3JpYmUoYSA9PiB7XG4gICAgICAgIHRoaXMuY2ZGb3JtLm5vdGlmeVZhbHVlQ2hhbmdlKHRoaXMucHJvcE5hbWUsIHRoaXMuZWxlbS52YWx1ZSk7XG4gICAgICB9KSk7XG5cbiAgICAvLyBzZW5kIGVycm9yIG1lc3NhZ2VcbiAgICB0aGlzLnNiT2JzLmFkZCh0aGlzLmVsZW0uc3RhdHVzQ2hhbmdlc1xuICAgICAgLnN1YnNjcmliZShhID0+IHtcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGEgPT09ICdWQUxJRCc7XG4gICAgICAgIGNvbnN0IHZLZXkgPSBgJHt0aGlzLnByb3BOYW1lfV8ke3RoaXMuY2ZGb3JtU2V0dGluZ1t0aGlzLnByb3BOYW1lXS5pdGVtc1swXS5uYW1lfWA7XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkICYmIHRoaXMuZWxlbS5lcnJvcnMpIHtcbiAgICAgICAgICBjb25zdCBlcnJvckluZm86IElFcnJvckluZm8gPSB7fTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmVsZW0uZXJyb3JzKSkge1xuICAgICAgICAgICAgZXJyb3JJbmZvW2tleV0gPSB7XG4gICAgICAgICAgICAgIG1zZzogdGhpcy5lbGVtVmFsaWRhdG9yc1trZXldLm1zZyxcbiAgICAgICAgICAgICAgZGlydHk6IHRoaXMuZWxlbS5kaXJ0eSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2ZGb3JtLm5vdGlmeVZhbGlkYXRlZEluZm8odktleSwgZmFsc2UsIGVycm9ySW5mbyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgIHRoaXMuY2ZGb3JtLm5vdGlmeVZhbGlkYXRlZEluZm8odktleSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxufVxuIl19