import Link from "next/link"; import { useState, useMemo } from "react"; import { useRouter } from "next/router"; import useTranslation from "next-translate/useTranslation"; import LoadingOverlay from "react-loading-overlay"; import DropzoneComponent from "../newappeal/fileupload"; import { Field, reduxForm } from "redux-form"; import { connect } from "react-redux"; import Dropzone, { useDropzone } from "react-dropzone"; import { uploadFiles } from "../../actions"; const required = (errorMsg) => (value) => value || typeof value === "number" ? undefined : errorMsg; export const minLength = (errorMsg) => (value) => value && value.length < 4 ? errorMsg //`Must be ${min} characters or more` : undefined; const RenderTextfield = ({ id, className, rows, datafieldname, name, label, input, hint1, hint2, hint3, meta: { touched, error }, ...custom }) => { return ( <>
{touched && error && ( Error: {" "} {error} )}
); }; const baseStyle = { display: "flex", flexDirection: "column", alignItems: "center", padding: "20px", borderWidth: 2, borderRadius: 2, borderColor: "#eeeeee", borderStyle: "dashed", backgroundColor: "#fafafa", color: "#bdbdbd", transition: "border .3s ease-in-out", width: "80%", margin: "20px auto 30px", }; const activeStyle = { borderColor: "#2196f3", }; const acceptStyle = { borderColor: "#00e676", }; const rejectStyle = { borderColor: "#ff1744", }; const RenderFileUpload = (field) => { const files = field.input.value; const style = useMemo( () => ({ ...baseStyle, // ...(isDragActive ? activeStyle : {}), // ...(isDragAccept ? acceptStyle : {}), // ...(isDragReject ? rejectStyle : {}), }), [] // [isDragActive, isDragReject, isDragAccept] ); const [filesList, setFilesList] = useState([]); const thumbs = filesList.map((file) => (
{file.name} -{" "} {file.name} ({file.size / 1024}kb)
)); function bytesToSize(bytes) { var sizes = ["Bytes", "KB", "MB", "GB", "TB"]; if (bytes == 0) return "0 Byte"; var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); return Math.round(bytes / Math.pow(1024, i), 2) + " " + sizes[i]; } const getThumbnailIcon = (fileObj, fileType) => { switch (fileType) { case "text/html": return "/assets/images/documentTypes/html.png"; break; case "text/plain": return "/assets/images/documentTypes/txt.png"; break; case "application/msword": return "/assets/images/documentTypes/doc.png"; break; case "application/pdf": return "/assets/images/documentTypes/pdf.png"; break; case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": return "/assets/images/documentTypes/docx.png"; break; case "text/csv": return "/assets/images/documentTypes/csv.png"; break; case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": return "/assets/images/documentTypes/xlsx.png"; break; case "application/zip": return "/assets/images/documentTypes/zip.png"; break; case "image/jpeg": case "image/png": return URL.createObjectURL(fileObj); break; } }; return (
field.input.onChange(filesToUpload) } > {({ getRootProps, getInputProps }) => (
{" "}
Drag and drop your files here.
)}
{field.meta.touched && field.meta.error && ( {field.meta.error} )} {files && Array.isArray(files) && ( )}
); }; let UploadFile = (props) => { let { t } = useTranslation(); //const [showSpinnerState, setShowSpinnerState] = useState(false); const { handleSubmit, pristine, reset, submitting } = props; const router = useRouter(); const { locale } = router; const onHandleSubmit = async (values) => { //spinnerState(); console.log(values); const uploadAction = await uploadFiles(values); // router.push({ // pathname: // router.locale == "cy" // ? "/fymhorth/canlyniadauchwilio" // : "/myportal/searchresults", // query: { q: values.basicSearch }, // shallow: true, // }); }; return (

Upload a file

reqweqwe eqwe qwe qwe qwe

); }; const mapStateToProps = (state) => { return { currentView: state.currentView, search: state.search, searchResultsObj: state.searchResultsObj, formData: state.formData, appealType: state.appealType, //form: state.form, myCases: state.myCases, watchedCases: state.watchedCases, myRepresentations: state.myRepresentations, awaitingSubmission: state.awaitingSubmission, }; }; const mapDispatchToProps = (dispatch) => { return {}; }; export default connect( mapStateToProps, mapDispatchToProps )( reduxForm({ form: "uploadFileForm", destroyOnUnmount: false, })(UploadFile) );