File size: 947 Bytes
aa2e6af | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import React, { useRef } from 'react';
type FileUploadProps = {
handleFileChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
onClick?: () => void;
className?: string;
children: React.ReactNode;
};
const FileUpload: React.FC<FileUploadProps> = ({
handleFileChange,
children,
onClick,
className = '',
}) => {
const fileInputRef = useRef<HTMLInputElement>(null);
const handleButtonClick = () => {
if (onClick) {
onClick();
}
// necessary to reset the input
if (fileInputRef.current) {
fileInputRef.current.value = '';
}
fileInputRef.current?.click();
};
return (
<div onClick={handleButtonClick} style={{ cursor: 'pointer' }} className={className}>
{children}
<input
ref={fileInputRef}
multiple
type="file"
style={{ display: 'none' }}
onChange={handleFileChange}
/>
</div>
);
};
export default FileUpload;
|