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

51 lines (50 loc) 3.71 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { ComponentFactoryResolver, Injectable } from '@angular/core'; import { WidgetRegistry, WidgetType } from './widgetregistry'; export class WidgetFactory { /** * @param {?} widgetRegistry * @param {?} factoryResolver */ constructor(widgetRegistry, factoryResolver) { this.widgetRegistry = widgetRegistry; this.factoryResolver = factoryResolver; } /** * @template T * @param {?} container * @param {?} id * @param {?=} opts * @return {?} */ createWidget(container, id, opts = { type: WidgetType.Field }) { /** @type {?} */ const componentClass = this.widgetRegistry.getWidgetType(id, opts.type); /** @type {?} */ const componentFactory = this.factoryResolver .resolveComponentFactory(componentClass); return container.createComponent(componentFactory, undefined, // index // index opts.injector); } } WidgetFactory.decorators = [ { type: Injectable } ]; /** @nocollapse */ WidgetFactory.ctorParameters = () => [ { type: WidgetRegistry }, { type: ComponentFactoryResolver } ]; if (false) { /** @type {?} */ WidgetFactory.prototype.widgetRegistry; /** @type {?} */ WidgetFactory.prototype.factoryResolver; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0ZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1zY2hlbWEtZm9ybXMvIiwic291cmNlcyI6WyJsaWIvd2lkZ2V0ZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUdMLHdCQUF3QixFQUN4QixVQUFVLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk5RCxNQUFNOzs7OztJQUVKLFlBQ1UsZ0JBQ0E7UUFEQSxtQkFBYyxHQUFkLGNBQWM7UUFDZCxvQkFBZSxHQUFmLGVBQWU7S0FDcEI7Ozs7Ozs7O0lBRUwsWUFBWSxDQUNWLFNBQTJCLEVBQzNCLEVBQVUsRUFDVixPQUdJO1FBQ0YsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLO0tBQ3ZCOztRQUdELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O1FBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWU7YUFDMUMsdUJBQXVCLENBQUksY0FBYyxDQUFDLENBQUM7UUFFOUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQzlCLGdCQUFnQixFQUNoQixTQUFTLEVBQUUsUUFBUTs7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO0tBQ0g7OztZQTVCRixVQUFVOzs7O1lBSEYsY0FBYztZQUxyQix3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFdpZGdldFJlZ2lzdHJ5LCBXaWRnZXRUeXBlIH0gZnJvbSAnLi93aWRnZXRyZWdpc3RyeSc7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICcuL3dpZGdldHMvYmFzZS93aWRnZXQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV2lkZ2V0RmFjdG9yeSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB3aWRnZXRSZWdpc3RyeTogV2lkZ2V0UmVnaXN0cnksXG4gICAgcHJpdmF0ZSBmYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICApIHsgfVxuXG4gIGNyZWF0ZVdpZGdldDxUIGV4dGVuZHMgV2lkZ2V0PihcbiAgICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBvcHRzOiB7XG4gICAgICB0eXBlOiBXaWRnZXRUeXBlLFxuICAgICAgaW5qZWN0b3I/OiBJbmplY3RvclxuICAgIH0gPSB7XG4gICAgICB0eXBlOiBXaWRnZXRUeXBlLkZpZWxkXG4gICAgfVxuICApOiBDb21wb25lbnRSZWY8VD4ge1xuXG4gICAgY29uc3QgY29tcG9uZW50Q2xhc3MgPSB0aGlzLndpZGdldFJlZ2lzdHJ5LmdldFdpZGdldFR5cGUoaWQsIG9wdHMudHlwZSk7XG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuZmFjdG9yeVJlc29sdmVyXG4gICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk8VD4oY29tcG9uZW50Q2xhc3MpO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoXG4gICAgICBjb21wb25lbnRGYWN0b3J5LFxuICAgICAgdW5kZWZpbmVkLCAvLyBpbmRleFxuICAgICAgb3B0cy5pbmplY3RvclxuICAgICk7XG4gIH1cbn1cbiJdfQ==