iziToast предоставляет мощный механизм для добавления кнопок действий в уведомления, что позволяет пользователю взаимодействовать с ними напрямую. Кнопки могут выполнять любые функции, включая переход по ссылке, вызов JavaScript-функции или закрытие уведомления.
Для создания кнопок используется опция buttons, которая
принимает массив массивов. Каждый внутренний массив описывает одну
кнопку и состоит из текста кнопки и функции-обработчика
клика:
iziToast.show({
title: 'Подтвердите действие',
message: 'Вы действительно хотите удалить этот элемент?',
buttons: [
['<button>Да</button>', function (instance, toast) {
console.log('Элемент удалён');
instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
}],
['<button>Нет</button>', function (instance, toast) {
console.log('Действие отменено');
instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
}]
]
});
instance — объект текущего
уведомления, через который можно управлять его состоянием.
toast — DOM-элемент уведомления, на
который была нажата кнопка.
Метод instance.hide() позволяет
закрыть уведомление с анимацией. Параметры:
transitionOut — тип анимации закрытия
(fadeOut, slideOut, и т.д.)toast — целевой элемент уведомления'button' — указывает, что закрытие инициировано
кнопкойКнопки можно стилизовать с помощью стандартных CSS-классов. Например, можно добавить классы для цвета или размера кнопки:
iziToast.show({
title: 'Выбор действия',
message: 'Выберите вариант',
buttons: [
['<button class="iziToast-button iziToast-success">Подтвердить</button>', function (instance, toast) {
instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
}],
['<button class="iziToast-button iziToast-error">Отменить</button>', function (instance, toast) {
instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
}]
]
});
Классы iziToast-success и
iziToast-error наследуют стили самой
библиотеки, но можно использовать любые CSS-классы для полной
кастомизации.
Порядок отображения кнопок соответствует порядку элементов в массиве
buttons. Можно добавлять сколько угодно кнопок, но важно
помнить о пользовательском опыте — слишком большое
количество кнопок может перегрузить уведомление.
Кнопки могут создаваться динамически в зависимости от данных. Например:
let actions = ['Принять', 'Отклонить', 'Позже'];
let buttons = actions.map(label => [
`<button>${label}</button>`,
function (instance, toast) {
console.log(`Выбрано действие: ${label}`);
instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
}
]);
iziToast.show({
title: 'Уведомление с динамическими кнопками',
message: 'Выберите действие',
buttons: buttons
});
Такой подход позволяет создавать универсальные уведомления, которые адаптируются к контексту.
<button> или <a> для
корректной обработки клика.timeout.instance.hide() в обработчик клика для
мгновенного скрытия уведомления.iziToast.show({
title: 'Ссылка',
message: 'Перейти на сайт?',
buttons: [
['<button>Перейти</button>', function (instance, toast) {
window.open('https://example.com', '_blank');
instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
}]
]
});
iziToast.show({
title: 'Закрытие разными способами',
message: 'Выберите вариант закрытия',
buttons: [
['<button>Слайд</button>', function (instance, toast) {
instance.hide({ transitionOut: 'slideOut' }, toast, 'button');
}],
['<button>С исчезновением</button>', function (instance, toast) {
instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
}]
]
});
Каждое уведомление с кнопками состоит из:
title)message)buttons), где каждая кнопка — массив из
HTML-разметки и функции-обработчикаinstance.hide()Такой подход делает iziToast гибким инструментом для интерактивных уведомлений, позволяя создавать как простые подтверждения, так и сложные сценарии взаимодействия.