/* eslint-disable @typescript-eslint/no-explicit-any */ import { ErrorMessage, Field, Form, Formik } from "formik"; import React from "react"; import { initialValues, validationSchema } from "./FormMethods/Validation"; import { Row } from "react-bootstrap"; import { FormFeild } from "./DataListItems"; import { addModalInitialValuesHandler, SubmitHandler } from "./FormMethods/SubmitHandlers"; import { getMasterList } from "../../../Api/MastersApi"; import SelectField from "../../TextField/ReactSelect"; import HourGlassLoader from "../../Loader/Loader"; export interface Option { id: string; name: string; } const AddEditFrom = ({ toggle, editUser }: any) => { const [isLoading, setIsLoading] = React.useState(false); const [roads, setRoads] = React.useState([]); const [blocks, setBlocks] = React.useState([]); const [buildings, setBuildings] = React.useState([]); const [nationalities, setNationalities] = React.useState([]); const [cities, setCities] = React.useState([]); const [countries, setCountries] = React.useState([]); const [addModalInitialValues, setAddModalInitialValues] = React.useState(initialValues); React.useEffect(() => { if(editUser?.id) { addModalInitialValuesHandler(editUser, setAddModalInitialValues); } else setAddModalInitialValues(initialValues); },[editUser]) React.useEffect(() => { const fetchMasterLists = async () => { try { setIsLoading(true); const [road, block, building, nat, city, country] = await Promise.all([ getMasterList("road"), getMasterList("block"), getMasterList("building"), getMasterList("nationality"), getMasterList("country"), getMasterList("city"), ]); setRoads(road.data || []); setBlocks(block.data || []); setBuildings(building.data || []); setNationalities(nat.data || []); setCountries(country.data?.data || []); setCities(city.data?.data || []); } catch (err) { console.error("Error loading masterlists", err); } finally { setIsLoading(false); } }; fetchMasterLists(); }, []); return ( <> {isLoading && }

{editUser?.id ? "Edit Staff" : "Add Staff"}

{/* */}
{ SubmitHandler(values, actions, toggle, addModalInitialValues); }} > {({ values, errors, setFieldValue }: any) => { const handleSelectChange = (fieldName: any) => (option: Option | null) => { setFieldValue(fieldName?.name, option?.id || ""); }; const getOptions = (type: string): Option[] => { switch (type) { case "block": return blocks; case "road": return roads; case "building": return buildings; case "nationality": return nationalities; case "city": return cities; case "country": return countries; default: return []; } }; return (
{FormFeild?.map((item: any, index: number) => { return (
{item.select ? ( <> opt.id === values[item.name] ) || null } onChange={handleSelectChange(item)} placeholder={`Select ${item.label}`} isCreatable={true} width="100%" errors={errors[item.name]} usageType={0} icon={item.icon} /> ) : item.type === "file" ? ( { setFieldValue( item.name, event.currentTarget.files?.[0] ); }} /> ) : ( )}
); })}
); }}
); }; export default AddEditFrom;