Noty — это гибкая библиотека для создания уведомлений в браузере. Основным принципом её работы является возможность детальной настройки поведения уведомлений через объект конфигурации, передаваемый при создании экземпляра уведомления. Понимание приоритета настроек важно для контроля отображения, анимации, времени жизни уведомления и взаимодействия с пользователем.
Настройки в Noty могут задаваться на нескольких уровнях, каждый из которых имеет свой приоритет:
Глобальные настройки
(Noty.overrideDefaults) Позволяют определить базовые
значения для всех уведомлений на странице. Используются для установки
стандартного поведения, например, позиции уведомлений, времени их
отображения и стиля темы. Пример:
Noty.overrideDefaults({
layout: 'topRight',
theme: 'mint',
timeout: 3000,
progressBar: true
});
Все последующие уведомления будут наследовать эти значения, если в конкретном экземпляре не заданы другие.
Настройки экземпляра (переданные при создании
нового объекта Noty) Имеют более высокий приоритет по
сравнению с глобальными. Пример:
new Noty({
text: 'Ошибка загрузки данных',
type: 'error',
timeout: 5000
}).show();
Здесь timeout: 5000 перекрывает глобальное значение
3000.
Динамические методы экземпляра Некоторые
свойства уведомления можно изменять уже после создания экземпляра с
помощью методов класса Noty, например:
let n = new Noty({ text: 'Загрузка...' }).show();
n.setTimeout(2000); // Перезаписывает timeout текущего уведомленияNoty применяет настройки в следующем порядке:
Этот порядок обеспечивает максимальную гибкость, позволяя использовать единый стандарт, но при необходимости индивидуально подстраивать отдельные уведомления.
Некоторые свойства зависят от комбинации темы и типа уведомления:
theme определяет стили и анимации уведомления.
Например, тема mint имеет плавные fade-in эффекты, а
metroui — более резкие.type влияет на визуальные маркеры (цвет фона, иконка) и
может менять поведение progressBar: в некоторых темах индикатор
отображается только для success и
warning.Важно помнить: приоритет темы и типа на уровне визуальных стилей выше глобального timeout, если тема предусматривает собственные анимации, влияющие на продолжительность отображения уведомления.
Noty поддерживает систему событий: onShow,
onClose, onClick. Через них можно
динамически менять свойства во время жизни уведомления.
Пример:
new Noty({
text: 'Данные обновляются',
timeout: 4000,
callbacks: {
onShow: function() {
if (someCondition) {
this.setTimeout(6000); // увеличиваем время отображения для конкретного случая
}
}
}
}).show();
Такое переопределение имеет самый высокий приоритет и применяется непосредственно перед визуализацией уведомления.
Если в коде заданы одновременно:
timeout: 3000,timeout: 5000,setTimeout(2000) в onShow,то результат будет таким:
3000 применяется ко всем
уведомлениям, если нет экземплярных настроек.5000 переопределяет
глобальный.setTimeout(2000) в
onShow — конечное значение для текущего уведомления.Это демонстрирует необходимость понимания иерархии и контекста применения настроек, чтобы избежать неожиданного поведения уведомлений.
Noty.overrideDefaults.onShow/onClose.theme и type, так
как они могут изменять видимые эффекты независимо от
timeout и других параметров.Эффективное управление приоритетами настроек позволяет строить уведомления, которые корректно адаптируются к различным сценариям без лишнего дублирования кода и конфликтов.