Библиотека Noty предоставляет гибкий механизм уведомлений в браузере с возможностью настраивать как отдельные экземпляры уведомлений, так и глобальные дефолтные параметры. Управление дефолтными значениями позволяет стандартизировать стиль и поведение уведомлений во всём приложении, сокращая количество повторяющегося кода.
По умолчанию Noty использует внутренние настройки для всех
уведомлений. Для их перезаписи применяется объект
Noty.overrideDefaults(options), где options —
это объект с параметрами, которые будут применяться ко всем новым
уведомлениям, если не указаны индивидуальные настройки.
Пример:
Noty.overrideDefaults({
theme: 'mint',
layout: 'topRight',
timeout: 5000,
progressBar: true,
closeWith: ['click', 'button']
});
После вызова overrideDefaults, все последующие
уведомления будут использовать указанные значения, если в конструкторе
уведомления не будут заданы свои.
Ключевые параметры для перезаписи:
text — текст уведомления. Может быть строкой или
HTML-контентом.type — тип уведомления (alert,
success, error, warning,
information).theme — визуальная тема (relax,
mint, sunset, metroui и
др.).layout — расположение на экране (top,
topLeft, topCenter, topRight,
center, bottom, bottomLeft,
bottomCenter, bottomRight).timeout — время в миллисекундах до автоматического
закрытия уведомления.progressBar — отображение полосы прогресса
(true или false).closeWith — массив способов закрытия
(click, button, hover).animation — объект с параметрами анимации
open и close.Даже после глобальной настройки возможно переопределять параметры для
конкретного уведомления, передавая их в конструктор
Noty:
new Noty({
text: 'Особое уведомление',
type: 'warning',
timeout: 10000
}).show();
В этом примере будет использоваться глобальная тема mint
и расположение topRight, но text,
type и timeout переопределяют глобальные
значения.
Noty позволяет управлять анимациями через глобальные настройки:
Noty.overrideDefaults({
animation: {
open: 'animated bounceInRight',
close: 'animated bounceOutRight',
easing: 'swing',
speed: 500
}
});
Параметры:
open — CSS-класс анимации открытия.close — CSS-класс анимации закрытия.easing — функция сглаживания.speed — длительность анимации в миллисекундах.Эти значения будут применяться ко всем уведомлениям, для которых анимации не указаны индивидуально.
Для глобальных событий можно задать коллбеки, чтобы обработать открытие, закрытие или клик по уведомлению:
Noty.overrideDefaults({
callbacks: {
onShow: function() { console.log('Уведомление показано'); },
onClose: function() { console.log('Уведомление закрыто'); },
afterClose: function() { console.log('Уведомление полностью удалено'); }
}
});
Эти коллбеки будут автоматически подключены ко всем уведомлениям, если для конкретного экземпляра не заданы свои обработчики событий.
Важно помнить, что локальные настройки имеют приоритет над глобальными. Глобальные дефолты — это базовый шаблон, который упрощает работу при множестве уведомлений, но отдельный экземпляр может полностью или частично переопределять любой параметр.
Noty.overrideDefaults({
theme: 'relax',
layout: 'bottomLeft',
timeout: 3000
});
new Noty({
text: 'Важное сообщение',
layout: 'topCenter', // локальное переопределение
type: 'success' // локальное переопределение
}).show();
В этом примере будет использоваться тема relax и timeout
3000, но расположение и тип уведомления будут
локальными.
Для возврата к исходным параметрам библиотеки можно использовать
метод Noty.clearQueue() и затем повторно вызвать
overrideDefaults() с базовыми настройками, либо полностью
пересоздать конфигурацию. Это полезно, если приложение изменяет тему или
стиль уведомлений динамически.
Перезапись дефолтных значений особенно эффективна в больших проектах с повторяющимися уведомлениями. Например, можно задать единую тему, расположение и длительность для всех уведомлений информационного типа, оставляя возможность индивидуальной настройки для ошибок или предупреждений. Такой подход упрощает поддержку кода и делает интерфейс приложения визуально согласованным.
Настройка дефолтов делает Noty мощным инструментом для стандартизации уведомлений, обеспечивая единый стиль и поведение по всему проекту без необходимости дублирования настроек для каждого экземпляра.