ngx-toast-notifications
Version:
Toast notifications for Angular applications
1 lines • 24.3 kB
Source Map (JSON)
{"version":3,"file":"ngx-toast-notifications.js","sources":["ng://ngx-toast-notifications/toast.ts","ng://ngx-toast-notifications/toast-container/toast-container.component.ts","ng://ngx-toast-notifications/toast-container.service.ts","ng://ngx-toast-notifications/toast-notifications.config.ts","ng://ngx-toast-notifications/toast-content/basic-toast-content.component.ts","ng://ngx-toast-notifications/toaster.ts","ng://ngx-toast-notifications/core/toast-natifications.ts","ng://ngx-toast-notifications/toast-content/toast-content.directive.ts","ng://ngx-toast-notifications/toast-notifications.module.ts","ng://ngx-toast-notifications/core/toast-notification-core.module.ts","ng://ngx-toast-notifications/client/toast-notification-client.module.ts"],"sourcesContent":["import { Observable, Subject } from 'rxjs';\r\nimport { Type } from '@angular/core';\r\nimport { ToastType } from './toast-notifications.config';\r\nimport { ToastConfig } from './toast.config';\r\n\r\nexport class Toast {\r\n\r\n readonly autoClose: boolean;\r\n readonly duration: number;\r\n readonly text: string;\r\n readonly caption: string;\r\n readonly type: ToastType;\r\n readonly component: Type<any>;\r\n\r\n private readonly _closeFunction: (toast: Toast) => void;\r\n private readonly _onClose = new Subject<any>();\r\n private _timeoutId: any;\r\n\r\n constructor(\r\n config: ToastConfig,\r\n closeFunction: (toast: Toast) => void,\r\n ) {\r\n this.autoClose = config.autoClose;\r\n this.duration = config.duration > 0 ? config.duration : 0;\r\n this.text = config.text;\r\n this.caption = config.caption;\r\n this.type = config.type;\r\n this.component = config.component;\r\n this._closeFunction = closeFunction;\r\n this._setTimeout();\r\n }\r\n\r\n get onClose(): Observable<any> {\r\n return this._onClose.asObservable();\r\n }\r\n\r\n close(result?: any) {\r\n if (!this._onClose.closed) {\r\n this._onClose.next(result);\r\n this._onClose.complete();\r\n }\r\n this._closeFunction(this);\r\n this._clearTimeout();\r\n }\r\n\r\n private _setTimeout() {\r\n if (this.autoClose && this.duration > 0) {\r\n this._timeoutId = setTimeout(() => this.close(), this.duration);\r\n }\r\n }\r\n\r\n private _clearTimeout() {\r\n if (this._timeoutId) {\r\n clearTimeout(this._timeoutId);\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';\r\nimport { animate, animateChild, query, style, transition, trigger } from '@angular/animations';\r\nimport { ToastConfig } from '../toast.config';\r\nimport { Toast } from '../toast';\r\nimport { ToastPosition } from '../toast-notifications.config';\r\n\r\nconst nestedTransition = transition('* => *', [\r\n query('@*', animateChild(), {optional: true})\r\n]);\r\n\r\nconst shrinkInTransition = transition('void => *', [\r\n style({height: 0, opacity: 0, 'margin-top': 0}),\r\n animate(200, style({height: '*', opacity: 1, 'margin-top': '1rem'}))\r\n]);\r\n\r\nconst shrinkOutTransition = transition('* => void', [\r\n style({height: '!', opacity: 1, 'margin-top': '1rem'}),\r\n animate(150, style({height: 0, opacity: 0, 'margin-top': 0}))\r\n]);\r\n\r\nconst progressTransition = transition('void => *', [\r\n style({width: 0, opacity: 0}),\r\n animate('{{duration}}', style({width: '100%', opacity: 1}))\r\n]);\r\n\r\n@Component({\r\n templateUrl: './toast-container.component.html',\r\n styleUrls: ['./toast-container.component.scss'],\r\n animations: [\r\n trigger('nested', [nestedTransition]),\r\n trigger('shrink', [shrinkInTransition, shrinkOutTransition]),\r\n trigger('progress', [progressTransition]),\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ToastContainerComponent {\r\n\r\n tl: Toast[] = [];\r\n tc: Toast[] = [];\r\n tr: Toast[] = [];\r\n bl: Toast[] = [];\r\n bc: Toast[] = [];\r\n br: Toast[] = [];\r\n\r\n constructor(\r\n private _changeDetector: ChangeDetectorRef,\r\n ) {\r\n }\r\n\r\n add(config: ToastConfig): Toast | null {\r\n const collection = this._getCollection(config.position);\r\n if (config.preventDuplicates && this._isDuplicate(collection, config)) {\r\n return null;\r\n }\r\n const toast = new Toast(config, (t) => this._delete(collection, t));\r\n collection.push(toast);\r\n this._changeDetector.detectChanges();\r\n return toast;\r\n }\r\n\r\n private _delete(collection: Toast[], toast: Toast): void {\r\n collection.splice(collection.indexOf(toast), 1);\r\n this._changeDetector.detectChanges();\r\n }\r\n\r\n private _isDuplicate(collection: Toast[], config: ToastConfig): boolean {\r\n return collection.some(t => {\r\n return t.type === config.type\r\n && t.component === config.component\r\n && t.caption === config.caption\r\n && t.text === config.text;\r\n })\r\n }\r\n\r\n private _getCollection(position: ToastPosition): Toast[] {\r\n switch (position) {\r\n case 'top-left':\r\n return this.tl;\r\n case 'top-center':\r\n return this.tc;\r\n case 'top-right':\r\n return this.tr;\r\n case 'bottom-left':\r\n return this.bl;\r\n case 'bottom-center':\r\n return this.bc;\r\n default:\r\n return this.br;\r\n }\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n EmbeddedViewRef,\r\n Inject,\r\n Injectable,\r\n Injector,\r\n OnDestroy,\r\n Renderer2,\r\n RendererFactory2\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ToastContainerComponent } from './toast-container/toast-container.component';\r\n\r\nconst TOAST_CONTAINER_CLASS_NAME = 'toast-container';\r\n\r\n@Injectable()\r\nexport class ToastContainerService implements OnDestroy {\r\n\r\n private _renderer: Renderer2;\r\n private _containerElement: HTMLElement;\r\n private _componentRef: ComponentRef<ToastContainerComponent>;\r\n\r\n constructor(\r\n rendererFactory: RendererFactory2,\r\n @Inject(DOCUMENT) private _document: any,\r\n private _factoryResolver: ComponentFactoryResolver,\r\n private _appRef: ApplicationRef,\r\n private _injector: Injector,\r\n ) {\r\n this._renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n get ref(): ComponentRef<ToastContainerComponent> {\r\n if (!this._componentRef) {\r\n this._attach();\r\n }\r\n return this._componentRef;\r\n }\r\n\r\n private get containerElement(): HTMLElement {\r\n if (!this._containerElement) {\r\n this._containerElement = this._renderer.createElement('div');\r\n this._renderer.addClass(this._containerElement, TOAST_CONTAINER_CLASS_NAME);\r\n this._renderer.appendChild(this._document.body, this._containerElement);\r\n }\r\n return this._containerElement;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._detach();\r\n this._destroyContainer();\r\n }\r\n\r\n private _attach() {\r\n this._detach();\r\n const componentFactory = this._factoryResolver.resolveComponentFactory(ToastContainerComponent);\r\n this._componentRef = componentFactory.create(this._injector);\r\n const hostView = this._componentRef.hostView as EmbeddedViewRef<any>;\r\n this._appRef.attachView(hostView);\r\n const rootNode = hostView.rootNodes[0] as HTMLElement;\r\n this._renderer.appendChild(this.containerElement, rootNode);\r\n }\r\n\r\n private _detach() {\r\n if (this._componentRef) {\r\n this._appRef.detachView(this._componentRef.hostView);\r\n this._componentRef.destroy();\r\n this._componentRef = null;\r\n }\r\n }\r\n\r\n private _destroyContainer() {\r\n if (this._containerElement && this._containerElement.parentNode) {\r\n this._renderer.removeChild(this._containerElement.parentNode, this._containerElement);\r\n this._containerElement = null;\r\n }\r\n }\r\n}\r\n","import { InjectionToken, Type } from '@angular/core';\r\n\r\nexport const TOAST_NOTIFICATIONS_CONFIG = new InjectionToken<ToastNotificationsConfig>('ToastNotificationsConfig');\r\n\r\nexport type ToastType = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark';\r\nexport type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\r\n\r\nexport interface ToastNotificationsConfig {\r\n position?: ToastPosition\r\n autoClose?: boolean;\r\n duration?: number;\r\n type?: ToastType;\r\n component?: Type<any>;\r\n preventDuplicates?: boolean;\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { Toast } from '../toast';\r\n\r\n@Component({\r\n templateUrl: './basic-toast-content.component.html',\r\n styleUrls: ['./basic-toast-content.component.scss'],\r\n})\r\nexport class BasicToastContentComponent {\r\n @Input() toast: Toast;\r\n}\r\n","import { Inject, Injectable, Type } from '@angular/core';\r\nimport { ToastConfig } from './toast.config';\r\nimport { ToastContainerService } from './toast-container.service';\r\nimport { TOAST_NOTIFICATIONS_CONFIG, ToastNotificationsConfig } from './toast-notifications.config';\r\nimport { BasicToastContentComponent } from './toast-content/basic-toast-content.component';\r\nimport { Toast } from './toast';\r\n\r\nconst DEFAULT_CONFIG: ToastConfig = {\r\n autoClose: true,\r\n duration: 8000,\r\n type: 'light',\r\n position: 'bottom-right',\r\n component: BasicToastContentComponent,\r\n};\r\n\r\n@Injectable()\r\nexport class Toaster {\r\n\r\n constructor(\r\n @Inject(TOAST_NOTIFICATIONS_CONFIG) private _config: ToastNotificationsConfig,\r\n private _containerService: ToastContainerService,\r\n ) {\r\n }\r\n\r\n open(text: string): Toast | null;\r\n open(config: ToastConfig): Toast | null;\r\n open(text: string, config?: ToastConfig): Toast | null;\r\n open(component: Type<any>, config?: ToastConfig): Toast | null;\r\n open(config: ToastConfig | string | Type<any>, componentConfig?: ToastConfig): Toast | null {\r\n if (typeof config === 'string') {\r\n config = {text: config as string, ...componentConfig};\r\n }\r\n if (config instanceof Type) {\r\n config = {...componentConfig, component: config as Type<any>};\r\n }\r\n config = {...DEFAULT_CONFIG, ...this._config, ...config};\r\n return this._containerService.ref.instance.add(config);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastConfig } from '../toast.config';\r\nimport { ToastType } from '../toast-notifications.config';\r\nimport { Toaster } from '../toaster';\r\n\r\n@Injectable()\r\n/**\r\n * @deprecated since version 1.0.0 use Toaster\r\n */\r\nexport class ToastNotifications {\r\n\r\n constructor(\r\n private _toaster: Toaster,\r\n ) {\r\n }\r\n\r\n /**\r\n * @deprecated since version 1.0.0\r\n */\r\n next(toast: {text: string, caption?: string, type?: ToastType, lifetime?: number, duration?: number}) {\r\n const config: ToastConfig = {\r\n text: toast.text,\r\n caption: toast.caption,\r\n type: toast.type,\r\n duration: toast.duration || toast.lifetime,\r\n component: null,\r\n };\r\n this._toaster.open(config);\r\n }\r\n}\r\n","import {\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Directive,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { Toast } from '../toast';\r\n\r\n@Directive({\r\n selector: '[toastContent]',\r\n})\r\nexport class ToastContentDirective implements OnInit, OnDestroy {\r\n\r\n @Input() toast: Toast;\r\n private _componentRef: ComponentRef<any>;\r\n\r\n constructor(\r\n private _viewContainerRef: ViewContainerRef,\r\n private _componentFactoryResolver: ComponentFactoryResolver,\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(this.toast.component);\r\n this._componentRef = this._viewContainerRef.createComponent(componentFactory);\r\n this._componentRef.instance.toast = this.toast;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._componentRef) {\r\n this._componentRef.destroy();\r\n this._componentRef = null;\r\n }\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TOAST_NOTIFICATIONS_CONFIG, ToastNotificationsConfig } from './toast-notifications.config';\r\nimport { ToastContainerComponent } from './toast-container/toast-container.component';\r\nimport { BasicToastContentComponent } from './toast-content/basic-toast-content.component';\r\nimport { ToastContentDirective } from './toast-content/toast-content.directive';\r\nimport { Toaster } from './toaster';\r\nimport { ToastContainerService } from './toast-container.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ],\r\n declarations: [\r\n ToastContainerComponent,\r\n BasicToastContentComponent,\r\n ToastContentDirective,\r\n ],\r\n entryComponents: [\r\n ToastContainerComponent,\r\n BasicToastContentComponent,\r\n ],\r\n providers: [\r\n Toaster,\r\n ToastContainerService,\r\n {provide: TOAST_NOTIFICATIONS_CONFIG, useValue: {}},\r\n ],\r\n})\r\nexport class ToastNotificationsModule {\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: ToastNotificationsModule) {\r\n if (parentModule) {\r\n throw new Error('ToastNotificationsModule is already loaded. Import it in the root module only');\r\n }\r\n }\r\n\r\n static forRoot(config: ToastNotificationsConfig = {}): ModuleWithProviders {\r\n return {\r\n ngModule: ToastNotificationsModule,\r\n providers: [\r\n {provide: TOAST_NOTIFICATIONS_CONFIG, useValue: config},\r\n ]\r\n };\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { ToastNotifications } from './toast-natifications';\r\nimport { TOAST_NOTIFICATIONS_CONFIG } from '../toast-notifications.config';\r\nimport { ToastNotificationsModule } from '../toast-notifications.module';\r\n\r\nconst defaultConfig: {lifetime?: number, duration?: number} = {lifetime: 8000};\r\n\r\n@NgModule({\r\n imports: [\r\n ToastNotificationsModule,\r\n ],\r\n providers: [\r\n ToastNotifications,\r\n ],\r\n})\r\n/**\r\n * @deprecated since version 1.0.0 use ToastNotificationsModule\r\n */\r\nexport class ToastNotificationCoreModule {\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: ToastNotificationCoreModule) {\r\n if (parentModule) {\r\n throw new Error('ToastNotificationCoreModule is already loaded. Import it in the root module only');\r\n }\r\n }\r\n\r\n static forRoot(config = defaultConfig): ModuleWithProviders {\r\n return {\r\n ngModule: ToastNotificationCoreModule,\r\n providers: [\r\n {provide: TOAST_NOTIFICATIONS_CONFIG, useValue: {duration: config.duration || config.lifetime}}\r\n ]\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\n/**\r\n * @deprecated since version 1.0.0\r\n */\r\nexport class ToastNotificationClientModule {\r\n}\r\n"],"names":[],"mappings":"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"}