import React, { useState, useRef, useEffect } from 'react' import { Popconfirm, message } from 'antd' import { DefaultModal } from '../../Components/Modal/DefaultModal' import "../Styles/FaqSectionForm.scss" const FaqSectionForm = () => { const [question, setQuestion] = useState('') const [answer, setAnswer] = useState('') const [faqs, setFaqs] = useState([]) const [editingId, setEditingId] = useState(null) const [isModalOpen, setIsModalOpen] = useState(false) const [questionError, setQuestionError] = useState('') const [answerError, setAnswerError] = useState('') const questionInputRef = useRef(null) // UUID generator fallback for browser compatibility const generateUUID = () => { if (typeof crypto !== 'undefined' && crypto.randomUUID) { return crypto.randomUUID() } return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { const r = Math.random() * 16 | 0 const v = c === 'x' ? r : (r & 0x3 | 0x8) return v.toString(16) }) } const openModal = () => { setIsModalOpen(true) } const closeModal = () => { setIsModalOpen(false) handleClear() } const handleSave = () => { let hasError = false if (!question.trim()) { setQuestionError('Question is required') hasError = true } else { setQuestionError('') } if (!answer.trim()) { setAnswerError('Answer is required') hasError = true } else { setAnswerError('') } if (hasError) { message.error('Please fix the highlighted fields') return } const newFaq = { id: editingId || generateUUID(), question: question.trim(), answer: answer.trim(), isActive: true, createdAt: new Date().toLocaleDateString('en-US') } if (editingId) { setFaqs(prev => prev.map(faq => faq.id === editingId ? newFaq : faq)) setEditingId(null) message.success('FAQ updated!') } else { setFaqs(prev => [...prev, newFaq]) message.success('FAQ added!') } closeModal() } const handleClear = () => { setQuestion('') setAnswer('') setEditingId(null) setQuestionError('') setAnswerError('') } const handleEdit = (faq) => { setQuestion(faq.question) setAnswer(faq.answer) setEditingId(faq.id) openModal() } useEffect(() => { if (editingId && questionInputRef.current) { questionInputRef.current.focus() } }, [editingId]) const handleDelete = (id) => { setFaqs(prev => prev.filter(faq => faq.id !== id)) message.success('FAQ deleted') } const handleToggleStatus = (id) => { setFaqs(prev => prev.map(faq => faq.id === id ? { ...faq, isActive: !faq.isActive } : faq )) } return (
Manage and organize your frequently asked questions.
Answer: {faq.answer}
Created: {faq.createdAt}
Status: {faq.isActive ? 'Active' : 'Inactive'}
Get started by creating your first FAQ