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 (
{/* Header Section */}
{/*
❓
*/}

FAQ Management

Manage and organize your frequently asked questions.

{/* Tab Navigation */}
{/* Content Area */} {faqs.length > 0 ? (
{faqs.map((faq, index) => (

{faq.question}

handleDelete(faq.id)} okText="Yes" cancelText="No" >

Answer: {faq.answer}

Created: {faq.createdAt}

Status: {faq.isActive ? 'Active' : 'Inactive'}

))}
) : (
❓

No FAQs Found

Get started by creating your first FAQ

)} {/* Modal */}
{ setQuestion(e.target.value) if (questionError) setQuestionError('') }} placeholder='Enter FAQ question' className={questionError ? 'error' : ''} autoFocus /> {questionError && {questionError}}