"use client"; import React from "react"; import { Box, FormControlLabel, IconButton, Paper, Switch, TextField, Typography, Button, } from "@mui/material"; import { DeleteOutlineOutlined, Add } from "@mui/icons-material"; import { FieldArray, Form, getIn, type FormikProps } from "formik"; import type { WorkExperienceFormProps, WorkExperienceFormValues, WorkExperienceFormItem, } from "./types"; import { WORK_EXPERIENCE_EMPTY_ITEM, WORK_EXPERIENCE_NO_EXPERIENCE_ITEM, } from "./constant"; type Props = FormikProps & WorkExperienceFormProps; export default function InnerWorkExperienceForm(props: Props) { const { values, errors, touched, setFieldValue, handleChange, isSubmitting, } = props; const workExperiences = values.workExperiences || []; const hasNoExperienceMode = workExperiences.length === 1 && workExperiences[0]?.hasNoExperience; const handleBack = () => { props.update({ workExperiences: values.workExperiences, }); props.setStep(props.step - 1); }; return (
{({ push, remove, replace }) => ( <> {workExperiences.map((item: WorkExperienceFormItem, index: number) => { const itemErrors = getIn(errors, `workExperiences.${index}`) || {}; const itemTouched = getIn(touched, `workExperiences.${index}`) || {}; const setHasNoExperience = (checked: boolean) => { if (checked) { replace(0, { ...WORK_EXPERIENCE_NO_EXPERIENCE_ITEM, id: Date.now(), }); for (let i = workExperiences.length - 1; i >= 1; i--) { remove(i); } } else { setFieldValue(`workExperiences.${index}.hasNoExperience`, false); } }; return ( سابقه کاری {index + 1} remove(index)} disabled={workExperiences.length === 1 || hasNoExperienceMode} size="small" color="error" > setHasNoExperience(e.target.checked)} /> } label="فاقد سابقه کاری هستم" /> { const onlyDigits = e.target.value.replace(/[^\d]/g, ""); setFieldValue( `workExperiences.${index}.startYear`, onlyDigits, ); }} fullWidth disabled={item.hasNoExperience} inputMode="numeric" error={!!itemTouched.startYear && !!itemErrors.startYear} helperText={itemTouched.startYear ? itemErrors.startYear : ""} /> { const onlyDigits = e.target.value.replace(/[^\d]/g, ""); setFieldValue( `workExperiences.${index}.endYear`, onlyDigits, ); }} fullWidth disabled={item.hasNoExperience} inputMode="numeric" error={!!itemTouched.endYear && !!itemErrors.endYear} helperText={itemTouched.endYear ? itemErrors.endYear : ""} /> ); })} {!hasNoExperienceMode && ( )} {typeof errors.workExperiences === "string" && ( {errors.workExperiences} )} )}
); }