Инструменты разработчика

SweetAlert — это JavaScript-библиотека для создания красивых и настраиваемых модальных окон. В отличие от стандартных браузерных окон (например, alert, confirm, prompt), SweetAlert позволяет разработчикам более гибко управлять внешним видом и функциональностью окон. Используя эту библиотеку, можно создать интерфейсы, которые легко воспринимаются пользователями и позволяют добавлять различные элементы взаимодействия.

Установка и подключение

Для того чтобы начать использовать SweetAlert, необходимо сначала добавить библиотеку в проект. Есть несколько способов подключения.

Через CDN

Самый простой способ подключения — это использование CDN. Для этого достаточно добавить следующий <script> тег в HTML-документ:

<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>

Установка через npm

Если проект использует систему сборки, такую как Webpack или Gulp, можно установить SweetAlert через npm:

npm install sweetalert2

После этого можно импортировать библиотеку в Jav * aScript:

import Swal from 'sweetalert2';

Установка через yarn

Альтернативой 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. Благодаря простоте использования, гибкости настройки и поддержке различных типов контента и взаимодействий, эта библиотека становится отличным выбором для разработчиков, стремящихся создать интерфейсы с высокой степенью пользовательского взаимодействия.