frontend: possibilita edição manual do endereço do cliente

Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo@martinsevieira.adv.br>
This commit is contained in:
Rodrigo B. de Sousa Martins committed 2025-05-26 13:27:24 -03:00
1 parent 59ea762227
commit 3d51dadd91
1 file changed
+26 -9
+26 -9
View File
@@ -230,7 +230,8 @@ export const ClienteModal: React.FC<ClienteModalProps> = ({
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<ClienteModalProps> = ({
}, 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<ClienteModalProps> = ({
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<ClienteModalProps> = ({
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<ClienteModalProps> = ({
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<ClienteModalProps> = ({
})}
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}));
}}
/>