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

100 lines (99 loc) 9.12 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Directive, Input, ViewContainerRef, TemplateRef, Injector, } from '@angular/core'; import { WidgetFactory } from '../widgetfactory'; import { WidgetType } from '../widgetregistry'; import { ObjectProperty } from '../model/object-property'; import { FormElementTemplateRef } from './form-element.component'; export class FormFieldsetWidgetChooserDirective { /** * @param {?} viewContainerRef * @param {?} widgetFactory */ constructor(viewContainerRef, widgetFactory) { this.viewContainerRef = viewContainerRef; this.widgetFactory = widgetFactory; } /** * @return {?} */ ngOnInit() { /** @type {?} */ const injector = Injector.create({ providers: [{ provide: FormElementTemplateRef, useValue: this.templateRef, }], }); /** @type {?} */ const widget = this.getFieldsetWidget(); this.componentRef = this.widgetFactory.createWidget(this.viewContainerRef, widget.id, { type: WidgetType.Fieldset, injector }); /** @type {?} */ const component = this.componentRef.instance; component.formProperty = this.formProperty; component.title = this.fieldset.title; component.description = this.fieldset.description; component.formProperties = this.fieldset.fields.map((id) => { return this.formProperty.get(id); }); component.widget = widget; this.formProperty.fieldsetWidgetInstance = component; } /** * @return {?} */ ngOnDestroy() { this.componentRef.destroy(); this.viewContainerRef.clear(); } /** * @return {?} */ getFieldsetWidget() { if (!this.fieldset.widget) { return { id: 'fieldset' }; } if (typeof this.fieldset.widget === 'string') { return { id: this.fieldset.widget }; } if (!this.fieldset.widget.id) { this.fieldset.widget.id = 'fieldset'; } return this.fieldset.widget; } } FormFieldsetWidgetChooserDirective.decorators = [ { type: Directive, args: [{ selector: '[sfFormFieldsetWidgetChooser]', },] } ]; /** @nocollapse */ FormFieldsetWidgetChooserDirective.ctorParameters = () => [ { type: ViewContainerRef }, { type: WidgetFactory } ]; FormFieldsetWidgetChooserDirective.propDecorators = { formProperty: [{ type: Input }], fieldset: [{ type: Input }], templateRef: [{ type: Input }] }; if (false) { /** @type {?} */ FormFieldsetWidgetChooserDirective.prototype.formProperty; /** @type {?} */ FormFieldsetWidgetChooserDirective.prototype.fieldset; /** @type {?} */ FormFieldsetWidgetChooserDirective.prototype.templateRef; /** @type {?} */ FormFieldsetWidgetChooserDirective.prototype.componentRef; /** @type {?} */ FormFieldsetWidgetChooserDirective.prototype.viewContainerRef; /** @type {?} */ FormFieldsetWidgetChooserDirective.prototype.widgetFactory; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZHNldC13aWRnZXQtY2hvb3Nlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtc2NoZW1hLWZvcm1zLyIsInNvdXJjZXMiOlsibGliL2Zvcm0vZm9ybS1maWVsZHNldC13aWRnZXQtY2hvb3Nlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLGdCQUFnQixFQUdoQixXQUFXLEVBQ1gsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBS2xFLE1BQU07Ozs7O0lBYUosWUFDVSxrQkFDQTtRQURBLHFCQUFnQixHQUFoQixnQkFBZ0I7UUFDaEIsa0JBQWEsR0FBYixhQUFhO0tBQ2xCOzs7O0lBRUwsUUFBUTs7UUFFTixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQy9CLFNBQVMsRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxzQkFBc0I7b0JBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDM0IsQ0FBQztTQUNILENBQUMsQ0FBQzs7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLE1BQU0sQ0FBQyxFQUFFLEVBQ1Q7WUFDRSxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDekIsUUFBUTtTQUNULENBQ0YsQ0FBQzs7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM3QyxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDM0MsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN0QyxTQUFTLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ2xELFNBQVMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2xDLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRTFCLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxDQUFDO0tBRXREOzs7O0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0tBQy9COzs7O0lBRU8saUJBQWlCO1FBQ3ZCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQztTQUMzQjtRQUVELEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNyQztRQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDO1NBQ3RDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDOzs7O1lBeEUvQixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLCtCQUErQjthQUMxQzs7OztZQWxCQyxnQkFBZ0I7WUFPVCxhQUFhOzs7MkJBY25CLEtBQUs7dUJBR0wsS0FBSzswQkFHTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBDb21wb25lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG4gIEluamVjdG9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgV2lkZ2V0RmFjdG9yeSB9IGZyb20gJy4uL3dpZGdldGZhY3RvcnknO1xuaW1wb3J0IHsgV2lkZ2V0VHlwZSB9IGZyb20gJy4uL3dpZGdldHJlZ2lzdHJ5JztcbmltcG9ydCB7IEZpZWxkc2V0V2lkZ2V0IH0gZnJvbSAnLi4vd2lkZ2V0cy9iYXNlL2ZpZWxkc2V0LndpZGdldCc7XG5pbXBvcnQgeyBGb3JtUHJvcGVydHkgfSBmcm9tICcuLi9tb2RlbC9mb3JtLXByb3BlcnR5JztcbmltcG9ydCB7IEdlbmVyaWNQcm9wZXJ0eSB9IGZyb20gJy4uL21vZGVsL2dlbmVyaWMtcHJvcGVydHknO1xuaW1wb3J0IHsgT2JqZWN0UHJvcGVydHkgfSBmcm9tICcuLi9tb2RlbC9vYmplY3QtcHJvcGVydHknO1xuXG5pbXBvcnQgeyBGb3JtRWxlbWVudFRlbXBsYXRlUmVmIH0gZnJvbSAnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NmRm9ybUZpZWxkc2V0V2lkZ2V0Q2hvb3Nlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRzZXRXaWRnZXRDaG9vc2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1Qcm9wZXJ0eTogT2JqZWN0UHJvcGVydHk7XG5cbiAgQElucHV0KClcbiAgZmllbGRzZXQ6IGFueTtcblxuICBASW5wdXQoKVxuICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEZpZWxkc2V0V2lkZ2V0PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSB3aWRnZXRGYWN0b3J5OiBXaWRnZXRGYWN0b3J5XG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgIHByb3ZpZGU6IEZvcm1FbGVtZW50VGVtcGxhdGVSZWYsXG4gICAgICAgIHVzZVZhbHVlOiB0aGlzLnRlbXBsYXRlUmVmLFxuICAgICAgfV0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB3aWRnZXQgPSB0aGlzLmdldEZpZWxkc2V0V2lkZ2V0KCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLndpZGdldEZhY3RvcnkuY3JlYXRlV2lkZ2V0PEZpZWxkc2V0V2lkZ2V0PihcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgIHdpZGdldC5pZCxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogV2lkZ2V0VHlwZS5GaWVsZHNldCxcbiAgICAgICAgaW5qZWN0b3JcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgY29tcG9uZW50LmZvcm1Qcm9wZXJ0eSA9IHRoaXMuZm9ybVByb3BlcnR5O1xuICAgIGNvbXBvbmVudC50aXRsZSA9IHRoaXMuZmllbGRzZXQudGl0bGU7XG4gICAgY29tcG9uZW50LmRlc2NyaXB0aW9uID0gdGhpcy5maWVsZHNldC5kZXNjcmlwdGlvbjtcbiAgICBjb21wb25lbnQuZm9ybVByb3BlcnRpZXMgPSB0aGlzLmZpZWxkc2V0LmZpZWxkcy5tYXAoKGlkKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtUHJvcGVydHkuZ2V0KGlkKTtcbiAgICB9KTtcblxuICAgIGNvbXBvbmVudC53aWRnZXQgPSB3aWRnZXQ7XG5cbiAgICB0aGlzLmZvcm1Qcm9wZXJ0eS5maWVsZHNldFdpZGdldEluc3RhbmNlID0gY29tcG9uZW50O1xuXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkc2V0V2lkZ2V0KCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLmZpZWxkc2V0LndpZGdldCkge1xuICAgICAgcmV0dXJuIHsgaWQ6ICdmaWVsZHNldCcgfTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuZmllbGRzZXQud2lkZ2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHsgaWQ6IHRoaXMuZmllbGRzZXQud2lkZ2V0IH07XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkc2V0LndpZGdldC5pZCkge1xuICAgICAgdGhpcy5maWVsZHNldC53aWRnZXQuaWQgPSAnZmllbGRzZXQnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZpZWxkc2V0LndpZGdldDtcbiAgfVxuXG5cbn1cbiJdfQ==