Метод setTheme()

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


Синтаксис

notyInstance.setTheme(themeName);
  • notyInstance — объект уведомления Noty, созданный с помощью конструктора new Noty(options).
  • themeName — строка, задающая название темы. Доступные темы определяются либо стандартными стилями библиотеки, либо кастомными CSS, подключёнными в проект.

Основные особенности

  1. Динамическая смена темы Метод позволяет изменять тему уже существующего уведомления до его отображения или во время отображения. Это полезно, если необходимо синхронизировать уведомления с текущей темой интерфейса пользователя.

  2. Поддержка кастомных тем Любая тема, подключённая через CSS и зарегистрированная в Noty, может быть использована с setTheme(). Например, при добавлении кастомной темы "custom-dark" достаточно передать её название методу:

    const n = new Noty({
        text: 'Уведомление с кастомной темой',
        type: 'alert'
    }).show();
    
    n.setTheme('custom-dark');
  3. Влияние на стили уведомления После вызова setTheme(), библиотека автоматически меняет CSS-классы уведомления. Старые классы темы удаляются, а новые добавляются. Это позволяет менять цвет, тень, анимации и другие визуальные параметры без ручного вмешательства.


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

// Создание уведомления с начальной темой 'mint'
const n = new Noty({
    text: 'Пример уведомления',
    type: 'success',
    theme: 'mint',
    timeout: 3000
}).show();

// Через 1 секунду сменить тему на 'sunset'
setTimeout(() => {
    n.setTheme('sunset');
}, 1000);

В этом примере уведомление сначала отображается с темой mint, а затем через одну секунду плавно меняет внешний вид на sunset, сохраняя все остальные параметры.


Взаимодействие с другими методами

  • show() и close() Метод setTheme() можно вызывать как до отображения уведомления (show()), так и после. Изменение темы не влияет на возможность закрытия уведомления через close().

  • setType() и setText() Совместно с методами изменения типа уведомления или текста, setTheme() позволяет создавать динамические уведомления, адаптирующиеся к различным событиям интерфейса.


Регистрация и подключение тем

  1. Стандартные темы Noty поставляется с набором стандартных тем: mint, relax, sunset, metroui. Для использования достаточно подключить соответствующий CSS-файл.

  2. Кастомные темы Создание кастомной темы требует:

    • Определения CSS-классов для контейнера уведомления (.noty_theme_имя_темы)
    • Подключения CSS в проект
    • Передачи названия темы в setTheme() или опцию theme при создании уведомления.
.noty_theme_custom-dark {
    background-color: #2e2e2e;
    color: #ffffff;
    border-radius: 5px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.5);
}

Ограничения и особенности

  • Метод работает только с объектами Noty, уже созданными через new Noty().
  • Если указать несуществующую тему, библиотека не выбросит ошибку, но уведомление не изменит стиль.
  • Для правильного применения кастомной темы необходимо, чтобы CSS-файл был загружен до вызова метода setTheme().
  • Изменение темы во время анимации уведомления может привести к временным визуальным несовпадениям, если CSS-анимации различаются между темами.

Практические советы

  • Использовать setTheme() для синхронизации уведомлений с системной или пользовательской темой интерфейса.
  • Для мульти-тематических приложений создавать отдельные CSS-файлы с темами и подгружать их при инициализации интерфейса.
  • Комбинировать с методами setType() и setText() для создания полноценных динамических уведомлений, адаптирующихся к контексту события.

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