import Combobox from '@/components/combobox'; import InputError from '@/components/input-error'; import LoadingButton from '@/components/loading-button'; import { Accordion, AccordionContent, AccordionItem } from '@/components/ui/accordion'; import { Card } from '@/components/ui/card'; import { Checkbox } from '@/components/ui/checkbox'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Textarea } from '@/components/ui/textarea'; import courseDurations from '@/data/course-durations'; import courseLanguages from '@/data/course-languages'; import DashboardLayout from '@/layouts/dashboard/layout'; import { onHandleChange } from '@/lib/inertia'; import { SharedData } from '@/types/global'; import { useForm, usePage } from '@inertiajs/react'; import { ReactNode, useMemo } from 'react'; import { Editor } from 'richtor'; import 'richtor/styles'; interface Props extends SharedData { labels: string[]; prices: string[]; expiries: string[]; categories: CourseCategory[]; instructors: Instructor[]; } const Index = (props: Props) => { const { props: pageProps } = usePage(); const { translate } = pageProps; const { input, button, common } = translate; const user = props.auth.user; const { labels, prices, expiries, categories, instructors, system } = props; const { data, setData, post, errors, processing } = useForm({ title: '', short_description: '', description: '', status: 'draft', level: '', language: '', pricing_type: 'paid', price: '', discount: false as boolean, discount_price: '', expiry_type: 'lifetime', expiry_duration: '', drip_content: false as boolean, thumbnail: null, instructor_id: user.role === 'admin' && system.sub_type === 'collaborative' ? '' : user.instructor_id, course_category_id: '', course_category_child_id: '', }); // Handle form submission const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); post(route('courses.store')); }; const transformedCategories = useMemo(() => { return categories.flatMap((category) => { // Parent categories const categoryItem = { label: category.title, value: category.title, id: category.id, child_id: '', }; // Child categories const childItems = category.category_children?.map((child) => ({ label: `--${child.title}`, value: child.title, id: child.course_category_id, child_id: child.id, })) || []; return [categoryItem, ...childItems]; // Combine parent + children }); }, [categories]); const transformedInstructors = instructors.map((instructor) => ({ label: instructor.user.name, value: instructor.id as string, })); return (
{/* Left Column */}
onHandleChange(e, setData)} placeholder={input.title_placeholder} />