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