// Form section with validation + success state const FormSection = () => { const [data, setData] = React.useState({ nome: "", whatsapp: "", cidade: "", perfil: "", situacao: "", prazo: "", }); const [errors, setErrors] = React.useState({}); const [sent, setSent] = React.useState(false); const [sending, setSending] = React.useState(false); const update = (k, v) => { setData(d => ({ ...d, [k]: v })); if (errors[k]) setErrors(e => { const n = { ...e }; delete n[k]; return n; }); }; // whatsapp mask const maskPhone = (v) => { v = v.replace(/\D/g, "").slice(0, 11); if (v.length <= 2) return v; if (v.length <= 7) return `(${v.slice(0,2)}) ${v.slice(2)}`; return `(${v.slice(0,2)}) ${v.slice(2,7)}-${v.slice(7)}`; }; const SHEET_URL = "https://script.google.com/macros/s/AKfycbxNdMfZpABDDCce-NGK9nli5T6xMHVqylCX-l5HhlW4ycTT7WYZc89yEVc508iqBo1b6g/exec"; const submit = async (e) => { e.preventDefault(); const errs = {}; if (!data.nome.trim()) errs.nome = true; if (!data.whatsapp.replace(/\D/g, "") || data.whatsapp.replace(/\D/g, "").length < 10) errs.whatsapp = true; if (!data.cidade.trim()) errs.cidade = true; if (!data.perfil) errs.perfil = true; if (!data.situacao) errs.situacao = true; if (!data.prazo) errs.prazo = true; setErrors(errs); if (Object.keys(errs).length > 0) return; setSending(true); await new Promise((resolve) => { const cbName = "_sheetCb" + Date.now(); let done = false; const finish = () => { if (done) return; done = true; delete window[cbName]; resolve(); }; window[cbName] = finish; const s = document.createElement("script"); s.src = `${SHEET_URL}?${new URLSearchParams({ ...data, callback: cbName })}`; s.onload = finish; s.onerror = finish; document.head.appendChild(s); setTimeout(finish, 8000); }); setSending(false); setSent(true); }; if (sent) { return (
A Aline entrará em contato em até 24 horas pelo WhatsApp informado.