@gokula-krishnan/notify-lib
Version:
đĨ Angular toast notification library with position, hover pause, and close support.
1 lines âĸ 12.9 kB
Source Map (JSON)
{"version":3,"file":"notify-lib.mjs","sources":["../../../projects/notify-lib/src/lib/notify-lib.ts","../../../projects/notify-lib/src/lib/toast.component.ts","../../../projects/notify-lib/src/lib/toast.component.html","../../../projects/notify-lib/src/lib/notification.service.ts","../../../projects/notify-lib/src/lib/toast-container.component.ts","../../../projects/notify-lib/src/lib/toast-container.component.html","../../../projects/notify-lib/src/public-api.ts","../../../projects/notify-lib/src/notify-lib.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-notify-lib',\r\n imports: [],\r\n template: `\r\n <p>\r\n notify-lib works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class NotifyLib {\r\n\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Toast } from './toast.model';\r\nimport {\r\n trigger,\r\n transition,\r\n style,\r\n animate\r\n} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'lib-toast',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './toast.component.html',\r\n styleUrls: ['./toast.component.scss'],\r\n animations: [\r\n trigger('fade', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'translateY(-10px)' }),\r\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\r\n ]),\r\n transition(':leave', [\r\n animate('300ms ease-in', style({ opacity: 0, transform: 'translateY(-10px)' })),\r\n ]),\r\n ]),\r\n ]\r\n})\r\nexport class ToastComponent {\r\n @Input() toast!: Toast;\r\n\r\n @Output() pauseTimer = new EventEmitter<boolean>();\r\n @Output() close = new EventEmitter<void>();\r\n\r\n pause() {\r\n this.pauseTimer.emit(true);\r\n }\r\n\r\n resume() {\r\n this.pauseTimer.emit(false);\r\n }\r\n get icon(): string {\r\n switch (this.toast.type) {\r\n case 'success': return 'âī¸';\r\n case 'error': return 'â';\r\n case 'info': return 'âšī¸';\r\n case 'warning': return 'â ī¸';\r\n default: return '';\r\n }\r\n}\r\n}\r\n","<div class=\"toast\" [@fade] [ngClass]=\"toast.type\" *ngIf=\"toast?.message\" (mouseenter)=\"pause()\" (mouseleave)=\"resume()\">\r\n <span class=\"icon\">{{ icon }}</span>\r\n <span class=\"message\">{{ toast.message }}</span>\r\n <button class=\"close\" (click)=\"close.emit()\">â</button>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Toast, ToastType } from './toast.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NotificationService {\r\n private toasts: Toast[] = [];\r\n private toastSubject = new BehaviorSubject<Toast[]>([]);\r\n toastStream$ = this.toastSubject.asObservable();\r\n\r\n // â
Store timeout handles to support pause/resume\r\n private toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\n private generateId(): string {\r\n return Date.now().toString();\r\n }\r\n\r\n show(message: string, type: ToastType = 'info', duration: number = 3000) {\r\n const id = crypto.randomUUID(); // Unique ID\r\n const toast: Toast = { id, message, type, duration };\r\n\r\n this.toasts.push(toast);\r\n this.toastSubject.next([...this.toasts]);\r\n\r\n const timeout = setTimeout(() => {\r\n this.remove(id);\r\n }, duration);\r\n\r\n this.toastTimeouts.set(id, timeout);\r\n }\r\n\r\n remove(id: string) {\r\n this.toasts = this.toasts.filter(t => t.id !== id);\r\n this.toastSubject.next([...this.toasts]);\r\n\r\n if (this.toastTimeouts.has(id)) {\r\n clearTimeout(this.toastTimeouts.get(id));\r\n this.toastTimeouts.delete(id);\r\n }\r\n }\r\n\r\n pause(id: string) {\r\n if (this.toastTimeouts.has(id)) {\r\n clearTimeout(this.toastTimeouts.get(id));\r\n this.toastTimeouts.delete(id); // Optional cleanup\r\n }\r\n }\r\n\r\n resume(id: string, duration: number = 3000) {\r\n const timeout = setTimeout(() => {\r\n this.remove(id);\r\n }, duration);\r\n\r\n this.toastTimeouts.set(id, timeout);\r\n }\r\n\r\n // Helper methods\r\n success(msg: string) {\r\n this.show(msg, 'success');\r\n }\r\n error(msg: string) {\r\n this.show(msg, 'error');\r\n }\r\n info(msg: string) {\r\n this.show(msg, 'info');\r\n }\r\n warning(msg: string) {\r\n this.show(msg, 'warning');\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NotificationService } from './notification.service';\r\nimport { Toast } from './toast.model';\r\nimport { ToastComponent } from './toast.component';\r\nimport { Input } from '@angular/core'\r\n\r\n@Component({\r\n selector: 'lib-toast-container',\r\n standalone: true,\r\n imports: [CommonModule, ToastComponent],\r\n templateUrl: './toast-container.component.html',\r\n styleUrls: ['./toast-container.component.scss'],\r\n})\r\nexport class ToastContainerComponent implements OnInit {\r\n toasts: Toast[] = [];\r\n @Input() position: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\r\n\r\n constructor(private notifyService: NotificationService) {}\r\n\r\n ngOnInit() {\r\n this.notifyService.toastStream$.subscribe(toasts => {\r\n this.toasts = toasts;\r\n });\r\n }\r\n\r\n \r\n \r\npausedToasts = new Set<string>();\r\n\r\n\r\npause(id: string, isPaused: boolean) {\r\n if (isPaused) this.pausedToasts.add(id);\r\n else this.pausedToasts.delete(id);\r\n}\r\n\r\ndismiss(id: string) {\r\n if (!this.pausedToasts.has(id)) {\r\n this.notifyService.remove(id);\r\n }\r\n}\r\ntrackById(index: number, toast: Toast): string {\r\n return toast.id;\r\n}\r\n\r\n\r\n}\r\n","<div [ngClass]=\"['toast-container', position]\">\r\n <lib-toast\r\n *ngFor=\"let toast of toasts; trackBy: trackById\"\r\n [toast]=\"toast\"\r\n (pauseTimer)=\"pause(toast.id, $event)\"\r\n (close)=\"dismiss(toast.id)\">\r\n </lib-toast>\r\n</div>\r\n","/*\r\n * Public API Surface of notify-lib\r\n */\r\n\r\nexport * from './lib/notify-lib';\r\nexport * from './lib/toast-container.component';\r\nexport * from './lib/notification.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NotificationService"],"mappings":"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"}