import { Field, Fields, reduxForm } from "redux-form"; import router from "next/router"; import React, { useState, useMemo } from "react"; import useTranslation from "next-translate/useTranslation"; import { JSONPath as jsonpath } from "jsonpath-plus"; import Dropzone, { useDropzone } from "react-dropzone"; import Link from "next/link"; import dynamic from "next/dynamic"; const ReactQuill = dynamic(() => import("react-quill"), { ssr: false }); import "react-quill/dist/quill.snow.css"; import DatePicker, { registerLocale, setDefaultLocale } from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; import { addYears, addMonths, addDays, subYears, subMonths, subDays, parseISO, } from "date-fns"; import { getFormCollectionByID, getThumbnailIconByExtension, bytesToSize, } from "../../utils"; import { useRouter } from "next/router"; export const RenderRadioList = ({ datafieldname, name, label, id, errorMsg, options, input: { onChange, value }, meta: { touched, error }, ...custom }) => { const required = (value) => (value ? undefined : "Required"); return ( <>
{touched && error && ( Error: {" "} {errorMsg} )}
{Object.keys(options).map((key, index) => (
))}
); }; export const RenderRadioListWithText = ({ datafieldname, name, label, id, errorMsg, options, input: { onChange, value }, meta: { touched, error }, ...custom }) => { const required = (value) => (value ? undefined : "Required"); const router = useRouter(); return ( <>
{touched && error && ( Error: {" "} {errorMsg} )}
{Object.keys(options).map((key, index) => (
{value === options[key] && (
)}
))}
); }; export const RenderCondtionalRadioList = ({ datafieldname, legend, name, label, id, errorMsg, options, input: { onChange, value }, meta: { touched, error }, ...custom }) => { const required = (value) => (value ? undefined : "Required"); let { t } = useTranslation(); return ( <>
{touched && error && ( Error: {" "} {errorMsg} )}
e.g. ‘Owners of Numbers 1-5 High Street‘, or ‘Mr and Mrs Smith‘ or ‘The executors of Mr Evans‘ estate‘
{Object.keys(options).map((key, index) => (
{value == t("myrepresentations:questionnaire-yes") && options[key] == t( "myrepresentations:questionnaire-yes" ) && (
)}
))}
); }; export const RenderLPACondtionalRadioList = ({ datafieldname, legend, name, label, id, errorMsg, options, input: { onChange, value }, meta: { touched, error }, ...custom }) => { const required = (value) => (value ? undefined : "Required"); console.log(error); return ( <>
{touched && error && ( Error: {" "} {errorMsg} )}
{Object.keys(options).map((key, index) => (
{value == custom.optionSelect && options[key] == custom.optionSelect && (
)}
))}
); }; export const RenderPickList = ({ datafieldname, name, label, input, optionsArr, meta: { touched, error }, errorMsg, ...custom }) => { console.log(custom.disabled); return ( <>
{touched && error && ( Error:{" "} {errorMsg} )}
); }; export const RenderTextfield = ({ id, rows, datafieldname, name, label, input, errorMsg, type, className, meta: { touched, error }, ...custom }) => { const required = (value) => (value ? undefined : "Required"); return ( <> {touched && error && ( Error:{" "} {errorMsg} )} ); }; export const RenderDatePicker = ({ datafieldname, name, label, id, errorMsg, input: { onChange, value }, meta: { touched, error }, ...custom }) => { const router = useRouter(); var startDateArr = custom.dateStart != "0" ? custom.dateStart.split("") : custom.dateStart; var endDateArr = custom.dateEnd != "0" ? custom.dateEnd.split("") : custom.dateEnd; var minDate = startDateArr == 0 ? new Date() : startDateArr[0] == "-" ? startDateArr[2] == "y" ? subYears(new Date(), startDateArr[1]) : startDateArr[2] == "m" ? subMonths(new Date(), startDateArr[1]) : subDays(new Date(), startDateArr[1]) : startDateArr[2] == "y" ? addYears(new Date(), startDateArr[1]) : startDateArr[2] == "m" ? addMonths(new Date(), startDateArr[1]) : addDays(new Date(), startDateArr[1]); var maxDate = endDateArr == 0 ? new Date() : startDateArr[0] == "-" ? startDateArr[2] == "y" ? subYears(new Date(), startDateArr[1]) : startDateArr[2] == "m" ? subMonths(new Date(), startDateArr[1]) : subDays(new Date(), startDateArr[1]) : startDateArr[2] == "y" ? addYears(new Date(), startDateArr[1]) : startDateArr[2] == "m" ? addMonths(new Date(), startDateArr[1]) : addDays(new Date(), startDateArr[1]); return ( <>
{touched && error && ( Error: {" "} {errorMsg} )}
); }; export const RenderMultiline = ({ id, className, rows, datafieldname, name, label, input, meta: { touched, error }, ...custom }) => { const [editValue, setEditValue] = useState( input.value != null ? input.value : "" ); const changeEdit = (valStr) => { setEditValue(valStr); input.onChange(valStr); }; var modules = { toolbar: [ [{ "header": [1, 2, false] }], ["bold", "italic", "underline", "blockquote"], [{ "list": "ordered" }, { "list": "bullet" }, "link"], ["clean"], ], }; return ( <>
{"hint" in custom} {"hint" in custom && (
{custom.hint}
)}
); }; export const RenderRichMultiline = ({ id, className, rows, datafieldname, name, label, input, meta: { touched, error }, ...custom }) => { const [editValue, setEditValue] = useState( input.value != null ? input.value : "" ); const changeEdit = (valStr) => { setEditValue(valStr); input.onChange(valStr); }; var modules = { toolbar: [ [{ "header": [1, 2, false] }], ["bold", "italic", "underline", "blockquote"], [{ "list": "ordered" }, { "list": "bullet" }], ["clean"], ], }; return ( <> ); }; export function MultiLinefield(props) { const { name, label } = props; return (
Do not include personal or financial information, like your National Insurance number or credit card details.
); } 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", }; const activeStyle = { borderColor: "#2196f3", }; const acceptStyle = { borderColor: "#00e676", }; const rejectStyle = { borderColor: "#ff1744", }; export const RenderFileUpload = (field) => { const files = field.input.value; let { t } = useTranslation(); 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)
)); 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; default: return "/assets/images/documenttypes/txt.png"; break; } }; const getDocumentType = (docCode) => { switch (docCode) { case "000001": return "000001"; break; case "000002": return "000002"; break; case "000003": return "000003"; break; case "000004": return "000004"; break; case "000005": return "000005"; break; case "000006": return "000006"; break; case "000007": return "000007"; break; case "000008": return "000008"; break; case "000009": return "000009"; break; case "000010": return "000010"; break; case "000011": return "000011"; break; case "000012": return "000012"; break; case "000013": return "000013"; break; case "000014": return "000014"; break; case "000015": return "000015"; break; default: return "000000"; } }; const filelistObj = field.fileList || {}; const blobList = jsonpath( "$..[?(@.documentType=='" + field.documentTypeCode + "')]", filelistObj ); const deleteThisBlob = async ( containerName, blobName, deleteblobhash, getblobshash, casefolderID ) => { deleteBlob(containerName, blobName, deleteblobhash, casefolderID) .then((data) => data) .then(() => { getFilesFromBlobHashed( containerName, getblobshash, casefolderID ).then((newfilelist) => field.setFilesForAppeal(newfilelist)); }); }; return ( <> { const renamedAcceptedFiles = filesToUpload.map( (file) => new File( [file], `${field.filenamePrefix}_-_Attachment_-_${file.name}`, { type: file.type, } ) ); field.input.onChange(renamedAcceptedFiles); }} > {({ getRootProps, getInputProps }) => ( <>
{" "}
{t( "newappeal:new-appeal-fileupload-drop-label" )}
( {t( "newappeal:new-appeal-fileupload-file-list-label" )} )
)}
{field.meta.touched && field.meta.error && ( {field.meta.error} )} {files && Array.isArray(files) && ( )} {blobList.map((blob, i) => (
{ deleteThisBlob( field.containerID, blob.name, blob.hasheddeletepath, blob.hashgetblobs, field.ticketnumber ); }} title="Remove this file" > −
{blob.name} {blob.name}({bytesToSize(blob.contentLength)})
))}{" "} ); }; export function FileUploadField(props) { return ( <>

{props.label}

); } // export const RepresentationGuidanceText = (appealType) => { // let { t } = useTranslation(); // console.log(appealType); // switch (appealType) { // case "846040004": //has/cas // return ( //

// {t("myrepresentations:questionnaire-publish-policy-label")}{" "} // // https://gov.wales/planning-and-environment-decisions-wales-publishing-policy-html // //

// ); // break; // default: // return ( //

// {t("myrepresentations:publish-policy-label")}{" "} // // https://gov.wales/planning-and-environment-decisions-wales-publishing-policy-html // //

// ); // break; // } // return guidanceString; // };