dasdasd
This commit is contained in:
@@ -10,13 +10,10 @@ import {
|
||||
useMediaQuery,
|
||||
} from "@mui/material";
|
||||
import CheckCircleIcon from "@mui/icons-material/CheckCircle";
|
||||
import CenterRegistrationForm from "./forms/register-center/RegistrationCenterForm";
|
||||
import IdentityForm from "./forms/IdentityForm";
|
||||
import IdentityForm from "./forms/identity/IdentityForm";
|
||||
import PersonalInfoForm from "./forms/PersonalInfoForm";
|
||||
import PhysicalInfoForm from "./forms/PhysicalInfoForm";
|
||||
import EducationForm from "./forms/EducationForm";
|
||||
import EducationSection from "./forms/EducationSection";
|
||||
import JobRequestForm from "./forms/JobRequestForm";
|
||||
import JobRequestSection from "./forms/JobRequestSection";
|
||||
import CourseSection from "./forms/CourseSection";
|
||||
import SkillsForm from "./forms/SkillsForm";
|
||||
@@ -24,6 +21,8 @@ import { WorkExperienceSection } from "./forms/WorkExperienceSection";
|
||||
import JobInfoForm from "./forms/JobInfoForm";
|
||||
import { ReferralSection } from "./forms/ReferralForm";
|
||||
import RelationsForm from "./forms/RelationForm";
|
||||
import RegistrationCenterForm from "./forms/register-center/RegistrationCenterForm";
|
||||
import { INITIAL_WIZARD_DATA, WizardFormData } from "@/core/types";
|
||||
|
||||
// کامپوننت پیشفرض برای مراحلی که هنوز نساختید
|
||||
const PlaceholderStep = ({ step }: any) => (
|
||||
@@ -34,8 +33,8 @@ const PlaceholderStep = ({ step }: any) => (
|
||||
|
||||
// --- ۲. نگاشت (Mapping) مراحل به کامپوننتها ---
|
||||
|
||||
const STEP_COMPONENTS: Record<number, React.FC<any>> = {
|
||||
1: CenterRegistrationForm,
|
||||
const STEP_COMPONENTS: Record<number, React.ComponentType<any>> = {
|
||||
1: RegistrationCenterForm,
|
||||
2: IdentityForm,
|
||||
3: PersonalInfoForm,
|
||||
4: PhysicalInfoForm,
|
||||
@@ -70,26 +69,15 @@ const STEP_LABELS = [
|
||||
export default function MultiStepForm() {
|
||||
const [activeStep, setActiveStep] = useState(1);
|
||||
const [maxStepReached, setMaxStepReached] = useState(1);
|
||||
const [formData, setFormData] = useState({
|
||||
name: "",
|
||||
address: "",
|
||||
isUrgent: false,
|
||||
});
|
||||
const [formData, setFormData] = useState<WizardFormData>(INITIAL_WIZARD_DATA);
|
||||
|
||||
const updateFormData = (patch: Partial<WizardFormData>) => {
|
||||
setFormData((prev) => ({ ...prev, ...patch }));
|
||||
};
|
||||
|
||||
const theme = useTheme();
|
||||
const isMobile = useMediaQuery(theme.breakpoints.down("md"));
|
||||
|
||||
const updateFormData = (newData: Partial<typeof formData>) => {
|
||||
setFormData((prev) => ({ ...prev, ...newData }));
|
||||
};
|
||||
|
||||
const handleNext = () => {
|
||||
if (activeStep < 12) {
|
||||
setActiveStep((prev) => prev + 1);
|
||||
if (activeStep + 1 > maxStepReached) setMaxStepReached(activeStep + 1);
|
||||
}
|
||||
};
|
||||
|
||||
const ActiveStepComponent = STEP_COMPONENTS[activeStep] || PlaceholderStep;
|
||||
|
||||
return (
|
||||
@@ -160,7 +148,7 @@ export default function MultiStepForm() {
|
||||
{i + 1 < activeStep ? (
|
||||
<CheckCircleIcon sx={{ fontSize: 18 }} color="success" />
|
||||
) : (
|
||||
i + 1
|
||||
Number(i + 1).toLocaleString("fa-IR")
|
||||
)}
|
||||
</Box>
|
||||
<Typography
|
||||
@@ -206,40 +194,12 @@ export default function MultiStepForm() {
|
||||
{/* رندر شدن داینامیک کامپوننت مرحله فعلی */}
|
||||
<div className="w-full">
|
||||
<ActiveStepComponent
|
||||
data={formData}
|
||||
update={updateFormData}
|
||||
data={formData} // کل دیتای فرم
|
||||
update={updateFormData} // تابع آپدیتکننده
|
||||
step={activeStep}
|
||||
setStep={setActiveStep}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Box
|
||||
sx={{ display: "flex", justifyContent: "space-between", mt: 5 }}
|
||||
>
|
||||
<Button
|
||||
disabled={activeStep === 1}
|
||||
onClick={() => setActiveStep((prev) => prev - 1)}
|
||||
sx={{
|
||||
borderRadius: "12px",
|
||||
color: "#64748b",
|
||||
fontWeight: 700,
|
||||
}}
|
||||
>
|
||||
بازگشت
|
||||
</Button>
|
||||
<Button
|
||||
variant="contained"
|
||||
onClick={handleNext}
|
||||
sx={{
|
||||
borderRadius: "12px",
|
||||
px: 4,
|
||||
py: 1.5,
|
||||
bgcolor: `${activeStep === 12 ? "green" : "#2563eb"}`,
|
||||
fontWeight: 700,
|
||||
}}
|
||||
>
|
||||
{activeStep === 12 ? "اتمام و ثبت نهايي" : "گام بعدی"}
|
||||
</Button>
|
||||
</Box>
|
||||
</Paper>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user