Tendei utilizar uma unica função para fazer essa validação porem ela não esta excecutando corretamente, pois ainda é possivel cadastrar com uma data menor que 18 anos
const dataNascimento = document.querySelector('[data-nascimento]');
dataNascimento.addEventListener('blur', (evento)=> {
validacao(evento.target)
})
const validacao = (input)=> {
const diaAtual = new Date();
const dataRecebida = new Date(input.value);
const dataMais18 = new Date(dataRecebida.getFullYear() + 18, dataRecebida.getMonth(), dataRecebida.getDate());
let mensagem = '';
if(!dataMais18 <= diaAtual){
mensagem = 'Você precisa ter mais que 18 anos para se cadastrar'
}
input.setCustomValidity(mensagem)
}