Перезапись дефолтных значений

Библиотека 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 мощным инструментом для стандартизации уведомлений, обеспечивая единый стиль и поведение по всему проекту без необходимости дублирования настроек для каждого экземпляра.