Radix UI предоставляет ряд компонентов для создания модальных интерфейсов, среди которых Dialog и Alert Dialog занимают центральное место. Несмотря на схожесть в структуре и API, между ними существуют фундаментальные различия, которые важно учитывать при разработке пользовательских интерфейсов.
Dialog — это универсальный модальный контейнер, который может содержать произвольный контент: формы, текст, изображения, списки или любые другие элементы. Его цель — предоставление дополнительной информации или взаимодействие с пользователем, не блокируя остальной интерфейс полностью, если требуется.
Alert Dialog — специализированный компонент, предназначенный для критических уведомлений или подтверждений действий, которые могут иметь необратимые последствия (например, удаление данных). Основной фокус здесь на безопасности и внимании пользователя.
Это поведение обеспечивает соблюдение принципов доступности (a11y), так как предупреждает случайное взаимодействие с основной страницей при критических операциях.
Alert Dialog использует aria-modal=“true” и role=“alertdialog”, что сообщает вспомогательным технологиям, что окно требует немедленного внимания.
Dialog, в свою очередь, обычно использует role=“dialog”. Это дает возможность вспомогательным устройствам понять контекст, но не обязательно сигнализирует о критическом характере содержимого.
Dialog поддерживает широкий набор пропсов, позволяющих кастомизировать поведение:
open и onOpenChange для управления
состоянием отображения;modal для переключения модальности;overlay для создания фона и затемнения контента
страницы.Alert Dialog предоставляет упрощенный API:
Примеры ключевых пропсов:
<AlertDialog>
<AlertDialogTrigger>Удалить</AlertDialogTrigger>
<AlertDialogContent>
<AlertDialogTitle>Подтвердите удаление</AlertDialogTitle>
<AlertDialogDescription>Это действие нельзя отменить.</AlertDialogDescription>
<AlertDialogAction>Удалить</AlertDialogAction>
<AlertDialogCancel>Отмена</AlertDialogCancel>
</AlertDialogContent>
</AlertDialog>
Dialog можно стилизовать абсолютно произвольно: менять размеры, добавлять анимации, использовать сложные макеты с сетками.
Alert Dialog требует минималистичного подхода: основная задача — донести критическое сообщение, поэтому рекомендуется лаконичный дизайн с выделением кнопок подтверждения/отмены и сохранением контраста для читабельности.
Dialog подходит для:
Alert Dialog подходит для:
| Характеристика | Dialog | Alert Dialog |
|---|---|---|
| Цель | Любой модальный контент | Критическое уведомление |
| Фокус | Гибкий | Строго внутри диалога |
| Роль ARIA | dialog | alertdialog |
| Контент | Произвольный | Минималистичный |
| Использование | Формы, панели, окна | Подтверждения, предупреждения |
| Модальность | Настраиваемая | Всегда модальная |
Эти различия позволяют правильно подбирать компонент под конкретную задачу интерфейса, обеспечивая согласованность UX и соответствие стандартам доступности.