const SDSSurvey = () => { const [answers, setAnswers] = React.useState({ item1: null, item2: null, item3: null, item4: null, item5: null, }); const [errors, setErrors] = React.useState({}); const [results, setResults] = React.useState(null); const questions = [ 'I have the feeling that God is distant from me, regardless of my efforts to draw close to him.', 'I have the feeling that God has abandoned me completely.', 'I experience times of “spiritual dryness.', 'I have the feeling that I am "spiritually empty".', 'I have the feeling that my prayers go unanswered.', ]; const answerOptions = [ '', '1 - Strongly disagree', '2 - Disagree', '3 - Neutral', '4 - Agree', '5 - Strongly agree', ]; const handleChange = (event) => { const { name, value } = event.target; setAnswers({ ...answers, [name]: value === '' ? null : parseInt(value) }); }; const handleSubmit = (event) => { event.preventDefault(); let isValid = true; const newErrors = {}; Object.keys(answers).forEach((key) => { if (answers[key] === null) { newErrors[key] = 'This question is required'; isValid = false; } }); setErrors(newErrors); if (isValid) { calculateResults(); } }; const copyToClipboard = () => { if (results) { const textToCopy = `Spiritual Dryness Result=${results.total}`; navigator.clipboard.writeText(textToCopy) .catch(err => { console.error('Failed to copy text: ', err); }); } }; const calculateResults = () => { let totalScore = 0; Object.values(answers).forEach((answer) => { totalScore += answer !== null ? answer : 0; }); setResults({ total: totalScore }); }; return (
{questions.map((question, index) => { const itemName = `item${index + 1}`; return (
{errors[itemName] &&

{errors[itemName]}

}
); })}
{results && (

Results

Spiritual Dryness Score: {results.total}

)}
); }; const root = ReactDOM.createRoot(document.getElementById('root')); root.render();