Desfazer
Padrões para reversão de ações no ME, indicando quando usar Desfazer, qual janela de tempo manter e quais operações exigem confirmação definitiva.
Boas Práticas
Use Desfazer para oferecer reversibilidade a ações que podem ser acidentais. Em vez de exigir confirmação antes, o sistema executa a ação imediatamente e oferece uma janela de tempo para reverter via Toast. Isso reduz fricção e mantém o usuário no controle.
Contextos
Desfazer sempre aparece dentro do Toast de confirmação da ação original — nunca como botão isolado na interface. A janela de tempo padrão é de 5 segundos.
A janela de desfazer é de 5s. A progress bar indica o tempo restante visualmente.
Ao remover um fornecedor vinculado à cotação (chip com X), o Toast com 'Desfazer' substitui o modal de confirmação. O chip desaparece imediatamente; o usuário pode reverter em 5s.
Hierarquia
1 — Estrutura do Toast com Desfazer
Composição
- Mensagem da ação + botão "Desfazer" à direita
- Duração: 5 segundos com barra de progresso visual
- Após clicar "Desfazer": o item volta ao estado anterior + Toast "Ação desfeita." (sem novo desfazer)
- Após expirar: ação torna-se permanente silenciosamente
Heurísticas aplicadas
- Controle e liberdade do usuário — permite desfazer ações acidentais sem consequências
- Prevenção de erros — substitui modais de confirmação em ações de baixo risco
- Visibilidade do status do sistema — Toast com contador de tempo restante
- Redução de erros — oferece saída segura sem interromper o fluxo principal
Regras
- Duração padrão: 5 segundos com barra de progresso visual
- Botão "Desfazer" sempre à direita da mensagem, com estilo link ou ghost
- Após expirar: ação se torna permanente silenciosamente — sem notificação adicional
- Após clicar "Desfazer": Toast secundário "Ação desfeita." (sem novo botão desfazer)
- Nunca empilhar dois Toasts de desfazer simultaneamente para a mesma ação
2 — Quando Desfazer substitui confirmação
Casos de uso
- Excluir item de baixo risco → Toast com desfazer (sem modal de confirmação)
- Remover associação → Toast com desfazer
- Arquivar registro → Toast com desfazer
- Mover item → Toast com desfazer
Heurísticas aplicadas
- Eficiência — substitui fluxos de confirmação, reduzindo fricção em ações frequentes
- Consistência — sempre o mesmo padrão: Toast com botão "Desfazer" à direita
- Visibilidade — barra de progresso no Toast indica o tempo restante visualmente
3 — Quando NÃO substituir confirmação por Desfazer
Requer modal de confirmação obrigatório
- Exclusão de dados críticos ou com dependências → Modal de confirmação obrigatório
- Ações com impacto financeiro (cancelar pedido, aprovar pagamento)
- Ações que afetam outros usuários ou sistemas externos
- Quando "desfazer" não é tecnicamente possível no backend
Labeling
Em ações de Desfazer, o rótulo é fixo e universal: sempre "Desfazer". A variação está na mensagem do Toast, que descreve a ação realizada. Consistência total elimina dúvida e reduz carga cognitiva.
Verbo universal — nunca "Reverter", "Cancelar" ou "Voltar"
Sempre o mesmo rótulo no botão do Toast
"[Ação realizada]. Desfazer"
A mensagem descreve o que foi feito; "Desfazer" é sempre o mesmo
Fórmula: [Entidade] + ação realizada = mensagem + botão Desfazer
[Entidade] excluído(a).
[Entidade] removido(a).
DesfazerVerbos relacionados — quando usar cada um
Reverte a última ação — rótulo fixo no botão do Toast. Nunca varia.
ReversãoMesmo significado que Desfazer — formal e distante da linguagem do produto.
Prefira DesfazerNavega para a tela anterior — não reverte dados nem ações.
NavegaçãoRetorna ao passo anterior em um wizard — não desfaz a ação executada.
Fluxo de etapasDescarta um formulário ou fluxo em andamento — padrão próprio, sem reversão.
Padrão distinto- Use"Desfazer" no Toast em vez de modal de confirmação para ações de baixo risco — reduz fricção sem sacrificar segurança.
- Barra de progresso no Toast comunica a janela de tempo restante de forma visual e intuitiva.
- Após desfazer, o Toast de confirmação"Ação desfeita." é suficiente — sem novo botão Desfazer.
- Não use"Reverter" ou "Cancelar" — o verbo universal é "Desfazer" para consistência.
- Não ofereça Desfazer paraações com modal de confirmação — a confirmação já serve de proteção.
- Não empilhedois Toasts de Desfazer simultâneos para a mesma ação — causa confusão e conflito.
Exemplos de uso
A ação de Desfazer deve ser clara, imediata e com janela de tempo visível. Como substitui a confirmação em ações de baixo risco, o Toast precisa comunicar a ação realizada e a possibilidade de reversão de forma inequívoca.
Toast com Desfazer ao arquivar uma cotação
Ao arquivar uma cotação, o Toast "Cotação arquivada. Desfazer →" aparece por 5 segundos. Nenhum modal de confirmação é necessário — o Desfazer é mais rápido e menos intrusivo para ações reversíveis.
Modal de confirmação para ações que têm Desfazer disponível
"Tem certeza que deseja arquivar?" para ações que podem ser desfeitas adiciona fricção desnecessária. O modal de confirmação é reservado para ações irreversíveis — como Excluir definitivamente.
Progress bar no Toast indica o tempo restante
A barra de progresso reduzindo ao longo de 5 segundos dá ao usuário a percepção clara de que a janela de desfazer está se encerrando — sem precisar de contador numérico.
Toast sem indicação de tempo restante
Um Toast com botão Desfazer sem nenhuma indicação de tempo confunde: o usuário não sabe se ainda pode desfazer ou se a janela já fechou.
Confirmação após desfazer: "Ação desfeita."
Quando o usuário clica em Desfazer, um segundo Toast "Ação desfeita." confirma que o desfazer foi aplicado. Sem esse feedback, o usuário não tem certeza se o clique funcionou.
Usar Desfazer para ações com impacto em outros usuários
Excluir um fornecedor compartilhado entre equipes, cancelar um pedido em aprovação ou remover um usuário ativo são ações que exigem modal de confirmação — não Toast com Desfazer.
Feedback para Desfazer
Use Desfazer como feedback não bloqueante. A ação é concluída, o Toast oferece reversão e apenas confirma caso o usuário desfaça. Ao expirar, o fluxo segue em silêncio.
Use para confirmar a ação e oferecer reversão — janela de 5 segundos com barra de progresso antes de confirmar.
Ex: "Cargo excluído. Desfazer"
Cargo excluído.
DesfazerUse para confirmar que a ação foi desfeita — exibe por 3 segundos, sem oferecer novo desfazer.
Ex: "Ação desfeita."