import { useField, useFormikContext } from "formik"; import React, { useRef } from "react"; import ErrorMessage from "./ErrorMessage"; import RequiredAsterisk from "./RequiredAsterisk"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faFile } from "@fortawesome/free-solid-svg-icons"; interface FileInputProps { label: string; required?: boolean; name:string; } const FileInput: React.FC = ({ label, ...props }) => { const { required } = props; const [field, meta] = useField(props); const { setFieldValue } = useFormikContext(); const fileInputRef = useRef(null); const handleChange = (event: React.ChangeEvent) => { const { files } = event.target; const file = files ? files[0] : null; setFieldValue(props.name, file); // Directly use setFieldValue to update Formik's state }; const handleClick = () => { if (fileInputRef.current) { fileInputRef.current.click(); } }; const handleDrop = (event: React.DragEvent) => { event.preventDefault(); event.stopPropagation(); const files = event.dataTransfer.files; if (files && files.length > 0) { const file = files[0]; setFieldValue(props.name, file); } }; return (
e.preventDefault()}>

Drag & Drop Here or Browse

); }; export default FileInput;