UNPKG

ngx-pluto

Version:
113 lines 9.62 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector } from '@angular/core'; import { NpDialogModule } from './dialog.module'; import { NpDialog } from './dialog.component'; import { DialogConfig } from './dialog-config'; import { DialogInjector } from './dialog-injector'; import { DialogRef } from './dialog-ref'; import * as i0 from "@angular/core"; import * as i1 from "./dialog.module"; /** * @ignore */ export class DialogService { /** * @param {?} componentFactoryResolver * @param {?} appRef * @param {?} injector */ constructor(componentFactoryResolver, appRef, injector) { this.componentFactoryResolver = componentFactoryResolver; this.appRef = appRef; this.injector = injector; } /** * @param {?} componentType * @param {?} config * @return {?} */ open(componentType, config) { /** @type {?} */ const dialogRef = this.appendDialogComponentToBody(config); this.dialogComponentRef.instance.childComponentType = componentType; return dialogRef; } /** * @private * @param {?} config * @return {?} */ appendDialogComponentToBody(config) { /** @type {?} */ const map = new WeakMap(); map.set(DialogConfig, config); /** @type {?} */ const dialogRef = new DialogRef(); map.set(DialogRef, dialogRef); /** @type {?} */ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(NpDialog); /** @type {?} */ const componentRef = componentFactory.create(new DialogInjector(this.injector, map)); this.appRef.attachView(componentRef.hostView); /** @type {?} */ const domElem = (/** @type {?} */ (((/** @type {?} */ (componentRef.hostView))).rootNodes[0])); document.body.appendChild(domElem); /** @type {?} */ const sub = dialogRef.afterClosed.subscribe((/** * @return {?} */ () => { this.removeDialogComponentFromBody(componentRef); sub.unsubscribe(); })); this.dialogComponentRef = componentRef; return dialogRef; } // [KevinZhang]: Need to pass dialogComponentRef as parameter, because this service is providedIn DialogModule, // so only one instance in this module, thus we need to pass dialogComponentRef once we open a new dialog, // this will deal with a scenario for nested dialog close event /** * @private * @param {?} dialogComponentRef * @return {?} */ removeDialogComponentFromBody(dialogComponentRef) { this.appRef.detachView(dialogComponentRef.hostView); dialogComponentRef.destroy(); } } DialogService.decorators = [ { type: Injectable, args: [{ providedIn: NpDialogModule },] } ]; /** @nocollapse */ DialogService.ctorParameters = () => [ { type: ComponentFactoryResolver }, { type: ApplicationRef }, { type: Injector } ]; /** @nocollapse */ DialogService.ngInjectableDef = i0.defineInjectable({ factory: function DialogService_Factory() { return new DialogService(i0.inject(i0.ComponentFactoryResolver), i0.inject(i0.ApplicationRef), i0.inject(i0.INJECTOR)); }, token: DialogService, providedIn: i1.NpDialogModule }); if (false) { /** @type {?} */ DialogService.prototype.dialogComponentRef; /** * @type {?} * @private */ DialogService.prototype.componentFactoryResolver; /** * @type {?} * @private */ DialogService.prototype.appRef; /** * @type {?} * @private */ DialogService.prototype.injector; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcGx1dG8vIiwic291cmNlcyI6WyJsaWIvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFnQix3QkFBd0IsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBUXpDLE1BQU0sT0FBTyxhQUFhOzs7Ozs7SUFHeEIsWUFDVSx3QkFBa0QsRUFDbEQsTUFBc0IsRUFDdEIsUUFBa0I7UUFGbEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQ3hCLENBQUM7Ozs7OztJQUVFLElBQUksQ0FBQyxhQUF3QixFQUFFLE1BQW9COztjQUNsRCxTQUFTLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQztRQUUxRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztRQUVwRSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOzs7Ozs7SUFFTywyQkFBMkIsQ0FBQyxNQUFvQjs7Y0FDaEQsR0FBRyxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ3pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDOztjQUV4QixTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUU7UUFDakMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7O2NBRXhCLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7O2NBQ2xGLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7O2NBRXhDLE9BQU8sR0FBRyxtQkFBQSxDQUFDLG1CQUFBLFlBQVksQ0FBQyxRQUFRLEVBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQWU7UUFDM0YsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7O2NBRTdCLEdBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVM7OztRQUFDLEdBQUcsRUFBRTtZQUMvQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDakQsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLENBQUMsRUFBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLENBQUM7UUFFdkMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs7Ozs7Ozs7O0lBS08sNkJBQTZCLENBQUMsa0JBQTBDO1FBQzlFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7OztZQWxERixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLGNBQWM7YUFDM0I7Ozs7WUFaa0Msd0JBQXdCO1lBQUUsY0FBYztZQUFFLFFBQVE7Ozs7O0lBY25GLDJDQUEyQzs7Ozs7SUFHekMsaURBQTBEOzs7OztJQUMxRCwrQkFBOEI7Ozs7O0lBQzlCLGlDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIENvbXBvbmVudFJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBBcHBsaWNhdGlvblJlZiwgSW5qZWN0b3IsIEVtYmVkZGVkVmlld1JlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOcERpYWxvZ01vZHVsZSB9IGZyb20gJy4vZGlhbG9nLm1vZHVsZSc7XHJcbmltcG9ydCB7IE5wRGlhbG9nIH0gZnJvbSAnLi9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnLi9kaWFsb2ctY29uZmlnJztcclxuaW1wb3J0IHsgRGlhbG9nSW5qZWN0b3IgfSBmcm9tICcuL2RpYWxvZy1pbmplY3Rvcic7XHJcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJy4vZGlhbG9nLXJlZic7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IE5wRGlhbG9nTW9kdWxlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcclxuICBkaWFsb2dDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxOcERpYWxvZz47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIG9wZW4oY29tcG9uZW50VHlwZTogVHlwZTxhbnk+LCBjb25maWc6IERpYWxvZ0NvbmZpZykge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5hcHBlbmREaWFsb2dDb21wb25lbnRUb0JvZHkoY29uZmlnKTtcclxuXHJcbiAgICB0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jaGlsZENvbXBvbmVudFR5cGUgPSBjb21wb25lbnRUeXBlO1xyXG5cclxuICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGVuZERpYWxvZ0NvbXBvbmVudFRvQm9keShjb25maWc6IERpYWxvZ0NvbmZpZykge1xyXG4gICAgY29uc3QgbWFwID0gbmV3IFdlYWtNYXAoKTtcclxuICAgIG1hcC5zZXQoRGlhbG9nQ29uZmlnLCBjb25maWcpO1xyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IG5ldyBEaWFsb2dSZWYoKTtcclxuICAgIG1hcC5zZXQoRGlhbG9nUmVmLCBkaWFsb2dSZWYpO1xyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShOcERpYWxvZyk7XHJcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZShuZXcgRGlhbG9nSW5qZWN0b3IodGhpcy5pbmplY3RvciwgbWFwKSk7XHJcbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcblxyXG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XHJcblxyXG4gICAgY29uc3Qgc3ViID0gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlRGlhbG9nQ29tcG9uZW50RnJvbUJvZHkoY29tcG9uZW50UmVmKTtcclxuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZiA9IGNvbXBvbmVudFJlZjtcclxuXHJcbiAgICByZXR1cm4gZGlhbG9nUmVmO1xyXG4gIH1cclxuXHJcbiAgLy8gW0tldmluWmhhbmddOiBOZWVkIHRvIHBhc3MgZGlhbG9nQ29tcG9uZW50UmVmIGFzIHBhcmFtZXRlciwgYmVjYXVzZSB0aGlzIHNlcnZpY2UgaXMgcHJvdmlkZWRJbiBEaWFsb2dNb2R1bGUsXHJcbiAgLy8gc28gb25seSBvbmUgaW5zdGFuY2UgaW4gdGhpcyBtb2R1bGUsIHRodXMgd2UgbmVlZCB0byBwYXNzIGRpYWxvZ0NvbXBvbmVudFJlZiBvbmNlIHdlIG9wZW4gYSBuZXcgZGlhbG9nLFxyXG4gIC8vIHRoaXMgd2lsbCBkZWFsIHdpdGggYSBzY2VuYXJpbyBmb3IgbmVzdGVkIGRpYWxvZyBjbG9zZSBldmVudFxyXG4gIHByaXZhdGUgcmVtb3ZlRGlhbG9nQ29tcG9uZW50RnJvbUJvZHkoZGlhbG9nQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8TnBEaWFsb2c+KSB7XHJcbiAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGRpYWxvZ0NvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcbiAgICBkaWFsb2dDb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG4iXX0=