@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
JavaScript
/**
* @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