ngx-pluto
Version:
113 lines • 9.62 kB
JavaScript
/**
* @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=