Подтверждение удаления нужно не для того, чтобы лишний раз остановить человека, а чтобы он понял, что именно исчезнет и можно ли это восстановить. Личный черновик, который надёжно сохраняется в корзине, часто удобнее удалить сразу и предложить отмену. Если же удаляется общий проект с работой коллег, перед окончательным действием требуется показать состав проекта, последствия и путь восстановления. Разберём оба случая на примере вымышленной дизайн-команды и проверим переходы с помощью прототипирования в Pixso.

Сначала определите объект, а не цвет кнопки
В нашем примере у Майи есть два объекта с названием Autumn launch: личный черновик доски и общий проект с шестью дизайн-файлами. Одинаковая надпись не означает одинаковое действие. Черновиком пользуется только Майя, а после удаления он попадает в восстанавливаемую корзину. В общем проекте работают восемь человек; после удаления они теряют обычный доступ. Прежде чем рисовать диалог, нужно описать точный объект, связанные с ним файлы и людей, которых затронет операция.
Контракт действия можно сформулировать так: «Переместить личный черновик в корзину на 30 дней» и «Удалить общий проект вместе с шестью файлами; участники потеряют доступ». Срок в 30 дней относится только к вымышленному примеру и не описывает правила хранения Pixso. Если в реальном продукте нет работающего механизма восстановления, нельзя добавлять кнопку «Отменить» лишь потому, что такой паттерн привычен.
Предупреждение и право на удаление — разные вопросы. Предупреждение сообщает о последствиях, но не выдаёт разрешение. Здесь предполагается, что у владельца уже есть право удалить объект; задача интерфейса — помочь ему принять осознанное решение.
Выбирайте отмену, подтверждение или проверку по последствиям
Используйте наименее навязчивый способ, который всё же защищает от серьёзной ошибки. Если действие действительно обратимо, его можно выполнить сразу, показав доступный способ отмены. Если восстановить результат трудно, последствия нужно показать до окончательного решения. Модальное окно после каждого мелкого действия приучает закрывать предупреждения не читая.
| Действие | Подходящий сценарий | Обязательное условие |
|---|---|---|
| Переместить личный черновик в корзину | Выполнить сразу, показать отмену и путь к корзине | Отмена возвращает тот же черновик; срок хранения реален и доступен для проверки. |
| Удалить участника из общего проекта | Показать, кто потеряет доступ, затем подтвердить | Владелец видит, не сохраняется ли доступ через другую роль. |
| Безвозвратно удалить общий проект | Проверить точный объём, затем явно подтвердить | Показаны затронутые файлы и возможность либо невозможность восстановления. |
Ввод названия проекта не должен быть универсальным правилом безопасности. Он может быть полезен, когда затронуто много людей или файлов и восстановления нет, но и такой шаг часто выполняют механически. Сначала покажите точный объём операции и назовите финальную кнопку конкретным глаголом. Дополнительный ввод оправдан, если риск и тестирование подтверждают его необходимость. Для личного черновика отмена должна оставаться доступной, а не прятаться в уведомлении, исчезающем через секунду.
Объясните, что удаляется, кто пострадает и что будет дальше
Вопрос «Вы уверены?» перекладывает работу по оценке последствий на пользователя. Лучше написать: «Удалить общий проект Autumn launch?» и затем: «Шесть дизайн-файлов станут недоступны восьми участникам проекта». Если восстановление возможно в течение определённого времени, укажите, кто и где сможет его выполнить. Слово «безвозвратно» допустимо только тогда, когда у сервиса действительно нет способа вернуть данные. Кнопки можно назвать «Удалить проект» и «Оставить проект».
Покажите вместе название проекта, контекст владения, число файлов и последствия для участников. Количество должно приходить из текущих данных и обновляться, если проект изменился, пока диалог открыт. Устаревшее число в момент подтверждения хуже отсутствующего. Если файлов очень много, удобнее показать количество и путь к подробному составу, чем размещать длинный список прямо в окне.
Сильный сигнальный цвет оставьте финальному действию и важному последствию, а не всей разметке диалога. Безопасный вариант должен оставаться заметным. Один лишь цвет не объясняет разницу: обе кнопки нуждаются в точных глаголах.
Продумайте успех, ошибку и неопределённый результат
Нажатие на «Удалить» не завершает сценарий. Для черновика сообщите о перемещении в корзину, предложите отмену и оставьте постоянный путь к корзине после исчезновения временного сообщения. При успешной отмене верните черновик на прежнее место и подтвердите результат. Если черновик успел измениться, объясните конфликт, а не заменяйте новую версию незаметно.
Для общего проекта заблокируйте повторную отправку запроса, пока первая выполняется. После успеха переведите владельца к подходящему родительскому экрану, уберите проект из обычной навигации и уведомите других участников только так, как предусмотрено реальной политикой продукта. При ошибке сохраните проект и контекст диалога, чтобы владелец мог решить, повторять ли действие. Тайм-аут сети особенно неоднозначен: запрос мог выполниться, хотя ответ не пришёл. Прежде чем снова отправлять разрушительную команду, проверьте состояние проекта или запроса.
Определите и судьбу файла, открытого во вкладке коллеги. В зависимости от архитектуры он может стать доступным только для чтения, закрыться или показать уведомление об удалении. Не обещайте электронное письмо или исчезновение всех локальных копий, если это не входит в фактический контракт сервиса.
Сделайте подтверждение понятным без мыши
Модальному окну нужны видимый заголовок, понятное описание последствия, доступные с клавиатуры действия, отчётливый фокус и предсказуемый возврат. Рекомендации W3C для модального диалога допускают начальный фокус на наименее разрушительном варианте, когда последний шаг трудно отменить. Рекомендации для предупреждающего диалога описывают название окна и связь с его сообщением. Красивый макет, похожий на пример, сам по себе не доказывает доступность реализации.
Клавиша Escape и кнопка закрытия должны отменять ожидание решения, а не удалять объект. После закрытия фокус обычно возвращают на кнопку, открывшую окно. Если после успешного действия эта кнопка исчезла, выберите логичное место — например, заголовок списка проектов. Во время сетевого запроса сообщайте о состоянии и не оставляйте человека надолго в неработающем окне.
Сравните оба сценария в Pixso до передачи в разработку
Расположите в Pixso рядом схему для личного черновика и схему для общего проекта. Для черновика соедините «Удалить» с состояниями «Перемещено в корзину», «Отменить» и «Восстановлено». Для проекта соедините удаление с проверкой состава, ожиданием, экраном успеха и восстановлением после ошибки. Используйте одно название проекта и согласованные числа файлов и участников на всех экранах. Красивого предупреждения недостаточно, если следующий экран ему противоречит.

Попросите коллегу ответить по прототипу на три вопроса: «Какой именно Autumn launch я удаляю?», «Кто потеряет доступ?» и «Что делать, если это ошибка?» Если приходится угадывать, измените название объекта, описание последствия или состояние восстановления. Передайте разработчикам сценарий вместе с действительными правилами хранения, правами, уведомлениями и проверкой статуса запроса. Pixso помогает спроектировать и обсудить взаимодействие, но не выполняет удаление в рабочем сервисе и не гарантирует политику восстановления на сервере. Откройте Pixso и проверьте оба сценария.