UNPKG

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
/** * @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==