@tangential/configurable-input-widgets
Version:
Input Widgets with persistable, dynamic configuration.
85 lines • 12.3 kB
JavaScript
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==