Requiere confirmaciones destructivas para identificar el objetivo y la consecuencia, seguir el comportamiento accesible del teclado en modales y usar perfiles de confirmación más estrictos solo cuando el riesgo lo justifique.
Estado del paquete: contexto de referencia listo para revisión humana. El contrato y los escenarios de prueba están completos, pero no se afirma que una implementación adoptante los haya superado.
Decisión
Una acción destructiva abre un modal que nombra la consecuencia y el nombre para mostrar del objetivo en el servidor, no una advertencia genérica. El foco del teclado permanece dentro del modal hasta confirmar, cancelar o descartar, y el foco inicial normalmente favorece la acción menos destructiva a menos que primero se necesite leer el contenido. La confirmación por nombre escrito es un perfil de alto impacto, no un requisito universal. Se aplican las semánticas estándar de formulario: Enter puede enviar solo cuando el control explícito de confirmación está habilitado y la confirmación configurada es válida. Se ofrece deshacer después del éxito solo cuando existe una ruta real de recuperación.
Alcance
- Diálogos de confirmación para acciones destructivas sobre un objetivo nombrado.
- Trampa de foco, escape y confirmación por nombre escrito.
- Eliminaciones reversibles versus purgas irreversibles.
- Deshacer solo cuando existe un camino de gracia.
Fuera de este bloque
- Programaciones de purga en backend y expiración de copias de seguridad.
- Reemplazar el diálogo con un spinner que elimina la trampa.
- Autorización más allá de rechazar la confirmación sin permiso.
Contrato
- El nombre accesible del diálogo incluye el verbo y el nombre para mostrar del objetivo en el servidor.
- Tab cicla solo dentro del diálogo; los controles de fondo están inertes hasta cerrar.
- Escape y cancelar cierran sin efectos secundarios y restauran el control que tenía el foco previamente.
- En el perfil de alto impacto
type-name, confirmar permanece deshabilitado hasta que la cadena escrita sea igual arequired_phrase; presionar Enter sigue el comportamiento normal del formulario y no puede omitir el estado deshabilitado o inválido. - La activación por mouse, tacto y teclado invoca la misma acción explícita de confirmación solo después de la validación; el riesgo no se infiere del método de entrada.
- Las acciones irreversibles establecen
reversible: false, comunican claramente la consecuencia permanente en el texto localizado y nunca prometen deshacer. No se requiere la palabra literal en inglés “irreversible”.
Implementación
Usar un modal con aria-modal. Elegir el foco inicial usando el contenido del diálogo y el perfil de riesgo, usualmente cancelar para una confirmación destructiva corta o un elemento explicativo estático para consecuencias largas. Obtener el nombre canónico antes de abrir. Después de confirmar reversible, devolver un id de operación para deshacer. Después de confirmar irreversible, mostrar un recibo estático.
Manejo de fallos
Si la obtención del nombre falla, no abrir un diálogo conjetural. Las frases que no coinciden mantienen el diálogo abierto y anuncian una vez. Después de un fallo de red en la confirmación, mostrar estado incierto y refrescar la existencia; no reintentar silenciosamente una purga irreversible.
Verificación
Verificar el confinamiento del teclado, el comportamiento de Escape permitido por el perfil del producto, la restauración del foco, el rechazo de nombre escrito inválido y un texto claro de acción permanente. Deshacer debe aparecer solo cuando la mutación sea reversible. Ejecutar los escenarios empaquetados, incluyendo una pasada con lector de pantalla sobre el nombre accesible.
Los ejemplos con apariencia ejecutable en este paquete son fixtures y contratos de aceptación. Ejecutar
python tools/validate.py desde la raíz de la colección para verificar la estructura y metadatos del paquete; luego
implementar y ejecutar los escenarios en el repositorio objetivo.
Suposiciones de adopción
- Los nombres y valores numéricos en
example.yamlson un perfil de adopción, no valores predeterminados universales. - El equipo adoptante debe mapear actores, clases de datos, vocabulario de errores y propiedad a su sistema.