Разрушительное действие: спецификация взаимодействия
Требует подтверждений разрушительных действий для идентификации цели и последствий, соблюдения доступного поведения модального окна с клавиатурой и использования более строгих профилей подтверждения только при наличии соответствующего риска.
Статус пакета: контекст справки готов для проверки человеком. Контракт и сценарии тестирования завершены, но не утверждается, что реализация, принявшая этот пакет, успешно их прошла.
Решение
Разрушительное действие открывает модальное окно, которое называет последствие и отображаемое имя цели на сервере, а не общее предупреждение. Фокус клавиатуры остается внутри модального окна до подтверждения, отмены или закрытия, и начальный фокус обычно отдается наименее разрушительному действию, если только сначала не нужно прочитать содержимое. Подтверждение с вводом имени — это профиль с высоким уровнем воздействия, а не универсальное требование. Применяются стандартные семантики формы: Enter может отправлять форму только когда явный элемент подтверждения активен и введенное подтверждение действительно. Отмена после успешного действия предлагается только при наличии реального пути восстановления.
Область применения
- Диалоги подтверждения для разрушительных действий над именованной целью.
- Захват фокуса, Escape и подтверждение с вводом имени.
- Обратимые удаления против необратимых очисток.
- Отмена только при наличии пути восстановления.
Вне этого блока
- Расписания очистки на сервере и истечение срока резервных копий.
- Замена диалога на индикатор загрузки с отключением захвата фокуса.
- Авторизация, кроме отказа в подтверждении без разрешения.
Контракт
- Доступное имя диалога включает глагол и отображаемое имя цели на сервере.
- Tab циклирует только внутри диалога; элементы фона неактивны до закрытия.
- Escape и отмена закрывают диалог без побочных эффектов и восстанавливают ранее сфокусированный элемент.
- В профиле с высоким уровнем воздействия
type-nameкнопка подтверждения остается неактивной, пока введенная строка не совпадет сrequired_phrase; нажатие Enter следует обычному поведению формы и не может обойти состояние неактивности или недействительности. - Активация мышью, касанием и клавиатурой вызывает одно и то же явное действие подтверждения только после валидации; риск не выводится из способа ввода.
- Необратимые действия устанавливают
reversible: false, ясно сообщают о постоянном последствии в локализованном тексте и никогда не обещают отмену. Буквальное английское слово «irreversible» не требуется.
Реализация
Используйте модальное окно с aria-modal. Выбирайте начальный фокус исходя из содержимого диалога и профиля риска, обычно на кнопку отмены для короткого подтверждения разрушительного действия или на статический пояснительный элемент для длительных последствий. Получайте каноническое имя перед открытием. После обратимого подтверждения возвращайте идентификатор операции для отмены. После необратимого подтверждения показывайте статический чек.
Обработка сбоев
Если получение имени не удалось, не открывайте диалог с предположениями. Несовпадение фраз удерживает диалог открытым и объявляет об этом один раз. После сетевой ошибки при подтверждении показывайте неопределенное состояние и обновляйте существование; не повторяйте необратимую очистку молча.
Проверка
Проверьте удержание фокуса клавиатуры, поведение Escape, разрешенное профилем продукта, восстановление фокуса, отказ при неверном вводе имени и четкий текст о постоянном действии. Отмена должна появляться только при обратимости мутации. Выполните упакованные сценарии, включая проверку доступного имени с помощью экранного диктора.
Примеры, похожие на исполняемые, в этом пакете являются фикстурами и контрактами приемки. Запустите
python tools/validate.py из корня коллекции для проверки структуры пакета и метаданных; затем
реализуйте и выполните сценарии в целевом репозитории.
Предположения при принятии
- Имена и числовые значения в
example.yaml— это профиль принятия, а не универсальные значения по умолчанию. - Команда, принимающая пакет, должна сопоставить акторов, классы данных, словарь ошибок и владение со своей системой.