import React, { useEffect, useState } from "react"; import { useForm, SubmitHandler } from "react-hook-form"; import { Dialog, DialogActions, DialogContent, DialogTitle, Button, TextField, MenuItem, Select, InputLabel, FormControl, FormHelperText, Box } from "@mui/material"; import { useDropzone } from 'react-dropzone'; // Define the types for form data interface FormData { exerciseName: string; description: string; primMuscleTargeted: string; secMuscleTargeted?: string; repsOrduration: string; sets: string; restBetweenSets?: string; difficultyLevel: "beginner" | "intermediate" | "advanced"; formTips?: string; modificationOptions?: string; equipmentNeeded?: string; videoLink?: string; audioInstructions?: string; restTimeAfterExercise?: string; totalTimeForExercise?: string; progressTracking?: string; motivationalTips?: string; exerciseImage?: File | null; } interface AddEditExerciseModalProps { open: boolean; handleClose: () => void; editRow: any; preview: string; setPreview: string; } const AddEditExerciseModal: React.FC = ({ open, handleClose, editRow ,preview,setPreview}) => { const { handleSubmit, register, formState: { errors }, setValue, reset, getValues} = useForm(); const { getRootProps, getInputProps } = useDropzone({ accept: 'image/*, .gif', onDrop: (acceptedFiles) => { if (acceptedFiles && acceptedFiles.length > 0) { setValue('exerciseImage', acceptedFiles[0]); handlePreview(acceptedFiles[0]) } }, }); console.log("Imageeeee" , getValues('exerciseImage')) // State to store the preview URL of the uploaded file const [selectedFile, setSelectedFile] = useState(null); useEffect(() => { if (editRow) { setValue('exerciseName', editRow.exerciseName); setValue('description', editRow.description); setValue('primMuscleTargeted', editRow.primMuscleTargeted); setValue('secMuscleTargeted', editRow.secMuscleTargeted); setValue('repsOrduration', editRow.repsOrduration); setValue('sets', editRow.sets); setValue('restBetweenSets', editRow.restBetweenSets); setValue('difficultyLevel', editRow.difficultyLevel); if (editRow.exerciseImage) { setValue('exerciseImage', editRow.exerciseImage); setPreview(editRow.exerciseImage); setSelectedFile(editRow.exerciseImage); } } else { reset(); setPreview(null); setSelectedFile(null); } }, [editRow, setValue, reset,setPreview]); const onSubmit: SubmitHandler = (data: FormData) => { console.log(data); reset(); setPreview(null); handleClose(); }; const handlePreview = (file: File | null) => { if (file) { setValue('exerciseImage', file); setPreview(URL.createObjectURL(file)); setSelectedFile(file); } else { setPreview(null); setSelectedFile(null); } }; const handleClearFile = () => { setPreview(null); setSelectedFile(null); setValue('exerciseImage', null); }; return ( Create Exercise
{/* Exercise Name */} {/* Description */} {/* Primary Muscles Targeted */} {/* Secondary Muscles Targeted */} {/* Reps/Duration */} {/* Sets */} {/* Rest Between Sets */} {/* Difficulty Level */} Difficulty Level {errors.difficultyLevel && {errors.difficultyLevel.message}} {/* Image/GIF Upload */} handlePreview(e.target.files?.[0] || null)} />

Drag & drop an image or GIF here, or click to select

{/* Preview the uploaded image or GIF */} {preview && (

Preview:

Exercise Preview

{selectedFile?.name || selectedFile.split("/").pop()}

)}
); }; export default AddEditExerciseModal;