diff --git a/packages/common-components/src/FileInput/FileInput.tsx b/packages/common-components/src/FileInput/FileInput.tsx index ef4066cab0..256ba82b17 100644 --- a/packages/common-components/src/FileInput/FileInput.tsx +++ b/packages/common-components/src/FileInput/FileInput.tsx @@ -99,6 +99,10 @@ const useStyles = makeStyles(({ constants, palette, overrides }: ITheme) => }) ) +interface FileWithPath extends File { + path?: string +} + interface IFileInputProps extends DropzoneOptions { className?: string variant?: "dropzone" | "filepicker" @@ -137,21 +141,22 @@ const FileInput = ({ const classes = useStyles() const [previews, setPreviews] = useState([]) const [errors, setErrors] = useState([]) - const [{ value }, meta, helpers] = useField(name) + const [{ value }, meta, helpers] = useField>(name) useEffect(() => { onFileNumberChange && onFileNumberChange(value.length) }, [onFileNumberChange, value.length]) const onDrop = useCallback( - async (acceptedFiles: File[], fileRejections: FileRejection[]) => { + async (acceptedFiles: Array, fileRejections: FileRejection[]) => { const filtered = acceptedFiles.filter((file) => maxFileSize ? file.size <= maxFileSize : true ) + setErrors([]) if (showPreviews) { setPreviews( - filtered.map((file: any) => + filtered.map((file) => Object.assign(file, { preview: URL.createObjectURL(file) }) @@ -188,7 +193,7 @@ const FileInput = ({ }) const removeItem = (i: number) => { - const items = value as any[] + const items = value items.splice(i, 1) helpers.setValue(items) } @@ -220,12 +225,12 @@ const FileInput = ({ >
    - {value.map((file: any, i: any) => ( + {value.map((file: any, i: number) => (
  • - {file.name} + {file.path}