В iziToast каждая всплывающая нотификация создается с набором настроек, которые определяют внешний вид, поведение и анимацию уведомления. Чтобы обеспечить гибкость и удобство при работе с большим количеством уведомлений, библиотека поддерживает механизм наследования настроек. Этот механизм позволяет создавать базовые конфигурации и изменять лишь отдельные параметры для конкретных уведомлений, избегая повторного дублирования кода.
Любое уведомление строится на основе объекта настроек:
const baseOptions = {
title: 'Сообщение',
message: 'Это уведомление',
position: 'topRight',
timeout: 5000,
progressBar: true,
theme: 'light'
};
Здесь указаны ключевые параметры:
topRight, bottomLeft и другие)light,
dark)Для наследования используется копирование базового объекта с последующей модификацией нужных параметров. В JavaScript это удобно делать с помощью оператора spread:
const successOptions = {
...baseOptions,
title: 'Успех',
message: 'Операция выполнена успешно',
color: 'green'
};
iziToast.show(successOptions);
В данном примере successOptions наследует все настройки
baseOptions, изменяя только title,
message и color. Все остальные
свойства остаются прежними, что обеспечивает единообразие уведомлений и
упрощает поддержку кода.
Библиотека позволяет задавать глобальные настройки, которые будут использоваться по умолчанию для всех уведомлений. Это особенно полезно для применения единых стилей:
iziToast.settings({
timeout: 4000,
position: 'bottomRight',
progressBar: false,
theme: 'dark'
});
После вызова iziToast.settings() все последующие
уведомления наследуют эти значения, если они не переопределены в
конкретном объекте настроек.
Пример комбинирования глобальных и локальных настроек:
iziToast.show({
title: 'Внимание',
message: 'Это важное уведомление',
color: 'orange' // переопределяет глобальный стиль
});
В этом случае timeout, position, progressBar и theme берутся из глобальных настроек, а color используется локально.
Некоторые параметры, такие как buttons, onOpening, onClosing, представляют собой массивы или функции. Их наследование требует особого подхода, чтобы не потерять ссылки на базовые элементы.
const baseButtons = [
['<button>OK</button>', function(instance, toast) {
instance.hide({ transitionOut: 'fadeOut' }, toast);
}]
];
const infoButtons = [
...baseButtons,
['<button>Отмена</button>', function(instance, toast) {
console.log('Отмена нажата');
}]
];
iziToast.show({
title: 'Информация',
message: 'Выберите действие',
buttons: infoButtons
});
Здесь массив infoButtons наследует базовые кнопки и
добавляет новую, сохраняя оригинальную функциональность.
Функции обратного вызова (callbacks) также можно наследовать, комбинируя базовую логику с дополнительной:
const baseCallbacks = {
onOpening: function() { console.log('Уведомление открывается'); },
onClosing: function() { console.log('Уведомление закрывается'); }
};
const warningCallbacks = {
...baseCallbacks,
onOpening: function() {
baseCallbacks.onOpening();
console.log('Предупреждение открывается');
}
};
iziToast.show({
title: 'Предупреждение',
message: 'Проверьте данные',
...warningCallbacks
});
Такой подход обеспечивает повторное использование кода и предотвращает дублирование логики.
Наследование настроек в iziToast позволяет поддерживать чистый, масштабируемый и легко сопровождаемый код, минимизируя дублирование и обеспечивая единый стиль уведомлений по всему приложению.