import { Injectable } from "@angular/core"; import { IndividualConfig, ToastrService } from "ngx-toastr"; import type { ToastComponent } from "./toast.component"; import { calculateToastTimeout } from "./utils"; export type ToastOptions = { /** * The duration the toast will persist in milliseconds **/ timeout?: number; } & Pick; /** * Presents toast notifications **/ @Injectable({ providedIn: "root" }) export class ToastService { constructor(private toastrService: ToastrService) {} showToast(options: ToastOptions): void { const toastrConfig: Partial = { payload: { message: options.message, variant: options.variant, title: options.title, }, timeOut: options.timeout != null && options.timeout > 0 ? options.timeout : calculateToastTimeout(options.message), }; this.toastrService.show(null, options.title, toastrConfig); } /** * @deprecated use `showToast` instead * * Converts options object from PlatformUtilsService **/ _showToast(options: { type: "error" | "success" | "warning" | "info"; title: string; text: string | string[]; options?: { timeout?: number; }; }) { this.showToast({ message: options.text, variant: options.type, title: options.title, timeout: options.options?.timeout, }); } }