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

114 lines (113 loc) 10.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { FormGroup } from '@angular/forms'; import { FormPropertyErrors } from './form-property-errors'; import { ControlProperty } from './control-property'; var ObjectProperty = /** @class */ (function (_super) { tslib_1.__extends(ObjectProperty, _super); function ObjectProperty(path, schema) { var _this = _super.call(this, {}) || this; _this.path = path; _this.schema = schema; return _this; } /** * @return {?} */ ObjectProperty.prototype._updateValue = /** * @return {?} */ function () { var _this = this; // to avoid ts complaints _super.prototype['_updateValue'].call(this); this.nonEmptyValue = this['_reduceChildren']({}, function (result, control, name) { if (control.nonEmptyValue === undefined) { return result; } if (control.enabled || _this.disabled) { result[name] = control.nonEmptyValue; } return result; }); }; /** * @return {?} */ ObjectProperty.prototype.getErrors = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var aggregatedErrors = Object.keys(this.controls) .reduce(function (errors, key) { /** @type {?} */ var property = /** @type {?} */ (_this.controls[key]); /** @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); }; /** * @return {?} */ ObjectProperty.prototype.bindVisibility = /** * @return {?} */ function () { _super.prototype.bindVisibility.call(this); for (var key in this.controls) { if (this.controls.hasOwnProperty(key)) { (/** @type {?} */ (this.controls[key])).bindVisibility(); } } }; /** * @param {?} fn * @param {?=} opts * @return {?} */ ObjectProperty.prototype.forEach = /** * @param {?} fn * @param {?=} opts * @return {?} */ function (fn, opts) { if (opts === void 0) { opts = { includeSelf: true }; } if (opts.includeSelf) { fn(this); } for (var key in this.controls) { if (this.controls.hasOwnProperty(key)) { /** @type {?} */ var property = (/** @type {?} */ (this.controls[key])); if (property.forEach instanceof Function) { property.forEach(fn, { includeSelf: true }); continue; } fn(property); } } }; return ObjectProperty; }(ControlProperty(FormGroup))); export { ObjectProperty }; if (false) { /** @type {?} */ ObjectProperty.prototype.fieldsetWidgetInstance; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXByb3BlcnR5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXNjaGVtYS1mb3Jtcy8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbC9vYmplY3QtcHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBSTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdyRCxJQUFBO0lBQW9DLDBDQUEwQjtJQUk1RCx3QkFBWSxJQUFZLEVBQUUsTUFBYztRQUF4QyxZQUNFLGtCQUFNLEVBQUUsQ0FBQyxTQUdWO1FBRkMsS0FBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsS0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7O0tBQ3RCOzs7O0lBRUQscUNBQVk7OztJQUFaO1FBQUEsaUJBb0JDOztRQWxCQyxpQkFBTSxjQUFjLENBQUMsV0FBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQzFDLEVBQUUsRUFDRixVQUNFLE1BQXFDLEVBQ3JDLE9BQXFCLEVBQ3JCLElBQVk7WUFFWixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyxNQUFNLENBQUM7YUFDZjtZQUNELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO2FBQ3RDO1lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUNmLENBQ0YsQ0FBQztLQUVIOzs7O0lBRUQsa0NBQVM7OztJQUFUO1FBQUEsaUJBdUJDOztRQXJCQyxJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNoRCxNQUFNLENBQUMsVUFBQyxNQUFNLEVBQUUsR0FBVzs7WUFDMUIsSUFBTSxRQUFRLHFCQUFpQixLQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFDOztZQUVsRCxJQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDO2FBQ2Y7WUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JELEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFVCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMzQztRQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxDQUFDLElBQUksa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUNqRDs7OztJQUVELHVDQUFjOzs7SUFBZDtRQUNFLGlCQUFNLGNBQWMsV0FBRSxDQUFDO1FBRXZCLEdBQUcsQ0FBQyxDQUFDLElBQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEMsbUJBQWUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3JEO1NBQ0Y7S0FDRjs7Ozs7O0lBRUQsZ0NBQU87Ozs7O0lBQVAsVUFBUSxFQUFvQyxFQUFFLElBQTRCO1FBQTVCLHFCQUFBLEVBQUEsU0FBUyxXQUFXLEVBQUUsSUFBSSxFQUFFO1FBRXhFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNWO1FBRUQsR0FBRyxDQUFDLENBQUMsSUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDaEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOztnQkFDdEMsSUFBTSxRQUFRLEdBQUcsbUJBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQztnQkFFckQsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sWUFBWSxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUN6QyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUM1QyxRQUFRLENBQUM7aUJBQ1Y7Z0JBRUQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2Q7U0FDRjtLQUNGO3lCQTlGSDtFQVNvQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBdUY3RCxDQUFBO0FBdkZELDBCQXVGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgU2NoZW1hIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB7IEZvcm1Qcm9wZXJ0eSB9IGZyb20gJy4vZm9ybS1wcm9wZXJ0eSc7XG5pbXBvcnQgeyBGb3JtUHJvcGVydHlFcnJvcnMgfSBmcm9tICcuL2Zvcm0tcHJvcGVydHktZXJyb3JzJztcbmltcG9ydCB7IEZvcm1Qcm9wZXJ0eUZhY3RvcnkgfSBmcm9tICcuL2Zvcm0tcHJvcGVydHktZmFjdG9yeSc7XG5pbXBvcnQgeyBDb250cm9sUHJvcGVydHkgfSBmcm9tICcuL2NvbnRyb2wtcHJvcGVydHknO1xuaW1wb3J0IHsgR3JvdXBQcm9wZXJ0eSB9IGZyb20gJy4vZ3JvdXAtcHJvcGVydHknO1xuXG5leHBvcnQgY2xhc3MgT2JqZWN0UHJvcGVydHkgZXh0ZW5kcyBDb250cm9sUHJvcGVydHkoRm9ybUdyb3VwKSBpbXBsZW1lbnRzIEdyb3VwUHJvcGVydHkge1xuXG4gIGZpZWxkc2V0V2lkZ2V0SW5zdGFuY2U6IGFueTtcblxuICBjb25zdHJ1Y3RvcihwYXRoOiBzdHJpbmcsIHNjaGVtYTogU2NoZW1hKSB7XG4gICAgc3VwZXIoe30pO1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICBfdXBkYXRlVmFsdWUoKSB7XG4gICAgLy8gdG8gYXZvaWQgdHMgY29tcGxhaW50c1xuICAgIHN1cGVyWydfdXBkYXRlVmFsdWUnXSgpO1xuICAgIHRoaXMubm9uRW1wdHlWYWx1ZSA9IHRoaXNbJ19yZWR1Y2VDaGlsZHJlbiddKFxuICAgICAge30sXG4gICAgICAoXG4gICAgICAgIHJlc3VsdDoge1trZXk6IHN0cmluZ106IEZvcm1Qcm9wZXJ0eX0sXG4gICAgICAgIGNvbnRyb2w6IEZvcm1Qcm9wZXJ0eSxcbiAgICAgICAgbmFtZTogc3RyaW5nXG4gICAgICApID0+IHtcbiAgICAgICAgaWYgKGNvbnRyb2wubm9uRW1wdHlWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udHJvbC5lbmFibGVkIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICByZXN1bHRbbmFtZV0gPSBjb250cm9sLm5vbkVtcHR5VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICApO1xuXG4gIH1cblxuICBnZXRFcnJvcnMoKTogRm9ybVByb3BlcnR5RXJyb3JzIHwgbnVsbCB7XG5cbiAgICBjb25zdCBhZ2dyZWdhdGVkRXJyb3JzID0gT2JqZWN0LmtleXModGhpcy5jb250cm9scylcbiAgICAgIC5yZWR1Y2UoKGVycm9ycywga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSA8Rm9ybVByb3BlcnR5PnRoaXMuY29udHJvbHNba2V5XTtcblxuICAgICAgICBjb25zdCBwcm9wZXJ0eUVycm9ycyA9IHByb3BlcnR5LmdldEVycm9ycygpO1xuICAgICAgICBpZiAoIXByb3BlcnR5RXJyb3JzKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGVycm9ycywgcHJvcGVydHlFcnJvcnMuZXJyb3JzKTtcbiAgICAgIH0sIHt9KTtcblxuICAgIGlmICh0aGlzLmVycm9ycykge1xuICAgICAgYWdncmVnYXRlZEVycm9yc1t0aGlzLnBhdGhdID0gdGhpcy5lcnJvcnM7XG4gICAgfVxuXG4gICAgaWYgKCFPYmplY3Qua2V5cyhhZ2dyZWdhdGVkRXJyb3JzKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRm9ybVByb3BlcnR5RXJyb3JzKGFnZ3JlZ2F0ZWRFcnJvcnMpO1xuICB9XG5cbiAgYmluZFZpc2liaWxpdHkoKSB7XG4gICAgc3VwZXIuYmluZFZpc2liaWxpdHkoKTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29udHJvbHMpIHtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgKDxGb3JtUHJvcGVydHk+dGhpcy5jb250cm9sc1trZXldKS5iaW5kVmlzaWJpbGl0eSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvckVhY2goZm46IChwcm9wZXJ0eTogRm9ybVByb3BlcnR5KSA9PiB2b2lkLCBvcHRzID0geyBpbmNsdWRlU2VsZjogdHJ1ZSB9KSB7XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlU2VsZikge1xuICAgICAgZm4odGhpcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jb250cm9scykge1xuICAgICAgaWYgKHRoaXMuY29udHJvbHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9ICg8R3JvdXBQcm9wZXJ0eT50aGlzLmNvbnRyb2xzW2tleV0pO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eS5mb3JFYWNoIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICBwcm9wZXJ0eS5mb3JFYWNoKGZuLCB7IGluY2x1ZGVTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm4ocHJvcGVydHkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cblxuIl19