const UploadData = () => {
const formSchema = z.object({
upload: z.array(z.any()),
})
const form = useForm<z.infer<typeof formSchema>>({
resolver: zodResolver(formSchema),
defaultValues: {
upload: [] as any[],
},
})
const [selectedFile, setSelectedFile] = useState<File | null>(null);
const [dropDisplay, setDropDisplay] = useState(false);
const [progress, setProgress] = useState(13)
const { setValue } = form;
useEffect(() => {
const timer = setTimeout(() => setProgress(66), 500)
return () => clearTimeout(timer)
}, [])
const isValidFileType = (file: File) => {
const validTypes = ['application/pdf', 'text/csv'];
return validTypes.includes(file.type);
};
const handleDrop = async (event: React.DragEvent<HTMLDivElement>) => {
event.preventDefault();
const file = event.dataTransfer.files[0];
if (file && isValidFileType(file)) {
setSelectedFile(file);
setDropDisplay(false);
} else {
alert('Invalid file type. Please upload a PDF or CSV file.');
}
};
const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {
event.preventDefault();
setDropDisplay(true);
};
const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {
event.preventDefault();
setDropDisplay(false);
};
const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {
const file = event.target.files?.[0] || null;
if (file && isValidFileType(file)) {
setSelectedFile(file);
} else {
alert('Invalid file type. Please upload a PDF or CSV file.');
}
};
const removeFile = (index: number) => {
setSelectedFile(null)
};