angular2-notifications
Version:
> A light and easy to use notifications library for Angular 2. ~~It features both regular page notifications (toasts) and push notifications.~~
1 lines • 54.7 kB
Source Map (JSON)
{"version":3,"file":"angular2-notifications.mjs","sources":["../../../projects/angular2-notifications/src/lib/consts/default-icons.const.ts","../../../projects/angular2-notifications/src/lib/enums/notification-type.enum.ts","../../../projects/angular2-notifications/src/lib/services/notifications.service.ts","../../../projects/angular2-notifications/src/lib/components/notification/notification.component.ts","../../../projects/angular2-notifications/src/lib/components/notification/notification.component.html","../../../projects/angular2-notifications/src/lib/enums/notification-animation-type.enum.ts","../../../projects/angular2-notifications/src/lib/components/simple-notifications/simple-notifications.component.ts","../../../projects/angular2-notifications/src/lib/components/simple-notifications/simple-notifications.component.html","../../../projects/angular2-notifications/src/lib/consts/default-options.const.ts","../../../projects/angular2-notifications/src/lib/simple-notifications.module.ts","../../../projects/angular2-notifications/src/angular2-notifications.ts"],"sourcesContent":["import {Icons} from '../interfaces/icons';\r\n\r\nexport const DEFAULT_ICONS: Icons = {\r\n alert: `\r\n <svg class=\"simple-notification-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#ffffff\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\r\n <path d=\"M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\"/>\r\n </svg>\r\n `,\r\n error: `\r\n <svg class=\"simple-notification-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#ffffff\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\r\n <path d=\"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"/>\r\n </svg>\r\n `,\r\n info: `\r\n <svg class=\"simple-notification-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#ffffff\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\r\n <path d=\"M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z\"/>\r\n </svg>\r\n `,\r\n success: `\r\n <svg class=\"simple-notification-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#ffffff\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\r\n <path d=\"M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z\"/>\r\n </svg>\r\n `,\r\n warn: `\r\n <svg class=\"simple-notification-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#ffffff\" width=\"64\" viewBox=\"0 0 64 64\" height=\"64\">\r\n <circle cx=\"32.086\" cy=\"50.142\" r=\"2.256\"/>\r\n <path d=\"M30.08 25.012V42.32c0 1.107.897 2.005 2.006 2.005s2.006-.897 2.006-2.005V25.012c0-1.107-.897-2.006-2.006-2.006s-2.006.898-2.006 2.006z\"/>\r\n <path d=\"M63.766 59.234L33.856 3.082c-.697-1.308-2.844-1.308-3.54 0L.407 59.234c-.331.622-.312 1.372.051 1.975.362.605 1.015.975 1.72.975h59.816c.705 0 1.357-.369 1.721-.975.361-.603.381-1.353.051-1.975zM5.519 58.172L32.086 8.291l26.568 49.881H5.519z\"/>\r\n </svg>\r\n `\r\n};\r\n","export enum NotificationType {\r\n Success = 'success',\r\n Error = 'error',\r\n Alert = 'alert',\r\n Info = 'info',\r\n Warn = 'warn',\r\n Bare = 'bare'\r\n}\r\n","import { EventEmitter, Inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { DEFAULT_ICONS } from '../consts/default-icons.const';\r\nimport { NotificationType } from '../enums/notification-type.enum';\r\nimport { Icons } from '../interfaces/icons';\r\nimport { NotificationEvent } from '../interfaces/notification-event.type';\r\nimport { Notification } from '../interfaces/notification.type';\r\n\r\n@Injectable()\r\nexport class NotificationsService {\r\n constructor(\r\n @Inject('options') public globalOptions: any\r\n ) { }\r\n\r\n emitter = new Subject<NotificationEvent>();\r\n icons: Icons = DEFAULT_ICONS;\r\n\r\n set(notification: Notification, to: boolean): Notification {\r\n notification.id = notification.override && notification.override.id ?\r\n notification.override.id :\r\n Math.random().toString(36).substring(3);\r\n notification.click = new EventEmitter<{}>();\r\n notification.clickIcon = new EventEmitter<{}>();\r\n notification.timeoutEnd = new EventEmitter<{}>();\r\n\r\n this.emitter.next({ command: 'set', notification, add: to });\r\n return notification;\r\n }\r\n\r\n success(title: any = '', content: any = '', override?: any, context?: any): Notification {\r\n return this.set({ title, content: content || '', type: NotificationType.Success, icon: this.icons.success, override, context }, true);\r\n }\r\n\r\n error(title: any = '', content: any = '', override?: any, context?: any): Notification {\r\n return this.set({ title, content: content || '', type: NotificationType.Error, icon: this.icons.error, override, context }, true);\r\n }\r\n\r\n alert(title: any = '', content: any = '', override?: any, context?: any): Notification {\r\n return this.set({ title, content: content || '', type: NotificationType.Alert, icon: this.icons.alert, override, context }, true);\r\n }\r\n\r\n info(title: any = '', content: any = '', override?: any, context?: any): Notification {\r\n return this.set({ title, content: content || '', type: NotificationType.Info, icon: this.icons.info, override, context }, true);\r\n }\r\n\r\n warn(title: any = '', content: any = '', override?: any, context?: any): Notification {\r\n return this.set({ title, content: content || '', type: NotificationType.Warn, icon: this.icons.warn, override, context }, true);\r\n }\r\n\r\n bare(title: any = '', content: any = '', override?: any, context?: any): Notification {\r\n return this.set({ title, content: content || '', type: NotificationType.Bare, icon: 'bare', override, context }, true);\r\n }\r\n\r\n // With type method\r\n create(title: any = '', content: any = '', type = NotificationType.Success, override?: any, context?: any): Notification {\r\n return this.set({ title, content, type, icon: (this.icons as any)[type], override, context }, true);\r\n }\r\n\r\n // HTML Notification method\r\n html(html: any, type = NotificationType.Success, override?: any, icon = 'bare', context?: any): Notification {\r\n return this.set({ html, type, icon: (this.icons as any)[icon], override, context }, true);\r\n }\r\n\r\n // Remove all notifications method\r\n remove(id?: string): void {\r\n if (id) {\r\n this.emitter.next({ command: 'clean', id });\r\n } else {\r\n this.emitter.next({ command: 'cleanAll' });\r\n }\r\n }\r\n}\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { ChangeDetectionStrategy, Component, Input, NgZone, OnDestroy, OnInit, TemplateRef, ViewEncapsulation, ChangeDetectorRef, ViewRef } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { NotificationAnimationType } from '../../enums/notification-animation-type.enum';\r\nimport { Notification } from '../../interfaces/notification.type';\r\nimport { NotificationsService } from '../../services/notifications.service';\r\n\r\n@Component({\r\n selector: 'simple-notification',\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [\r\n trigger('enterLeave', [\r\n\r\n // Fade\r\n state('fade', style({opacity: 1})),\r\n transition('* => fade', [\r\n style({opacity: 0}),\r\n animate('400ms ease-in-out')\r\n ]),\r\n state('fadeOut', style({opacity: 0})),\r\n transition('fade => fadeOut', [\r\n style({opacity: 1}),\r\n animate('300ms ease-in-out')\r\n ]),\r\n\r\n // Enter from top\r\n state('fromTop', style({opacity: 1, transform: 'translateY(0)'})),\r\n transition('* => fromTop', [\r\n style({opacity: 0, transform: 'translateY(-5%)'}),\r\n animate('400ms ease-in-out')\r\n ]),\r\n state('fromTopOut', style({opacity: 0, transform: 'translateY(5%)'})),\r\n transition('fromTop => fromTopOut', [\r\n style({opacity: 1, transform: 'translateY(0)'}),\r\n animate('300ms ease-in-out')\r\n ]),\r\n\r\n // Enter from right\r\n state('fromRight', style({opacity: 1, transform: 'translateX(0)'})),\r\n transition('* => fromRight', [\r\n style({opacity: 0, transform: 'translateX(5%)'}),\r\n animate('400ms ease-in-out')\r\n ]),\r\n state('fromRightOut', style({opacity: 0, transform: 'translateX(-5%)'})),\r\n transition('fromRight => fromRightOut', [\r\n style({opacity: 1, transform: 'translateX(0)'}),\r\n animate('300ms ease-in-out')\r\n ]),\r\n\r\n // Enter from bottom\r\n state('fromBottom', style({opacity: 1, transform: 'translateY(0)'})),\r\n transition('* => fromBottom', [\r\n style({opacity: 0, transform: 'translateY(5%)'}),\r\n animate('400ms ease-in-out')\r\n ]),\r\n state('fromBottomOut', style({opacity: 0, transform: 'translateY(-5%)'})),\r\n transition('fromBottom => fromBottomOut', [\r\n style({opacity: 1, transform: 'translateY(0)'}),\r\n animate('300ms ease-in-out')\r\n ]),\r\n\r\n // Enter from left\r\n state('fromLeft', style({opacity: 1, transform: 'translateX(0)'})),\r\n transition('* => fromLeft', [\r\n style({opacity: 0, transform: 'translateX(-5%)'}),\r\n animate('400ms ease-in-out')\r\n ]),\r\n state('fromLeftOut', style({opacity: 0, transform: 'translateX(5%)'})),\r\n transition('fromLeft => fromLeftOut', [\r\n style({opacity: 1, transform: 'translateX(0)'}),\r\n animate('300ms ease-in-out')\r\n ]),\r\n\r\n // Rotate\r\n state('scale', style({opacity: 1, transform: 'scale(1)'})),\r\n transition('* => scale', [\r\n style({opacity: 0, transform: 'scale(0)'}),\r\n animate('400ms ease-in-out')\r\n ]),\r\n state('scaleOut', style({opacity: 0, transform: 'scale(0)'})),\r\n transition('scale => scaleOut', [\r\n style({opacity: 1, transform: 'scale(1)'}),\r\n animate('400ms ease-in-out')\r\n ]),\r\n\r\n // Scale\r\n state('rotate', style({opacity: 1, transform: 'rotate(0deg)'})),\r\n transition('* => rotate', [\r\n style({opacity: 0, transform: 'rotate(5deg)'}),\r\n animate('400ms ease-in-out')\r\n ]),\r\n state('rotateOut', style({opacity: 0, transform: 'rotate(-5deg)'})),\r\n transition('rotate => rotateOut', [\r\n style({opacity: 1, transform: 'rotate(0deg)'}),\r\n animate('400ms ease-in-out')\r\n ])\r\n ])\r\n ],\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class NotificationComponent implements OnInit, OnDestroy {\r\n\r\n @Input() timeOut: number;\r\n @Input() showProgressBar: boolean;\r\n @Input() pauseOnHover: boolean;\r\n @Input() clickToClose: boolean;\r\n @Input() clickIconToClose: boolean;\r\n @Input() maxLength: number;\r\n @Input() theClass: string;\r\n @Input() rtl: boolean;\r\n @Input() animate: NotificationAnimationType;\r\n @Input() position: number;\r\n @Input() item: Notification;\r\n\r\n\r\n // Progress bar variables\r\n title: any;\r\n content: any;\r\n\r\n titleIsTemplate = false;\r\n contentIsTemplate = false;\r\n htmlIsTemplate = false;\r\n\r\n progressWidth = 0;\r\n safeSvg: SafeHtml;\r\n safeInputHtml: SafeHtml;\r\n\r\n private stopTime = false;\r\n private timer: any;\r\n private framesPerSecond = 40;\r\n private sleepTime: number;\r\n private startTime: number;\r\n private endTime: number;\r\n private pauseStart: number;\r\n\r\n private icon: string;\r\n\r\n constructor(\r\n private notificationService: NotificationsService,\r\n private domSanitizer: DomSanitizer,\r\n private cd: ChangeDetectorRef,\r\n private zone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n if (this.item.override) {\r\n this.attachOverrides();\r\n }\r\n\r\n if (this.animate) {\r\n this.item.state = this.animate;\r\n }\r\n\r\n if (this.timeOut !== 0) {\r\n this.startTimeOut();\r\n }\r\n\r\n this.contentType(this.item.title, 'title');\r\n this.contentType(this.item.content, 'content');\r\n this.contentType(this.item.html, 'html');\r\n\r\n this.safeSvg = this.domSanitizer.bypassSecurityTrustHtml(this.icon || this.item.icon);\r\n this.safeInputHtml = this.domSanitizer.bypassSecurityTrustHtml(this.item.html);\r\n }\r\n\r\n ngOnDestroy() {\r\n clearTimeout(this.timer);\r\n this.cd.detach();\r\n }\r\n\r\n startTimeOut(): void {\r\n this.sleepTime = 1000 / this.framesPerSecond /* ms */;\r\n this.startTime = new Date().getTime();\r\n this.endTime = this.startTime + this.timeOut;\r\n this.zone.runOutsideAngular(() => this.timer = setTimeout(this.instance, this.sleepTime));\r\n }\r\n\r\n onEnter() {\r\n if (this.pauseOnHover) {\r\n this.stopTime = true;\r\n this.pauseStart = new Date().getTime();\r\n }\r\n }\r\n\r\n onLeave() {\r\n if (this.pauseOnHover) {\r\n this.stopTime = false;\r\n this.startTime += (new Date().getTime() - this.pauseStart);\r\n this.endTime += (new Date().getTime() - this.pauseStart);\r\n this.zone.runOutsideAngular(() => setTimeout(this.instance, this.sleepTime));\r\n }\r\n }\r\n\r\n onClick(event: MouseEvent) {\r\n this.item.click!.emit(event);\r\n\r\n if (this.clickToClose) {\r\n this.remove();\r\n }\r\n }\r\n\r\n onClickIcon(event: MouseEvent) {\r\n this.item.clickIcon!.emit(event);\r\n\r\n if (this.clickIconToClose) {\r\n this.remove();\r\n }\r\n }\r\n\r\n // Attach all the overrides\r\n attachOverrides() {\r\n Object.keys(this.item.override).forEach(a => {\r\n if (this.hasOwnProperty(a)) {\r\n (this as any)[a] = this.item.override[a];\r\n }\r\n });\r\n }\r\n\r\n private instance = () => {\r\n const now = new Date().getTime();\r\n\r\n if (this.endTime < now) {\r\n this.remove();\r\n this.item.timeoutEnd!.emit();\r\n } else if (!this.stopTime) {\r\n if (this.showProgressBar) {\r\n // We add this.sleepTime just to have 100% before close\r\n this.progressWidth = Math.min((now - this.startTime + this.sleepTime) * 100 / this.timeOut, 100);\r\n }\r\n\r\n this.timer = setTimeout(this.instance, this.sleepTime);\r\n }\r\n this.zone.run(() => {\r\n if (!(this.cd as ViewRef).destroyed) {\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n private remove() {\r\n if (this.animate) {\r\n this.item.state = this.animate + 'Out';\r\n setTimeout(() => {\r\n this.notificationService.set(this.item, false);\r\n }, 310);\r\n } else {\r\n this.notificationService.set(this.item, false);\r\n }\r\n }\r\n\r\n private contentType(item: any, key: string) {\r\n if (item instanceof TemplateRef) {\r\n this[key] = item;\r\n } else {\r\n this[key] = this.domSanitizer.bypassSecurityTrustHtml(item);\r\n }\r\n\r\n this[key + 'IsTemplate'] = item instanceof TemplateRef;\r\n }\r\n}\r\n","<div class=\"simple-notification\"\r\n [@enterLeave]=\"item.state\"\r\n (click)=\"onClick($event)\"\r\n [class]=\"theClass\"\r\n [ngClass]=\"{\r\n 'alert': item.type === 'alert',\r\n 'error': item.type === 'error',\r\n 'warn': item.type === 'warn',\r\n 'success': item.type === 'success',\r\n 'info': item.type === 'info',\r\n 'bare': item.type === 'bare',\r\n 'rtl-mode': rtl,\r\n 'has-icon': item.icon !== 'bare'\r\n }\"\r\n (mouseenter)=\"onEnter()\"\r\n (mouseleave)=\"onLeave()\">\r\n\r\n <div *ngIf=\"!item.html\">\r\n\r\n <div class=\"sn-title\" *ngIf=\"titleIsTemplate; else regularTitle\">\r\n <ng-container *ngTemplateOutlet=\"title; context: item.context\"></ng-container>\r\n </div>\r\n\r\n <ng-template #regularTitle>\r\n <div class=\"sn-title\" [innerHTML]=\"title\"></div>\r\n </ng-template>\r\n\r\n <div class=\"sn-content\" *ngIf=\"contentIsTemplate else regularContent\">\r\n <ng-container *ngTemplateOutlet=\"content; context: item.context\"></ng-container>\r\n </div>\r\n\r\n <ng-template #regularContent>\r\n <div class=\"sn-content\" [innerHTML]=\"content\"></div>\r\n </ng-template>\r\n\r\n <div class=\"icon\" *ngIf=\"item.icon !== 'bare'\" [innerHTML]=\"safeSvg\"></div>\r\n </div>\r\n <div *ngIf=\"item.html\">\r\n <div class=\"sn-html\" *ngIf=\"htmlIsTemplate; else regularHtml\">\r\n <ng-container *ngTemplateOutlet=\"item.html; context: item.context\"></ng-container>\r\n </div>\r\n\r\n <ng-template #regularHtml>\r\n <div class=\"sn-content\" [innerHTML]=\"safeInputHtml\"></div>\r\n </ng-template>\r\n\r\n <div class=\"icon\" [class.icon-hover]=\"clickIconToClose\" *ngIf=\"item.icon\" [innerHTML]=\"safeSvg\" (click)=\"onClickIcon($event)\"></div>\r\n </div>\r\n\r\n <div class=\"sn-progress-loader\" *ngIf=\"showProgressBar\">\r\n <span [ngStyle]=\"{'width': progressWidth + '%'}\"></span>\r\n </div>\r\n\r\n</div>\r\n","export enum NotificationAnimationType {\r\n Fade = 'fade',\r\n FromTop = 'fromTop',\r\n FromRight = 'fromRight',\r\n FromBottom = 'fromBottom',\r\n FromLeft = 'fromLeft',\r\n Scale = 'scale',\r\n Rotate = 'rotate'\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation, ChangeDetectorRef, ViewRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { NotificationAnimationType } from '../../enums/notification-animation-type.enum';\r\nimport { Notification } from '../../interfaces/notification.type';\r\nimport { Options, Position } from '../../interfaces/options.type';\r\nimport { NotificationsService } from '../../services/notifications.service';\r\n\r\n@Component({\r\n selector: 'simple-notifications',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './simple-notifications.component.html',\r\n styleUrls: ['./simple-notifications.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SimpleNotificationsComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private service: NotificationsService,\r\n private cd: ChangeDetectorRef\r\n ) { }\r\n\r\n @Input() set options(opt: Options) {\r\n this.usingComponentOptions = true;\r\n this.attachChanges(opt);\r\n }\r\n\r\n @Output() create = new EventEmitter();\r\n @Output() destroy = new EventEmitter();\r\n\r\n notifications: Notification[] = [];\r\n position: Position = ['bottom', 'right'];\r\n\r\n private lastNotificationCreated: Notification;\r\n private listener: Subscription;\r\n\r\n // Received values\r\n private lastOnBottom = true;\r\n private maxStack = 8;\r\n private preventLastDuplicates: any = false;\r\n private preventDuplicates = false;\r\n\r\n // Sent values\r\n timeOut = 0;\r\n maxLength = 0;\r\n clickToClose = true;\r\n clickIconToClose = false;\r\n showProgressBar = true;\r\n pauseOnHover = true;\r\n theClass = '';\r\n rtl = false;\r\n animate: NotificationAnimationType = NotificationAnimationType.FromRight;\r\n\r\n private usingComponentOptions = false;\r\n\r\n ngOnInit() {\r\n\r\n /**\r\n * Only attach global options if config\r\n * options were never sent through input\r\n */\r\n if (!this.usingComponentOptions) {\r\n this.attachChanges(\r\n this.service.globalOptions\r\n );\r\n }\r\n\r\n this.listener = this.service.emitter\r\n .subscribe(item => {\r\n switch (item.command) {\r\n case 'cleanAll':\r\n this.notifications = [];\r\n break;\r\n\r\n case 'clean':\r\n this.cleanSingle(item.id!);\r\n break;\r\n\r\n case 'set':\r\n if (item.add) {\r\n this.add(item.notification!);\r\n } else {\r\n this.defaultBehavior(item);\r\n }\r\n break;\r\n\r\n default:\r\n this.defaultBehavior(item);\r\n break;\r\n }\r\n if (!(this.cd as ViewRef).destroyed) {\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.listener) {\r\n this.listener.unsubscribe();\r\n }\r\n this.cd.detach();\r\n }\r\n\r\n // Default behavior on event\r\n defaultBehavior(value: any): void {\r\n this.notifications.splice(this.notifications.indexOf(value.notification), 1);\r\n this.destroy.emit(this.buildEmit(value.notification, false));\r\n }\r\n\r\n\r\n // Add the new notification to the notification array\r\n add(item: Notification): void {\r\n item.createdOn = new Date();\r\n\r\n const toBlock: boolean = this.preventLastDuplicates || this.preventDuplicates ? this.block(item) : false;\r\n\r\n // Save this as the last created notification\r\n this.lastNotificationCreated = item;\r\n // Override icon if set\r\n if (item.override && item.override.icons && item.override.icons[item.type]) {\r\n item.icon = item.override.icons[item.type];\r\n }\r\n\r\n if (!toBlock) {\r\n // Check if the notification should be added at the start or the end of the array\r\n if (this.lastOnBottom) {\r\n if (this.notifications.length >= this.maxStack) {\r\n this.notifications.splice(0, 1);\r\n }\r\n\r\n this.notifications.push(item);\r\n } else {\r\n if (this.notifications.length >= this.maxStack) {\r\n this.notifications.splice(this.notifications.length - 1, 1);\r\n }\r\n\r\n this.notifications.splice(0, 0, item);\r\n }\r\n\r\n this.create.emit(this.buildEmit(item, true));\r\n }\r\n }\r\n\r\n // Check if notifications should be prevented\r\n block(item: Notification): boolean {\r\n\r\n const toCheck = item.html ? this.checkHtml : this.checkStandard;\r\n\r\n if (this.preventDuplicates && this.notifications.length > 0) {\r\n for (const notification of this.notifications) {\r\n if (toCheck(notification, item)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n if (this.preventLastDuplicates) {\r\n\r\n let comp: Notification;\r\n\r\n if (this.preventLastDuplicates === 'visible' && this.notifications.length > 0) {\r\n if (this.lastOnBottom) {\r\n comp = this.notifications[this.notifications.length - 1];\r\n } else {\r\n comp = this.notifications[0];\r\n }\r\n } else if (this.preventLastDuplicates === 'all' && this.lastNotificationCreated) {\r\n comp = this.lastNotificationCreated;\r\n } else {\r\n return false;\r\n }\r\n return toCheck(comp, item);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n checkStandard(checker: Notification, item: Notification): boolean {\r\n return checker.type === item.type && checker.title === item.title && checker.content === item.content;\r\n }\r\n\r\n checkHtml(checker: Notification, item: Notification): boolean {\r\n return checker.html ?\r\n checker.type === item.type && checker.title === item.title && checker.content === item.content && checker.html === item.html :\r\n false;\r\n }\r\n\r\n // Attach all the changes received in the options object\r\n attachChanges(options: any) {\r\n for (const key in options) {\r\n if (this.hasOwnProperty(key)) {\r\n (this as any)[key] = options[key];\r\n } else if (key === 'icons') {\r\n this.service.icons = options[key];\r\n }\r\n }\r\n }\r\n\r\n buildEmit(notification: Notification, to: boolean) {\r\n const toEmit: Notification = {\r\n createdOn: notification.createdOn,\r\n type: notification.type,\r\n icon: notification.icon,\r\n id: notification.id\r\n };\r\n\r\n if (notification.html) {\r\n toEmit.html = notification.html;\r\n } else {\r\n toEmit.title = notification.title;\r\n toEmit.content = notification.content;\r\n }\r\n\r\n if (!to) {\r\n toEmit.destroyedOn = new Date();\r\n }\r\n\r\n return toEmit;\r\n }\r\n\r\n cleanSingle(id: string): void {\r\n let indexOfDelete = 0;\r\n let doDelete = false;\r\n let noti;\r\n\r\n this.notifications.forEach((notification, idx) => {\r\n if (notification.id === id) {\r\n indexOfDelete = idx;\r\n noti = notification;\r\n doDelete = true;\r\n }\r\n });\r\n\r\n if (doDelete) {\r\n this.notifications.splice(indexOfDelete, 1);\r\n this.destroy.emit(this.buildEmit(noti, false));\r\n }\r\n }\r\n}\r\n","<div class=\"simple-notification-wrapper\" [ngClass]=\"position\">\r\n <simple-notification\r\n *ngFor=\"let a of notifications; let i = index\"\r\n [item]=\"a\"\r\n [timeOut]=\"timeOut\"\r\n [clickToClose]=\"clickToClose\"\r\n [clickIconToClose]=\"clickIconToClose\"\r\n [maxLength]=\"maxLength\"\r\n [showProgressBar]=\"showProgressBar\"\r\n [pauseOnHover]=\"pauseOnHover\"\r\n [theClass]=\"theClass\"\r\n [rtl]=\"rtl\"\r\n [animate]=\"animate\"\r\n [position]=\"i\">\r\n </simple-notification>\r\n</div>","import {DEFAULT_ICONS} from './default-icons.const';\r\nimport {Options} from '../interfaces/options.type';\r\nimport {NotificationAnimationType} from '../enums/notification-animation-type.enum';\r\n\r\nexport const DEFAULT_OPTIONS: Options = {\r\n position: ['bottom', 'right'],\r\n timeOut: 0,\r\n showProgressBar: true,\r\n pauseOnHover: true,\r\n lastOnBottom: true,\r\n clickToClose: true,\r\n clickIconToClose: false,\r\n maxLength: 0,\r\n maxStack: 8,\r\n preventDuplicates: false,\r\n preventLastDuplicates: false,\r\n theClass: '',\r\n rtl: false,\r\n animate: NotificationAnimationType.FromRight,\r\n icons: DEFAULT_ICONS\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NotificationComponent } from './components/notification/notification.component';\r\nimport { SimpleNotificationsComponent } from './components/simple-notifications/simple-notifications.component';\r\nimport { DEFAULT_OPTIONS } from './consts/default-options.const';\r\nimport { Options } from './interfaces/options.type';\r\nimport { NotificationsService } from './services/notifications.service';\r\n\r\nexport const OPTIONS = new InjectionToken<Options>('options');\r\nexport function optionsFactory(options) {\r\n return {\r\n ...DEFAULT_OPTIONS,\r\n ...options\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ],\r\n declarations: [\r\n SimpleNotificationsComponent,\r\n NotificationComponent\r\n ],\r\n exports: [SimpleNotificationsComponent]\r\n})\r\nexport class SimpleNotificationsModule {\r\n static forRoot(options: Options = {}): ModuleWithProviders<SimpleNotificationsModule> {\r\n return {\r\n ngModule: SimpleNotificationsModule,\r\n providers: [\r\n NotificationsService,\r\n {\r\n provide: OPTIONS,\r\n useValue: options\r\n },\r\n {\r\n provide: 'options',\r\n useFactory: optionsFactory,\r\n deps: [OPTIONS]\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.NotificationsService","i2","i3.NotificationComponent"],"mappings":"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