Для использования Toastify в проекте необходимо подключить библиотеку через npm или CDN. Установка через npm осуществляется командой:
npm install toastify-js
После установки подключение в Jav * aScript:
import Toastify from 'toastify-js';
import "toastify-js/src/toastify.css";
Для CDN подключение выглядит следующим образом:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
<script src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
Это позволяет использовать объект Toastify для создания
уведомлений с минимальными усилиями.
Toastify позволяет добавлять интерактивные элементы
в уведомления, включая кнопки и формы ввода. На базовом уровне
уведомление создается через метод Toastify() с передачей
конфигурации:
Toastify({
text: "Это простое уведомление",
duration: 3000,
close: true,
gravity: "top",
position: "right",
backgroundColor: "#4CAF50",
}).showToast();
Параметры:
text — текст уведомления. Можно использовать HTML для
добавления интерактивных элементов.duration — время отображения в миллисекундах.close — добавление кнопки закрытия.gravity — положение по вертикали (top или
bottom).position — положение по горизонтали (left,
center, right).backgroundColor — цвет фона уведомления.Форма ввода создается с помощью HTML-кода, передаваемого в
text. Например, для простого текстового поля с кнопкой
подтверждения:
const inputForm = `
<form id="toastForm">
<input type="text" id="userInput" placeholder="Введите текст" />
<button type="submit">Отправить</button>
</form>
`;
const toast = Toastify({
node: document.createElement('div'),
duration: -1,
gravity: "top",
position: "center",
backgroundColor: "#2196F3",
});
toast.showToast();
toast.getToast().appendChild(document.createRange().createContextualFragment(inputForm));
document.getElementById('toastForm').addEventListener('submit', function(e) {
e.preventDefault();
const value = document.getElementById('userInput').value;
console.log("Введено:", value);
toast.hideToast();
});
Особенности:
duration: -1 делает уведомление
постоянным до закрытия пользователем.node позволяет вставить кастомный HTML-контейнер для
формы.submit используется для обработки данных
формы.Toastify поддерживает кастомизацию через CSS и встроенные свойства:
Toastify({
node: document.createElement('div'),
duration: -1,
gravity: "bottom",
position: "left",
backgroundColor: "linear-gradient(to right, #ff6a00, #ee0979)",
stopOnFocus: true,
}).showToast();
Ключевые параметры для кастомизации:
stopOnFocus — при наведении мыши уведомление не
скрывается.style — можно передавать объект с CSS-свойствами:style: {
borderRadius: "10px",
fontSize: "16px",
padding: "10px 20px"
}
Для сложных форм можно динамически изменять содержимое уведомления без его закрытия:
const toastNode = document.createElement('div');
Toastify({ node: toastNode, duration: -1, backgroundColor: "#673AB7" }).showToast();
toastNode.innerHTML = `
<form id="multiStepForm">
<input type="text" id="step1" placeholder="Шаг 1" />
<button id="nextStep" type="button">Далее</button>
</form>
`;
document.getElementById('nextStep').addEventListener('click', () => {
const stepValue = document.getElementById('step1').value;
toastNode.innerHTML = `
<form id="step2Form">
<p>Вы ввели: ${stepValue}</p>
<input type="text" id="step2" placeholder="Шаг 2" />
<button type="submit">Завершить</button>
</form>
`;
document.getElementById('step2Form').addEventListener('submit', function(e) {
e.preventDefault();
const finalValue = document.getElementById('step2').value;
console.log("Результат формы:", { step1: stepValue, step2: finalValue });
toast.hideToast();
});
});
Преимущества такого подхода:
Toastify поддерживает колбэки для обработки различных событий:
Toastify({
text: "Форма для ввода",
duration: -1,
onClick: () => console.log("Уведомление кликнуто"),
onShow: () => console.log("Уведомление показано"),
onHide: () => console.log("Уведомление скрыто"),
}).showToast();
onClick — срабатывает при клике на уведомление.onShow — вызывается сразу после показа.onHide — вызывается после скрытия.Эти колбэки позволяют интегрировать уведомления с логикой приложения, например, запускать AJAX-запрос или обновлять интерфейс после ввода данных в форме.
Toastify легко интегрируется с фреймворками вроде React, Vue, Angular:
useRef и вставляется
через node.v-html для динамического
добавления формы в уведомление.Renderer2
и привязку событий.Такой подход позволяет создавать интерактивные уведомления, которые полностью соответствуют архитектуре приложения.
duration: -1 для форм, чтобы пользователь
успел ввести данные.Это обеспечивает удобное и безопасное взаимодействие с пользователем при использовании интерактивных уведомлений в JavaScript через Toastify.