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
140 lines (139 loc) • 14.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Directive, Input, ViewContainerRef } from '@angular/core';
import { filter, startWith, distinctUntilChanged } from 'rxjs/operators';
import { Unsubscriber } from '../unsubscriber';
import { WidgetFactory } from '../widgetfactory';
import { GenericProperty } from '../model/generic-property';
import { TemplateSchemaElementRegistry } from '../template-schema/template-schema-element-registry';
var FormPropertyWidgetChooserDirective = /** @class */ (function () {
function FormPropertyWidgetChooserDirective(viewContainerRef, widgetFactory, templateRegistry) {
this.viewContainerRef = viewContainerRef;
this.widgetFactory = widgetFactory;
this.templateRegistry = templateRegistry;
}
/**
* @return {?}
*/
FormPropertyWidgetChooserDirective.prototype.isWidgetRequired = /**
* @return {?}
*/
function () {
/** @type {?} */
var parent = /** @type {?} */ ((/** @type {?} */ (this.formProperty.parent)));
if (!parent || !parent.schema["required"]) {
return false;
}
return parent.schema["required"].includes(this.formProperty.name);
};
/**
* @return {?}
*/
FormPropertyWidgetChooserDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
// TODO break into functions
this.componentRef = this.widgetFactory.createWidget(this.viewContainerRef, this.formProperty.schema["widget"].id);
/** @type {?} */
var component = this.componentRef.instance;
component.formProperty = this.formProperty;
component.schema = this.formProperty.schema;
component.id = this.formProperty.id;
/** @type {?} */
var element = this.templateRegistry.getElement(this.formProperty.path);
if (element) {
this.subs = element.changes.subscribe(function (schema) {
component.schema = Object.assign(_this.formProperty.schema, schema);
_this.componentRef.changeDetectorRef.detectChanges();
});
}
component.required = this.isWidgetRequired();
// widget instance in formProperty
this.formProperty.widgetInstance = component;
// error messages
if (this.formProperty instanceof GenericProperty) {
this.subs = this.formProperty.statusChanges
.pipe(
// initial, to add error messages from schema validator
startWith('INVALID'), filter(function (status) {
/** @type {?} */
var errorMessages = component.errorMessages;
/** @type {?} */
var hasErrorMessages = errorMessages && errorMessages.length > 0;
// it's valid, but error messages need to be cleared
if (status === 'VALID' && hasErrorMessages) {
return true;
}
return status === 'INVALID';
}), distinctUntilChanged())
.subscribe(function () {
/** @type {?} */
var propertyErrors = _this.formProperty.getErrors();
if (!propertyErrors) {
// clear errors emssages
// clear errors emssages
_this.componentRef.instance.errorMessages = [];
return;
}
/** @type {?} */
var errorMessages = propertyErrors.getMessages();
_this.componentRef.instance.errorMessages = errorMessages;
_this.componentRef.changeDetectorRef.detectChanges();
});
}
};
/**
* @return {?}
*/
FormPropertyWidgetChooserDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.componentRef) {
this.componentRef.destroy();
}
if (this.viewContainerRef) {
this.viewContainerRef.clear();
}
};
FormPropertyWidgetChooserDirective.decorators = [
{ type: Directive, args: [{
selector: '[sfFormPropertyWidgetChooser]',
},] }
];
/** @nocollapse */
FormPropertyWidgetChooserDirective.ctorParameters = function () { return [
{ type: ViewContainerRef },
{ type: WidgetFactory },
{ type: TemplateSchemaElementRegistry }
]; };
FormPropertyWidgetChooserDirective.propDecorators = {
formProperty: [{ type: Input }]
};
tslib_1.__decorate([
Unsubscriber(),
tslib_1.__metadata("design:type", Object)
], FormPropertyWidgetChooserDirective.prototype, "subs", void 0);
return FormPropertyWidgetChooserDirective;
}());
export { FormPropertyWidgetChooserDirective };
if (false) {
/** @type {?} */
FormPropertyWidgetChooserDirective.prototype.formProperty;
/** @type {?} */
FormPropertyWidgetChooserDirective.prototype.componentRef;
/** @type {?} */
FormPropertyWidgetChooserDirective.prototype.subs;
/** @type {?} */
FormPropertyWidgetChooserDirective.prototype.viewContainerRef;
/** @type {?} */
FormPropertyWidgetChooserDirective.prototype.widgetFactory;
/** @type {?} */
FormPropertyWidgetChooserDirective.prototype.templateRegistry;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wcm9wZXJ0eS13aWRnZXQtY2hvb3Nlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtc2NoZW1hLWZvcm1zLyIsInNvdXJjZXMiOlsibGliL2Zvcm0vZm9ybS1wcm9wZXJ0eS13aWRnZXQtY2hvb3Nlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxnQkFBZ0IsRUFHakIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1Qsb0JBQW9CLEVBR3JCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUNMLDZCQUE2QixFQUM5QixNQUFNLHFEQUFxRCxDQUFDOztJQWlCM0QsNENBQ1Usa0JBQ0EsZUFDRSxnQkFBK0M7UUFGakQscUJBQWdCLEdBQWhCLGdCQUFnQjtRQUNoQixrQkFBYSxHQUFiLGFBQWE7UUFDWCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQStCO0tBQ3REOzs7O0lBRUwsNkRBQWdCOzs7SUFBaEI7O1FBQ0UsSUFBTSxNQUFNLHFCQUFHLG1CQUFrQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBaUIsRUFBQztRQUMzRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLFlBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNkO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLGFBQVUsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDaEU7Ozs7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QjtRQUNELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO0tBQ0Y7O2dCQW5HRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLCtCQUErQjtpQkFDMUM7Ozs7Z0JBM0JDLGdCQUFnQjtnQkFnQlQsYUFBYTtnQkFJcEIsNkJBQTZCOzs7K0JBVTVCLEtBQUs7OztRQUtMLFlBQVksRUFBRTs7OzZDQXZDakI7O1NBZ0NhLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgQ29tcG9uZW50UmVmLFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGZpbHRlcixcbiAgc3RhcnRXaXRoLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVW5zdWJzY3JpYmVyIH0gZnJvbSAnLi4vdW5zdWJzY3JpYmVyJztcbmltcG9ydCB7IFByb3BlcnR5V2lkZ2V0IH0gZnJvbSAnLi4vd2lkZ2V0cy9iYXNlL3dpZGdldCc7XG5pbXBvcnQgeyBXaWRnZXRGYWN0b3J5IH0gZnJvbSAnLi4vd2lkZ2V0ZmFjdG9yeSc7XG5pbXBvcnQgeyBGb3JtUHJvcGVydHkgfSBmcm9tICcuLi9tb2RlbC9mb3JtLXByb3BlcnR5JztcbmltcG9ydCB7IEdlbmVyaWNQcm9wZXJ0eSB9IGZyb20gJy4uL21vZGVsL2dlbmVyaWMtcHJvcGVydHknO1xuaW1wb3J0IHtcbiAgVGVtcGxhdGVTY2hlbWFFbGVtZW50UmVnaXN0cnlcbn0gZnJvbSAnLi4vdGVtcGxhdGUtc2NoZW1hL3RlbXBsYXRlLXNjaGVtYS1lbGVtZW50LXJlZ2lzdHJ5JztcblxuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzZkZvcm1Qcm9wZXJ0eVdpZGdldENob29zZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVByb3BlcnR5V2lkZ2V0Q2hvb3NlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBmb3JtUHJvcGVydHk6IEZvcm1Qcm9wZXJ0eTtcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XG5cbiAgQFVuc3Vic2NyaWJlcigpXG4gIHByaXZhdGUgc3VicztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSB3aWRnZXRGYWN0b3J5OiBXaWRnZXRGYWN0b3J5LFxuICAgIHByb3RlY3RlZCB0ZW1wbGF0ZVJlZ2lzdHJ5OiBUZW1wbGF0ZVNjaGVtYUVsZW1lbnRSZWdpc3RyeSxcbiAgKSB7IH1cblxuICBpc1dpZGdldFJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhcmVudCA9ICg8QWJzdHJhY3RDb250cm9sPnRoaXMuZm9ybVByb3BlcnR5LnBhcmVudCkgYXMgRm9ybVByb3BlcnR5O1xuICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQuc2NoZW1hLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudC5zY2hlbWEucmVxdWlyZWQuaW5jbHVkZXModGhpcy5mb3JtUHJvcGVydHkubmFtZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIC8vIFRPRE8gYnJlYWsgaW50byBmdW5jdGlvbnNcblxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy53aWRnZXRGYWN0b3J5LmNyZWF0ZVdpZGdldDxQcm9wZXJ0eVdpZGdldD4oXG4gICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICB0aGlzLmZvcm1Qcm9wZXJ0eS5zY2hlbWEud2lkZ2V0LmlkXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGNvbXBvbmVudC5mb3JtUHJvcGVydHkgPSB0aGlzLmZvcm1Qcm9wZXJ0eTtcbiAgICBjb21wb25lbnQuc2NoZW1hID0gdGhpcy5mb3JtUHJvcGVydHkuc2NoZW1hO1xuICAgIGNvbXBvbmVudC5pZCA9IHRoaXMuZm9ybVByb3BlcnR5LmlkO1xuXG4gICAgLy8gdGVtcGxhdGVTY2hlbWEgZmllbGQgdXBkYXRlc1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRlbXBsYXRlUmVnaXN0cnkuZ2V0RWxlbWVudCh0aGlzLmZvcm1Qcm9wZXJ0eS5wYXRoKTtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdGhpcy5zdWJzID0gZWxlbWVudC5jaGFuZ2VzLnN1YnNjcmliZSgoc2NoZW1hKSA9PiB7XG4gICAgICAgIGNvbXBvbmVudC5zY2hlbWEgPSBPYmplY3QuYXNzaWduKHRoaXMuZm9ybVByb3BlcnR5LnNjaGVtYSwgc2NoZW1hKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50LnJlcXVpcmVkID0gdGhpcy5pc1dpZGdldFJlcXVpcmVkKCk7XG5cbiAgICAvLyB3aWRnZXQgaW5zdGFuY2UgaW4gZm9ybVByb3BlcnR5XG4gICAgdGhpcy5mb3JtUHJvcGVydHkud2lkZ2V0SW5zdGFuY2UgPSBjb21wb25lbnQ7XG5cbiAgICAvLyBlcnJvciBtZXNzYWdlc1xuICAgIGlmICh0aGlzLmZvcm1Qcm9wZXJ0eSBpbnN0YW5jZW9mIEdlbmVyaWNQcm9wZXJ0eSkge1xuICAgICAgdGhpcy5zdWJzID0gdGhpcy5mb3JtUHJvcGVydHkuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyBpbml0aWFsLCB0byBhZGQgZXJyb3IgbWVzc2FnZXMgZnJvbSBzY2hlbWEgdmFsaWRhdG9yXG4gICAgICAgICAgc3RhcnRXaXRoKCdJTlZBTElEJyksXG4gICAgICAgICAgZmlsdGVyKChzdGF0dXM6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlcyA9IGNvbXBvbmVudC5lcnJvck1lc3NhZ2VzO1xuICAgICAgICAgICAgY29uc3QgaGFzRXJyb3JNZXNzYWdlcyA9IGVycm9yTWVzc2FnZXMgJiYgZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICAvLyBpdCdzIHZhbGlkLCBidXQgZXJyb3IgbWVzc2FnZXMgbmVlZCB0byBiZSBjbGVhcmVkXG4gICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnVkFMSUQnICYmIGhhc0Vycm9yTWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0dXMgPT09ICdJTlZBTElEJztcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvcGVydHlFcnJvcnMgPSB0aGlzLmZvcm1Qcm9wZXJ0eS5nZXRFcnJvcnMoKTtcblxuICAgICAgICAgIGlmICghcHJvcGVydHlFcnJvcnMpIHtcbiAgICAgICAgICAgIC8vIGNsZWFyIGVycm9ycyBlbXNzYWdlc1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZXMgPSBwcm9wZXJ0eUVycm9ycy5nZXRNZXNzYWdlcygpO1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmVycm9yTWVzc2FnZXMgPSBlcnJvck1lc3NhZ2VzO1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmlld0NvbnRhaW5lclJlZikge1xuICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgfVxuICB9XG59XG4iXX0=