This commit is contained in:
23
public/ts/ui/toast.ts
Normal file
23
public/ts/ui/toast.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
let currentTimeout: number | null = null;
|
||||
|
||||
export function showToast(message: string, isError = false, duration = 2500) {
|
||||
let toast = document.getElementById('toast-root') as HTMLElement | null;
|
||||
if (!toast) {
|
||||
toast = document.createElement('div');
|
||||
toast.id = 'toast-root';
|
||||
document.body.appendChild(toast);
|
||||
}
|
||||
toast.className = `toast ${isError ? 'error' : ''}`;
|
||||
toast.textContent = message;
|
||||
requestAnimationFrame(() => {
|
||||
toast?.classList.add('show');
|
||||
});
|
||||
if (currentTimeout) window.clearTimeout(currentTimeout);
|
||||
currentTimeout = window.setTimeout(() => hideToast(), duration);
|
||||
}
|
||||
|
||||
export function hideToast() {
|
||||
const toast = document.getElementById('toast-root');
|
||||
if (!toast) return;
|
||||
toast.classList.remove('show');
|
||||
}
|
||||
Reference in New Issue
Block a user