UNPKG

@asi-ngtools/lib

Version:

This project is a little components library, simple to use, which will help you to simplify your project.

107 lines (106 loc) 12.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { AsiDialog } from './dialog/asi-dialog.component'; import { AsiDialogContainer } from './container/asi-dialog-container.component'; import { Injectable, ComponentFactoryResolver, ApplicationRef } from '@angular/core'; export class AsiDialogService { /** * @param {?} resolver * @param {?} appRef */ constructor(resolver, appRef) { this.resolver = resolver; this.appRef = appRef; } /** * @template T * @param {?} content * @param {?} config * @return {?} */ fromComponent(content, config) { /** @type {?} */ let containerRef = this.getContainer(); if (!this.dialogEmptySubscription || this.dialogEmptySubscription.closed) { this.dialogEmptySubscription = containerRef.instance.onContainerEmpty().subscribe(() => { this.dialogEmptySubscription.unsubscribe(); this.dialogContainer.destroy(); this.dialogContainer = null; }); } /** @type {?} */ let dialogRef = this.createDialog(content, containerRef, config); containerRef.instance.addDialog(dialogRef); return dialogRef.instance; } /** * @return {?} */ getContainer() { if (this.dialogContainer == null) { /** @type {?} */ const rootComponent = this.appRef.components[0].instance; if (!rootComponent.viewContainerRef) { /** @type {?} */ const appName = this.appRef.componentTypes[0].name; // tslint:disable-next-line:max-line-length throw new Error('AsiDialog: Please add "viewContainerRef : ViewContainerRef" declaration in your root component constructor : ' + appName); } /** @type {?} */ const asiDialogContainerFactory = this.resolver.resolveComponentFactory(AsiDialogContainer); /** @type {?} */ let containerRef = rootComponent.viewContainerRef.createComponent(asiDialogContainerFactory, 0); this.dialogContainer = containerRef; } return this.dialogContainer; } /** * @template T * @param {?} content * @param {?} containerRef * @param {?} config * @return {?} */ createDialog(content, containerRef, config) { /** @type {?} */ const asiDialogFactory = this.resolver.resolveComponentFactory(AsiDialog); /** @type {?} */ let asiDialogRef = containerRef.instance.viewContainerRef.createComponent(asiDialogFactory, 0); asiDialogRef.instance.setConfig(config); // Moving dialog in div dialog-container containerRef.location.nativeElement.children[0].appendChild(asiDialogRef.location.nativeElement); /** @type {?} */ const contentFactory = this.resolver.resolveComponentFactory(content); /** @type {?} */ let contentRef = asiDialogRef.instance.viewContainerRef.createComponent(contentFactory); /** @type {?} */ let contentComponent = contentRef.instance; // Ajout de la reference du composant dans le AsiDialog asiDialogRef.instance['_component'] = contentComponent; contentComponent.registerDialog(asiDialogRef.instance); // Deplacement du contenu dans la div dialog-panel asiDialogRef.location.nativeElement.children[0].appendChild(contentRef.location.nativeElement); return asiDialogRef; } } AsiDialogService.decorators = [ { type: Injectable } ]; /** @nocollapse */ AsiDialogService.ctorParameters = () => [ { type: ComponentFactoryResolver }, { type: ApplicationRef } ]; if (false) { /** @type {?} */ AsiDialogService.prototype.dialogContainer; /** @type {?} */ AsiDialogService.prototype.dialogEmptySubscription; /** @type {?} */ AsiDialogService.prototype.resolver; /** @type {?} */ AsiDialogService.prototype.appRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWRpYWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFzaS1uZ3Rvb2xzL2xpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FzaS1kaWFsb2cvYXNpLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFaEYsT0FBTyxFQUFFLFVBQVUsRUFBb0Isd0JBQXdCLEVBQWdCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlySCxNQUFNOzs7OztJQUtKLFlBQW9CLFFBQWtDLEVBQVUsTUFBc0I7UUFBbEUsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFnQjtLQUNyRjs7Ozs7OztJQUVELGFBQWEsQ0FBMEIsT0FBeUIsRUFBRSxNQUF1Qjs7UUFDdkYsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXZDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDckYsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQzthQUM3QixDQUFDLENBQUM7U0FDSjs7UUFFRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFM0MsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7S0FDM0I7Ozs7SUFFTyxZQUFZO1FBQ2xCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQzs7WUFFakMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3pELEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzs7Z0JBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs7Z0JBRW5ELE1BQU0sSUFBSSxLQUFLLENBQUMsK0dBQStHLEdBQUcsT0FBTyxDQUFDLENBQUM7YUFDNUk7O1lBRUQsTUFBTSx5QkFBeUIsR0FBeUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDOztZQUNsSSxJQUFJLFlBQVksR0FBcUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsSSxJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQztTQUNyQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDOzs7Ozs7Ozs7SUFHdEIsWUFBWSxDQUEwQixPQUF5QixFQUFFLFlBQThDLEVBQ3JILE1BQXVCOztRQUd2QixNQUFNLGdCQUFnQixHQUFtQyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFlLFNBQVMsQ0FBQyxDQUFDOztRQUN4SCxJQUFJLFlBQVksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRixZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7UUFHeEMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDOztRQUdqRyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDOztRQUN0RSxJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQzs7UUFFeEYsSUFBSSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDOztRQUczQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBRXZELGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7O1FBR3ZELFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUvRixNQUFNLENBQUMsWUFBWSxDQUFDOzs7O1lBckV2QixVQUFVOzs7O1lBSDRCLHdCQUF3QjtZQUFnQixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNpRGlhbG9nVmlldyB9IGZyb20gJy4vYXNpLWRpYWxvZy12aWV3JztcclxuaW1wb3J0IHsgQXNpRGlhbG9nIH0gZnJvbSAnLi9kaWFsb2cvYXNpLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc2lEaWFsb2dDb25maWcgfSBmcm9tICcuL2FzaS1kaWFsb2ctY29uZmlnJztcclxuaW1wb3J0IHsgQXNpRGlhbG9nQ29udGFpbmVyIH0gZnJvbSAnLi9jb250YWluZXIvYXNpLWRpYWxvZy1jb250YWluZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJy4vLi4vY29tbW9uL2NvbXBvbmVudC10eXBlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgQ29tcG9uZW50RmFjdG9yeSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBDb21wb25lbnRSZWYsIEFwcGxpY2F0aW9uUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXNpRGlhbG9nU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgZGlhbG9nQ29udGFpbmVyOiBDb21wb25lbnRSZWY8QXNpRGlhbG9nQ29udGFpbmVyPjtcclxuICBwcml2YXRlIGRpYWxvZ0VtcHR5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmKSB7XHJcbiAgfVxyXG5cclxuICBmcm9tQ29tcG9uZW50PFQgZXh0ZW5kcyBBc2lEaWFsb2dWaWV3Pihjb250ZW50OiBDb21wb25lbnRUeXBlPFQ+LCBjb25maWc6IEFzaURpYWxvZ0NvbmZpZyk6IEFzaURpYWxvZzxUPiB7XHJcbiAgICBsZXQgY29udGFpbmVyUmVmID0gdGhpcy5nZXRDb250YWluZXIoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGlhbG9nRW1wdHlTdWJzY3JpcHRpb24gfHwgdGhpcy5kaWFsb2dFbXB0eVN1YnNjcmlwdGlvbi5jbG9zZWQpIHtcclxuICAgICAgdGhpcy5kaWFsb2dFbXB0eVN1YnNjcmlwdGlvbiA9IGNvbnRhaW5lclJlZi5pbnN0YW5jZS5vbkNvbnRhaW5lckVtcHR5KCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRpYWxvZ0VtcHR5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dDb250YWluZXIuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyID0gbnVsbDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRpYWxvZ1JlZiA9IHRoaXMuY3JlYXRlRGlhbG9nKGNvbnRlbnQsIGNvbnRhaW5lclJlZiwgY29uZmlnKTtcclxuICAgIGNvbnRhaW5lclJlZi5pbnN0YW5jZS5hZGREaWFsb2coZGlhbG9nUmVmKTtcclxuXHJcbiAgICByZXR1cm4gZGlhbG9nUmVmLmluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb250YWluZXIoKTogQ29tcG9uZW50UmVmPEFzaURpYWxvZ0NvbnRhaW5lcj4ge1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nQ29udGFpbmVyID09IG51bGwpIHtcclxuICAgICAgLy8gUsOpY3VwZXJhdGlvbiBkdSByb290Q29tcG9uZW50XHJcbiAgICAgIGNvbnN0IHJvb3RDb21wb25lbnQgPSB0aGlzLmFwcFJlZi5jb21wb25lbnRzWzBdLmluc3RhbmNlO1xyXG4gICAgICBpZiAoIXJvb3RDb21wb25lbnQudmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIGNvbnN0IGFwcE5hbWUgPSB0aGlzLmFwcFJlZi5jb21wb25lbnRUeXBlc1swXS5uYW1lO1xyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FzaURpYWxvZzogUGxlYXNlIGFkZCBcInZpZXdDb250YWluZXJSZWYgOiBWaWV3Q29udGFpbmVyUmVmXCIgZGVjbGFyYXRpb24gaW4geW91ciByb290IGNvbXBvbmVudCBjb25zdHJ1Y3RvciA6ICcgKyBhcHBOYW1lKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBDcsOpYXRpb24gZCd1biBBc2lEaWFsb2dDb250YWluZXJcclxuICAgICAgY29uc3QgYXNpRGlhbG9nQ29udGFpbmVyRmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxBc2lEaWFsb2dDb250YWluZXI+ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShBc2lEaWFsb2dDb250YWluZXIpO1xyXG4gICAgICBsZXQgY29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8QXNpRGlhbG9nQ29udGFpbmVyPiA9IHJvb3RDb21wb25lbnQudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoYXNpRGlhbG9nQ29udGFpbmVyRmFjdG9yeSwgMCk7XHJcbiAgICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyID0gY29udGFpbmVyUmVmO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nQ29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEaWFsb2c8VCBleHRlbmRzIEFzaURpYWxvZ1ZpZXc+KGNvbnRlbnQ6IENvbXBvbmVudFR5cGU8VD4sIGNvbnRhaW5lclJlZjogQ29tcG9uZW50UmVmPEFzaURpYWxvZ0NvbnRhaW5lcj4sXHJcbiAgICBjb25maWc6IEFzaURpYWxvZ0NvbmZpZyk6IENvbXBvbmVudFJlZjxBc2lEaWFsb2c8VD4+IHtcclxuXHJcbiAgICAvLyBDcmVhdGlvbiBkZSBsYSBkaWFsb2dcclxuICAgIGNvbnN0IGFzaURpYWxvZ0ZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8QXNpRGlhbG9nPFQ+PiA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk8QXNpRGlhbG9nPFQ+PihBc2lEaWFsb2cpO1xyXG4gICAgbGV0IGFzaURpYWxvZ1JlZiA9IGNvbnRhaW5lclJlZi5pbnN0YW5jZS52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChhc2lEaWFsb2dGYWN0b3J5LCAwKTtcclxuXHJcbiAgICBhc2lEaWFsb2dSZWYuaW5zdGFuY2Uuc2V0Q29uZmlnKGNvbmZpZyk7XHJcblxyXG4gICAgLy8gTW92aW5nIGRpYWxvZyBpbiBkaXYgZGlhbG9nLWNvbnRhaW5lclxyXG4gICAgY29udGFpbmVyUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uYXBwZW5kQ2hpbGQoYXNpRGlhbG9nUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgIC8vICBDcmVhdGUgY29tcG9uZW50XHJcbiAgICBjb25zdCBjb250ZW50RmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29udGVudCk7XHJcbiAgICBsZXQgY29udGVudFJlZiA9IGFzaURpYWxvZ1JlZi5pbnN0YW5jZS52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb250ZW50RmFjdG9yeSk7XHJcblxyXG4gICAgbGV0IGNvbnRlbnRDb21wb25lbnQgPSBjb250ZW50UmVmLmluc3RhbmNlO1xyXG5cclxuICAgIC8vIEFqb3V0IGRlIGxhIHJlZmVyZW5jZSBkdSBjb21wb3NhbnQgZGFucyBsZSBBc2lEaWFsb2dcclxuICAgIGFzaURpYWxvZ1JlZi5pbnN0YW5jZVsnX2NvbXBvbmVudCddID0gY29udGVudENvbXBvbmVudDtcclxuXHJcbiAgICBjb250ZW50Q29tcG9uZW50LnJlZ2lzdGVyRGlhbG9nKGFzaURpYWxvZ1JlZi5pbnN0YW5jZSk7XHJcblxyXG4gICAgLy8gRGVwbGFjZW1lbnQgZHUgY29udGVudSBkYW5zIGxhIGRpdiBkaWFsb2ctcGFuZWxcclxuICAgIGFzaURpYWxvZ1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmFwcGVuZENoaWxkKGNvbnRlbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIGFzaURpYWxvZ1JlZjtcclxuICB9XHJcbn1cclxuIl19