UNPKG

@igo2/common

Version:
176 lines (168 loc) 7.82 kB
import * as i1 from '@igo2/common/dynamic-component'; import { DynamicComponent, DynamicOutletComponent } from '@igo2/common/dynamic-component'; import * as i0 from '@angular/core'; import { Injectable, EventEmitter, Output, Input, ChangeDetectionStrategy, Component, NgModule } from '@angular/core'; import { NgIf } from '@angular/common'; class Widget extends DynamicComponent { } class WidgetService { dynamicComponentService; constructor(dynamicComponentService) { this.dynamicComponentService = dynamicComponentService; } create(widgetCls) { return this.dynamicComponentService.create(widgetCls); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetService, deps: [{ token: i1.DynamicComponentService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.DynamicComponentService }] }); /** * This component dynamically renders a widget. It also subscribes * to the widget's 'cancel' and 'complete' events and destroys it * when any of those event is emitted. */ class WidgetOutletComponent { /** * Widget subscribers to 'cancel' and 'complete' * @internal */ baseSubscribers = { cancel: (event) => this.onCancel(event), complete: (event) => this.onComplete(event) }; /** * Widget */ widget; /** * Widget inputs */ inputs; /** * Widget subscribers */ subscribers = {}; /** * Event emitted when the widget emits 'complete' */ complete = new EventEmitter(); /** * Event emitted when the widget emits 'cancel' */ cancel = new EventEmitter(); /** * Destroy the current widget and all it's inner subscriptions * @internal */ ngOnDestroy() { this.destroyWidget(); } /** * Get the effective subscribers. That means a combination of the base * subscribers and any subscriber given as input. * @returns Combined subscribers * @internal */ getEffectiveSubscribers() { const subscribers = Object.assign({}, this.subscribers); // Base subscribers Object.keys(this.baseSubscribers).forEach((key) => { const subscriber = subscribers[key]; const baseSubscriber = this.baseSubscribers[key]; if (subscriber !== undefined) { subscribers[key] = (event) => { subscriber(event); baseSubscriber(event); }; } else { subscribers[key] = baseSubscriber; } }); return subscribers; } /** * When the widget emits 'cancel', propagate that event and destroy * the widget */ onCancel(event) { this.cancel.emit(event); this.destroyWidget(); } /** * When the widget emits 'complete', propagate that event and destroy * the widget */ onComplete(event) { this.complete.emit(event); this.destroyWidget(); } /** * Destroy the current widget */ destroyWidget() { if (this.widget !== undefined) { this.widget.destroy(); } this.widget = undefined; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetOutletComponent, isStandalone: true, selector: "igo-widget-outlet", inputs: { widget: "widget", inputs: "inputs", subscribers: "subscribers" }, outputs: { complete: "complete", cancel: "cancel" }, ngImport: i0, template: "<igo-dynamic-outlet\n *ngIf=\"widget\"\n [component]=\"widget\"\n [inputs]=\"inputs\"\n [subscribers]=\"getEffectiveSubscribers()\"\n>\n</igo-dynamic-outlet>\n", styles: [":host igo-dynamic-outlet{height:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DynamicOutletComponent, selector: "igo-dynamic-outlet", inputs: ["component", "inputs", "subscribers"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetOutletComponent, decorators: [{ type: Component, args: [{ selector: 'igo-widget-outlet', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, DynamicOutletComponent], template: "<igo-dynamic-outlet\n *ngIf=\"widget\"\n [component]=\"widget\"\n [inputs]=\"inputs\"\n [subscribers]=\"getEffectiveSubscribers()\"\n>\n</igo-dynamic-outlet>\n", styles: [":host igo-dynamic-outlet{height:100%}\n"] }] }], propDecorators: { widget: [{ type: Input }], inputs: [{ type: Input }], subscribers: [{ type: Input }], complete: [{ type: Output }], cancel: [{ type: Output }] } }); /** * @deprecated import the WidgetOutletComponent directly */ class IgoWidgetOutletModule { static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IgoWidgetOutletModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: IgoWidgetOutletModule, imports: [WidgetOutletComponent], exports: [WidgetOutletComponent] }); static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IgoWidgetOutletModule, imports: [WidgetOutletComponent] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IgoWidgetOutletModule, decorators: [{ type: NgModule, args: [{ imports: [WidgetOutletComponent], exports: [WidgetOutletComponent] }] }] }); /** * @deprecated import the WidgetOutletComponent directly */ class IgoWidgetModule { static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IgoWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: IgoWidgetModule, imports: [IgoWidgetOutletModule], exports: [IgoWidgetOutletModule] }); static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IgoWidgetModule, providers: [WidgetService], imports: [IgoWidgetOutletModule, IgoWidgetOutletModule] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IgoWidgetModule, decorators: [{ type: NgModule, args: [{ imports: [IgoWidgetOutletModule], exports: [IgoWidgetOutletModule], declarations: [], providers: [WidgetService] }] }] }); /** * Generated bundle index. Do not edit. */ export { IgoWidgetModule, IgoWidgetOutletModule, Widget, WidgetOutletComponent, WidgetService }; //# sourceMappingURL=igo2-common-widget.mjs.map