Библиотека Noty позволяет создавать настраиваемые
уведомления с различными опциями поведения, включая возможность закрытия
уведомления при клике на кнопку. Для этого используются объекты
buttons в конфигурации уведомления, которые определяют
поведение при нажатии.
Простейший пример кнопки закрытия выглядит так:
new Noty({
text: 'Это уведомление можно закрыть кнопкой',
layout: 'topRight',
type: 'alert',
buttons: [
Noty.button('Закрыть', 'btn btn-error', function(n) {
n.close();
})
]
}).show();
Разбор ключевых моментов:
Noty.button(text, className, callback) – создаёт
кнопку.
text — текст на кнопке.className — CSS-класс для стилизации.callback — функция, которая вызывается при клике по
кнопке. Внутри этой функции доступен объект уведомления n,
у которого можно вызвать метод .close() для закрытия
уведомления.Метод .close() немедленно закрывает текущее
уведомление, вызывая анимацию скрытия.
Noty поддерживает наличие нескольких кнопок с различными действиями, включая закрытие, подтверждение или кастомные функции:
new Noty({
text: 'Вы уверены, что хотите удалить запись?',
layout: 'topRight',
type: 'warning',
modal: true,
buttons: [
Noty.button('Да', 'btn btn-success', function(n) {
console.log('Удаление подтверждено');
n.close();
}),
Noty.button('Нет', 'btn btn-error', function(n) {
console.log('Удаление отменено');
n.close();
})
]
}).show();
Особенности:
.close() может принимать аргумент
callback, если требуется выполнить дополнительные действия
после закрытия.n.close()Можно использовать встроенную опцию
closeWith, комбинируя её с кнопкой, чтобы
уведомление закрывалось автоматически при клике:
new Noty({
text: 'Нажмите на кнопку, чтобы закрыть уведомление',
layout: 'topRight',
type: 'info',
closeWith: ['button'], // позволяет закрывать уведомление кнопкой
buttons: [
Noty.button('Закрыть', 'btn btn-primary')
]
}).show();
Здесь кнопка создается без колбэка, но уведомление закрывается автоматически. Этот способ удобен для простых случаев, когда нужно лишь закрыть уведомление без дополнительных действий.
Noty предоставляет методы управления уведомлениями через события:
on('onClose', callback) — вызывается при закрытии
уведомления.on('onClick', callback) — можно использовать для
создания логики закрытия по пользовательскому клику на любую часть
уведомления.Пример:
let n = new Noty({
text: 'Нажмите кнопку, чтобы закрыть уведомление и выполнить действие',
layout: 'topRight',
type: 'success',
buttons: [
Noty.button('Закрыть', 'btn btn-success', function(n) {
n.on('onClose', function() {
console.log('Уведомление закрыто через кнопку');
});
n.close();
})
]
}).show();
Преимущество: позволяет запускать дополнительные функции после закрытия, что полезно для логирования или динамического обновления интерфейса.
Кнопку закрытия можно создавать не только при инициализации, но и динамически после показа уведомления:
let n = new Noty({
text: 'Динамическое уведомление',
layout: 'topRight',
type: 'alert'
}).show();
setTimeout(() => {
n.setText('Добавлена кнопка закрытия');
n.buttons([
Noty.button('Закрыть', 'btn btn-danger', function(n) {
n.close();
})
]);
}, 2000);
Такой подход полезен, если кнопка должна появляться только после определённого события или таймера.
Использовать классы btn, btn-success,
btn-error и другие из библиотеки CSS (например, Bootstrap)
для единообразного стиля.
Можно добавлять иконки через HTML в текст кнопки:
Noty.button('<i class="fa fa-times"></i> Закрыть', 'btn btn-danger', function(n) {
n.close();
})Для компактных уведомлений рекомендуется ограничивать количество кнопок до двух — это улучшает восприятие пользователем.
Благодаря комбинации методов .close(), кнопок
Noty.button и событий onClose,
библиотека Noty предоставляет гибкий механизм для управления закрытием
уведомлений по клику на кнопку, включая как простое закрытие, так и
выполнение дополнительных действий.