Библиотека Noty предоставляет гибкие возможности для отображения уведомлений в веб-приложениях. Одной из часто востребованных функций является ограничение количества одновременно видимых уведомлений, чтобы избежать перегрузки интерфейса.
Noty позволяет контролировать видимость уведомлений через глобальные
и локальные настройки. Основной параметр для ограничения количества
уведомлений — maxVisible. Он определяет, сколько
уведомлений может находиться на экране одновременно в рамках одного
контейнера.
new Noty({
text: 'Пример уведомления',
type: 'success',
maxVisible: 3, // максимум 3 уведомления одновременно
layout: 'topRight',
timeout: 3000
}).show();
В данном примере, если уже отображается 3 уведомления, новые уведомления будут помещены в очередь и появятся только после исчезновения предыдущих.
Noty использует очередь для управления уведомлениями, превышающими
maxVisible. Когда количество видимых уведомлений достигает
максимума:
Для удобства можно задать глобальный лимит видимых уведомлений. Это особенно полезно в крупных приложениях с многочисленными событиями, генерирующими уведомления.
Noty.overrideDefaults({
maxVisible: 5,
layout: 'topRight',
timeout: 4000
});
Теперь все новые уведомления будут использовать эти настройки по
умолчанию, что позволяет избежать необходимости указывать
maxVisible для каждого уведомления отдельно.
Ограничение количества видимых уведомлений может применяться как к
одному типу уведомлений, так и ко всем одновременно. В Noty каждый тип
уведомления (success, error,
warning, info) создаёт отдельный контейнер на
экране. Таким образом:
maxVisible ограничивает количество уведомлений внутри
конкретного контейнера;function showNotification(text, type) {
if (Noty.getQueue().length < 5) {
new Noty({
text: text,
type: type,
layout: 'topRight',
maxVisible: 3,
timeout: 3000
}).show();
}
}
В данном коде выполняется проверка общей очереди уведомлений, предотвращая переполнение интерфейса.
Noty позволяет вручную управлять порядком отображения уведомлений.
Например, уведомления с критическими сообщениями (error)
могут выводиться сразу, независимо от текущего количества видимых
уведомлений:
new Noty({
text: 'Критическая ошибка',
type: 'error',
layout: 'topRight',
maxVisible: 3,
timeout: false, // останется на экране до ручного закрытия
killer: true // закроет все предыдущие уведомления перед показом
}).show();
Параметр killer: true завершает показ всех существующих
уведомлений в контейнере и отображает новое уведомление сразу. Это
особенно полезно для аварийных сообщений, где задержка недопустима.
Иногда требуется изменять maxVisible динамически в
зависимости от состояния приложения. Noty предоставляет возможность
модифицировать параметры существующих уведомлений через методы
экземпляра:
let n = new Noty({
text: 'Динамическое уведомление',
type: 'info',
layout: 'topRight',
maxVisible: 2
}).show();
// Позже можно увеличить лимит для текущего контейнера
Noty.overrideDefaults({ maxVisible: 4 });
Это позволяет адаптировать количество видимых уведомлений к конкретной ситуации, например, при увеличении активности пользователя на странице.
Контроль количества видимых уведомлений в Noty обеспечивает:
Использование параметра maxVisible, очереди уведомлений,
а также сочетание с killer позволяет создавать продуманный
UX даже в сложных веб-приложениях с интенсивной генерацией
уведомлений.