ngx-config-form
Version:
use configuration to generate form
1,314 lines • 63.6 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('@angular/forms'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define('ngx-config-form', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', '@angular/forms', '@angular/common'], factory) :
(global = global || self, factory(global['ngx-config-form'] = {}, global.ng.core, global.rxjs, global.rxjs.operators, global.ng.forms, global.ng.common));
}(this, function (exports, core, rxjs, operators, forms, common) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
function __awaiter(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
}
function __values(o) {
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
if (m) return m.call(o);
return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @abstract
*/
var BaseInput = /** @class */ (function () {
function BaseInput() {
this.isShowErrorMsg = true;
// private sbObs: Subscription[] = [];
this.sbObs = new rxjs.Subscription();
this.ObjectUtil = Object;
}
Object.defineProperty(BaseInput.prototype, "cfForm", {
get: /**
* @return {?}
*/
function () {
return this._cfForm;
},
set: /**
* @param {?} v
* @return {?}
*/
function (v) {
this._cfForm = v;
this.cfFormSetting = v.cfFormSetting;
this.cfFormGroup = v.cfFormGroup;
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
BaseInput.prototype.ngOnInit = /**
* @return {?}
*/
function () {
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 {?}
*/
BaseInput.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.sbObs.unsubscribe();
};
/**
* @private
* @return {?}
*/
BaseInput.prototype.setNotify = /**
* @private
* @return {?}
*/
function () {
var _this = this;
// set value
this.sbObs.add(this.elem.statusChanges
.pipe(operators.filter((/**
* @param {?} a
* @return {?}
*/
function (a) { return a === 'VALID'; }))).subscribe((/**
* @param {?} a
* @return {?}
*/
function (a) {
_this.cfForm.notifyValueChange(_this.propName, _this.elem.value);
})));
// send error message
this.sbObs.add(this.elem.statusChanges
.subscribe((/**
* @param {?} a
* @return {?}
*/
function (a) {
var e_1, _a;
/** @type {?} */
var isValid = a === 'VALID';
/** @type {?} */
var vKey = _this.propName + "_" + _this.cfFormSetting[_this.propName].items[0].name;
if (!isValid && _this.elem.errors) {
/** @type {?} */
var errorInfo = {};
try {
for (var _b = __values(Object.keys(_this.elem.errors)), _c = _b.next(); !_c.done; _c = _b.next()) {
var key = _c.value;
errorInfo[key] = {
msg: _this.elemValidators[key].msg,
dirty: _this.elem.dirty,
};
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
_this.cfForm.notifyValidatedInfo(vKey, false, errorInfo);
}
if (isValid) {
_this.cfForm.notifyValidatedInfo(vKey, true);
}
})));
};
BaseInput.propDecorators = {
cfForm: [{ type: core.Input }],
isShowErrorMsg: [{ type: core.Input }]
};
return BaseInput;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var Utils = /** @class */ (function () {
function Utils() {
}
/**
* @param {?} info
* @return {?}
*/
Utils.getErrorMsgs = /**
* @param {?} info
* @return {?}
*/
function (info) {
/** @type {?} */
var obj = info['_errMsg_'];
/** @type {?} */
var arr = [];
if (obj) {
Object.keys(obj).forEach((/**
* @param {?} prop
* @return {?}
*/
function (prop) {
Object.keys(obj[prop]).forEach((/**
* @param {?} propChild
* @return {?}
*/
function (propChild) {
/** @type {?} */
var item = obj[prop][propChild];
if (item.dirty) {
arr.push(item['msg']);
}
}));
}));
}
return arr;
};
/**
* @param {?} formGroup
* @return {?}
*/
Utils.validateAllFormFields = /**
* @param {?} formGroup
* @return {?}
*/
function (formGroup) {
Object.keys(formGroup.controls).forEach((/**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var control = formGroup.get(field);
if (control instanceof forms.FormControl) {
control.markAsDirty({ onlySelf: true });
control.markAsTouched({ onlySelf: true });
control.updateValueAndValidity({ onlySelf: true, emitEvent: true });
}
else if (control instanceof forms.FormGroup) {
Utils.validateAllFormFields(control);
}
}));
};
return Utils;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ButtonComponent = /** @class */ (function () {
function ButtonComponent() {
this.buttonClass = '';
this.isDebug = 'N';
this.type = 'button';
this.isProcessing = false;
this.click = new core.EventEmitter();
}
/**
* @return {?}
*/
ButtonComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
};
/**
* @param {?} event
* @return {?}
*/
ButtonComponent.prototype.clickIt = /**
* @param {?} event
* @return {?}
*/
function (event) {
event.preventDefault();
event.stopImmediatePropagation();
if (!this.cfFormGroup.dirty) {
return;
}
if (this.cfFormGroup.invalid) {
return;
}
if (this.isProcessing) {
return;
}
this.click.emit(event);
};
ButtonComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cf-button',
template: "<button [type]=\"type\"\n [class]=\"buttonClass\"\n [ngClass]=\"{'disabled': !(cfFormGroup.dirty && cfFormGroup.valid) || isProcessing}\"\n (click)=\"clickIt($event)\">\n <ng-content></ng-content>\n</button>\n\n<div *ngIf=\"isDebug==='Y'\" class=\"tt\">\n <hr />\n cfFormGroup.value : {{cfFormGroup.value | json}} <br />\n <hr />\n</div>\n",
styles: [".tt{background-color:gray;position:fixed;bottom:0;left:0;width:100%;z-index:10000}"]
}] }
];
/** @nocollapse */
ButtonComponent.ctorParameters = function () { return []; };
ButtonComponent.propDecorators = {
cfFormGroup: [{ type: core.Input }],
buttonClass: [{ type: core.Input }],
isDebug: [{ type: core.Input }],
type: [{ type: core.Input }],
isProcessing: [{ type: core.Input }],
click: [{ type: core.Output }]
};
return ButtonComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var USER_PROFILE_VALUE_ACCESSOR = {
provide: forms.NG_VALUE_ACCESSOR,
useExisting: core.forwardRef((/**
* @return {?}
*/
function () { return FormComponent; })),
multi: true
};
var FormComponent = /** @class */ (function () {
function FormComponent(fb) {
this.fb = fb;
this.isReady = false;
this.errorPropName = '_errMsg_';
this.autocomplete = 'off';
this.cfFormSetting = {};
this.formClass = '';
this.isDebug = false;
this.cfFormReady = new core.EventEmitter();
this.data$ = new rxjs.BehaviorSubject(this.data);
}
/**
* @return {?}
*/
FormComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.initFormGroupSetting();
};
/**
* @param {?} originObj
* @return {?}
*/
FormComponent.prototype.writeValue = /**
* @param {?} originObj
* @return {?}
*/
function (originObj) {
if (!originObj) {
return;
}
this.data = originObj;
this.setFormGroupValue();
this.setReady();
};
/**
* @private
* @return {?}
*/
FormComponent.prototype.setReady = /**
* @private
* @return {?}
*/
function () {
this.isReady = true;
this.cfFormReady.emit();
};
/**
* @param {?} fn
* @return {?}
*/
FormComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
FormComponent.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onTouched = fn;
};
/**
* @param {?} isDisabled
* @return {?}
*/
FormComponent.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
};
/**
* @param {?} key
* @param {?} value
* @return {?}
*/
FormComponent.prototype.notifyValueChange = /**
* @param {?} key
* @param {?} value
* @return {?}
*/
function (key, value) {
if (!this.onChange) {
return;
}
/** @type {?} */
var v = value;
/** @type {?} */
var setting = this.cfFormSetting[key];
if (setting.converter) {
v = setting.converter.from(value);
}
this.data[key] = v;
this.data$.next(this.data);
this.onChange(this.data);
};
/**
* @param {?} key
* @param {?} isValid
* @param {?=} info
* @return {?}
*/
FormComponent.prototype.notifyValidatedInfo = /**
* @param {?} key
* @param {?} isValid
* @param {?=} info
* @return {?}
*/
function (key, isValid, info) {
if (!this.onChange) {
return;
}
if (isValid) {
/** @type {?} */
var obj = this.data[this.errorPropName] || {};
delete obj[key];
this.data[this.errorPropName] = obj;
}
else {
/** @type {?} */
var obj = this.data[this.errorPropName] || {};
/** @type {?} */
var oErrorObj = obj[key] || {};
obj[key] = info;
this.data[this.errorPropName] = obj;
}
this.onChange(this.data);
};
/**
* @return {?}
*/
FormComponent.prototype.onReady = /**
* @return {?}
*/
function () {
return this.cfFormReady;
};
/**
* @private
* @return {?}
*/
FormComponent.prototype.initFormGroupSetting = /**
* @private
* @return {?}
*/
function () {
var e_1, _a, e_2, _b;
try {
for (var _c = __values(Object.keys(this.cfFormSetting)), _d = _c.next(); !_d.done; _d = _c.next()) {
var propName = _d.value;
/** @type {?} */
var setting = this.cfFormSetting[propName];
/** @type {?} */
var g = {};
try {
for (var _e = __values(setting.items), _f = _e.next(); !_f.done; _f = _e.next()) {
var item = _f.value;
/** @type {?} */
var itemValidatorInfo = this.getValidators(item.validators);
g[item.name] = ['', itemValidatorInfo.validatorFns, itemValidatorInfo.asyncValidatorFns];
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
}
finally { if (e_2) throw e_2.error; }
}
/** @type {?} */
var fbG = this.fb.group(g);
/** @type {?} */
var groupValidatorInfo = this.getValidators(setting.validators);
fbG.setValidators(groupValidatorInfo.validatorFns);
fbG.setAsyncValidators(groupValidatorInfo.asyncValidatorFns);
this.cfFormGroup.setControl(propName, fbG);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
};
/**
* @private
* @return {?}
*/
FormComponent.prototype.setFormGroupValue = /**
* @private
* @return {?}
*/
function () {
var e_3, _a, e_4, _b;
try {
for (var _c = __values(Object.keys(this.cfFormSetting)), _d = _c.next(); !_d.done; _d = _c.next()) {
var propName = _d.value;
/** @type {?} */
var setting = this.cfFormSetting[propName];
try {
for (var _e = __values(setting.items), _f = _e.next(); !_f.done; _f = _e.next()) {
var item = _f.value;
/** @type {?} */
var value = this.data[item.name] || item.value || '';
if (setting.converter) {
value = setting.converter.to(value);
}
/** @type {?} */
var c = this.cfFormGroup.get([propName, item.name]);
c.setValue(value);
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
}
finally { if (e_4) throw e_4.error; }
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_3) throw e_3.error; }
}
};
/**
* @private
* @param {?} validators
* @return {?}
*/
FormComponent.prototype.getValidators = /**
* @private
* @param {?} validators
* @return {?}
*/
function (validators) {
var e_5, _a;
/** @type {?} */
var validatorFns = [];
/** @type {?} */
var asyncValidatorFns = [];
try {
for (var _b = __values(Object.keys(validators)), _c = _b.next(); !_c.done; _c = _b.next()) {
var key = _c.value;
/** @type {?} */
var v = validators[key];
if (v.isPromiseOrObservable) {
asyncValidatorFns.push((/** @type {?} */ (v.validator)));
}
else {
validatorFns.push((/** @type {?} */ (v.validator)));
}
}
}
catch (e_5_1) { e_5 = { error: e_5_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_5) throw e_5.error; }
}
return { validatorFns: validatorFns, asyncValidatorFns: asyncValidatorFns };
};
FormComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cf-form',
template: " <form *ngIf=\"isReady\"\n [class]=\"formClass\" \n [formGroup]=\"cfFormGroup\"\n [autocomplete]=\"autocomplete\"\n novalidate>\n\n <ng-content></ng-content>\n\n <!-- <div class=\"form-row\">\n <div class=\"form-group col-sm-10\">\n <a href=\"#\" class=\"btn btn-primary\" (click)=\"submit($event)\" [ngClass]=\"{'disabled': !(cfFormGroup.dirty && cfFormGroup.valid)}\">Submit</a>\n <a href=\"#\" class=\"btn btn-danger\" (click)=\"delete($event)\" [ngClass]=\"{'d-none': id===0}\">Delete</a>\n <a href=\"#\" class=\"btn btn-secondary\" (click)=\"goBack($event)\">Back</a>\n </div>\n </div> -->\n\n <div *ngIf=\"isDebug\">\n \n <hr /> \n cfFormGroup.value => {{cfFormGroup.value | json}} <br />\n cfFormGroup.valid => {{cfFormGroup.valid | json}} <br />\n cfFormGroup.touched => {{cfFormGroup.touched | json}} <br />\n cfFormGroup.dirty => {{cfFormGroup.dirty | json}}\n <hr />\n\n </div>\n\n </form>\n\n\n\n\n\n <!-- <form>\n <div class=\"form-group row\">\n <label for=\"inputEmail3\" class=\"col-sm-2 col-form-label\">Email</label>\n <div class=\"col-sm-10\">\n <input type=\"email\" class=\"form-control is-invalid\" id=\"inputEmail3\" placeholder=\"Email\">\n <small id=\"emailHelp\" class=\"form-text text-muted\">We'll never share your email with anyone else.</small>\n <small id=\"emailHelp\" class=\"form-text text-danger\">We'll never share your email with anyone else.</small>\n </div>\n </div>\n <div class=\"form-group row\">\n <label for=\"inputPassword3\" class=\"col-sm-2 col-form-label\">Password</label>\n <div class=\"col-sm-10\">\n <input type=\"password\" class=\"form-control\" id=\"inputPassword3\" placeholder=\"Password\">\n </div>\n </div>\n \n <fieldset class=\"form-group\">\n <div class=\"row\">\n <legend class=\"col-form-legend col-sm-2\">Radios</legend>\n <div class=\"col-sm-10\">\n <div class=\"form-check\">\n <label class=\"form-check-label\">\n <input class=\"form-check-input\" type=\"radio\" name=\"gridRadios\" id=\"gridRadios1\" value=\"option1\" checked> Option one is this and that—be sure to include why it's great\n </label>\n </div>\n <div class=\"form-check\">\n <label class=\"form-check-label\">\n <input class=\"form-check-input\" type=\"radio\" name=\"gridRadios\" id=\"gridRadios2\" value=\"option2\"> Option two can be something else and selecting it will deselect option one\n </label>\n </div>\n <div class=\"form-check disabled\">\n <label class=\"form-check-label\">\n <input class=\"form-check-input\" type=\"radio\" name=\"gridRadios\" id=\"gridRadios3\" value=\"option3\" disabled> Option three is disabled\n </label>\n </div>\n <small id=\"emailHelp\" class=\"form-text text-muted\">We'll never share your email with anyone else.</small>\n <small id=\"emailHelp\" class=\"form-text text-danger\">We'll never share your email with anyone else.</small>\n </div>\n\n </div>\n </fieldset>\n\n <div class=\"form-group row\">\n <div class=\"col-sm-2\">Checkbox</div>\n <div class=\"col-sm-10\">\n <div class=\"form-check\">\n <label class=\"form-check-label\">\n <input class=\"form-check-input\" type=\"checkbox\"> Check me out\n </label>\n </div>\n <div class=\"form-check\">\n <label class=\"form-check-label\">\n <input class=\"form-check-input\" type=\"checkbox\"> Check me out\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <div class=\"col-sm-2\">Example select</div>\n <div class=\"col-sm-10\">\n <select class=\"form-control is-invalid\" id=\"exampleFormControlSelect1\">\n <option>1</option>\n <option>2</option>\n <option>3</option>\n <option>4</option>\n <option>5</option>\n </select>\n <small id=\"emailHelp\" class=\"form-text text-muted\">We'll never share your email with anyone else.</small>\n <small id=\"emailHelp\" class=\"form-text text-danger\">We'll never share your email with anyone else.</small>\n </div>\n </div>\n <div class=\"form-group row\">\n <div class=\"col-sm-2\">Example multiple select</div>\n <div class=\"col-sm-10\">\n <select multiple class=\"form-control\" id=\"exampleFormControlSelect2\">\n <option>1</option>\n <option>2</option>\n <option>3</option>\n <option>4</option>\n <option>5</option>\n </select>\n <small id=\"emailHelp\" class=\"form-text text-muted\">We'll never share your email with anyone else.</small>\n <small id=\"emailHelp\" class=\"form-text text-danger\">We'll never share your email with anyone else.</small>\n </div>\n </div>\n <div class=\"form-group row\">\n <div class=\"col-sm-2\">Example textarea</div>\n <div class=\"col-sm-10\">\n <textarea class=\"form-control\" id=\"exampleFormControlTextarea1\" rows=\"5\"></textarea>\n <small id=\"emailHelp\" class=\"form-text text-muted\">We'll never share your email with anyone else.</small>\n <small id=\"emailHelp\" class=\"form-text text-danger\">We'll never share your email with anyone else.</small>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <div class=\"col-sm-10\">\n <a href=\"#\" class=\"btn btn-primary\">Submit</a>\n <a href=\"#\" class=\"btn btn-secondary\">Reset</a>\n <a href=\"#\" class=\"btn btn-secondary\" (click)=\"goBack($event)\">Back</a>\n </div>\n </div>\n\n\n </form> -->\n",
providers: [USER_PROFILE_VALUE_ACCESSOR],
styles: [""]
}] }
];
/** @nocollapse */
FormComponent.ctorParameters = function () { return [
{ type: forms.FormBuilder }
]; };
FormComponent.propDecorators = {
autocomplete: [{ type: core.Input }],
cfFormSetting: [{ type: core.Input }],
cfFormGroup: [{ type: core.Input }],
formClass: [{ type: core.Input }],
isDebug: [{ type: core.Input }],
cfFormReady: [{ type: core.Output }]
};
return FormComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var CheckboxComponent = /** @class */ (function (_super) {
__extends(CheckboxComponent, _super);
function CheckboxComponent() {
var _this = _super.call(this) || this;
_this.isMultiple = true;
_this.result = [];
return _this;
}
/**
* @return {?}
*/
CheckboxComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
_super.prototype.ngOnInit.call(this);
this.cfForm.onReady().subscribe((/**
* @return {?}
*/
function () {
_this.setData();
}));
return [2 /*return*/];
});
});
};
/**
* @return {?}
*/
CheckboxComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
_super.prototype.ngOnDestroy.call(this);
};
/**
* @private
* @return {?}
*/
CheckboxComponent.prototype.setData = /**
* @private
* @return {?}
*/
function () {
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 {?}
*/
CheckboxComponent.prototype.chagne = /**
* @param {?} event
* @param {?} cb
* @param {?} value
* @return {?}
*/
function (event, cb, value) {
event.preventDefault();
event.stopPropagation();
/** @type {?} */
var 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 {?} */
var v = this.result.filter((/**
* @param {?} a
* @return {?}
*/
function (a) { return a; })).join(',');
this.elem.setValue(v);
this.elem.markAsDirty();
};
CheckboxComponent.decorators = [
{ type: core.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 = function () { return []; };
CheckboxComponent.propDecorators = {
propName: [{ type: core.Input }],
isMultiple: [{ type: core.Input }]
};
return CheckboxComponent;
}(BaseInput));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ConfirmPasswordComponent = /** @class */ (function (_super) {
__extends(ConfirmPasswordComponent, _super);
function ConfirmPasswordComponent() {
return _super.call(this) || this;
}
/**
* @return {?}
*/
ConfirmPasswordComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
this.groupElemValidators = this.cfFormSetting[this.propName].validators;
this.setComponentNotify();
};
/**
* @return {?}
*/
ConfirmPasswordComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
_super.prototype.ngOnDestroy.call(this);
this.ob.unsubscribe();
};
/**
* @private
* @return {?}
*/
ConfirmPasswordComponent.prototype.setComponentNotify = /**
* @private
* @return {?}
*/
function () {
var _this = this;
this.ob = this.groupElem.statusChanges
.subscribe((/**
* @param {?} a
* @return {?}
*/
function (a) {
var e_1, _a;
/** @type {?} */
var isValid = a === 'VALID';
/** @type {?} */
var vKey = _this.propName + "_";
if (!isValid && _this.groupElem.errors) {
/** @type {?} */
var errorObj = {};
try {
for (var _b = __values(Object.keys(_this.groupElem.errors)), _c = _b.next(); !_c.done; _c = _b.next()) {
var key = _c.value;
errorObj[key] = {
msg: _this.groupElemValidators[key].msg,
dirty: _this.groupElem.dirty,
};
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
_this.cfForm.notifyValidatedInfo(vKey, false, errorObj);
}
if (isValid) {
_this.cfForm.notifyValidatedInfo(vKey, true);
}
}));
};
ConfirmPasswordComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cf-inputs-confirm-password',
template: "<ng-container [formGroup]=\"cfFormGroup\">\n <ng-container [formGroupName]=\"propName\">\n <ng-container *ngIf=\"{ \n elem: cfFormGroup.get(propName) \n }; let gInfo\">\n\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\n <div class=\"form-group\">\n <label [for]=\"item.name\" *ngIf=\"item.args['alias']\">{{item.args['alias']}}</label>\n <input type=\"password\" \n class=\"form-control\" \n [formControlName]=\"item.name\"\n [id]=\"item.name\"\n [placeholder]=\"item.args['placeholder']\"\n [ngClass]=\"{'is-invalid': info.elem.dirty && info.elem.errors && info.elem.invalid }\">\n \n <small class=\"form-text text-muted\" *ngIf=\"item.args['murmur']\">\n {{item.args['murmur']}}\n </small>\n\n <ng-container *ngIf=\"info.elem.dirty && info.elem.errors && info.elem.invalid\">\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 </div>\n\n <!-- <hr />\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\n <ng-container *ngIf=\"isShowErrorMsg && gInfo.elem.dirty && gInfo.elem.errors && gInfo.elem.invalid\">\n <small class=\"form-text text-danger\" *ngFor=\"let vName of ObjectUtil.keys(gInfo.elem.errors)\">\n {{cfFormSetting[propName].validators[vName].msg}}\n </small>\n </ng-container>\n\n <!-- <hr />\n gInfo.elem.invalid: {{ gInfo.elem.invalid | json }} <br />\n gInfo.elem.dirty: {{ gInfo.elem.dirty | json }} <br />\n gInfo.elem.errors: {{ gInfo.elem.errors | json }} <br />\n gInfo.elem.value: {{ gInfo.elem.value | json }}\n <hr /> -->\n\n </ng-container>\n\n </ng-container>\n</ng-container>\n\n",
styles: [""]
}] }
];
/** @nocollapse */
ConfirmPasswordComponent.ctorParameters = function () { return []; };
ConfirmPasswordComponent.propDecorators = {
propName: [{ type: core.Input }]
};
return ConfirmPasswordComponent;
}(BaseInput));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var HiddenComponent = /** @class */ (function (_super) {
__extends(HiddenComponent, _super);
function HiddenComponent() {
return _super.call(this) || this;
}
/**
* @return {?}
*/
HiddenComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @return {?}
*/
HiddenComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
_super.prototype.ngOnDestroy.call(this);
};
HiddenComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cf-inputs-hidden',
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 \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 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>",
styles: [""]
}] }
];
/** @nocollapse */
HiddenComponent.ctorParameters = function () { return []; };
HiddenComponent.propDecorators = {
propName: [{ type: core.Input }]
};
return HiddenComponent;
}(BaseInput));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var RadioComponent = /** @class */ (function (_super) {
__extends(RadioComponent, _super);
function RadioComponent() {
return _super.call(this) || this;
}
/**
* @return {?}
*/
RadioComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @return {?}
*/
RadioComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
_super.prototype.ngOnDestroy.call(this);
};
RadioComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cf-inputs-radio',
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\n <label [for]=\"item.name\" *ngIf=\"item.args['alias']\">{{item.args['alias']}}</label>\n <div class=\"d-block rl-list\">\n <div class=\"form-check form-check-inline\" *ngFor=\"let c of item.args['options']\">\n <label class=\"form-check-label\">\n <input type=\"radio\"\n class=\"form-check-input\" \n name=\"{{item.name}}\"\n value=\"{{c.value}}\"\n [formControlName]=\"item.name\"\n [checked]=\"(info.elem.value===c.value)\">\n {{c.text}}\n </label>\n </div>\n </div>\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 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>",
styles: [".rl-list{margin-bottom:-.5rem}"]
}] }
];
/** @nocollapse */
RadioComponent.ctorParameters = function () { return []; };
RadioComponent.propDecorators = {
propName: [{ type: core.Input }]
};
return RadioComponent;
}(BaseInput));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var SelectComponent = /** @class */ (function (_super) {
__extends(SelectComponent, _super);
function SelectComponent() {
return _super.call(this) || this;
}
/**
* @return {?}
*/
SelectComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @return {?}
*/
SelectComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
_super.prototype.ngOnDestroy.call(this);
};
SelectComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cf-inputs-select',
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 <select \n [class]=\"inputClass\" \n [id]=\"item.name\"\n [formControlName]=\"item.name\"\n [ngClass]=\"{ 'is-invalid': info.elem.dirty && info.elem.errors }\">\n <option *ngFor=\"let c of item.args['options']\" [value]=\"c.value\">{{c.text}}</option>\n </select>\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 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>",
styles: [""]
}] }
];
/** @nocollapse */
SelectComponent.ctorParameters = function () { return []; };
SelectComponent.propDecorators = {
propName: [{ type: core.Input }],
inputClass: [{ type: core.Input }]
};
return SelectComponent;
}(BaseInput));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var TextComponent = /** @class */ (function (_super) {
__extends(TextComponent, _super);
function TextComponent() {
var _this = _super.call(this) || this;
_this.isReadOnly = false;
_this.type = 'text';
return _this;
}
/**
* @return {?}
*/
TextComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @return {?}
*/
TextComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
_super.prototype.ngOnDestroy.call(this);
};
TextComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cf-inputs-text',
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 <input \n [type]=\"type\" \n [class]=\"inputClass\" \n [id]=\"item.name\" \n [placeholder]=\"item.args['placeholder']\"\n [formControlName]=\"item.name\" \n [ngClass]=\"{ 'is-invalid': info.elem.dirty && info.elem.errors }\"\n [readonly]=\"isReadOnly\"\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 errorKeys: {{ObjectUtil.keys(info.elem.errors || {})}} <br />\n info.elem.dirty && info.elem.errors: {{(info.elem.dirty && info.elem.errors) | 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>",
styles: [""]
}] }
];
/** @nocollapse */
TextComponent.ctorParameters = function () { return []; };
TextComponent.propDecorators = {
isReadOnly: [{ type: core.Input }],
type: [{ type: core.Input }],
inputClass: [{ type: core.Input }],
propName: [{ type: core.Input }]
};
return TextComponent;
}(BaseInput));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var TextareaComponent = /** @class */ (function (_super) {
__extends(TextareaComponent, _super);
function TextareaComponent() {
var _this = _super.call(this) || this;
_this.rows = 3;
_this.isReadOnly = false;
return _this;
}
/**
* @return {?}
*/
TextareaComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @return {?}
*/
TextareaComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
_super.prototype.ngOnDestroy.call(this);
};
TextareaComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cf-inputs-textarea',
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 <textarea\n [class]=\"inputClass\"\n [id]=\"item.name\" \n [placeholder]=\"item.args['placeholder']\"\n [formControlName]=\"item.name\" \n [ngClass]=\"{ 'is-invalid': info.elem.dirty && info.elem.errors }\"\n [readonly]=\"isReadOnly\"\n [rows]=\"rows\"\n ></textarea>\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 errorKeys: {{ObjectUtil.keys(info.elem.errors || {})}} <br />\n info.elem.dirty && info.elem.errors: {{(info.elem.dirty && info.elem.errors) | 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>",
styles: [""]
}] }
];
/** @nocollapse */
TextareaComponent.ctorParameters = function () { return []; };
TextareaComponent.propDecorators = {
rows: [{ type: core.Input }],
isReadOnly: [{ type: core.Input }],
inputClass: [{ type: core.Input }],
propName: [{ type: core.Input }]
};
return TextareaComponent;
}(BaseInput));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxConfigFormModule = /** @class */ (function () {
function NgxConfigFormModule() {
}
NgxConfigFormModule.decorators = [
{ type: core.NgModule, args: [{
declarations: [
CheckboxComponent,
ConfirmPasswordComponent,
HiddenComponent,
RadioComponent,
SelectComponent,
TextComponent,
TextareaComponent,
ButtonComponent,
FormComponent
],
imports: [
common.CommonModule,
forms.ReactiveFormsModule,
forms.FormsModule
],
exports: [
CheckboxComponent,
ConfirmPasswordComponent,
HiddenComponent,
RadioComponent,
SelectComponent,
TextComponent,
TextareaComponent,
ButtonComponent,
FormComponent
]
},] }
];
return NgxConfigFormModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
// @dynamic
var
// @dynamic
CfValidators = /** @class */ (function () {
function CfValidators() {
}
/**
* @param {?} passwordName
* @param {?} confirmPasswordName
* @return {?}
*/
CfValidators.confirmPassword = /**
* @param {?} passwordName
* @param {?} confirmPasswordName
* @return {?}
*/
function (passwordName, confirmPasswordName) {
return (/**
* @param {?} c
* @return {?}
*/
function (c) {
if (!c.dirty) {
return null;
}
/** @type {?} */
var password = c.get(passwordName);
/** @type {?} */
var confirmPassword = c.get(confirmPasswordName);
if (password.value === confirmPassword.value) {
return null;
}
/** @type {?} */
var errObj = { confirmPassword: true };
return errObj;
});
};
/**
* @param {...?} childrenNames
* @return {?}
*/
CfValidators.groupRequired = /**
* @param {...?} childrenNames
* @return {?}
*/
function () {
var childrenNames = [];
for (var _i = 0; _i < arguments.length; _i++) {
childrenNames[_i] = arguments[_i];
}
return (/**
* @param {?} c
* @return {?}
*/
function (c) {
var e_1, _a;
if (!c.dirty) {
return null;
}
/** @type {?} */
var arr = [];
try {
for (var childrenNames_1 = __values(childrenNames), childrenNames_1_1 = childrenNames_1.next(); !childrenNames_1_1.done; childrenNames_1_1 = childrenNames_1.next()) {
var name_1 = childrenNames_1_1.value;
arr.push(c.get(name_1));
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (childrenNames_1_1 && !childrenNames_1_1.done && (_a = childrenNames_1.return)) _a.call(childrenNames_1);
}
finally { if (e_1) throw e_1.error; }
}
/** @type {?} */
var emptyElemCount = arr.filter((/**
* @param {?} a
* @return {?}
*/
function (a) { return !a.value; })).length;
if (emptyElemCount === 0) {
return null;
}
/** @type {?} */
var errObj = { groupRequired: true };
return errObj;
});
};
/**
* @param {?} errClassName
* @param {?} regExp
* @return {?}
*/
CfValidators.pattern = /**
* @param {?} errClassName
* @param {?} regExp
* @return {?}
*/
function (errClassName, regExp) {
return (/**
* @param {?} c
* @return {?}
*/
function (c) {
if (!c.dirty) {
return null;
}
if (!c.value) {
return null;
}
/** @type {?} */
var isValid = regExp.test(c.value);
if (isValid) {
return null;
}
/** @type {?} */
var errObj = {};
errObj[errClassName] = true;
return errObj;
});
};
/**
* @param {?} errClassName
* @param {?} debounce
* @param {?} fn
* @return {?}
*/
CfValidators.AsyncValidate = /**
* @param {?} errClassName
* @param {?} debounce
* @param {?} fn
* @return {?}
*/
function (errClassName, debounce, fn) {
var _this = this;
return (/**
* @param {?} c
* @return {?}
*/
function (c) {
if (!c.dirty) {
return rxjs.of(null);
}
/** @type {?} */
var $ob = c.valueChanges.pipe(operators.debounceTime(debounce), operators.switchMap((/**
* @param {?} v
* @return {?}
*/
function (v) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fn(v)];
case 1: return [2 /*return*/, _a.sent()];
}
}); }); })), operators.map((/**
* @param {?} isValid
* @return {?}
*/
function (isValid) {
if (isValid) {
return null;
}
/** @type {?} */
var errObj = {};
errObj[errClassName] = true;
return errObj;
})), operators.first());
return $ob;
});
};
return CfValidators;
}());
exports.BaseInput = BaseInput;
exports.CfValidators = CfValidators;
exports.NgxConfigFormModule = NgxConfigFormModule;
exports.Utils = Utils;
exports.ɵa = CheckboxComponent;
exports.ɵb = ConfirmPasswordComponent;
exports.ɵc = HiddenComponent;
exports.ɵd = RadioComponent;
exports.ɵe = SelectComponent;
exports.ɵf = TextComponent;
exports.ɵg = TextareaComponent;
exports.ɵh = ButtonComponent;
exports.ɵi = FormComponent;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=ngx-config-form.umd.js.map