PageSourceSearch

https://scomserp.com/assets/FeedbackForm-DajcaZPe.js

js scomserp.com collected 2026-10-02 01:43:01 UTC 8,173 bytes, 1 lines download raw bytes

1import{j as e}from"./animation-Bn9wGXQw.js";import{h as U,u as _,a as t}from"./react-core-DThFArNc.js";import{M as q,C as G}from"./productModules-D2KV6bdu.js";import{y as B,b2 as H}from"./icons-CKTZ8eqL.js";const z=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],J=["Early Morning (6:00 AM – 8:00 AM)","Morning (8:00 AM – 10:00 AM)","Late Morning (10:00 AM – 12:00 PM)","Afternoon (12:00 PM – 2:00 PM)","Late Afternoon (2:00 PM – 4:00 PM)","Early Evening (4:00 PM – 6:00 PM)","Evening (6:00 PM – 8:00 PM)"],V=({value:d,onChange:b})=>{const[l,f]=t.useState(0);return e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(c=>e.jsx("button",{type:"button",onClick:()=>b(c),onMouseEnter:()=>f(c),onMouseLeave:()=>f(0),className:"p-0.5 transition-transform hover:scale-110 focus:outline-none","aria-label":`${c} star${c>1?"s":""}`,children:e.jsx(H,{className:`w-8 h-8 transition-colors ${(l||d)>=c?"fill-yellow-400 text-yellow-400":"text-gray-300"}`})},c))})},ee=()=>{const{regId:d}=U(),b=_(),[l,f]=t.useState(null),[c,o]=t.useState("loading"),[h,v]=t.useState(""),[y,k]=t.useState(""),[m,A]=t.useState(0),[p,F]=t.useState([]),[x,D]=t.useState(""),[g,L]=t.useState(""),[S,O]=t.useState(""),[M,I]=t.useState(""),[P,R]=t.useState(null),[C,W]=t.useState(""),[i,T]=t.useState(!1),[w,u]=t.useState("");t.useEffect(()=>{if(!d){o("not-found");return}let s=!0;return fetch(`/api/events/feedback/prefill/${d}`).then(async r=>{if(!s)return;if(r.status===404){o("not-found");return}const a=await r.json();f(a),v(a.fullName),k(a.email),o("ready")}).catch(()=>{s&&o("not-found")}),()=>{s=!1}},[d]);const E=s=>{F(r=>r.includes(s)?r.filter(a=>a!==s):[...r,s])},Y=async s=>{if(s.preventDefault(),u(""),!m){u("Please give a rating.");return}if(!h.trim()){u("Name is required.");return}T(!0);try{const r=await fetch(`/api/events/${l.programId}/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({regId:l?.regId||null,fullName:h.trim(),email:y.trim(),rating:m,liked:S.trim(),improved:M.trim(),productModules:p,preferredTime:x?[x]:[],preferredDay:g?[g]:[],recommend:P,comments:C.trim()})});if(!r.ok){const a=await r.json().catch(()=>({}));u(a.error||"Submission failed. Please try again.");return}o("submitted")}catch{u("Network error. Please try again.")}finally{T(!1)}};return c==="loading"?e.jsx("div",{className:"feedback-page",children:e.jsx("div",{className:"feedback-status",children:"Loading…"})}):c==="not-found"?e.jsx("div",{className:"feedback-page",children:e.jsx("div",{className:"feedback-status",children:"Feedback link not found or expired."})}):c==="submitted"?e.jsx("div",{className:"feedback-page",children:e.jsxs("div",{className:"feedback-card feedback-success",children:[e.jsx("div",{className:"feedback-success-icon",children:e.jsx(B,{className:"w-10 h-10 text-green-500"})}),e.jsx("h2",{className:"feedback-success-title",children:"Thank you for your feedback!"}),e.jsx("p",{className:"feedback-success-sub",children:"Your response has been recorded. We'll use it to improve future training programmes."}),e.jsx("button",{onClick:()=>b("/"),className:"mt-6 px-6 py-2.5 bg-green-600 text-white rounded-[var(--btn-border-radius)] font-medium hover:bg-green-700 transition-colors",children:"Go to Home"})]})}):e.jsx("div",{className:"feedback-page",children:e.jsxs("div",{className:"feedback-card",children:[e.jsxs("div",{className:"feedback-header",children:[l?.logo&&e.jsx("img",{src:l.logo,alt:l.org,className:"feedback-logo"}),e.jsxs("div",{children:[e.jsx("p",{className:"feedback-org",children:l?.org}),e.jsx("h1",{className:"feedback-title",children:"Share Your Feedback"}),e.jsx("p",{className:"feedback-subtitle",children:l?.programTitle})]})]}),e.jsxs("form",{onSubmit:Y,className:"feedback-form",children:[e.jsxs("div",{className:"fb-row",children:[e.jsxs("div",{className:"fb-field",children:[e.jsxs("label",{className:"fb-label",children:["Full Name ",e.jsx("span",{className:"fb-req",children:"*"})]}),e.jsx("input",{className:"fb-input",value:h,onChange:s=>v(s.target.value),placeholder:"Your name",disabled:i})]}),e.jsxs("div",{className:"fb-field",children:[e.jsx("label",{className:"fb-label",children:"Email"}),e.jsx("input",{className:"fb-input",type:"email",value:y,onChange:s=>k(s.target.value),placeholder:"[email protected]",disabled:i})]})]}),e.jsxs("div",{className:"fb-field",children:[e.jsxs("label",{className:"fb-label",children:["Overall Rating ",e.jsx("span",{className:"fb-req",children:"*"})]}),e.jsx(V,{value:m,onChange:A}),m>0&&e.jsx("span",{className:"fb-rating-label",children:["","Poor","Fair","Good","Very Good","Excellent"][m]})]}),e.jsxs("div",{className:"fb-field",children:[e.jsx("label",{className:"fb-label",children:"What did you like most?"}),e.jsx("textarea",{className:"fb-textarea",rows:3,value:S,onChange:s=>O(s.target.value),placeholder:"Share what you found most valuable…",disabled:i})]}),e.jsxs("div",{className:"fb-field",children:[e.jsx("label",{className:"fb-label",children:"What c
1ould be improved?"}),e.jsx("textarea",{className:"fb-textarea",rows:3,value:M,onChange:s=>I(s.target.value),placeholder:"Any areas for improvement…",disabled:i})]}),(()=>{const s=new Set(l?.selectedModules??[]),r=s.size>0,a=l?.productType?q[l.productType]??[]:[],$=new Set(a),j=r?a.filter(n=>s.has(n)):a,N=G.filter(n=>!$.has(n));return j.length===0&&N.length===0?null:e.jsxs("div",{className:"fb-field",children:[e.jsx("label",{className:"fb-label",children:"Which modules would you like further training on?"}),e.jsx("p",{className:"fb-hint",children:"Select all that apply — helps us plan focused training sessions"}),j.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"fb-section-label",children:l.productType}),e.jsx("div",{className:"fb-topics-grid",children:j.map(n=>e.jsxs("label",{className:"fb-topic",children:[e.jsx("input",{type:"checkbox",checked:p.includes(n),onChange:()=>E(n),disabled:i,className:"fb-checkbox"}),e.jsx("span",{children:n})]},n))})]}),N.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"fb-section-label",style:{marginTop:"0.75rem"},children:"Common"}),e.jsx("div",{className:"fb-topics-grid",children:N.map(n=>e.jsxs("label",{className:"fb-topic",children:[e.jsx("input",{type:"checkbox",checked:p.includes(n),onChange:()=>E(n),disabled:i,className:"fb-checkbox"}),e.jsx("span",{children:n})]},n))})]})]})})(),(()=>{const s=(l?.preferredDays??[]).length>0?l.preferredDays:z,r=(l?.preferredTimes??[]).length>0?l.preferredTimes:J;return e.jsxs("div",{className:"fb-row",children:[e.jsxs("div",{className:"fb-field",children:[e.jsx("label",{className:"fb-label",children:"Preferred day for next training?"}),e.jsxs("select",{className:"fb-select",value:g,onChange:a=>L(a.target.value),disabled:i,children:[e.jsx("option",{value:"",children:"— Select a day —"}),s.map(a=>e.jsx("option",{value:a,children:a},a))]})]}),e.jsxs("div",{className:"fb-field",children:[e.jsx("label",{className:"fb-label",children:"Preferred time for next training?"}),e.jsxs("select",{className:"fb-select",value:x,onChange:a=>D(a.target.value),disabled:i,children:[e.jsx("option",{value:"",children:"— Select a time —"}),r.map(a=>e.jsx("option",{value:a,children:a},a))]})]})]})})(),e.jsxs("div",{className:"fb-field",children:[e.jsx("label",{className:"fb-label",children:"Would you recommend this training to others?"}),e.jsx("div",{className:"fb-recommend",children:[!0,!1].map(s=>e.jsx("button",{type:"button",onClick:()=>R(s),disabled:i,className:`fb-recommend-btn ${P===s?"fb-recommend-active":""}`,children:s?"👍  Yes, definitely":"👎  Not really"},String(s)))})]}),e.jsxs("div",{className:"fb-field",children:[e.jsxs("label",{className:"fb-label",children:["Any other comments? ",e.jsx("span",{className:"fb-optional",children:"(optional)"})]}),e.jsx("textarea",{className:"fb-textarea",rows:3,value:C,onChange:s=>W(s.target.value),placeholder:"Anything else you'd like to share…",disabled:i})]}),w&&e.jsxs("p",{className:"fb-error",children:["⚠ ",w]}),e.jsx("button",{type:"submit",disabled:i,className:"fb-submit",children:i?"Submitting…":"Submit Feedback"})]})]})})};export{ee as default};

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.