'use client'; import { useState } from 'react'; import { FaqCategory } from './FaqCard'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Plus, Trash, Save, Settings } from 'lucide-react'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { useRouter } from 'next/navigation'; interface FaqManagerProps { initialData: FaqCategory[]; onSave: (data: FaqCategory[]) => Promise; lng: string; } export function FaqManager({ initialData, onSave, lng }: FaqManagerProps) { const [categories, setCategories] = useState(initialData); const [activeTab, setActiveTab] = useState(categories[0]?.label || ''); const [isSettingsView, setIsSettingsView] = useState(false); const [showSaveDialog, setShowSaveDialog] = useState(false); const router = useRouter(); const addCategory = () => { const newCategory = { label: 'New Category', items: [] }; setCategories([...categories, newCategory]); setActiveTab(newCategory.label); }; const addItem = (categoryIndex: number) => { const newCategories = [...categories]; newCategories[categoryIndex].items.push({ title: 'New FAQ Item', content: ['Enter content here'] }); setCategories(newCategories); }; const handleSave = async () => { await onSave(categories); setShowSaveDialog(false); router.push(`/${lng}/evcp/faq`); }; const updateCategory = (index: number, label: string) => { const newCategories = [...categories]; newCategories[index] = { ...newCategories[index], label }; setCategories(newCategories); if (activeTab === categories[index].label) { setActiveTab(label); } }; const updateItem = (categoryIndex: number, itemIndex: number, field: 'title' | 'content', value: string | string[]) => { const newCategories = [...categories]; if (field === 'content') { newCategories[categoryIndex].items[itemIndex][field] = (value as string).split('\n'); } else { newCategories[categoryIndex].items[itemIndex][field] = value as string; } setCategories(newCategories); }; const removeCategory = (index: number) => { const newCategories = categories.filter((_, i) => i !== index); setCategories(newCategories); setActiveTab(newCategories[0]?.label || ''); }; const removeItem = (categoryIndex: number, itemIndex: number) => { const newCategories = [...categories]; newCategories[categoryIndex].items = newCategories[categoryIndex].items.filter((_, i) => i !== itemIndex); setCategories(newCategories); }; return (
{isSettingsView ? (
{categories.map((category, index) => (
updateCategory(index, e.target.value)} className="flex-1" placeholder="Category Name" />
))}
) : ( {categories.map((category) => ( {category.label} ))} {categories.map((category, categoryIndex) => ( {category.items.map((item, itemIndex) => (
updateItem(categoryIndex, itemIndex, 'title', e.target.value)} className="flex-1 mr-2" placeholder="Question" />