В библиотеке SweetAlert можно добавить не только стандартные две кнопки для подтверждения и отмены, но и дополнительную третью кнопку, что расширяет функциональные возможности интерфейса. Такая кнопка может быть полезна в ситуациях, когда требуется предложить пользователю несколько вариантов действий, отличных от основных двух.
Для того чтобы добавить дополнительную кнопку в диалоговое окно,
необходимо использовать параметр buttons. В объекте кнопок
можно задать не только два стандартных варианта, но и третий, который
будет выполнять уникальное действие.
Пример простого использования третьей кнопки:
Swal.fire({
title: 'Вы уверены?',
text: 'Это действие нельзя будет отменить.',
icon: 'warning',
showCancelButton: true,
showDenyButton: true,
confirmButtonText: 'Подтвердить',
denyButtonText: 'Отменить',
cancelButtonText: 'Не делать ничего',
}).then((result) => {
if (result.isConfirmed) {
console.log('Подтверждено');
} else if (result.isDenied) {
console.log('Отменено');
} else if (result.isDismissed) {
console.log('Ничего не сделано');
}
});
В данном примере используется три кнопки:
Ключевыми параметрами в этом примере являются
showCancelButton, showDenyButton, которые
показывают дополнительные кнопки, и cancelButtonText,
denyButtonText, которые задают их текст.
После того как пользователь нажимает одну из кнопок, можно обработать
результат с помощью объекта result, который возвращает
информацию о том, какая кнопка была нажата.
result.isConfirmed — возвращает true, если
была нажата кнопка подтверждения.result.isDenied — возвращает true, если
была нажата кнопка отказа.result.isDismissed — возвращает true, если
была нажата третья кнопка, закрывающее окно.Этот механизм позволяет гибко управлять действиями пользователя в зависимости от выбранной опции.
SweetAlert позволяет не только добавить дополнительные кнопки, но и настроить их внешний вид. Для этого можно использовать CSS классы для каждой кнопки, задав параметры стиля в объекте настроек.
Пример:
Swal.fire({
title: 'Выберите опцию',
text: 'Дополнительная кнопка имеет индивидуальный стиль.',
icon: 'question',
showCancelButton: true,
showDenyButton: true,
confirmButtonText: 'Да, подтверждаю',
denyButtonText: 'Нет, отменить',
cancelButtonText: 'Пропустить',
customClass: {
confirmButton: 'btn-confirm',
denyButton: 'btn-deny',
cancelButton: 'btn-cancel'
}
});
В данном случае на каждую кнопку можно задать свой класс, который
определяет внешний вид. Например, классы btn-confirm,
btn-deny, и btn-cancel можно стилизовать через
CSS:
.btn-confirm {
background-color: green;
color: white;
}
.btn-deny {
background-color: red;
color: white;
}
.btn-cancel {
background-color: gray;
color: white;
}
Такой подход дает гибкость в настройке интерфейса и помогает выделить кнопки визуально в зависимости от их назначения.
SweetAlert использует систему Promise для обработки событий, связанных с действиями пользователя. После того как пользователь выбирает одну из кнопок, возвращается Promise, который позволяет узнать, какую именно кнопку нажал пользователь и как нужно отреагировать.
Для обработки третьей кнопки можно использовать конструкцию
.then(), проверяя, какая кнопка была нажата:
Swal.fire({
title: 'Выберите действие',
text: 'Это важное решение.',
icon: 'info',
showCancelButton: true,
showDenyButton: true,
confirmButtonText: 'Подтвердить',
denyButtonText: 'Отказаться',
cancelButtonText: 'Закрыть',
}).then((result) => {
if (result.isConfirmed) {
console.log('Подтверждено');
} else if (result.isDenied) {
console.log('Отказано');
} else if (result.isDismissed) {
console.log('Окно закрыто');
}
});
В этом примере, в зависимости от выбранной кнопки, будет выполняться
различный код. Если нажата третья кнопка (закрыть окно), возвращается
result.isDismissed, что позволяет завершить обработку без
выполнения других действий.
Использование дополнительной третьей кнопки в SweetAlert добавляет гибкости и функциональности для создания интерфейсов, которые требуют больше вариантов выбора. Возможность задавать текст, стиль и действия каждой кнопки позволяет адаптировать поведение модальных окон под разные сценарии.