ngx-schema-forms
Version:
New features: - Ajv schema validator. - Angular forms compatible: Property tree is created using FormGroup, FormArray and FormControl classes. - Array now properly loads initial data from model. - WidgetTyep: WidgetRegistry now supports WidgetType, now wo
173 lines (172 loc) • 13.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { FormArray } from '@angular/forms';
import { FormPropertyErrors } from './form-property-errors';
import { ControlProperty } from './control-property';
var ArrayProperty = /** @class */ (function (_super) {
tslib_1.__extends(ArrayProperty, _super);
function ArrayProperty(formPropertyFactory, path, schema) {
var _this = _super.call(this, []) || this;
_this.formPropertyFactory = formPropertyFactory;
_this.path = path;
_this.schema = schema;
return _this;
}
/**
* @return {?}
*/
ArrayProperty.prototype._updateValue = /**
* @return {?}
*/
function () {
var _this = this;
// to avoid ts complaints
_super.prototype['_updateValue'].call(this);
this.nonEmptyValue = this.controls
.filter(function (control) {
/** @type {?} */
var enabled = control.enabled || _this.disabled;
return control.nonEmptyValue !== undefined && enabled;
})
.map(function (control) { return control.value; });
};
/**
* @return {?}
*/
ArrayProperty.prototype.getErrors = /**
* @return {?}
*/
function () {
/** @type {?} */
var aggregatedErrors = this.controls
.reduce(function (errors, property) {
/** @type {?} */
var propertyErrors = property.getErrors();
if (!propertyErrors) {
return errors;
}
return Object.assign(errors, propertyErrors.errors);
}, {});
if (this.errors) {
aggregatedErrors[this.path] = this.errors;
}
if (!Object.keys(aggregatedErrors).length) {
return null;
}
return new FormPropertyErrors(aggregatedErrors);
};
/**
* @param {?} value
* @param {?=} options
* @return {?}
*/
ArrayProperty.prototype.patchValue = /**
* @param {?} value
* @param {?=} options
* @return {?}
*/
function (value, options) {
var _this = this;
if (options === void 0) { options = {}; }
value.forEach(function (newValue, index) {
_this.addPropertyAt(index);
if (_this.at(index)) {
_this.at(index).patchValue(newValue, { onlySelf: true, emitEvent: options.emitEvent });
}
});
this.updateValueAndValidity(options);
};
/**
* @return {?}
*/
ArrayProperty.prototype.addProperty = /**
* @return {?}
*/
function () {
/** @type {?} */
var property = this.getPropertyFromSchemaItems();
_super.prototype.push.call(this, property);
property.bindVisibility();
};
/**
* @param {?} index
* @return {?}
*/
ArrayProperty.prototype.addPropertyAt = /**
* @param {?} index
* @return {?}
*/
function (index) {
/** @type {?} */
var property = this.getPropertyFromSchemaItems();
this.insert(index, property);
property.bindVisibility();
};
/**
* @return {?}
*/
ArrayProperty.prototype.bindVisibility = /**
* @return {?}
*/
function () {
_super.prototype.bindVisibility.call(this);
this.controls.forEach(function (control) {
control.bindVisibility();
});
};
/**
* @param {?} fn
* @param {?=} opts
* @return {?}
*/
ArrayProperty.prototype.forEach = /**
* @param {?} fn
* @param {?=} opts
* @return {?}
*/
function (fn, opts) {
if (opts === void 0) { opts = { includeSelf: true }; }
if (opts.includeSelf) {
fn(this);
}
try {
for (var _a = tslib_1.__values(this.controls), _b = _a.next(); !_b.done; _b = _a.next()) {
var control = _b.value;
/** @type {?} */
var property = /** @type {?} */ (control);
if (property.forEach instanceof Function) {
property.forEach(fn, { includeSelf: true });
continue;
}
fn(property);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
}
finally { if (e_1) throw e_1.error; }
}
var e_1, _c;
};
/**
* @return {?}
*/
ArrayProperty.prototype.getPropertyFromSchemaItems = /**
* @return {?}
*/
function () {
return this.formPropertyFactory.createProperty(this.schema["items"], this);
};
return ArrayProperty;
}(ControlProperty(FormArray)));
export { ArrayProperty };
if (false) {
/** @type {?} */
ArrayProperty.prototype.formPropertyFactory;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktcHJvcGVydHkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtc2NoZW1hLWZvcm1zLyIsInNvdXJjZXMiOlsibGliL21vZGVsL2FycmF5LXByb3BlcnR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUk3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJckQsSUFBQTtJQUFtQyx5Q0FBMEI7SUFFM0QsdUJBQ1UscUJBQ1IsSUFBWSxFQUNaLE1BQWM7UUFIaEIsWUFLRSxrQkFBTSxFQUFFLENBQUMsU0FHVjtRQVBTLHlCQUFtQixHQUFuQixtQkFBbUI7UUFLM0IsS0FBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsS0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7O0tBQ3RCOzs7O0lBRUQsb0NBQVk7OztJQUFaO1FBQUEsaUJBVUM7O1FBUkMsaUJBQU0sY0FBYyxDQUFDLFdBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRO2FBQy9CLE1BQU0sQ0FBQyxVQUFDLE9BQXFCOztZQUM1QixJQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUM7WUFDakQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQztTQUN2RCxDQUFDO2FBQ0QsR0FBRyxDQUFDLFVBQUMsT0FBTyxJQUFLLE9BQUEsT0FBTyxDQUFDLEtBQUssRUFBYixDQUFhLENBQUMsQ0FBQztLQUNwQzs7OztJQUVELGlDQUFTOzs7SUFBVDs7UUFFRSxJQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRO2FBQ25DLE1BQU0sQ0FBQyxVQUFDLE1BQU0sRUFBRSxR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QUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUM1QyxRQUFRLENBQUM7aUJBQ1Y7Z0JBRUQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2Q7Ozs7Ozs7Ozs7S0FDRjs7OztJQUVPLGtEQUEwQjs7OztRQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FDNUMsSUFBSSxDQUFDLE1BQU0sV0FDWCxJQUFJLENBQ0wsQ0FBQzs7d0JBdEhOO0VBVW1DLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUErRzVELENBQUE7QUEvR0QseUJBK0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUFycmF5LCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBTY2hlbWEgfSBmcm9tICcuLi9zY2hlbWEnO1xuaW1wb3J0IHsgRm9ybVByb3BlcnR5IH0gZnJvbSAnLi9mb3JtLXByb3BlcnR5JztcbmltcG9ydCB7IEZvcm1Qcm9wZXJ0eUVycm9ycyB9IGZyb20gJy4vZm9ybS1wcm9wZXJ0eS1lcnJvcnMnO1xuaW1wb3J0IHsgRm9ybVByb3BlcnR5RmFjdG9yeSB9IGZyb20gJy4vZm9ybS1wcm9wZXJ0eS1mYWN0b3J5JztcbmltcG9ydCB7IENvbnRyb2xQcm9wZXJ0eSB9IGZyb20gJy4vY29udHJvbC1wcm9wZXJ0eSc7XG5pbXBvcnQgeyBHcm91cFByb3BlcnR5IH0gZnJvbSAnLi9ncm91cC1wcm9wZXJ0eSc7XG5cblxuZXhwb3J0IGNsYXNzIEFycmF5UHJvcGVydHkgZXh0ZW5kcyBDb250cm9sUHJvcGVydHkoRm9ybUFycmF5KSBpbXBsZW1lbnRzIEdyb3VwUHJvcGVydHkge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybVByb3BlcnR5RmFjdG9yeTogRm9ybVByb3BlcnR5RmFjdG9yeSxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFcbiAgKSB7XG4gICAgc3VwZXIoW10pO1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICBfdXBkYXRlVmFsdWUoKSB7XG4gICAgLy8gdG8gYXZvaWQgdHMgY29tcGxhaW50c1xuICAgIHN1cGVyWydfdXBkYXRlVmFsdWUnXSgpO1xuXG4gICAgdGhpcy5ub25FbXB0eVZhbHVlID0gdGhpcy5jb250cm9sc1xuICAgICAgLmZpbHRlcigoY29udHJvbDogRm9ybVByb3BlcnR5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVuYWJsZWQgPSBjb250cm9sLmVuYWJsZWQgfHwgdGhpcy5kaXNhYmxlZDtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2wubm9uRW1wdHlWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGVuYWJsZWQ7XG4gICAgICB9KVxuICAgICAgLm1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZSk7XG4gIH1cblxuICBnZXRFcnJvcnMoKTogRm9ybVByb3BlcnR5RXJyb3JzIHwgbnVsbCB7XG5cbiAgICBjb25zdCBhZ2dyZWdhdGVkRXJyb3JzID0gdGhpcy5jb250cm9sc1xuICAgICAgLnJlZHVjZSgoZXJyb3JzLCBwcm9wZXJ0eTogRm9ybVByb3BlcnR5KSA9PiB7XG5cbiAgICAgICAgY29uc3QgcHJvcGVydHlFcnJvcnMgPSBwcm9wZXJ0eS5nZXRFcnJvcnMoKTtcbiAgICAgICAgaWYgKCFwcm9wZXJ0eUVycm9ycykge1xuICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihlcnJvcnMsIHByb3BlcnR5RXJyb3JzLmVycm9ycyk7XG5cbiAgICAgIH0sIHt9KTtcblxuICAgIGlmICh0aGlzLmVycm9ycykge1xuICAgICAgYWdncmVnYXRlZEVycm9yc1t0aGlzLnBhdGhdID0gdGhpcy5lcnJvcnM7XG4gICAgfVxuXG4gICAgaWYgKCFPYmplY3Qua2V5cyhhZ2dyZWdhdGVkRXJyb3JzKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRm9ybVByb3BlcnR5RXJyb3JzKGFnZ3JlZ2F0ZWRFcnJvcnMpO1xuICB9XG5cbiAgcGF0Y2hWYWx1ZShcbiAgICB2YWx1ZTogYW55W10sXG4gICAgb3B0aW9uczoge29ubHlTZWxmPzogYm9vbGVhbiwgZW1pdEV2ZW50PzogYm9vbGVhbn0gPSB7fVxuICApIHtcbiAgICB2YWx1ZS5mb3JFYWNoKChuZXdWYWx1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG5cbiAgICAgIHRoaXMuYWRkUHJvcGVydHlBdChpbmRleCk7XG5cbiAgICAgIGlmICh0aGlzLmF0KGluZGV4KSkge1xuICAgICAgICB0aGlzLmF0KGluZGV4KS5wYXRjaFZhbHVlKFxuICAgICAgICAgIG5ld1ZhbHVlLFxuICAgICAgICAgIHsgb25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogb3B0aW9ucy5lbWl0RXZlbnQgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFByb3BlcnR5KCkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5nZXRQcm9wZXJ0eUZyb21TY2hlbWFJdGVtcygpO1xuICAgIHN1cGVyLnB1c2gocHJvcGVydHkpO1xuICAgIHByb3BlcnR5LmJpbmRWaXNpYmlsaXR5KCk7XG4gIH1cblxuICBhZGRQcm9wZXJ0eUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0UHJvcGVydHlGcm9tU2NoZW1hSXRlbXMoKTtcbiAgICB0aGlzLmluc2VydChpbmRleCwgcHJvcGVydHkpO1xuICAgIHByb3BlcnR5LmJpbmRWaXNpYmlsaXR5KCk7XG4gIH1cblxuICBiaW5kVmlzaWJpbGl0eSgpIHtcbiAgICBzdXBlci5iaW5kVmlzaWJpbGl0eSgpO1xuXG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKChjb250cm9sOiBGb3JtUHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnRyb2wuYmluZFZpc2liaWxpdHkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZvckVhY2goZm46IChwcm9wZXJ0eTogRm9ybVByb3BlcnR5KSA9PiB2b2lkLCBvcHRzID0geyBpbmNsdWRlU2VsZjogdHJ1ZSB9KSB7XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlU2VsZikge1xuICAgICAgZm4odGhpcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuY29udHJvbHMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gPEdyb3VwUHJvcGVydHk+Y29udHJvbDtcbiAgICAgIGlmIChwcm9wZXJ0eS5mb3JFYWNoIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgcHJvcGVydHkuZm9yRWFjaChmbiwgeyBpbmNsdWRlU2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGZuKHByb3BlcnR5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByb3BlcnR5RnJvbVNjaGVtYUl0ZW1zKCk6IEZvcm1Qcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVByb3BlcnR5RmFjdG9yeS5jcmVhdGVQcm9wZXJ0eShcbiAgICAgIHRoaXMuc2NoZW1hLml0ZW1zLFxuICAgICAgdGhpc1xuICAgICk7XG4gIH1cblxufVxuXG5cbiJdfQ==