Confirm Delete Button
Botão de exclusão com confirmação no próprio lugar, sem abrir diálogo. O primeiro clique na lixeira mostra "Confirmar" e um botão de cancelar (X). "Confirmar" executa a exclusão, e cancelar volta ao estado inicial.
Use em listas e menus, onde abrir um AlertDialog seria pesado demais para a ação. Para exclusões que não podem ser desfeitas e têm muito impacto, prefira o AlertDialog.
Exemplos
Padrão
onConfirm pode devolver uma Promise: enquanto ela não termina, a lixeira mostra o carregamento e os botões ficam bloqueados. Se ela resolver, o componente volta ao estado inicial. Se rejeitar, a confirmação continua aberta para o usuário tentar de novo ou cancelar, e mostrar o erro fica a cargo de quem usa.
- Resumo de ICC
- Vacinas do 1º ano
- Critérios de sepse
Tamanhos
Controlado
Use confirming e onConfirmingChange quando o pai precisa saber se a confirmação está aberta, por exemplo para garantir que só uma linha fique em confirmação por vez. É assim que o TagPicker usa o componente.
const [pendingId, setPendingId] = useState(null);
<ConfirmDeleteButton
label={`Excluir ${item.name}`}
confirming={pendingId === item.id}
onConfirmingChange={(confirming) => setPendingId(confirming ? item.id : null)}
onConfirm={() => deleteItem(item.id)}
/>Acessibilidade
- A lixeira e o "Confirmar" são o mesmo botão, então o foco continua nele quando a confirmação abre.
- Cancelar devolve o foco para a lixeira.
Esccancela a confirmação.- Passe um
labelque diga o que será excluído ("Excluir tag Pediatria"), já que a lixeira só tem ícone.
API
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
| onConfirm | () => void | Promise<void> | - | Executa a exclusão depois do clique em "Confirmar". |
| label | string | "Excluir" | Nome acessível da lixeira. |
| confirmLabel | string | "Confirmar" | Texto visível do botão de confirmação. |
| confirmAriaLabel | string | - | Nome acessível do botão de confirmação. Sem valor, usa o texto visível. |
| cancelLabel | string | "Cancelar exclusão" | Nome acessível do botão de cancelar. |
| confirming / defaultConfirming / onConfirmingChange | boolean / boolean / (confirming) => void | - / false / - | Controle do estado de confirmação. |
| size | "sm" | "md" | "sm" | Tamanho dos botões: "sm" ou "md". |
| disabled | boolean | false | Desabilita a lixeira. |
| ...props | Props nativas de div | - | Aplicadas ao container dos botões. |