UNPKG

@asi-ngtools/lib

Version:

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

123 lines (122 loc) 14 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { AsiNotification } from './notification/asi-notification.component'; import { AsiNotificationContainer } from './container/asi-notification-container.component'; import { Injectable, ComponentFactoryResolver, ApplicationRef } from '@angular/core'; var AsiNotificationService = /** @class */ (function () { function AsiNotificationService(resolver, appRef) { this.resolver = resolver; this.appRef = appRef; this.containerByPosition = new Map(); } /** * @template T * @param {?} content * @param {?} config * @return {?} */ AsiNotificationService.prototype.fromComponent = /** * @template T * @param {?} content * @param {?} config * @return {?} */ function (content, config) { /** @type {?} */ var containerRef = this.getContainerForPosition(config.position); /** @type {?} */ var notificationRef = this.createNotificiation(content, containerRef, config); containerRef.instance.addNotification(notificationRef, config); return notificationRef.instance; }; /** * @param {?} position * @return {?} */ AsiNotificationService.prototype.getContainerForPosition = /** * @param {?} position * @return {?} */ function (position) { var _this = this; if (this.containerByPosition.get(position) == null) { /** @type {?} */ var rootComponent = this.appRef.components[0].instance; if (!rootComponent.viewContainerRef) { /** @type {?} */ var appName = this.appRef.componentTypes[0].name; // tslint:disable-next-line:max-line-length throw new Error('AsiNotification : Please add "viewContainerRef : ViewContainerRef" declaration in your root component constructor : ' + appName); } /** @type {?} */ var asiNotificationContainerFactory = this.resolver.resolveComponentFactory(AsiNotificationContainer); /** @type {?} */ var containerRef = rootComponent.viewContainerRef.createComponent(asiNotificationContainerFactory, 0); containerRef.instance.setPosition(position); this.containerByPosition.set(position, containerRef); // Ecoute de la mise a vide du container pour le supprimer containerRef.instance.onContainerEmpty().subscribe(function (asiNotificationContainer) { /** @type {?} */ var containerToDestroy = _this.containerByPosition.get(asiNotificationContainer.getPosition()); _this.containerByPosition.delete(asiNotificationContainer.getPosition()); containerToDestroy.destroy(); }); } return this.containerByPosition.get(position); }; /** * @template T * @param {?} content * @param {?} containerRef * @param {?} config * @return {?} */ AsiNotificationService.prototype.createNotificiation = /** * @template T * @param {?} content * @param {?} containerRef * @param {?} config * @return {?} */ function (content, containerRef, config) { /** @type {?} */ var asiNotificationFactory = this.resolver.resolveComponentFactory(AsiNotification); /** @type {?} */ var asiNotificationRef = containerRef.instance.viewContainerRef.createComponent(asiNotificationFactory, 0); asiNotificationRef.instance.setConfig(config); // Deplacement de la notification dans la div notifications-container containerRef.location.nativeElement.children[0].appendChild(asiNotificationRef.location.nativeElement); /** @type {?} */ var contentFactory = this.resolver.resolveComponentFactory(content); /** @type {?} */ var contentRef = asiNotificationRef.instance.viewContainerRef.createComponent(contentFactory); /** @type {?} */ var contentComponent = contentRef.instance; // Ajout de la reference du composant dans le AsiNotification asiNotificationRef.instance['_component'] = contentComponent; // Deplacement du contenu dans la div notification-panel asiNotificationRef.location.nativeElement.appendChild(contentRef.location.nativeElement); return asiNotificationRef; }; AsiNotificationService.decorators = [ { type: Injectable } ]; /** @nocollapse */ AsiNotificationService.ctorParameters = function () { return [ { type: ComponentFactoryResolver }, { type: ApplicationRef } ]; }; return AsiNotificationService; }()); export { AsiNotificationService }; if (false) { /** @type {?} */ AsiNotificationService.prototype.containerByPosition; /** @type {?} */ AsiNotificationService.prototype.resolver; /** @type {?} */ AsiNotificationService.prototype.appRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFzaS1uZ3Rvb2xzL2xpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FzaS1ub3RpZmljYXRpb24vYXNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFNUYsT0FBTyxFQUFFLFVBQVUsRUFBb0Isd0JBQXdCLEVBQWdCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7SUFPbkgsZ0NBQW9CLFFBQWtDLEVBQVUsTUFBc0I7UUFBbEUsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFnQjttQ0FGeEQsSUFBSSxHQUFHLEVBQW1FO0tBR3ZHOzs7Ozs7O0lBRUQsOENBQWE7Ozs7OztJQUFiLFVBQWlCLE9BQXlCLEVBQUUsTUFBNkI7O1FBQ3ZFLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7O1FBRWpFLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvRCxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztLQUNqQzs7Ozs7SUFFTyx3REFBdUI7Ozs7Y0FBQyxRQUFpQzs7UUFDL0QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDOztZQUVuRCxJQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDekQsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDOztnQkFDcEMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDOztnQkFFbkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzSEFBc0gsR0FBRyxPQUFPLENBQUMsQ0FBQzthQUNuSjs7WUFFRCxJQUFNLCtCQUErQixHQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDLENBQUM7O1lBQ2xFLElBQUksWUFBWSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7O1lBR3JELFlBQVksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBQyx3QkFBa0Q7O2dCQUNwRyxJQUFNLGtCQUFrQixHQUFHLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDaEcsS0FBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM5QixDQUFDLENBQUM7U0FDSjtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7Ozs7Ozs7SUFHeEMsb0RBQW1COzs7Ozs7O2NBQUksT0FBeUIsRUFBRSxZQUFvRCxFQUM1RyxNQUE2Qjs7UUFHN0IsSUFBTSxzQkFBc0IsR0FDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBcUIsZUFBZSxDQUFDLENBQUM7O1FBQzdFLElBQUksa0JBQWtCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFM0csa0JBQWtCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7UUFHOUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7O1FBR3ZHLElBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7O1FBQ3RFLElBQUksVUFBVSxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7O1FBRTlGLElBQUksZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQzs7UUFHM0Msa0JBQWtCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLGdCQUFnQixDQUFDOztRQUc3RCxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpGLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQzs7O2dCQXBFN0IsVUFBVTs7OztnQkFGNEIsd0JBQXdCO2dCQUFnQixjQUFjOztpQ0FKN0Y7O1NBT2Esc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJy4vLi4vY29tbW9uL2NvbXBvbmVudC10eXBlJztcclxuaW1wb3J0IHsgQXNpTm90aWZpY2F0aW9uIH0gZnJvbSAnLi9ub3RpZmljYXRpb24vYXNpLW5vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc2lOb3RpZmljYXRpb25Db250YWluZXIgfSBmcm9tICcuL2NvbnRhaW5lci9hc2ktbm90aWZpY2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc2lOb3RpZmljYXRpb25Db25maWcsIEFzaU5vdGlmaWNhdGlvblBvc2l0aW9uIH0gZnJvbSAnLi9hc2ktbm90aWZpY2F0aW9uLWNvbmZpZyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIENvbXBvbmVudEZhY3RvcnksIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgQ29tcG9uZW50UmVmLCBBcHBsaWNhdGlvblJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXNpTm90aWZpY2F0aW9uU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgY29udGFpbmVyQnlQb3NpdGlvbiA9IG5ldyBNYXA8QXNpTm90aWZpY2F0aW9uUG9zaXRpb24sIENvbXBvbmVudFJlZjxBc2lOb3RpZmljYXRpb25Db250YWluZXI+PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZikge1xyXG4gIH1cclxuXHJcbiAgZnJvbUNvbXBvbmVudDxUPihjb250ZW50OiBDb21wb25lbnRUeXBlPFQ+LCBjb25maWc6IEFzaU5vdGlmaWNhdGlvbkNvbmZpZyk6IEFzaU5vdGlmaWNhdGlvbjxUPiB7XHJcbiAgICBsZXQgY29udGFpbmVyUmVmID0gdGhpcy5nZXRDb250YWluZXJGb3JQb3NpdGlvbihjb25maWcucG9zaXRpb24pO1xyXG5cclxuICAgIGxldCBub3RpZmljYXRpb25SZWYgPSB0aGlzLmNyZWF0ZU5vdGlmaWNpYXRpb24oY29udGVudCwgY29udGFpbmVyUmVmLCBjb25maWcpO1xyXG4gICAgY29udGFpbmVyUmVmLmluc3RhbmNlLmFkZE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25SZWYsIGNvbmZpZyk7XHJcblxyXG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvblJlZi5pbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGFpbmVyRm9yUG9zaXRpb24ocG9zaXRpb246IEFzaU5vdGlmaWNhdGlvblBvc2l0aW9uKTogQ29tcG9uZW50UmVmPEFzaU5vdGlmaWNhdGlvbkNvbnRhaW5lcj4ge1xyXG4gICAgaWYgKHRoaXMuY29udGFpbmVyQnlQb3NpdGlvbi5nZXQocG9zaXRpb24pID09IG51bGwpIHtcclxuICAgICAgLy8gUsOpY3VwZXJhdGlvbiBkdSByb290Q29tcG9uZW50XHJcbiAgICAgIGNvbnN0IHJvb3RDb21wb25lbnQgPSB0aGlzLmFwcFJlZi5jb21wb25lbnRzWzBdLmluc3RhbmNlO1xyXG4gICAgICBpZiAoIXJvb3RDb21wb25lbnQudmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIGNvbnN0IGFwcE5hbWUgPSB0aGlzLmFwcFJlZi5jb21wb25lbnRUeXBlc1swXS5uYW1lO1xyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FzaU5vdGlmaWNhdGlvbiA6IFBsZWFzZSBhZGQgXCJ2aWV3Q29udGFpbmVyUmVmIDogVmlld0NvbnRhaW5lclJlZlwiIGRlY2xhcmF0aW9uIGluIHlvdXIgcm9vdCBjb21wb25lbnQgY29uc3RydWN0b3IgOiAnICsgYXBwTmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gQ3LDqWF0aW9uIGQndW4gQXNpTm90aWZpY2F0aW9uQ29udGFpbmVyXHJcbiAgICAgIGNvbnN0IGFzaU5vdGlmaWNhdGlvbkNvbnRhaW5lckZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8QXNpTm90aWZpY2F0aW9uQ29udGFpbmVyPiA9XHJcbiAgICAgICAgdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShBc2lOb3RpZmljYXRpb25Db250YWluZXIpO1xyXG4gICAgICBsZXQgY29udGFpbmVyUmVmID0gcm9vdENvbXBvbmVudC52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChhc2lOb3RpZmljYXRpb25Db250YWluZXJGYWN0b3J5LCAwKTtcclxuICAgICAgY29udGFpbmVyUmVmLmluc3RhbmNlLnNldFBvc2l0aW9uKHBvc2l0aW9uKTtcclxuICAgICAgdGhpcy5jb250YWluZXJCeVBvc2l0aW9uLnNldChwb3NpdGlvbiwgY29udGFpbmVyUmVmKTtcclxuXHJcbiAgICAgIC8vIEVjb3V0ZSBkZSBsYSBtaXNlIGEgdmlkZSBkdSBjb250YWluZXIgcG91ciBsZSBzdXBwcmltZXJcclxuICAgICAgY29udGFpbmVyUmVmLmluc3RhbmNlLm9uQ29udGFpbmVyRW1wdHkoKS5zdWJzY3JpYmUoKGFzaU5vdGlmaWNhdGlvbkNvbnRhaW5lcjogQXNpTm90aWZpY2F0aW9uQ29udGFpbmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyVG9EZXN0cm95ID0gdGhpcy5jb250YWluZXJCeVBvc2l0aW9uLmdldChhc2lOb3RpZmljYXRpb25Db250YWluZXIuZ2V0UG9zaXRpb24oKSk7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJCeVBvc2l0aW9uLmRlbGV0ZShhc2lOb3RpZmljYXRpb25Db250YWluZXIuZ2V0UG9zaXRpb24oKSk7XHJcbiAgICAgICAgY29udGFpbmVyVG9EZXN0cm95LmRlc3Ryb3koKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJCeVBvc2l0aW9uLmdldChwb3NpdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU5vdGlmaWNpYXRpb248VD4oY29udGVudDogQ29tcG9uZW50VHlwZTxUPiwgY29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8QXNpTm90aWZpY2F0aW9uQ29udGFpbmVyPixcclxuICAgIGNvbmZpZzogQXNpTm90aWZpY2F0aW9uQ29uZmlnKTogQ29tcG9uZW50UmVmPEFzaU5vdGlmaWNhdGlvbjxUPj4ge1xyXG5cclxuICAgIC8vIENyZWF0aW9uIGRlIGxhIG50b2ZpY2lhdGlvblxyXG4gICAgY29uc3QgYXNpTm90aWZpY2F0aW9uRmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxBc2lOb3RpZmljYXRpb248VD4+ID1cclxuICAgICAgdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeTxBc2lOb3RpZmljYXRpb248VD4+KEFzaU5vdGlmaWNhdGlvbik7XHJcbiAgICBsZXQgYXNpTm90aWZpY2F0aW9uUmVmID0gY29udGFpbmVyUmVmLmluc3RhbmNlLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGFzaU5vdGlmaWNhdGlvbkZhY3RvcnksIDApO1xyXG5cclxuICAgIGFzaU5vdGlmaWNhdGlvblJlZi5pbnN0YW5jZS5zZXRDb25maWcoY29uZmlnKTtcclxuXHJcbiAgICAvLyBEZXBsYWNlbWVudCBkZSBsYSBub3RpZmljYXRpb24gZGFucyBsYSBkaXYgbm90aWZpY2F0aW9ucy1jb250YWluZXJcclxuICAgIGNvbnRhaW5lclJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmFwcGVuZENoaWxkKGFzaU5vdGlmaWNhdGlvblJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcclxuXHJcbiAgICAvLyBDcsOpYXRpb24gZHUgY29tcG9zYW50IGTDqXNpcsOpXHJcbiAgICBjb25zdCBjb250ZW50RmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29udGVudCk7XHJcbiAgICBsZXQgY29udGVudFJlZiA9IGFzaU5vdGlmaWNhdGlvblJlZi5pbnN0YW5jZS52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb250ZW50RmFjdG9yeSk7XHJcblxyXG4gICAgbGV0IGNvbnRlbnRDb21wb25lbnQgPSBjb250ZW50UmVmLmluc3RhbmNlO1xyXG5cclxuICAgIC8vIEFqb3V0IGRlIGxhIHJlZmVyZW5jZSBkdSBjb21wb3NhbnQgZGFucyBsZSBBc2lOb3RpZmljYXRpb25cclxuICAgIGFzaU5vdGlmaWNhdGlvblJlZi5pbnN0YW5jZVsnX2NvbXBvbmVudCddID0gY29udGVudENvbXBvbmVudDtcclxuXHJcbiAgICAvLyBEZXBsYWNlbWVudCBkdSBjb250ZW51IGRhbnMgbGEgZGl2IG5vdGlmaWNhdGlvbi1wYW5lbFxyXG4gICAgYXNpTm90aWZpY2F0aW9uUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gYXNpTm90aWZpY2F0aW9uUmVmO1xyXG4gIH1cclxufVxyXG4iXX0=