UNPKG

@tangential/configurable-input-widgets

Version:

Input Widgets with persistable, dynamic configuration.

85 lines 12.3 kB
import { Component, ComponentFactoryResolver, EventEmitter, Input, NgZone, Output, ViewChild, ViewEncapsulation } from '@angular/core'; //noinspection ES6PreferShortImport import { ConfigurableInputIval } from '../../../data-type/configurable-input-ival'; import { InputConfig } from '../../../input-config'; import { InputRegistry } from '../../input-types-registry'; import { InputTemplateDirective } from './input-template.directive'; import * as i0 from "@angular/core"; import * as i1 from "../../input-types-registry"; import * as i2 from "./input-template.directive"; export class InputTemplateContainerComponent { constructor(_typeRegistry, _componentFactoryResolver, _zone) { this._typeRegistry = _typeRegistry; this._componentFactoryResolver = _componentFactoryResolver; this._zone = _zone; this.mode = null; this.hideLabel = false; this.onlyLabel = false; this.change = new EventEmitter(false); } ngAfterViewInit() { } ngOnDestroy() { } ngOnChanges(changes) { if (changes.template && this.template) { this.inputConfig = this.template.config; this.inputIval = this.template.ival; this.mode = this.template.mode; this.hideLabel = this.template.hideLabel; this.onlyLabel = this.template.onlyLabel; } if (this.inputConfig) { this.loadComponent(); } else { console.warn('InputTemplateContainerComponent', 'No input type!', this.inputIval, this.mode); } } loadComponent() { this._zone.run(() => { const componentCtor = this._typeRegistry.getComponentCtorFor(this.inputConfig, this.mode); const componentFactory = this._componentFactoryResolver.resolveComponentFactory(componentCtor); const viewContainerRef = this.inputItemHost.viewContainerRef; viewContainerRef.clear(); this._componentRef = viewContainerRef.createComponent(componentFactory); this._componentRef.instance.config = this.inputConfig; this._componentRef.instance.ival = this.inputIval; this._componentRef.instance.mode = this.mode; this._componentRef.instance.hideLabel = this.hideLabel; this._componentRef.instance.onlyLabel = this.onlyLabel; this._componentRef.instance.change = this.change; this._componentRef.changeDetectorRef.detectChanges(); }); } } InputTemplateContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: InputTemplateContainerComponent, deps: [{ token: i1.InputRegistry }, { token: i0.ComponentFactoryResolver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); InputTemplateContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: InputTemplateContainerComponent, selector: "tanj-input-template-container", inputs: { template: "template", inputConfig: "inputConfig", inputIval: "inputIval", mode: "mode", hideLabel: "hideLabel", onlyLabel: "onlyLabel" }, outputs: { change: "change" }, viewQueries: [{ propertyName: "inputItemHost", first: true, predicate: InputTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: ` <ng-template tanj-input-template-host></ng-template>`, isInline: true, dependencies: [{ kind: "directive", type: i2.InputTemplateDirective, selector: "[tanj-input-template-host]" }], encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: InputTemplateContainerComponent, decorators: [{ type: Component, args: [{ selector: 'tanj-input-template-container', template: ` <ng-template tanj-input-template-host></ng-template>`, encapsulation: ViewEncapsulation.None }] }], ctorParameters: function () { return [{ type: i1.InputRegistry }, { type: i0.ComponentFactoryResolver }, { type: i0.NgZone }]; }, propDecorators: { template: [{ type: Input }], inputConfig: [{ type: Input }], inputIval: [{ type: Input }], mode: [{ type: Input }], hideLabel: [{ type: Input }], onlyLabel: [{ type: Input }], change: [{ type: Output }], inputItemHost: [{ type: ViewChild, args: [InputTemplateDirective] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGVtcGxhdGUtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdlbnRpYWwvY29uZmlndXJhYmxlLWlucHV0LXdpZGdldHMvc3JjL2xpYi9zdXBwb3J0L3RlbXBsYXRlLWNvbXBvbmVudHMvaW5wdXQtdGVtcGxhdGUtY29tcG9uZW50L2lucHV0LXRlbXBsYXRlLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCx3QkFBd0IsRUFFeEIsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUE7QUFDdEIsbUNBQW1DO0FBQ25DLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUE7QUFHeEQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNEJBQTRCLENBQUE7Ozs7QUFPakUsTUFBTSxPQUFPLCtCQUErQjtJQWMxQyxZQUFvQixhQUE0QixFQUFVLHlCQUFtRCxFQUFVLEtBQWE7UUFBaEgsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSw4QkFBeUIsR0FBekIseUJBQXlCLENBQTBCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQVQzSCxTQUFJLEdBQWtCLElBQUksQ0FBQztRQUMzQixjQUFTLEdBQWEsS0FBSyxDQUFDO1FBQzVCLGNBQVMsR0FBYSxLQUFLLENBQUM7UUFDM0IsV0FBTSxHQUFzQixJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQU83RCxDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7SUFFRCxX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dCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuLy9ub2luc3BlY3Rpb24gRVM2UHJlZmVyU2hvcnRJbXBvcnRcbmltcG9ydCB7Q29uZmlndXJhYmxlSW5wdXRJdmFsfSBmcm9tICcuLi8uLi8uLi9kYXRhLXR5cGUvY29uZmlndXJhYmxlLWlucHV0LWl2YWwnXG5pbXBvcnQge0lucHV0Q29uZmlnfSBmcm9tICcuLi8uLi8uLi9pbnB1dC1jb25maWcnXG5pbXBvcnQge0lucHV0UmVnaXN0cnl9IGZyb20gJy4uLy4uL2lucHV0LXR5cGVzLXJlZ2lzdHJ5J1xuaW1wb3J0IHtJbnB1dFZpZXdNb2RlfSBmcm9tICcuLi8uLi9pbnB1dC12aWV3LW1vZGUnXG5pbXBvcnQge0lucHV0VGVtcGxhdGVJRn0gZnJvbSAnLi9pbnB1dC10ZW1wbGF0ZS5jb21wb25lbnQnXG5pbXBvcnQge0lucHV0VGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4vaW5wdXQtdGVtcGxhdGUuZGlyZWN0aXZlJ1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFuai1pbnB1dC10ZW1wbGF0ZS1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdGFuai1pbnB1dC10ZW1wbGF0ZS1ob3N0PjwvbmctdGVtcGxhdGU+YCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFRlbXBsYXRlQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHRlbXBsYXRlOiBJbnB1dFRlbXBsYXRlSUZcbiAgQElucHV0KCkgaW5wdXRDb25maWc6IElucHV0Q29uZmlnO1xuICBASW5wdXQoKSBpbnB1dEl2YWw6IENvbmZpZ3VyYWJsZUlucHV0SXZhbDtcbiAgQElucHV0KCkgbW9kZSA9IDxJbnB1dFZpZXdNb2RlPm51bGw7XG4gIEBJbnB1dCgpIGhpZGVMYWJlbD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgb25seUxhYmVsPzogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoZmFsc2UpXG5cbiAgQFZpZXdDaGlsZChJbnB1dFRlbXBsYXRlRGlyZWN0aXZlKSBpbnB1dEl0ZW1Ib3N0OiBJbnB1dFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gIHByaXZhdGUgX2NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPElucHV0VGVtcGxhdGVJRj5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF90eXBlUmVnaXN0cnk6IElucHV0UmVnaXN0cnksIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBwcml2YXRlIF96b25lOiBOZ1pvbmUpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyB0ZW1wbGF0ZTogU2ltcGxlQ2hhbmdlIH0pIHtcbiAgICBpZiAoY2hhbmdlcy50ZW1wbGF0ZSAmJiB0aGlzLnRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmlucHV0Q29uZmlnID0gdGhpcy50ZW1wbGF0ZS5jb25maWdcbiAgICAgIHRoaXMuaW5wdXRJdmFsID0gdGhpcy50ZW1wbGF0ZS5pdmFsXG4gICAgICB0aGlzLm1vZGUgPSB0aGlzLnRlbXBsYXRlLm1vZGVcbiAgICAgIHRoaXMuaGlkZUxhYmVsID0gdGhpcy50ZW1wbGF0ZS5oaWRlTGFiZWxcbiAgICAgIHRoaXMub25seUxhYmVsID0gdGhpcy50ZW1wbGF0ZS5vbmx5TGFiZWxcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5wdXRDb25maWcpIHtcbiAgICAgIHRoaXMubG9hZENvbXBvbmVudCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignSW5wdXRUZW1wbGF0ZUNvbnRhaW5lckNvbXBvbmVudCcsICdObyBpbnB1dCB0eXBlIScsIHRoaXMuaW5wdXRJdmFsLCB0aGlzLm1vZGUpXG4gICAgfVxuICB9XG5cbiAgbG9hZENvbXBvbmVudCgpIHtcbiAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBjb21wb25lbnRDdG9yID0gdGhpcy5fdHlwZVJlZ2lzdHJ5LmdldENvbXBvbmVudEN0b3JGb3IodGhpcy5pbnB1dENvbmZpZywgdGhpcy5tb2RlKVxuICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnRDdG9yKTtcbiAgICAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSB0aGlzLmlucHV0SXRlbUhvc3Qudmlld0NvbnRhaW5lclJlZjtcbiAgICAgIHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcblxuICAgICAgdGhpcy5fY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuY29uZmlnID0gdGhpcy5pbnB1dENvbmZpZ1xuICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLml2YWwgPSB0aGlzLmlucHV0SXZhbFxuICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGVcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5oaWRlTGFiZWwgPSB0aGlzLmhpZGVMYWJlbFxuICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLm9ubHlMYWJlbCA9IHRoaXMub25seUxhYmVsXG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuY2hhbmdlID0gdGhpcy5jaGFuZ2VcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICB9KVxuICB9XG5cbn1cbiJdfQ==