From 3d51dadd91f9701d7a813e556d5ce75872959eef Mon Sep 17 00:00:00 2001 From: "Rodrigo B. de Sousa Martins" Date: Mon, 26 May 2025 13:27:24 -0300 Subject: [PATCH] =?UTF-8?q?frontend:=20possibilita=20edi=C3=A7=C3=A3o=20ma?= =?UTF-8?q?nual=20do=20endere=C3=A7o=20do=20cliente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rodrigo B. de Sousa Martins --- src/components/clientes/ClienteModal.tsx | 35 ++++++++++++++++++------ 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/components/clientes/ClienteModal.tsx b/src/components/clientes/ClienteModal.tsx index e4c0c7e..b91144f 100644 --- a/src/components/clientes/ClienteModal.tsx +++ b/src/components/clientes/ClienteModal.tsx @@ -230,7 +230,8 @@ export const ClienteModal: React.FC = ({ bairro, cidade, estado, - preenchido: true, + // Permitir edição manual se logradouro ou bairro vierem vazios + preenchido: !!(endereco || bairro), }); // Focar no próximo campo apenas se o usuário não estiver digitando ativamente @@ -251,6 +252,18 @@ export const ClienteModal: React.FC = ({ }, 100); } } else { + // Se CEP não encontrado, limpar campos e permitir edição manual + setEnderecoState({ + endereco: "", + bairro: "", + cidade: "", + estado: "", + preenchido: false, + }); + setValue("endereco", ""); + setValue("bairro", ""); + setValue("cidade", ""); + setValue("estado", ""); console.error("CEP não encontrado"); alert("CEP não encontrado. Por favor, verifique o CEP informado."); } @@ -622,9 +635,11 @@ export const ClienteModal: React.FC = ({ required: "Endereço é obrigatório", })} error={errors.endereco?.message} - value={enderecoState.preenchido ? enderecoState.endereco : undefined} + value={typeof watch("endereco") === "string" ? watch("endereco") : enderecoState.endereco} + // Permitir edição manual se não houver preenchimento automático OU se logradouro veio vazio + disabled={enderecoState.preenchido && !!enderecoState.endereco} onChange={(e) => { - setValue("endereco", e.target.value); + setValue("endereco", e.target.value, { shouldValidate: true }); setEnderecoState(prev => ({...prev, endereco: e.target.value})); }} /> @@ -645,9 +660,11 @@ export const ClienteModal: React.FC = ({ required: "Bairro é obrigatório", })} error={errors.bairro?.message} - value={enderecoState.preenchido ? enderecoState.bairro : undefined} + value={typeof watch("bairro") === "string" ? watch("bairro") : enderecoState.bairro} + // Permitir edição manual se não houver preenchimento automático OU se bairro veio vazio + disabled={enderecoState.preenchido && !!enderecoState.bairro} onChange={(e) => { - setValue("bairro", e.target.value); + setValue("bairro", e.target.value, { shouldValidate: true }); setEnderecoState(prev => ({...prev, bairro: e.target.value})); }} /> @@ -657,9 +674,9 @@ export const ClienteModal: React.FC = ({ required: "Cidade é obrigatória", })} error={errors.cidade?.message} - value={enderecoState.preenchido ? enderecoState.cidade : undefined} + value={typeof watch("cidade") === "string" ? watch("cidade") : enderecoState.cidade} onChange={(e) => { - setValue("cidade", e.target.value); + setValue("cidade", e.target.value, { shouldValidate: true }); setEnderecoState(prev => ({...prev, cidade: e.target.value})); }} /> @@ -670,9 +687,9 @@ export const ClienteModal: React.FC = ({ })} options={estadosOptions} error={errors.estado?.message} - value={enderecoState.preenchido ? enderecoState.estado : undefined} + value={typeof watch("estado") === "string" ? watch("estado") : enderecoState.estado} onChange={(e) => { - setValue("estado", e.target.value); + setValue("estado", e.target.value, { shouldValidate: true }); setEnderecoState(prev => ({...prev, estado: e.target.value})); }} />