SweetAlert — это JavaScript-библиотека для создания красивых и
настраиваемых модальных окон. В отличие от стандартных браузерных окон
(например, alert, confirm,
prompt), SweetAlert позволяет разработчикам более гибко
управлять внешним видом и функциональностью окон. Используя эту
библиотеку, можно создать интерфейсы, которые легко воспринимаются
пользователями и позволяют добавлять различные элементы
взаимодействия.
Для того чтобы начать использовать SweetAlert, необходимо сначала добавить библиотеку в проект. Есть несколько способов подключения.
Самый простой способ подключения — это использование CDN. Для этого
достаточно добавить следующий <script> тег в
HTML-документ:
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
Если проект использует систему сборки, такую как Webpack или Gulp, можно установить SweetAlert через npm:
npm install sweetalert2
После этого можно импортировать библиотеку в Jav * aScript:
import Swal from 'sweetalert2';
Альтернативой npm является установка через yarn:
yarn add sweetalert2
SweetAlert предоставляет большое количество опций для кастомизации окон, позволяя разработчикам легко настроить внешний вид и поведение модальных окон.
Основное использование SweetAlert — это отображение простых
уведомлений. Для этого используется метод Swal.fire().
Пример простого окна:
Swal.fire('Привет мир!');
Это окно появится с текстом “Привет мир!”, без кнопок и дополнительных настроек.
Можно настроить заголовок и текст уведомления через параметры
title и text. Например:
Swal.fire({
title: 'Успех',
text: 'Ваши данные были успешно сохранены!',
icon: 'success'
});
title — заголовок окна.text — текстовое сообщение.icon — иконка, которая может быть одной из следующих:
success, error, warning,
info, question.Библиотека поддерживает кастомизацию кнопок. С помощью параметра
confirmButtonText можно изменить текст кнопки:
Swal.fire({
title: 'Ошибка',
text: 'Что-то пошло не так!',
icon: 'error',
confirmButtonText: 'Понял!'
});
Можно добавить и дополнительные кнопки, используя параметр
showCancelButton:
Swal.fire({
title: 'Вы уверены?',
text: 'Это действие невозможно отменить.',
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'Да, продолжить',
cancelButtonText: 'Отмена'
});
SweetAlert позволяет изменять внешний вид окна, используя CSS-свойства. Например, можно изменить фон, шрифт или размеры модального окна, добавив соответствующие классы или inline-стили.
Чтобы использовать кастомные стили, можно использовать параметр
customClass:
Swal.fire({
title: 'Настроенное окно',
text: 'Это окно с кастомным стилем.',
customClass: {
popup: 'my-custom-popup',
title: 'my-custom-title',
text: 'my-custom-text'
}
});
SweetAlert поддерживает прогресс-бары и таймеры. Это полезно для
отображения окон с ожиданием. Для этого используется параметр
timer, который определяет время в миллисекундах, через
которое окно автоматически закроется:
Swal.fire({
title: 'Загрузка...',
text: 'Пожалуйста, подождите.',
timer: 5000, // 5 секунд
didOpen: () => {
Swal.showLoading();
}
});
Можно также показать прогресс-бар с помощью параметра
timerProgressBar:
Swal.fire({
title: 'Подтверждение',
text: 'Вы уверены, что хотите продолжить?',
icon: 'question',
showCancelButton: true,
timer: 10000,
timerProgressBar: true
});
Для работы с результатами, полученными от пользователя, используется
метод then(). После того как пользователь взаимодействует с
окном, возвращается объект с результатом. В зависимости от действия
пользователя (например, если он нажал на кнопку “OK” или “Отмена”),
можно выполнить различные действия.
Пример использования:
Swal.fire({
title: 'Вы уверены?',
text: 'Удалить этот файл?',
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'Да',
cancelButtonText: 'Отмена'
}).then((result) => {
if (result.isConfirmed) {
console.log('Файл удален');
} else {
console.log('Удаление отменено');
}
});
isConfirmed — возвращает true, если
пользователь нажал на кнопку “OK”.isDenied — возвращает true, если
пользователь нажал на кнопку “Отказаться”.isDismissed — возвращает true, если окно
было закрыто любым другим способом, например, с помощью кнопки
“Закрыть”.SweetAlert поддерживает формы для ввода данных с помощью метода
Swal.fire() и параметра input. Это позволяет
создавать окна, которые запрашивают информацию от пользователя.
Пример ввода текста:
Swal.fire({
title: 'Введите ваше имя',
input: 'text',
inputLabel: 'Ваше имя',
inputPlaceholder: 'Введите имя'
}).then((result) => {
if (result.isConfirmed) {
console.log('Привет, ' + result.value);
}
});
Можно использовать другие типы ввода, такие как email,
password, textarea и т.д.
SweetAlert поддерживает анимации при открытии и закрытии окон. Эти
анимации можно настроить с помощью параметров showClass и
hideClass.
Пример использования анимации:
Swal.fire({
title: 'Анимация',
text: 'Это окно с анимацией',
showClass: {
popup: 'animate__animated animate__fadeIn'
},
hideClass: {
popup: 'animate__animated animate__fadeOut'
}
});
Для использования анимаций необходимо подключить библиотеку Animate.css, либо использовать свои собственные стили.
SweetAlert позволяет создавать последовательность окон, которые будут
отображаться одно за другим. Для этого используется метод
Swal.fire() в комбинации с async/await или
цепочкой then().
Пример последовательных окон:
async function showSequence() {
await Swal.fire('Шаг 1');
await Swal.fire('Шаг 2');
await Swal.fire('Шаг 3');
}
showSequence();
Таким образом, можно создавать сложные сценарии с несколькими окнами, которые следуют друг за другом.
SweetAlert часто используется в комбинации с другими библиотеками, например, с библиотеками для работы с анимациями (Animate.css), для создания динамичных интерфейсов, с системой маршрутизации и т.д. Это позволяет расширять возможности SweetAlert, делая взаимодействие с пользователем более ярким и интуитивно понятным.
SweetAlert предоставляет широкие возможности для создания удобных и стильных модальных окон в JavaScript. Благодаря простоте использования, гибкости настройки и поддержке различных типов контента и взаимодействий, эта библиотека становится отличным выбором для разработчиков, стремящихся создать интерфейсы с высокой степенью пользовательского взаимодействия.