import React, { useEffect, useMemo, useRef } from "react"; import { useDispatch, useSelector } from "react-redux"; import { updateEducationalDetails } from "../redux/registrationFormSlice"; import { TextField, Button, Grid, FormControl, InputLabel, Select, MenuItem, } from "@mui/material"; import { useEducationMasters, useEducationList } from "../hooks/useMasters"; const EducationalDetailsForm = ({ onSubmitStep, onSkipStep, errors, onFieldChange, }) => { const dispatch = useDispatch(); const data = useSelector((state) => state.registerform.educationalDetails); const inputRef = useRef(null); const requiredMark = *; const { data: educationMasters, isLoading: isEducationMastersLoading } = useEducationMasters(); const educationListQuery = useEducationList(data.fieldOfStudy); const studyFieldOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.studyFields || raw.study_fields || raw.fieldOfStudy || []; }, [educationMasters]); const qualificationOptions = useMemo(() => { const raw = educationListQuery.data; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.education || raw.data || []; }, [educationListQuery.data]); const occupationOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.occupation || raw.occupations || []; }, [educationMasters]); const employeeTypeOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.employeeType || raw.employee_type || []; }, [educationMasters]); const annualIncomeOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.annualIncome || raw.annual_income || []; }, [educationMasters]); const workLocationOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return []; return raw.workLocation || raw.work_location || raw.workLocations || []; }, [educationMasters]); const getOptionLabel = (item, fallback = "") => { if (!item) return fallback; if (typeof item === "string") return item; return ( item.study_field_name || item.education_name || item.occupation_name || item.employee_type_name || item.annual_income_name || item.work_location_name || item.name || fallback ); }; useEffect(() => { inputRef.current?.focus(); }, []); const handleChange = (field, value) => { const updates = { [field]: value }; const fieldsToClear = [field]; if (field === "fieldOfStudy") { updates.qualification = ""; fieldsToClear.push("qualification"); } dispatch(updateEducationalDetails(updates)); if (onFieldChange) onFieldChange(fieldsToClear); }; const handleSubmit = () => { console.log("Submitting educational details:", data); onSubmitStep(); }; return ( <>