1async function submitContactForm(form) { 2 const url = `${window.NUCLEUS_API}/websites/${window.SITE_ID}/forms/contact`; 3 4 const email = form.querySelector('input[name="email"]'); 5 const phone = form.querySelector('input[name="phone"]'); 6 const firstName = form.querySelector('input[name="first_name"]'); 7 const lastName = form.querySelector('input[name="last_name"]'); 8 const tag = form.querySelector('input[name="tag"]'); 9 const message = form.querySelector('textarea[name="message"]'); 10 11 const payload = { 12 email: email.value, 13 phone: phone.value, 14 first_name: firstName.value, 15 last_name: lastName.value, 16 tag: tag?.value ?? null, 17 message: message.value, 18 }; 19 20 const successEl = form.querySelector('[data-submit-message]'); 21 22 if (successEl) { 23 successEl.style.display = 'none'; 24 } 25 26 const properties = ['email', 'phone', 'first_name', 'last_name', 'message', 'tag']; 27 for (const property of properties) { 28 const errorEl = form.querySelector(`[data-error-${property}]`); 29 30 if (errorEl) { 31 errorEl.style.display = 'none'; 32 errorEl.innerHTML = ''; 33 } 34 } 35 36 try { 37 await window.axios.post(url, payload); 38 form.reset(); 39 successEl.style.display = 'inline'; 40 } catch (error) { 41 const errors = error.response.data.errors ?? null; 42 43 if (errors) { 44 for (const error of Object.entries(errors)) { 45 const property = error[0]; 46 const message = error[1][0]; 47 const errorEl = form.querySelector(`[data-error-${property}]`); 48 if (errorEl) { 49 errorEl.style.display = 'inline'; 50 errorEl.innerHTML = message; 51 } 52 } 53 } 54 } 55} 56 57document.addEventListener('DOMContentLoaded', function () { 58 const forms = document.querySelectorAll('form[data-contact-form]'); 59 forms.forEach(function (form) { 60 form.addEventListener('submit', async function (e) { 61 e.preventDefault(); 62 submitContactForm(form); 63 }); 64 }); 65});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.