Метод closeAll()

Метод closeAll() является встроенным инструментом библиотеки Noty, предназначенным для массового закрытия всех активных уведомлений на странице. Этот метод особенно полезен при управлении множественными уведомлениями, предотвращении их наложения и обеспечении аккуратного интерфейса пользователя.


Синтаксис

Noty.closeAll([animation]);

Параметры:

  • animation (необязательный, boolean) – указывает, нужно ли использовать анимацию при закрытии уведомлений.

    • true – уведомления закроются с анимацией (по умолчанию).
    • false – уведомления исчезнут мгновенно без анимации.

Метод является статическим, то есть вызывается напрямую через объект Noty, а не через экземпляр уведомления.


Пример использования

// Создание нескольких уведомлений
new Noty({ text: 'Первое уведомление', type: 'alert', timeout: 5000 }).show();
new Noty({ text: 'Второе уведомление', type: 'success', timeout: 5000 }).show();
new Noty({ text: 'Третье уведомление', type: 'error', timeout: 5000 }).show();

// Закрытие всех уведомлений через 3 секунды
setTimeout(() => {
    Noty.closeAll();
}, 3000);

В этом примере через 3 секунды после появления уведомлений все они будут закрыты автоматически с использованием стандартной анимации.


Применение параметра animation

// Закрытие всех уведомлений без анимации
Noty.closeAll(false);

Передача значения false позволяет мгновенно удалить уведомления из DOM, что может быть полезно при динамическом обновлении контента или при необходимости очистки интерфейса без визуальных задержек.


Взаимодействие с типами уведомлений

Метод closeAll() закрывает все типы уведомлений, включая:

  • alert
  • success
  • warning
  • error
  • information

Не требуется дополнительная фильтрация по типу. В случае необходимости закрыть уведомления определённого типа, рекомендуется хранить ссылки на конкретные экземпляры и вызывать close() индивидуально для каждого.


Использование в сочетании с queue и layout

Библиотека Noty поддерживает управление уведомлениями через очередь и различные layout-позиции (topRight, topLeft, bottomRight, bottomLeft, center).

Метод closeAll() закрывает уведомления независимо от их позиции или состояния очереди:

new Noty({ text: 'Сверху справа', layout: 'topRight', type: 'success' }).show();
new Noty({ text: 'Снизу слева', layout: 'bottomLeft', type: 'warning' }).show();

// Закрываем все уведомления, независимо от layout
Noty.closeAll();

Даже если уведомления находятся в разных позициях, метод гарантирует полное их закрытие.


Влияние на callback-функции

При вызове Noty.closeAll() автоматически срабатывают callback-функции onClose каждого уведомления. Это важно учитывать при программной обработке событий:

new Noty({
    text: 'Закроется автоматически',
    type: 'alert',
    timeout: false,
    callbacks: {
        onClose: function() {
            console.log('Уведомление закрыто');
        }
    }
}).show();

Noty.closeAll();

В консоли будет выведено сообщение для каждого закрытого уведомления.


Практические сценарии применения

  1. Очистка уведомлений перед загрузкой нового контента Перед показом модальных окон или динамических компонентов можно удалить старые уведомления, чтобы не создавать визуальный шум.

  2. Массовое закрытие при смене страниц или состояний SPA В одностраничных приложениях часто возникает необходимость скрыть все старые уведомления при переходе на новый раздел.

  3. Программная остановка всех уведомлений Например, при завершении фонового процесса или по нажатию кнопки «Закрыть всё» пользователем.


Рекомендации по использованию

  • Всегда учитывать, что closeAll() срабатывает на все уведомления, поэтому если требуется частичное закрытие, лучше управлять экземплярами напрямую через close().
  • Использование параметра false для мгновенного закрытия полезно при динамических интерфейсах, где анимация может мешать пользователю.
  • Комбинируется с методами show(), setTimeout() и callback-функциями для полной гибкости управления уведомлениями.

Метод closeAll() обеспечивает простое и эффективное управление уведомлениями в Noty, позволяя гарантированно очищать интерфейс независимо от их количества, типа и расположения.