UNPKG

notify-dash

Version:

A modern, beautiful toast notification library for Angular

67 lines 9.61 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; export class ToastService { constructor() { this.toastsByPosition = { 'top-right': [], 'top-left': [], 'bottom-right': [], 'bottom-left': [] }; this.toastsSubject = new BehaviorSubject([]); } getToasts() { return this.toastsSubject.asObservable(); } show(config) { const toast = { id: Math.random().toString(36).substr(2, 9), visible: true, duration: config.duration || 3000, position: config.position || 'top-right', ...config }; const position = toast.position || 'top-right'; this.toastsByPosition[position] = [...this.toastsByPosition[position], toast]; this.toastsSubject.next(Object.values(this.toastsByPosition).flat()); setTimeout(() => { this.hide(toast.id); }, toast.duration); } success(message, duration, position) { this.show({ message, type: 'success', duration, position }); } error(message, duration, position) { this.show({ message, type: 'error', duration, position }); } warning(message, duration, position) { this.show({ message, type: 'warning', duration, position }); } info(message, duration, position) { this.show({ message, type: 'info', duration, position }); } hide(id) { for (const position in this.toastsByPosition) { const toast = this.toastsByPosition[position].find(t => t.id === id); if (toast) { toast.visible = false; this.toastsSubject.next(Object.values(this.toastsByPosition).flat()); setTimeout(() => { this.toastsByPosition[position] = this.toastsByPosition[position].filter(t => t.id !== id); this.toastsSubject.next(Object.values(this.toastsByPosition).flat()); }, 300); break; } } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToastService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToastService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvYXN0L3NyYy9saWIvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBa0JuRCxNQUFNLE9BQU8sWUFBWTtJQVN2QjtRQVJRLHFCQUFnQixHQUErQjtZQUNyRCxXQUFXLEVBQUUsRUFBRTtZQUNmLFVBQVUsRUFBRSxFQUFFO1lBQ2QsY0FBYyxFQUFFLEVBQUU7WUFDbEIsYUFBYSxFQUFFLEVBQUU7U0FDbEIsQ0FBQztRQUNNLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7SUFFekMsQ0FBQztJQUVqQixTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBbUI7UUFDdEIsTUFBTSxLQUFLLEdBQVU7WUFDbkIsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJO1lBQ2pDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLFdBQVc7WUFDeEMsR0FBRyxNQUFNO1NBQ1YsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVyRSxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxRQUFpQixFQUFFLFFBQWtDO1FBQzVFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxRQUFpQixFQUFFLFFBQWtDO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxRQUFpQixFQUFFLFFBQWtDO1FBQzVFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxRQUFpQixFQUFFLFFBQWtDO1FBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQVU7UUFDYixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNyRSxJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRSxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDM0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ1IsTUFBTTthQUNQO1NBQ0Y7SUFDSCxDQUFDOytHQTlEVSxZQUFZO21IQUFaLFlBQVksY0FGWCxNQUFNOzs0RkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvYXN0Q29uZmlnIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0eXBlOiAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2luZm8nO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgcG9zaXRpb24/OiAndG9wLXJpZ2h0JyB8ICd0b3AtbGVmdCcgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3QgZXh0ZW5kcyBUb2FzdENvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHRpbWVvdXRJZD86IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB0b2FzdHNCeVBvc2l0aW9uOiB7IFtrZXk6IHN0cmluZ106IFRvYXN0W10gfSA9IHtcbiAgICAndG9wLXJpZ2h0JzogW10sXG4gICAgJ3RvcC1sZWZ0JzogW10sXG4gICAgJ2JvdHRvbS1yaWdodCc6IFtdLFxuICAgICdib3R0b20tbGVmdCc6IFtdXG4gIH07XG4gIHByaXZhdGUgdG9hc3RzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VG9hc3RbXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgZ2V0VG9hc3RzKCk6IE9ic2VydmFibGU8VG9hc3RbXT4ge1xuICAgIHJldHVybiB0aGlzLnRvYXN0c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzaG93KGNvbmZpZzogVG9hc3RDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCB0b2FzdDogVG9hc3QgPSB7XG4gICAgICBpZDogTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpLFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgIGR1cmF0aW9uOiBjb25maWcuZHVyYXRpb24gfHwgMzAwMCxcbiAgICAgIHBvc2l0aW9uOiBjb25maWcucG9zaXRpb24gfHwgJ3RvcC1yaWdodCcsXG4gICAgICAuLi5jb25maWdcbiAgICB9O1xuXG4gICAgY29uc3QgcG9zaXRpb24gPSB0b2FzdC5wb3NpdGlvbiB8fCAndG9wLXJpZ2h0JztcbiAgICB0aGlzLnRvYXN0c0J5UG9zaXRpb25bcG9zaXRpb25dID0gWy4uLnRoaXMudG9hc3RzQnlQb3NpdGlvbltwb3NpdGlvbl0sIHRvYXN0XTtcbiAgICB0aGlzLnRvYXN0c1N1YmplY3QubmV4dChPYmplY3QudmFsdWVzKHRoaXMudG9hc3RzQnlQb3NpdGlvbikuZmxhdCgpKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oaWRlKHRvYXN0LmlkKTtcbiAgICB9LCB0b2FzdC5kdXJhdGlvbik7XG4gIH1cblxuICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgZHVyYXRpb24/OiBudW1iZXIsIHBvc2l0aW9uPzogVG9hc3RDb25maWdbJ3Bvc2l0aW9uJ10pOiB2b2lkIHtcbiAgICB0aGlzLnNob3coeyBtZXNzYWdlLCB0eXBlOiAnc3VjY2VzcycsIGR1cmF0aW9uLCBwb3NpdGlvbiB9KTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZHVyYXRpb24/OiBudW1iZXIsIHBvc2l0aW9uPzogVG9hc3RDb25maWdbJ3Bvc2l0aW9uJ10pOiB2b2lkIHtcbiAgICB0aGlzLnNob3coeyBtZXNzYWdlLCB0eXBlOiAnZXJyb3InLCBkdXJhdGlvbiwgcG9zaXRpb24gfSk7XG4gIH1cblxuICB3YXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgZHVyYXRpb24/OiBudW1iZXIsIHBvc2l0aW9uPzogVG9hc3RDb25maWdbJ3Bvc2l0aW9uJ10pOiB2b2lkIHtcbiAgICB0aGlzLnNob3coeyBtZXNzYWdlLCB0eXBlOiAnd2FybmluZycsIGR1cmF0aW9uLCBwb3NpdGlvbiB9KTtcbiAgfVxuXG4gIGluZm8obWVzc2FnZTogc3RyaW5nLCBkdXJhdGlvbj86IG51bWJlciwgcG9zaXRpb24/OiBUb2FzdENvbmZpZ1sncG9zaXRpb24nXSk6IHZvaWQge1xuICAgIHRoaXMuc2hvdyh7IG1lc3NhZ2UsIHR5cGU6ICdpbmZvJywgZHVyYXRpb24sIHBvc2l0aW9uIH0pO1xuICB9XG5cbiAgaGlkZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBwb3NpdGlvbiBpbiB0aGlzLnRvYXN0c0J5UG9zaXRpb24pIHtcbiAgICAgIGNvbnN0IHRvYXN0ID0gdGhpcy50b2FzdHNCeVBvc2l0aW9uW3Bvc2l0aW9uXS5maW5kKHQgPT4gdC5pZCA9PT0gaWQpO1xuICAgICAgaWYgKHRvYXN0KSB7XG4gICAgICAgIHRvYXN0LnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2FzdHNTdWJqZWN0Lm5leHQoT2JqZWN0LnZhbHVlcyh0aGlzLnRvYXN0c0J5UG9zaXRpb24pLmZsYXQoKSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RzQnlQb3NpdGlvbltwb3NpdGlvbl0gPSB0aGlzLnRvYXN0c0J5UG9zaXRpb25bcG9zaXRpb25dLmZpbHRlcih0ID0+IHQuaWQgIT09IGlkKTtcbiAgICAgICAgICB0aGlzLnRvYXN0c1N1YmplY3QubmV4dChPYmplY3QudmFsdWVzKHRoaXMudG9hc3RzQnlQb3NpdGlvbikuZmxhdCgpKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=