Для начала необходимо подключить библиотеку iziToast в проект. Это можно сделать через CDN или npm:
CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/izitoast/dist/css/iziToast.min.css">
<script src="https://cdn.jsdelivr.net/npm/izitoast/dist/js/iziToast.min.js"></script>
NPM:
npm install izitoast
import iziToast from 'izitoast';
import 'izitoast/dist/css/iziToast.min.css';
После подключения появляется объект iziToast, через
который осуществляется полная настройка уведомлений.
Базовая функция для вывода уведомлений:
iziToast.show({
title: 'Информация',
message: 'Событие успешно выполнено',
});
Основные параметры метода show:
title – заголовок уведомления.message – текст уведомления.timeout – время жизни уведомления в миллисекундах (по
умолчанию 5000).position – позиция уведомления на экране
(topRight, topLeft, bottomRight,
bottomLeft, topCenter,
bottomCenter).theme – тема (light,
dark).color – цветовая схема (green,
red, blue, yellow).icon – иконка уведомления (можно использовать иконки
FontAwesome).Пример уведомления с кастомной позицией и цветом:
iziToast.show({
title: 'Ошибка',
message: 'Произошла ошибка при сохранении данных',
color: 'red',
position: 'topRight',
timeout: 7000,
});
Для упрощения можно использовать готовые методы:
iziToast.success(options) – уведомление об успешном
событии.iziToast.error(options) – уведомление об ошибке.iziToast.warning(options) – предупреждение.iziToast.info(options) – информационное сообщение.Пример:
iziToast.success({
title: 'Успех',
message: 'Данные успешно сохранены',
position: 'bottomLeft'
});
Закрытие уведомления:
close – наличие кнопки закрытия.closeOnEscape – закрытие по клавише
Esc.timeout – автозакрытие через указанное время.iziToast.info({
title: 'Напоминание',
message: 'Сессия истекает через 5 минут',
close: true,
closeOnEscape: true,
timeout: 10000
});
Взаимодействие с пользователем:
buttons – массив кнопок с действиями.onOpening и onClosing – колбэки при
открытии и закрытии уведомления.Пример с кнопками:
iziToast.show({
title: 'Подтверждение',
message: 'Вы хотите удалить этот файл?',
buttons: [
['<button>Да</button>', function(instance, toast) {
instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
console.log('Файл удален');
}],
['<button>Нет</button>', function(instance, toast) {
instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
}]
]
});
Для отслеживания и логирования действий удобно использовать встроенные события:
onOpening – вызывается при начале отображения
уведомления.onOpened – после того как уведомление полностью
показано.onClosing – при начале закрытия уведомления.onClosed – после того как уведомление полностью
скрыто.Пример логирования всех этапов:
iziToast.info({
title: 'Логирование',
message: 'Тестовое уведомление',
onOpening: function(instance, toast) {
console.log('Открытие уведомления');
},
onOpened: function(instance, toast) {
console.log('Уведомление открыто');
},
onClosing: function(instance, toast, closedBy) {
console.log('Закрытие уведомления, причина:', closedBy);
},
onClosed: function(instance, toast, closedBy) {
console.log('Уведомление закрыто, причина:', closedBy);
}
});
Здесь параметр closedBy может принимать значения:
'timeout' – автоматическое закрытие по таймауту.'button' – закрытие кнопкой.'click' – закрытие при клике на уведомление.'escape' – закрытие по клавише Esc.Для интеграции с системами логирования можно создавать обертку:
function logEvent(type, title, message) {
iziToast[type]({
title: title,
message: message,
position: 'topRight',
timeout: 4000,
onClosing: function(instance, toast, closedBy) {
// Отправка информации на сервер
fetch('/log', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ type, title, message, closedBy })
});
}
});
}
logEvent('success', 'Действие выполнено', 'Пользователь сохранил данные');
logEvent('error', 'Ошибка', 'Не удалось загрузить файл');
Таким образом уведомления не только информируют пользователя, но и автоматически отправляют данные для системного логирования.
Можно задать глобальные значения для всех уведомлений:
iziToast.settings({
timeout: 5000,
position: 'topRight',
transitionIn: 'fadeInDown',
transitionOut: 'fadeOutUp',
layout: 2
});
Параметры:
timeout – стандартное время показа.position – стандартная позиция.transitionIn и transitionOut –
анимации.layout – количество строк текста и расположение
иконки.После глобальной настройки отдельные уведомления могут переопределять эти параметры по необходимости.
Комбинирование уведомлений:
zindex и stack.iziToast.show({ title: 'Первое', message: 'Сообщение 1', stack: true });
iziToast.show({ title: 'Второе', message: 'Сообщение 2', stack: true });
Использование HTML внутри уведомлений:
iziToast.show({
title: 'HTML',
message: '<b>Жирный текст</b> и <i>курсив</i>',
timeout: 7000
});
Динамическое обновление уведомления:
let toastId = iziToast.info({ title: 'Загрузка', message: '0%', timeout: false });
let progress = 0;
let interval = setInterval(() => {
progress += 10;
iziToast.update(toastId, { message: `${progress}%` });
if(progress >= 100) {
iziToast.update(toastId, { message: 'Загрузка завершена', timeout: 2000 });
clearInterval(interval);
}
}, 500);
Эта техника полезна для отображения прогресса операций и логирования состояния в реальном времени.