"use client"; import { useCallback, useState } from "react"; import CustomInputForm from "../CustomInputForm"; import { useRouter } from "next/navigation"; import { useTranslation } from "react-i18next"; import { FieldErrors, FormProvider, SubmitErrorHandler, SubmitHandler, useForm, } from "react-hook-form"; import { CreateStaffInputs, saveStaff } from "@/app/api/staff/actions"; import { Typography } from "@mui/material"; interface Field { // subtitle: string; id: string; label: string; type: string; value?: any; required?: boolean; options?: any[]; readOnly?: boolean; } interface formProps { Title?: string[]; fieldLists: Field[][]; } const CreateStaffForm: React.FC = ({ Title, fieldLists }) => { const router = useRouter(); const { t } = useTranslation(); const [serverError, setServerError] = useState(""); const handleCancel = () => { router.back(); }; const onSubmit = useCallback>( async (data) => { try { console.log(data); let haveError = false; //check if joinDate exist if (data.joinDate == null && data.joinDate == "Invalid Date") { haveError = true; return haveError; } //check if joinDate > departDate if (data.departDate != null && data.departDate != "Invalid Date") { if (data.joinDate != null) { const joinDate = new Date(data.joinDate); const departDate = new Date(data.departDate); if (joinDate.getTime() > departDate.getTime()) { haveError = true; return haveError; } } } if (haveError) { return } const postData = { ...data, emergContactPhone: data.emergContactPhone.toString(), phone1: data.phone1.toString(), phone2: data.phone2.toString(), hourlyRate: typeof data.hourlyRate === 'string' ? parseInt(data.hourlyRate.replace("$", "").replace(",", "")) : 0 }; console.log(postData); setServerError(""); await saveStaff(postData); router.replace("/settings/staff"); } catch (e) { setServerError(t("An error has occurred. Please try again later.")); } }, [router, t] ); const onSubmitError = useCallback>( (errors) => { console.log(errors); }, [] ); return ( <> {serverError && ( {serverError} )} ); }; export default CreateStaffForm;