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

135 lines (134 loc) 11.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { SchemaPropertyType } from '../../schema'; import { TemplateSchemaElement } from '../template-schema-element'; import { TemplateElementType } from '../template-schema-element-registry'; /** * @abstract */ var /** * @abstract */ FieldParent = /** @class */ (function (_super) { tslib_1.__extends(FieldParent, _super); function FieldParent() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.name = ''; return _this; } Object.defineProperty(FieldParent.prototype, "path", { get: /** * @return {?} */ function () { if (!this.name) { return ''; } return '/' + this.name; }, enumerable: true, configurable: true }); /** * @return {?} */ FieldParent.prototype.getButtons = /** * @return {?} */ function () { var _this = this; return this.childButtons.map(function (button, index) { if (!button.id) { /** @type {?} */ var randomString = Math.random().toString(16).substr(2, 8); // generate id for button button.id = _this.name + randomString + '_' + (index + 1); } // register as button action the EventEmitter click // register as button action the EventEmitter click _this.actionRegistry.register(button.id, button.click.emit.bind(button.click)); _this.templateRegistry.register(button.id, button, TemplateElementType.Button); /** @type {?} */ var _button = /** @type {?} */ ({ id: button.id, label: button.label, options: button.options }); if (button.widget) { _button.widget = button.widget; } return _button; }); }; /** * @param {?} fields * @return {?} */ FieldParent.prototype.getFieldsValidators = /** * @param {?} fields * @return {?} */ function (fields) { return fields.reduce(function (validators, field) { return validators.concat(field.getValidators()); }, []); }; /** * @param {?} fields * @return {?} */ FieldParent.prototype.getFieldsSchema = /** * @param {?} fields * @return {?} */ function (fields) { var _this = this; return fields.reduce(function (schema, field) { switch (_this.type) { case SchemaPropertyType.Array: schema.items = field.getSchema(); break; default: if (!schema.properties) { schema.properties = {}; } schema.properties[field.name] = field.getSchema(); break; } /** @type {?} */ var buttons = field.getButtons(); if (buttons.length > 0) { schema.buttons = buttons; } if (!field.required) { return schema; } if (!schema.required) { schema.required = []; } schema.required.push(field.name); return schema; }, {}); }; return FieldParent; }(TemplateSchemaElement)); /** * @abstract */ export { FieldParent }; if (false) { /** @type {?} */ FieldParent.prototype.name; /** @type {?} */ FieldParent.prototype.type; /** @type {?} */ FieldParent.prototype.actionRegistry; /** @type {?} */ FieldParent.prototype.templateRegistry; /** @type {?} */ FieldParent.prototype.childButtons; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtcGFyZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXNjaGVtYS1mb3Jtcy8iLCJzb3VyY2VzIjpbImxpYi90ZW1wbGF0ZS1zY2hlbWEvZmllbGQvZmllbGQtcGFyZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFFTCxtQkFBbUIsRUFDcEIsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQUs3Qzs7O0FBQUE7SUFBMEMsdUNBQXFCOzs7cUJBRXRELEVBQUU7OztJQUdULHNCQUFJLDZCQUFJOzs7O1FBQVI7WUFDRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxFQUFFLENBQUM7YUFDWDtZQUVELE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN4Qjs7O09BQUE7Ozs7SUFPRCxnQ0FBVTs7O0lBQVY7UUFBQSxpQkFtQ0M7UUFqQ0MsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQUMsTUFBTSxFQUFFLEtBQUs7WUFFekMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs7Z0JBQ2YsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztnQkFFN0QsTUFBTSxDQUFDLEVBQUUsR0FBRyxLQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksR0FBRyxHQUFHLEdBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDM0Q7O1lBR0QsQUFEQSxtREFBbUQ7WUFDbkQsS0FBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQzFCLE1BQU0sQ0FBQyxFQUFFLEVBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FDckMsQ0FBQztZQUVGLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQzVCLE1BQU0sQ0FBQyxFQUFFLEVBQ1QsTUFBTSxFQUNOLG1CQUFtQixDQUFDLE1BQU0sQ0FDM0IsQ0FBQzs7WUFFRixJQUFNLE9BQU8scUJBQVE7Z0JBQ25CLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDYixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTzthQUN4QixFQUFDO1lBRUYsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNoQztZQUVELE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FFaEIsQ0FBQyxDQUFDO0tBQ0o7Ozs7O0lBRVMseUNBQW1COzs7O0lBQTdCLFVBQ0UsTUFBZTtRQUdmLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQUMsVUFBVSxFQUFFLEtBQUs7WUFDckMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDakQsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUVSOzs7OztJQUVTLHFDQUFlOzs7O0lBQXpCLFVBQTBCLE1BQWU7UUFBekMsaUJBZ0NDO1FBL0JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQUMsTUFBVyxFQUFFLEtBQUs7WUFFdEMsTUFBTSxDQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLEtBQUssa0JBQWtCLENBQUMsS0FBSztvQkFDM0IsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pDLEtBQUssQ0FBQztnQkFFUjtvQkFDRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUN2QixNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztxQkFDeEI7b0JBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNsRCxLQUFLLENBQUM7YUFDVDs7WUFFRCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQzthQUMxQjtZQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUM7YUFDZjtZQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO2FBQ3RCO1lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDZixFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ1I7c0JBaEhIO0VBZTBDLHFCQUFxQixFQW1HOUQsQ0FBQTs7OztBQW5HRCx1QkFtR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBTY2hlbWFQcm9wZXJ0eVR5cGUgfSBmcm9tICcuLi8uLi9zY2hlbWEnO1xuaW1wb3J0IHsgQWN0aW9uUmVnaXN0cnkgfSBmcm9tICcuLi8uLi9tb2RlbC9hY3Rpb25yZWdpc3RyeSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZVNjaGVtYUVsZW1lbnQgfSBmcm9tICcuLi90ZW1wbGF0ZS1zY2hlbWEtZWxlbWVudCc7XG5pbXBvcnQge1xuICBUZW1wbGF0ZVNjaGVtYUVsZW1lbnRSZWdpc3RyeSxcbiAgVGVtcGxhdGVFbGVtZW50VHlwZVxufSBmcm9tICcuLi90ZW1wbGF0ZS1zY2hlbWEtZWxlbWVudC1yZWdpc3RyeSc7XG5cblxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuL2ZpZWxkJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpZWxkUGFyZW50IGV4dGVuZHMgVGVtcGxhdGVTY2hlbWFFbGVtZW50IHtcblxuICBuYW1lID0gJyc7XG4gIHR5cGU6IFNjaGVtYVByb3BlcnR5VHlwZTtcblxuICBnZXQgcGF0aCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuICcvJyArIHRoaXMubmFtZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhY3Rpb25SZWdpc3RyeTogQWN0aW9uUmVnaXN0cnk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB0ZW1wbGF0ZVJlZ2lzdHJ5OiBUZW1wbGF0ZVNjaGVtYUVsZW1lbnRSZWdpc3RyeTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoaWxkQnV0dG9uczogUXVlcnlMaXN0PEJ1dHRvbkNvbXBvbmVudD47XG5cblxuICBnZXRCdXR0b25zKCk6IHsgaWQ6IHN0cmluZywgbGFiZWw6IHN0cmluZywgd2lkZ2V0Pzogc3RyaW5nIHwgb2JqZWN0IH1bXSB7XG5cbiAgICByZXR1cm4gdGhpcy5jaGlsZEJ1dHRvbnMubWFwKChidXR0b24sIGluZGV4KSA9PiB7XG5cbiAgICAgIGlmICghYnV0dG9uLmlkKSB7XG4gICAgICAgIGNvbnN0IHJhbmRvbVN0cmluZyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cigyLCA4KTtcbiAgICAgICAgLy8gZ2VuZXJhdGUgaWQgZm9yIGJ1dHRvblxuICAgICAgICBidXR0b24uaWQgPSB0aGlzLm5hbWUgKyByYW5kb21TdHJpbmcgKyAnXycgICsgKGluZGV4ICsgMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIHJlZ2lzdGVyIGFzIGJ1dHRvbiBhY3Rpb24gdGhlIEV2ZW50RW1pdHRlciBjbGlja1xuICAgICAgdGhpcy5hY3Rpb25SZWdpc3RyeS5yZWdpc3RlcihcbiAgICAgICAgYnV0dG9uLmlkLFxuICAgICAgICBidXR0b24uY2xpY2suZW1pdC5iaW5kKGJ1dHRvbi5jbGljaylcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudGVtcGxhdGVSZWdpc3RyeS5yZWdpc3RlcihcbiAgICAgICAgYnV0dG9uLmlkLFxuICAgICAgICBidXR0b24sXG4gICAgICAgIFRlbXBsYXRlRWxlbWVudFR5cGUuQnV0dG9uXG4gICAgICApO1xuXG4gICAgICBjb25zdCBfYnV0dG9uID0gPGFueT57XG4gICAgICAgIGlkOiBidXR0b24uaWQsXG4gICAgICAgIGxhYmVsOiBidXR0b24ubGFiZWwsXG4gICAgICAgIG9wdGlvbnM6IGJ1dHRvbi5vcHRpb25zXG4gICAgICB9O1xuXG4gICAgICBpZiAoYnV0dG9uLndpZGdldCkge1xuICAgICAgICBfYnV0dG9uLndpZGdldCA9IGJ1dHRvbi53aWRnZXQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfYnV0dG9uO1xuXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmllbGRzVmFsaWRhdG9ycyhcbiAgICBmaWVsZHM6IEZpZWxkW11cbiAgKTogeyBwYXRoOiBzdHJpbmcsIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB9W10ge1xuXG4gICAgcmV0dXJuIGZpZWxkcy5yZWR1Y2UoKHZhbGlkYXRvcnMsIGZpZWxkKSA9PiB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5jb25jYXQoZmllbGQuZ2V0VmFsaWRhdG9ycygpKTtcbiAgICB9LCBbXSk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWVsZHNTY2hlbWEoZmllbGRzOiBGaWVsZFtdKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5yZWR1Y2UoKHNjaGVtYTogYW55LCBmaWVsZCkgPT4ge1xuXG4gICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICBjYXNlIFNjaGVtYVByb3BlcnR5VHlwZS5BcnJheTpcbiAgICAgICAgICBzY2hlbWEuaXRlbXMgPSBmaWVsZC5nZXRTY2hlbWEoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmICghc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHNjaGVtYS5wcm9wZXJ0aWVzID0ge307XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2NoZW1hLnByb3BlcnRpZXNbZmllbGQubmFtZV0gPSBmaWVsZC5nZXRTY2hlbWEoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnV0dG9ucyA9IGZpZWxkLmdldEJ1dHRvbnMoKTtcbiAgICAgIGlmIChidXR0b25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2NoZW1hLmJ1dHRvbnMgPSBidXR0b25zO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZpZWxkLnJlcXVpcmVkKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgICB9XG5cbiAgICAgIGlmICghc2NoZW1hLnJlcXVpcmVkKSB7XG4gICAgICAgIHNjaGVtYS5yZXF1aXJlZCA9IFtdO1xuICAgICAgfVxuICAgICAgc2NoZW1hLnJlcXVpcmVkLnB1c2goZmllbGQubmFtZSk7XG4gICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH0sIHt9KTtcbiAgfVxuXG59XG4iXX0=