import { useState } from 'react' import PropTypes from 'prop-types' import { useTheme } from '@mui/material/styles' import { FormControl, Button } from '@mui/material' import { IconUpload } from '@tabler/icons' import { getFileName } from 'utils/genericHelper' export const File = ({ value, fileType, onChange, disabled = false }) => { const theme = useTheme() const [myValue, setMyValue] = useState(value ?? '') const handleFileUpload = async (e) => { if (!e.target.files) return if (e.target.files.length === 1) { const file = e.target.files[0] const { name } = file const reader = new FileReader() reader.onload = (evt) => { if (!evt?.target?.result) { return } const { result } = evt.target const value = result + `,filename:${name}` setMyValue(value) onChange(value) } reader.readAsDataURL(file) } else if (e.target.files.length > 0) { let files = Array.from(e.target.files).map((file) => { const reader = new FileReader() const { name } = file return new Promise((resolve) => { reader.onload = (evt) => { if (!evt?.target?.result) { return } const { result } = evt.target const value = result + `,filename:${name}` resolve(value) } reader.readAsDataURL(file) }) }) const res = await Promise.all(files) setMyValue(JSON.stringify(res)) onChange(JSON.stringify(res)) } } return ( {myValue ? getFileName(myValue) : 'Choose a file to upload'} ) } File.propTypes = { value: PropTypes.string, fileType: PropTypes.string, onChange: PropTypes.func, disabled: PropTypes.bool }