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})); }} />