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.

Ofereça Desfazer como alternativa à confirmação modal em ações reversíveis. Mantenha a janela de reversão visível por tempo suficiente e nunca permita undo em ações irreversíveis.

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.

Quando usar
Imediatamente após ações que podem ser acidentais (excluir, remover, mover)
Quando a ação é reversível por um curto período de tempo (5–10 segundos)
Para reduzir a necessidade de confirmação antes da ação principal
Em fluxos de alta frequência onde confirmações adicionariam atrito excessivo
Quando não usar
Para ações irreversíveis confirmadas com modal — a confirmação já basta
Quando o estado já foi propagado para outros sistemas externos
Após logout ou mudança de sessão — contexto de undo é perdido
Quando a janela de tempo expirou — nunca ofereça desfazer inoperante

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.

Toast com ação 'Desfazer'

A janela de desfazer é de 5s. A progress bar indica o tempo restante visualmente.

Remoção de chip — Toast com Desfazer

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.

ContextoToast exibidoMotivo
Exclusão de itemToast: "[Item] excluído. Desfazer"Baixo risco; elimina necessidade de modal de confirmação
Remoção de associaçãoToast: "[Item] removido. Desfazer"Ação reversível sem impacto sistêmico imediato
ArquivamentoToast: "[Item] arquivado. Desfazer"Ação de soft-delete; fácil de reverter dentro da janela
Mover / reorganizarToast: "Item movido. Desfazer"Reorganização reversível; conforto sem risco de perda

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.

Desfazer

Verbo universal — nunca "Reverter", "Cancelar" ou "Voltar"

Sempre o mesmo rótulo no botão do Toast

[Item] excluído. Desfazer[Item] arquivado. Desfazer
Toast pattern

"[Ação realizada]. Desfazer"

A mensagem descreve o que foi feito; "Desfazer" é sempre o mesmo

Cargo excluído. DesfazerFornecedor removido. Desfazer

Fórmula: [Entidade] + ação realizada = mensagem + botão Desfazer

Entidade[Entidade]
+
Açãoexcluído(a).
=

[Entidade] excluído(a).

Desfazer
Entidade[Entidade]
+
Açãoremovido(a).
=

[Entidade] removido(a).

Desfazer

Verbos relacionados — quando usar cada um

Desfazer

Reverte a última ação — rótulo fixo no botão do Toast. Nunca varia.

Reversão
Reverter

Mesmo significado que Desfazer — formal e distante da linguagem do produto.

Prefira Desfazer
Voltar

Navega para a tela anterior — não reverte dados nem ações.

Navegação
Anterior

Retorna ao passo anterior em um wizard — não desfaz a ação executada.

Fluxo de etapas
Cancelar

Descarta um formulário ou fluxo em andamento — padrão próprio, sem reversão.

Padrão distinto
Práticas recomendadas
  • 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.

O que evitar
  • 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.

Sim

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.

Não

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.

Sim

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.

Não

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.

Sim

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.

Não

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.

Toast com Desfazer

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.

Desfazer
Toast de confirmação

Use para confirmar que a ação foi desfeita — exibe por 3 segundos, sem oferecer novo desfazer.

Ex: "Ação desfeita."

Ação desfeita.

Ícones do contexto

ÍconeTokenSignificado
desfazer — reverte a última ação reversível, via toast (5s)