Действие отмены: контракт доступности
Определяет возможность отмены действия, которая воспринимается без захвата фокуса, управляется с клавиатуры и вспомогательными технологиями, а также достоверно отражает обратимое действие и срок его действия.
Статус пакета: контекст справки готов для проверки человеком. Контракт и тестовые сценарии завершены, но не заявляется, что реализация, использующая этот контракт, прошла их.
Решение
Применить изменение немедленно, затем показать сообщение о статусе с возможностью отмены одного действия в настраиваемом окне. Сохранить фокус, объявить краткий текст статуса и предоставить путь восстановления без ограничения по времени, если потеря будет серьёзной.
Область применения
- Фокус, активация с клавиатуры, объявления в живом регионе, срок действия, повторяющиеся действия и восстановление.
- Отмена одного завершённого действия пользователя с устойчивым идентификатором операции.
- Визуальное и поведение для вспомогательных технологий сообщения о статусе.
Вне этого блока
- Замена подтверждения для необратимых действий с высоким воздействием.
- Общая архитектура истории команд или совместный откат.
Контракт
- Завершение действия не перемещает фокус клавиатуры на сообщение о статусе.
- Вежливое объявление статуса называет результат и доступное действие Отмены один раз; отсчёт времени не объявляется.
- Отмена — это нативная кнопка в порядке табуляции с доступным именем, идентифицирующим действие при неоднозначности.
- Активация идемпотентна и нацелена на точный идентификатор операции, а не просто на последний совпадающий запись.
- Истечение срока удаляет или отключает действие последовательно; вспомогательные технологии получают одно краткое обновление о сроке действия/результате.
- Повторяющиеся действия остаются индивидуально идентифицируемыми или сознательно объединяются с документированным правилом.
Руководство по реализации
- Используйте постоянный идентификатор операции, возвращаемый мутацией, и отправляйте его с запросом отмены.
- Держите живой регион смонтированным, чтобы объявления были надёжными; обновляйте его текст, а не пересоздавайте узел.
- Приостановите визуальное истечение срока, если это требует политика продукта, или обеспечьте маршрут восстановления активности/истории для значимых изменений.
- Тестируйте только с клавиатурой, с распространёнными экранными читалками, с уменьшенным движением и при высоком увеличении.
Обработка ошибок и меры предосторожности
- Если отмена конфликтует с последующим редактированием, не перезаписывайте более позднее состояние; возвращайте объяснение конфликта и путь восстановления.
- Если запрос отмены истёк по времени, сохраняйте статус неопределённым, пока поиск операции не разрешит ситуацию.
- Если действие уже отменено, возвращайте то же успешное конечное состояние.
Проверка и операции
- Отслеживайте попытки отмены, успех, истечение срока, конфликты и повторную активацию.
- Проверяйте позицию фокуса и вывод живого региона в автоматических тестах доступности и при ручной проверке вспомогательными технологиями.
- Переоценивайте временное окно, используя наблюдаемые потребности в завершении и восстановлении, а не жёстко заданное универсальное значение.
Примеры, похожие на исполняемые, в этом пакете являются фикстурами и контрактами приёмки. Запустите
python tools/validate.py из корня коллекции для проверки структуры пакета и метаданных; затем
реализуйте и выполните сценарии в целевом репозитории.
Предположения при внедрении
- Имена и числовые значения в
example.yaml— это профиль внедрения, а не универсальные значения по умолчанию. - Команда, внедряющая, должна сопоставить акторов, классы данных, словарь ошибок и владение со своей системой.