Заметки

Как разобраться с окном поверх другого окна

Чтобы добавить адрес, человек открывает одно окно, затем второе и боится закрыть не то. Разберём, как вернуть его к заявке с сохранёнными данными и понятным результатом.

Два вложенных диалоговых окна и путь возврата к предыдущему шагу.

Заявка почти готова, осталось выбрать адрес доставки. Открываешь окно со списком, нужного адреса там нет, нажимаешь «Добавить». Появляется ещё одно окно, а после заполнения ещё и подтверждение. Теперь на экране несколько крестиков, и хочется закрыть лишнее, не потеряв всё остальное.

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

Что мы сохраняем: адрес или заявку

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

Эту разницу стоит выяснить до выбора компоновки. Иначе кнопка «Готово» будет одинаково закрывать два разных действия, а человек не поймёт, где теперь искать введённый адрес. Для нашего примера выберем сохранение в справочник: сотрудник добавляет запись, видит её в списке и продолжает ту же заявку с выбранным адресом. Получилась короткая цепочка, по которой уже можно проверить каждый переход.

Цепочка состоит из выбора адреса, создания новой записи в справочнике и возврата к той же заявке с уже выбранным адресом.

Достаточно ли одного окна

Если для нового адреса нужны только название и строка с улицей, можно заменить содержимое текущего окна. Вместо списка появится форма «Добавить адрес», а над ней возврат «К выбору адреса». Так человек остаётся внутри одной небольшой задачи и видит, как вернуться на шаг назад. Закрытие всего окна при этом не стоит маскировать под тот же возврат: это другое действие.

Но адрес может оказаться сложнее. Если нужны карта, несколько документов и проверка реквизитов, тесное окно начнёт мешать уже самому заполнению. Тогда отдельная страница с сохранённым черновиком заявки даст больше места и понятный маршрут назад. Нам не обязательно любой ценой оставить один прямоугольник: нужно, чтобы после добавления адреса человек мог продолжить работу там, где остановился.

Два последовательных состояния одного диалога: выбор существующего адреса и короткая форма добавления. Во втором состоянии есть отдельный возврат «К выбору адреса».

Куда вернётся человек после сохранения

В нашем коротком сценарии адрес успешно добавлен. Теперь мало просто закрыть форму: новая запись должна появиться среди доступных вариантов, а человек должен увидеть, что она выбрана. Иначе он снова начнёт искать её в списке или решит, что сохранение не сработало.

Тот же переход нужно проверить с клавиатуры. При открытии диалога фокус переводится внутрь него, а при закрытии возвращается в осмысленное место. Если он останется на скрытом поле, следующий Tab может увести человека совсем не туда, где продолжилась работа. В случае отмены добавления результат тоже должен быть честным: прежний выбор остаётся, а сообщения об успешном сохранении не появляется.

После добавления новое значение доступно в выборе адресов. Главный офис выбран, область клавиатурного фокуса видна, сохранённый черновик заявки остаётся доступен.

Что будет, если адрес не сохранится

Теперь повторим путь с ошибкой сети. Человек нажал «Добавить в справочник», но сервер не ответил. Если окно исчезнет, останется гадать, добавилась запись или нет. Если очистятся поля, придётся вводить адрес заново, хотя ошибку вызвали не действия человека.

Лучше сохранить введённое на экране, сообщить, что адрес пока не сохранён, и дать повторить попытку. Затем проверь возврат к списку, закрытие окна и повторный вход. Заявка должна оставаться доступной, а повторная попытка не должна незаметно создавать дубликат адреса. Когда этот путь понятен и после успеха, и после ошибки, количество окон перестаёт быть главным предметом спора. Человек добавил адрес, понимает, где он сохранился, и может закончить заявку.

При ошибке сохранения введённые название и адрес остаются в форме. Интерфейс не сообщает об успешном добавлении и предлагает повторить сохранение или вернуться.