window.addEventListener('DOMContentLoaded', event => { // Activate Bootstrap scrollspy on the main nav element const mainNav = document.body.querySelector('#mainNav'); if (mainNav) { new bootstrap.ScrollSpy(document.body, { target: '#mainNav', offset: 74, }); } // Collapse responsive navbar when toggler is visible const navbarToggler = document.body.querySelector('.navbar-toggler'); const responsiveNavItems = [].slice.call( document.querySelectorAll('#navbarResponsive .nav-link') ); responsiveNavItems.map(function (responsiveNavItem) { responsiveNavItem.addEventListener('click', () => { if (window.getComputedStyle(navbarToggler).display !== 'none') { navbarToggler.click(); } }); }); }); document.addEventListener('DOMContentLoaded', function() { const form = document.getElementById('signupForm'); if (form) { form.addEventListener('submit', async function(event) { event.preventDefault(); const email = document.getElementById('email').value.trim(); const prenom = document.getElementById('prenom').value.trim(); if (!validateEmail(email)) { alert('L\'adresse email n\'est pas valide.'); return; } if (!prenom.match(/^[a-zA-Z]{3,}$/)) { alert('Le nom n\'est pas valide.'); return; } try { const response = await fetch('/api/pre-register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, prenom }) }); if (!response.ok) { throw new Error( "Error with the pre-inscription" ); } document.getElementById('submitSuccessMessage').classList.remove('d-none'); document.getElementById('submitErrorMessage').classList.add('d-none'); } catch (error) { document.getElementById('submitErrorMessage').classList.remove('d-none'); document.getElementById('submitSuccessMessage').classList.add('d-none'); } }); } function validateEmail(email) { const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@(([^<>()[\]\.,;:\s@"]+\.[^<>()[\]\.,;:\s@"]{2,}))$/i; return re.test(email.toLowerCase()); } });