@igo2/common
Version:
176 lines (168 loc) • 7.82 kB
JavaScript
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