// Layershop.eu — Contact page function ContactPage() { const Nav = window.Nav; const Footer = window.Footer; const LayerStripes = window.LayerStripes; const CookieBanner = window.CookieBanner; const [form, setForm] = React.useState({ name: "", email: "", msg: "", company: "", notRobot: false }); const [errors, setErrors] = React.useState({}); const [sent, setSent] = React.useState(false); const [sending, setSending] = React.useState(false); const [serverError, setServerError] = React.useState(""); const formTsRef = React.useRef(Date.now()); const update = (k) => (e) => { const val = e.target.type === 'checkbox' ? e.target.checked : e.target.value; setForm(f => ({ ...f, [k]: val })); setErrors(err => ({ ...err, [k]: undefined })); }; const validate = () => { const e = {}; if (!form.name.trim()) e.name = "Vul je naam in."; if (!form.email.trim()) e.email = "Vul je e-mailadres in."; else if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(form.email)) e.email = "Geen geldig e-mailadres."; if (!form.msg.trim()) e.msg = "Schrijf een bericht."; if (!form.notRobot) e.notRobot = "Bevestig dat je geen robot bent."; if (form.company) e.company = "Spam gedetecteerd."; return e; }; const onSubmit = async (ev) => { ev.preventDefault(); setServerError(""); const e = validate(); setErrors(e); if (Object.keys(e).length > 0) return; setSending(true); try { const fd = new FormData(); fd.append("name", form.name); fd.append("companyField", ""); fd.append("email", form.email); fd.append("msg", form.msg); fd.append("company", form.company); if (form.notRobot) fd.append("notRobot", "on"); fd.append("form_ts", String(formTsRef.current)); const res = await fetch("send.php", { method: "POST", body: fd }); let data = null; try { data = await res.json(); } catch (_) {} if (res.ok && data && data.ok) { setSent(true); } else { setServerError((data && data.msg) ? data.msg : "Verzenden mislukt. Probeer opnieuw."); } } catch (err) { setServerError("Verbinding mislukt. Probeer het later opnieuw."); } finally { setSending(false); } }; return (
Heb je een vraag, wil je de mogelijkheden bespreken of even sparren over een idee? Laat hier je bericht achter.
We reageren doorgaans binnen één werkdag.
Berichten worden doorgaans binnen één werkdag beantwoord.
Noord-Brabant, NL
Kamer van Koophandel 89199073