"use client"; import React from "react"; import { Box, MenuItem, TextField, Typography, Button, IconButton, Paper, } from "@mui/material"; import DeleteOutlineOutlinedIcon from "@mui/icons-material/DeleteOutlineOutlined"; import AddIcon from "@mui/icons-material/Add"; import { FieldArray, Form, getIn, type FormikProps } from "formik"; import type { JobRequestFormProps, JobRequestFormValues, JobRequestItem, } from "./types"; import { JOB_REQUEST_EMPTY_ITEM, defaultCategories, defaultJobs, relationTypes, shiftTypes, } from "./constant"; type Props = FormikProps & JobRequestFormProps; export default function InnerJobRequestForm(props: Props) { const { values, errors, touched, handleChange, setFieldValue, jobCategories = defaultCategories, jobs = defaultJobs, isSubmitting, } = props; const handleBack = () => { props.update({ jobRequests: props.values.jobRequests, }); props.setStep(props.step - 1); }; return (
{({ push, remove }) => ( <> {values.jobRequests.map((item: JobRequestItem, index: number) => { const itemErrors = getIn(errors, `jobRequests.${index}`) || {}; const itemTouched = getIn(touched, `jobRequests.${index}`) || {}; const filteredJobs = jobs.filter( (job) => job.jobCategoryId === item.jobCategoryId, ); return ( {values.jobRequests.length > 1 && ( remove(index)} color="error" sx={{ position: "absolute", top: 12, right: 12, zIndex: 1, }} aria-label="remove-job-request" > )} درخواست شغلی {index + 1} { const categoryId = e.target.value; setFieldValue( `jobRequests.${index}.jobCategoryId`, categoryId, ); setFieldValue(`jobRequests.${index}.jobId`, ""); }} error={ !!itemTouched.jobCategoryId && !!itemErrors.jobCategoryId } helperText={ itemTouched.jobCategoryId ? itemErrors.jobCategoryId : " " } > انتخاب... {jobCategories.map((category) => ( {category.name} ))} انتخاب... {filteredJobs.map((job) => ( {job.title} ))} انتخاب... {relationTypes.map((relation) => ( {relation} ))} انتخاب... {shiftTypes.map((shift) => ( {shift} ))} { const onlyDigits = e.target.value.replace(/[^\d]/g, ""); setFieldValue( `jobRequests.${index}.expectedSalary`, onlyDigits, ); }} error={ !!itemTouched.expectedSalary && !!itemErrors.expectedSalary } helperText={ itemTouched.expectedSalary ? itemErrors.expectedSalary : "" } /> ); })} )}
); }