document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('contact-form');
if (!form) return;
form.addEventListener('submit', async (e) => {
e.preventDefault();
// Basic frontend validation
const name = form.name.value.trim();
const email = form.email.value.trim();
const subject = form.subject.value.trim();
const message = form.message.value.trim();
const recaptchaResponse = form['g-recaptcha-response'].value;
if (!name || !email || !subject || !message) {
alert('Tous les champs sont obligatoires.');
return;
}
if (!recaptchaResponse) {
alert('Veuillez valider le reCAPTCHA.');
return;
}
// Submit via fetch
try {
const response = await fetch('/contact', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name, email, subject, message,
recaptcha_token: recaptchaResponse
})
});
const data = await response.json();
if (data.success) {
alert('Message envoyé avec succès!');
form.reset();
if (typeof grecaptcha !== 'undefined') {
grecaptcha.reset();
}
} else {
alert('Erreur: ' + (data.message || 'Envoi échoué'));
}
} catch (err) {
alert('Erreur réseau: ' + err.message);
}
});
});