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