import { useEffect, useState } from 'react'; import { ColorButtonKey } from '../interfaces'; import BaseButton from './BaseButton'; import FileUploader from './Uploaders/UploadService'; import { mdiReload } from '@mdi/js'; import { useAppSelector } from '../stores/hooks'; type Props = { label?: string; icon?: string; accept?: string; color: ColorButtonKey; isRoundIcon?: boolean; path: string; schema: object; field: any; form: any; }; const FormFilePicker = ({ label, icon, accept, color, isRoundIcon, path, schema, form, field, }: Props) => { const [file, setFile] = useState(null); const [loading, setLoading] = useState(false); const corners = useAppSelector((state) => state.style.corners); const bgColor = useAppSelector((state) => state.style.cardsColor); let cornersRight; if (corners === 'rounded') { cornersRight = 'rounded-r'; } else if (corners === 'rounded-lg') { cornersRight = 'rounded-r-lg'; } else if (corners === 'rounded-full') { cornersRight = 'rounded-r-3xl'; } else { cornersRight = ''; } useEffect(() => { if (field.value) { setFile(field.value[0]); } }, [field.value]); const handleFileChange = async (event) => { const file = event.currentTarget.files[0]; setFile(file); FileUploader.validate(file, schema); setLoading(true); const remoteFile = await FileUploader.upload(path, file, schema); form.setFieldValue(field.name, [{ ...remoteFile }]); setLoading(false); }; const showFilename = !isRoundIcon && file; return (