import { faFile } from "@fortawesome/free-solid-svg-icons" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" import { useField, useFormikContext } from "formik" import React, { useRef } from "react" import ErrorMessage from "./ErrorMessage" import RequiredAsterisk from "./RequiredAsterisk" 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