import { delay } from "./Utils" export default class StatusMessage { container: HTMLElement text: HTMLElement constructor(container: HTMLElement, text: HTMLElement) { this.container = container this.text = text } show(message: string, duration: number) { let messageId = String(Date.now()) this.text.textContent = message this.container.classList.remove("fade-out") this.container.dataset.messageId = messageId // Negative duration means we're displaying it forever until the user manually closes it if(duration === -1) { return } delay(duration || 4000).then(() => { if(this.container.dataset.messageId !== messageId) { return } this.close() }) } clearStyle() { this.container.classList.remove("info-message") this.container.classList.remove("error-message") } showError(message: string | Error, duration?: number) { this.clearStyle() this.show(message.toString(), duration || 4000) this.container.classList.add("error-message") } showInfo(message: string, duration?: number) { this.clearStyle() this.show(message, duration || 2000) this.container.classList.add("info-message") } close() { this.container.classList.add("fade-out") } }