Для начала работы с Toastify необходимо подключить библиотеку в проект. Toastify доступна как через CDN, так и через пакетный менеджер npm/yarn.
Подключение через CDN:
Подключение через npm:
npm install toastify-js
import Toastify from 'toastify-js';
import "toastify-js/src/toastify.css";
После подключения можно создавать уведомления с помощью метода
Toastify({ ...options }).showToast().
Toastify поддерживает множество опций для тонкой настройки уведомлений. Основные параметры:
text – текст уведомления.duration – время отображения в миллисекундах. Значение
-1 оставляет уведомление на экране до закрытия
вручную.close – отображение кнопки закрытия.gravity – вертикальное положение: "top"
или "bottom".position – горизонтальное положение:
"left", "center", "right".backgroundColor – цвет фона уведомления.className – CSS-класс для стилизации уведомления.stopOnFocus – при true уведомление не
исчезает при наведении мыши.onClick – функция, вызываемая при клике по
уведомлению.offset – объект для смещения уведомления по вертикали и
горизонтали: { x: 0, y: 0 }.Пример базового уведомления:
Toastify({
text: "Пример уведомления",
duration: 3000,
gravity: "top",
position: "right",
backgroundColor: "#4CAF50",
}).showToast();
Toastify позволяет использовать CSS для полной кастомизации внешнего вида уведомлений:
className:Toastify({
text: "Кастомный стиль",
className: "my-toast",
}).showToast();
.my-toast {
background: linear-gradient(to right, #ff6a00, #ee0979);
font-weight: bold;
border-radius: 10px;
}
.toastify {
animation: fadeIn 0.5s, fadeOut 0.5s 2.5s;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(-20px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeOut {
from { opacity: 1; transform: translateY(0); }
to { opacity: 0; transform: translateY(-20px); }
}
Уведомления могут содержать интерактивные элементы, такие как ссылки или кнопки:
Toastify({
node: (() => {
const container = document.createElement("div");
container.innerHTML = `
Уведомление с ссылкой
`;
return container;
})(),
duration: 5000,
gravity: "bottom",
position: "center"
}).showToast();
Для проектов с активной Content Security Policy необходимо учитывать следующие моменты:
Content-Security-Policy:
script-src 'self' https://cdn.jsdelivr.net;
style-src 'self' https://cdn.jsdelivr.net;
Inline скрипты и eval() Toastify не
использует eval(), но при использовании параметра
node для кастомных элементов необходимо убедиться, что CSP
разрешает создание DOM через JavaScript.
Кастомные стили Для inline-стилей нужно
использовать style-src 'unsafe-inline' или подключать CSS
через отдельный файл, что предпочтительнее с точки зрения
безопасности.
HTTPS и безопасные источники Все внешние ресурсы
должны загружаться через HTTPS. CSP должен включать https:
для скриптов и стилей, если они загружаются с внешних CDN.
Пример корректной политики для использования Toastify с CDN:
Content-Security-Policy:
default-src 'self';
script-src 'self' https://cdn.jsdelivr.net;
style-src 'self' https://cdn.jsdelivr.net;
connect-src 'self';
Toastify({
text: "Первое уведомление",
duration: 2000
}).showToast();
Toastify({
text: "Второе уведомление",
duration: 2000,
gravity: "bottom",
position: "left"
}).showToast();
async function saveData() {
try {
await api.save();
Toastify({
text: "Данные успешно сохранены",
backgroundColor: "#4CAF50"
}).showToast();
} catch (error) {
Toastify({
text: "Ошибка при сохранении",
backgroundColor: "#F44336"
}).showToast();
}
}
setTimeout для отображения уведомления через заданное
время:setTimeout(() => {
Toastify({
text: "Отложенное уведомление",
duration: 3000
}).showToast();
}, 5000);
Toastify, не
содержат непроверенный HTML при использовании node.