"use client"; import React from "react"; import { Box, Paper, TextField, Typography, IconButton, Button, MenuItem, Divider, } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import { DeleteOutlineOutlined } from "@mui/icons-material"; import { FieldArray, Form, getIn, type FormikProps } from "formik"; import type { ReferralFormProps, ReferralFormValues, ReferralItem, } from "./types"; import { REFERRAL_EMPTY_ITEM, REFERRAL_MIN_ITEMS, } from "./constant"; type Props = FormikProps & ReferralFormProps; function ReferralItemForm({ index, item, errors, touched, handleChange, setFieldValue, onRemove, disableRemove, }: { index: number; item: ReferralItem; errors: any; touched: any; handleChange: React.ChangeEventHandler; setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void; onRemove: () => void; disableRemove: boolean; }) { const itemErrors = getIn(errors, `referrals.${index}`) || {}; const itemTouched = getIn(touched, `referrals.${index}`) || {}; return ( معرف {index + 1} مستقیم غیرمستقیم { const onlyDigits = e.target.value.replace(/[^\d]/g, "").slice(0, 11); setFieldValue(`referrals.${index}.phoneNumber`, onlyDigits); }} fullWidth placeholder="مثلاً: 0912xxxxxxx" error={!!itemTouched.phoneNumber && !!itemErrors.phoneNumber} helperText={itemTouched.phoneNumber ? itemErrors.phoneNumber : ""} /> ); } export default function InnerReferralForm(props: Props) { const { values, errors, touched, handleChange, setFieldValue, isSubmitting, } = props; const handleBack = () => { props.update({ referrals: values.referrals, }); props.setStep(props.step - 1); }; return (
{({ push, remove }) => ( معرف‌ها {values.referrals.map((item, idx) => ( remove(idx)} disableRemove={values.referrals.length <= REFERRAL_MIN_ITEMS} /> ))} {typeof errors.referrals === "string" && ( {errors.referrals} )} )}
); }