Dialog

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

Точка входа

Точкой входа в диалоговое окно может быть как клик на конкретный триггер (например, кнопка в интерфейсе), так и определенные действия или возникшие условия в интерфейсе (например, попытка покинуть страницу, не сохранив данные, или смена аккаунта в другой вкладке).

Размеры

Размер диалогового окна подбирается в зависимости от контента.

Sizes

Размер S (480 px) используется для небольших предупреждений или подверждений, а также небольших форм.

**Размер M (720 px)**используется для небольших и средних форм.

Размер L (900 px) используется для массивных данных и флоу внутри модального окна.

Пользовательский размер используется, когда ни один из трех вариантов (S, M или L) не подходит.

Контентная область

Контент внутри диалогового окна может быть произвольный. Layout подбирается в зависимости от потребностей.

Если диалоговое окно содержит форму, рекомендуется использовать один из двух типов расположения элементов:

Вертикальный тип

Больше подходит для простых текстовых окон и для размера S.

vertical

Горизонтальный тип

Подходит для более сложных форм.

horizontal

Кнопки

Action-кнопка нужна почти всегда. Если пользователь не выполнил требуемые в диалоговом окне действия, кнопка остается в режиме Disabled. В левой части предусмотрена зона для произвольных контролов. Здесь можно разместить вспомогательные кнопки или ссылки, например, справочную информацию.

Group 507124116.png

Иногда вместо action-кнопки возможно использование danger-кнопки (к примеру, если это диалог удаления сущности).

Group 2087325976.png

Action-кнопка не нужна в случае, если нет целевого действия, а диалоговое окно носит информационный характер. В таком случае используется кнопка «Закрыть» в стиле Normal.

Frame 2087326371.png

Secondary-кнопка всегда используется как кнопка отмены. Может использоваться для дополнительных действий, (например, «Продолжить без изменений»).

Group 2087326024.png

Кнопок может не быть совсем. Как правило, это случай, когда необходимо сделать выбор в самой контентной области, и без этого родительский интерфейс будет недоступен.

Frame 2087325516.png

Навигация внутри диалога

Если диалоговое окно предусматривает процесс из нескольких шагов, используется кнопка «Назад» для возврата.

Group 2087326025.png

Если диалоговое окно имеет вложенность, но это не линейные шаги, в контентной области окна могут использоваться хлебные крошки.

breadcrumbs

Расположение диалогового окна на странице

Диалоговое окно выравнивается по центру экрана по вертикали и по горизонтали.

При масштабировании вьюпорта позиционирование сохраняется, а размер диалогового окна уменьшается, если это не мешает контенту внутри.

Минимально допустимый отступ от верхнего и левого края экрана — 20 px.

position

Если окно не уместится во вьюпорт, отсутпы сверху и слева останутся фиксированными, а справа и снизу диалоговое окно выйдет за пределы экрана. Это нежелательное состояние, и рекомендуется проектировать диалоговое окно таким образом, чтобы на любом экране оно умещалось во вьюпорт, а отступы со всех сторон составляли не менее 20 px от края экрана.

Закрытие окна

Помимо выполнения целевого действия, модальное окно можно закрыть следующими способами:

  1. По кнопке «Отмена»:

cancel_btn

  1. По крестику:

x_btn

Если окно не является блокирующим, его можно закрыть следующими способами:

  • По клику за пределы модального окна.
  • По нажатии на клавишу Esc.

Кнопка «Отмена» и крестик — привычные элементы, так как они повсеместно используются в диалоговых окнах для закрытия. Клик за пределами модального окна помогает пользователю легче и быстрее закрыть его, так как не нужно целиться в первые два элемента. Нажатие на клавишу Esc позволяет закрыть окно без помощи мыши.

Поскольку взаимодействие предполагается только с диалоговым окном, то контент родительской страницы не должен прокручиваться.

Защита от потери пользовательских данных

Из-за легкости закрытия модального окна есть вероятность сделать это случайно. Если в модальном окне пользователь выбирал только чекбоксы, то потерю таких данных проще восстановить, чем когда пользователь долго писал код или переписывал 12-значный VIN автомобиля. Таких ситуаций мы не должны допустить. При этом нельзя и мешать пользователю выйти из модального окна привычным для него образом.

Чтобы избежать ошибки потери данных, лучше использовать дополнительное окно подтверждения удаления данных. В этом случае пользователю нужно будет подтвердить действие.

Pop-up S.png

Нужно ли при закрытии модального окна добавлять еще окно подтверждения, — стоит оценивать исходя из здравого смысла. При этом важно соблюсти баланс между безопасностью и возможным раздражением от слишком частых вопросов. Цель подтверждения — не потерять введенные пользователем данные, не мешая ему при этом выполнять сценарий.

НазадClipboard Button
ДалееDropdownMenu