Olá, Thaynara! Tudo bem contigo?
Vou tentar te ajudar a entender melhor sobre o uso do método setCustomValidity() e o que é o customError.
O método setCustomValidity() é utilizado para definir uma mensagem de erro personalizada para um campo de formulário. Ele recebe como parâmetro a mensagem que você deseja exibir. No seu exemplo, você está utilizando esse método para definir mensagens de erro personalizadas para os campos de CPF e data de nascimento.
Por exemplo, no arquivo valida-idade.js, você tem o seguinte trecho de código:
if (!validaIdade(dataNascimento)) {
campo.setCustomValidity('O usuário não é maior de idade')
}
Nesse caso, se a função validaIdade() retornar false, ou seja, se a pessoa não for maior de idade, o método setCustomValidity() é chamado e define a mensagem de erro como "O usuário não é maior de idade".
Da mesma forma, no arquivo valida-cpf.js, você tem o seguinte trecho de código:
if (validaNumerosRepetidos(cpf) || validaPrimeiroDigito(cpf) || validaSegundoDigito(cpf)) {
campo.setCustomValidity('Esse CPF não é válido.')
}
Nesse caso, se alguma das funções validaNumerosRepetidos(), validaPrimeiroDigito() ou validaSegundoDigito() retornar true, ou seja, se o CPF não for válido, o método setCustomValidity() é chamado e define a mensagem de erro como "Esse CPF não é válido".
O customError é uma propriedade que indica se um campo de formulário possui um erro personalizado. Ele retorna true se o campo tiver uma mensagem de erro personalizada definida pelo método setCustomValidity(), e false caso contrário.
No seu código, você utiliza o customError para verificar se um campo possui um erro personalizado e exibir a mensagem de erro na tela. Por exemplo, no trecho de código que você mostrou:
const mensagemErro = campo.parentNode.querySelector('.mensagem-erro')
const validadorDeInput = campo.checkValidity()
if (!validadorDeInput) {
mensagemErro.textContent = mensagem;
} else {
mensagemErro.textContent = " ";
}
Você verifica se o campo não é válido utilizando o método checkValidity(). Se o campo não for válido, ou seja, se tiver algum erro, você exibe a mensagem de erro na tela, que está armazenada na variável mensagem. Caso contrário, você deixa o campo sem mensagem de erro.
Espero ter esclarecido suas dúvidas! Se tiver mais alguma pergunta, é só me dizer.
Espero ter ajudado e bons estudos!