From 7b3979ad8e0380fe05c488d6e93fbde9f490a74f Mon Sep 17 00:00:00 2001 From: Guilherme Bano Date: Fri, 20 Feb 2026 09:59:16 -0300 Subject: [PATCH] =?UTF-8?q?Feito=20uma=20corre=C3=A7=C3=A3o=20de=20bug=20o?= =?UTF-8?q?nde=20o=20di=C3=A1logo=20principal=20de=20nova=20conta=20fechav?= =?UTF-8?q?a=20inesperadamente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 ++++++ components/cartoes/card-dialog.tsx | 27 ++++++++++++++++++++++++--- components/contas/account-dialog.tsx | 27 ++++++++++++++++++++++++--- components/logo-picker.tsx | 8 +++++++- package.json | 2 +- 5 files changed, 62 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6604dc..b450c0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ Todas as mudanças notáveis deste projeto serão documentadas neste arquivo. O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/), e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR/). +## [1.6.2] - 2026-02-19 + +### Corrigido + +- Bug no mobile onde, ao selecionar um logo no diálogo de criação de conta/cartão, o diálogo principal fechava inesperadamente: adicionado `stopPropagation` nos eventos de click/touch dos botões de logo e delay com `requestAnimationFrame` antes de fechar o seletor de logo + ## [1.6.1] - 2026-02-18 ### Adicionado diff --git a/components/cartoes/card-dialog.tsx b/components/cartoes/card-dialog.tsx index 87d71d3..4ddcbfc 100644 --- a/components/cartoes/card-dialog.tsx +++ b/components/cartoes/card-dialog.tsx @@ -126,7 +126,10 @@ export function CardDialog({ currentName: formState.name, onUpdate: (updates) => { updateFields(updates); - setLogoDialogOpen(false); + // Delay closing to avoid race condition on mobile + requestAnimationFrame(() => { + setLogoDialogOpen(false); + }); }, }); @@ -188,11 +191,29 @@ export function CardDialog({ : "Atualize as informações do cartão selecionado."; const submitLabel = mode === "create" ? "Salvar cartão" : "Atualizar cartão"; + const handleMainDialogOpenChange = useCallback( + (open: boolean) => { + if (!open && logoDialogOpen) { + return; + } + setDialogOpen(open); + }, + [logoDialogOpen, setDialogOpen], + ); + return ( <> - + {trigger ? {trigger} : null} - + { + if (logoDialogOpen) e.preventDefault(); + }} + onInteractOutside={(e) => { + if (logoDialogOpen) e.preventDefault(); + }} + > {title} {description} diff --git a/components/contas/account-dialog.tsx b/components/contas/account-dialog.tsx index f9747f2..81fb443 100644 --- a/components/contas/account-dialog.tsx +++ b/components/contas/account-dialog.tsx @@ -152,7 +152,10 @@ export function AccountDialog({ currentName: formState.name, onUpdate: (updates) => { updateFields(updates); - setLogoDialogOpen(false); + // Delay closing to avoid race condition on mobile + requestAnimationFrame(() => { + setLogoDialogOpen(false); + }); }, }); @@ -205,11 +208,29 @@ export function AccountDialog({ : "Atualize as informações da conta selecionada."; const submitLabel = mode === "create" ? "Salvar conta" : "Atualizar conta"; + const handleMainDialogOpenChange = useCallback( + (open: boolean) => { + if (!open && logoDialogOpen) { + return; + } + setDialogOpen(open); + }, + [logoDialogOpen, setDialogOpen], + ); + return ( <> - + {trigger ? {trigger} : null} - + { + if (logoDialogOpen) e.preventDefault(); + }} + onInteractOutside={(e) => { + if (logoDialogOpen) e.preventDefault(); + }} + > {title} {description} diff --git a/components/logo-picker.tsx b/components/logo-picker.tsx index 44d97e5..786fbe0 100644 --- a/components/logo-picker.tsx +++ b/components/logo-picker.tsx @@ -158,7 +158,13 @@ export function LogoPickerDialog({