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"; // ---------------- Types ---------------- export type AcquaintanceType = "Direct" | "Indirect"; export interface ReferralFormData { firstName: string; lastName: string; relationship: string; acquaintanceDuration: string; // optional in DB, but keep as string acquaintanceType: AcquaintanceType; jobTitle: string; workplaceName: string; phoneNumber: string; } interface ReferralItemFormProps { index: number; value: ReferralFormData; onChange: (next: ReferralFormData) => void; onRemove?: () => void; disableRemove?: boolean; } // ---------------- Item Form ---------------- export function ReferralItemForm({ index, value, onChange, onRemove, disableRemove, }: ReferralItemFormProps) { const setField = (key: keyof ReferralFormData) => (e: React.ChangeEvent) => { onChange({ ...value, [key]: e.target.value }); }; return ( معرف {index + 1} مستقیم غیرمستقیم ); } // ---------------- Section (Multi) ---------------- interface ReferralSectionProps { value: ReferralFormData[]; onChange: (next: ReferralFormData[]) => void; minItems?: number; // پیش‌فرض 1 maxItems?: number; // اختیاری title?: string; } const emptyReferral = (): ReferralFormData => ({ firstName: "", lastName: "", relationship: "", acquaintanceDuration: "", acquaintanceType: "Direct", jobTitle: "", workplaceName: "", phoneNumber: "", }); export function ReferralSection({ value, onChange, minItems = 1, maxItems, title = "معرف‌ها", }: ReferralSectionProps) { const items = value?.length ? value : Array.from({ length: minItems }, emptyReferral); const addItem = () => { if (maxItems && items.length >= maxItems) return; onChange([...(items || []), emptyReferral()]); }; const updateItem = (idx: number, nextItem: ReferralFormData) => { const next = items.map((it, i) => (i === idx ? nextItem : it)); onChange(next); }; const removeItem = (idx: number) => { if (items.length <= minItems) return; const next = items.filter((_, i) => i !== idx); onChange(next); }; return ( {items.map((item, idx) => ( updateItem(idx, next)} onRemove={() => removeItem(idx)} disableRemove={items.length <= minItems} /> ))} ); }