included emdash in doc upload validation
This commit is contained in:
@@ -14,7 +14,7 @@ import {
|
||||
deleteBlob,
|
||||
getFilesFromBlobHashed,
|
||||
uploadSingleFile,
|
||||
getFilesFromBlobproxy,
|
||||
getFilesFromBlobproxy
|
||||
} from "../../actions";
|
||||
import fieldLookup from "../../data/crmfieldlookuptranslations.json";
|
||||
import pickListLookup from "../../data/picklistLookups.json";
|
||||
@@ -30,7 +30,7 @@ import {
|
||||
parseISO,
|
||||
subDays,
|
||||
subMonths,
|
||||
subYears,
|
||||
subYears
|
||||
} from "date-fns";
|
||||
import "react-quill-new/dist/quill.snow.css";
|
||||
const ReactQuill = dynamic(() => import("react-quill-new"), { ssr: false });
|
||||
@@ -126,7 +126,7 @@ export function Textfield(props) {
|
||||
parentField,
|
||||
parentFieldShowOnValue,
|
||||
maxFieldLength,
|
||||
hint,
|
||||
hint
|
||||
} = props;
|
||||
|
||||
const required = (value) => {
|
||||
@@ -339,7 +339,7 @@ export function MultiLinefield(props) {
|
||||
parentFieldShowOnValue,
|
||||
validation,
|
||||
maxFieldLength,
|
||||
hint,
|
||||
hint
|
||||
} = props;
|
||||
|
||||
const required = (value) => {
|
||||
@@ -484,8 +484,8 @@ export const RenderRichMultiline = ({
|
||||
[{ "header": [1, 2, false] }],
|
||||
["bold", "italic", "underline", "blockquote"],
|
||||
[{ "list": "ordered" }, { "list": "bullet" }],
|
||||
["clean"],
|
||||
],
|
||||
["clean"]
|
||||
]
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -537,7 +537,7 @@ export function RichMultiLinefield(props) {
|
||||
parentField,
|
||||
parentFieldShowOnValue,
|
||||
validation,
|
||||
maxFieldLength,
|
||||
maxFieldLength
|
||||
} = props;
|
||||
const required = (value) =>
|
||||
value ? undefined : t("newappeal:is-required-label");
|
||||
@@ -792,7 +792,7 @@ export function DateFieldPicker(props) {
|
||||
form,
|
||||
formProps,
|
||||
parentFieldShowOnValue,
|
||||
validation,
|
||||
validation
|
||||
} = props;
|
||||
let dateStart = props.dateStart;
|
||||
let dateEnd = props.dateEnd;
|
||||
@@ -1053,7 +1053,7 @@ const RenderYesNo = ({
|
||||
{
|
||||
["documentCheckList_" +
|
||||
id]:
|
||||
custom.requiredDocumentLabel,
|
||||
custom.requiredDocumentLabel
|
||||
}
|
||||
))
|
||||
: delete docListObj[
|
||||
@@ -1090,7 +1090,7 @@ export function YesNofield(props) {
|
||||
formProps,
|
||||
validation,
|
||||
parentFieldShowOnValue,
|
||||
parentField,
|
||||
parentField
|
||||
} = props;
|
||||
const yesNo = router.locale == "cy" ? ["Ydw", "Na"] : ["Yes", "No"];
|
||||
const required = (value) => (value ? undefined : "Required");
|
||||
@@ -1236,7 +1236,7 @@ const RenderRadio = ({
|
||||
{
|
||||
["documentCheckList_" +
|
||||
id]:
|
||||
custom.requiredDocumentLabel,
|
||||
custom.requiredDocumentLabel
|
||||
}
|
||||
))
|
||||
: delete docListObj[
|
||||
@@ -1270,7 +1270,7 @@ export function Radiofield(props) {
|
||||
formProps,
|
||||
parentFieldShowOnValue,
|
||||
parentField,
|
||||
validation,
|
||||
validation
|
||||
} = props;
|
||||
|
||||
const router = useRouter();
|
||||
@@ -1461,7 +1461,7 @@ const RenderPickList = ({
|
||||
label,
|
||||
input,
|
||||
errorMsg,
|
||||
meta: { touched, error },
|
||||
meta: { touched, error }
|
||||
}) => {
|
||||
let { t } = useTranslation();
|
||||
|
||||
@@ -1469,7 +1469,7 @@ const RenderPickList = ({
|
||||
path:
|
||||
"$..value[?(@ && @.LogicalName=='" + datafieldname + "')]..Options",
|
||||
json: picklistData,
|
||||
eval: true,
|
||||
eval: true
|
||||
});
|
||||
dropdownObj = dropdownObj[0];
|
||||
|
||||
@@ -1549,7 +1549,7 @@ export function NumericField(props) {
|
||||
formProps,
|
||||
parentFieldShowOnValue,
|
||||
parentField,
|
||||
maxFieldLength,
|
||||
maxFieldLength
|
||||
} = props;
|
||||
|
||||
let { t } = useTranslation();
|
||||
@@ -1649,7 +1649,7 @@ export function NumericField(props) {
|
||||
validate={[
|
||||
required,
|
||||
isNumber,
|
||||
maxLength(props.maxFieldLength),
|
||||
maxLength(props.maxFieldLength)
|
||||
]}
|
||||
component={RenderTextfield}
|
||||
label={props.label}
|
||||
@@ -1670,7 +1670,7 @@ export function DecimalField(props) {
|
||||
formProps,
|
||||
parentFieldShowOnValue,
|
||||
parentField,
|
||||
maxFieldLength,
|
||||
maxFieldLength
|
||||
} = props;
|
||||
|
||||
let { t } = useTranslation();
|
||||
@@ -1868,7 +1868,7 @@ export const FieldsTranslations = (label) => {
|
||||
let formObj = jsonpath({
|
||||
path: "$['" + appealtypes + "']",
|
||||
json: fieldLookup,
|
||||
eval: true,
|
||||
eval: true
|
||||
});
|
||||
|
||||
let labelTrans =
|
||||
@@ -1876,7 +1876,7 @@ export const FieldsTranslations = (label) => {
|
||||
? jsonpath({
|
||||
path: '$..[?(@ && @.value=="' + label + '")].value_cy',
|
||||
json: formObj,
|
||||
eval: true,
|
||||
eval: true
|
||||
})[0]
|
||||
: label;
|
||||
|
||||
@@ -1895,7 +1895,7 @@ const PickListTranslations = (optionValue) => {
|
||||
? jsonpath({
|
||||
path: '$..[?(@ && @.value=="' + optionValue + '")].value_cy',
|
||||
json: pickListLookup,
|
||||
eval: true,
|
||||
eval: true
|
||||
})
|
||||
: optionValue;
|
||||
//console.log(optionTrans, optionValue);
|
||||
@@ -1948,19 +1948,19 @@ const baseStyle = {
|
||||
borderStyle: "dashed",
|
||||
backgroundColor: "#fafafa",
|
||||
color: "#bdbdbd",
|
||||
transition: "border .3s ease-in-out",
|
||||
transition: "border .3s ease-in-out"
|
||||
};
|
||||
|
||||
const activeStyle = {
|
||||
borderColor: "#2196f3",
|
||||
borderColor: "#2196f3"
|
||||
};
|
||||
|
||||
const acceptStyle = {
|
||||
borderColor: "#00e676",
|
||||
borderColor: "#00e676"
|
||||
};
|
||||
|
||||
const rejectStyle = {
|
||||
borderColor: "#ff1744",
|
||||
borderColor: "#ff1744"
|
||||
};
|
||||
|
||||
const RenderFileUpload = (field) => {
|
||||
@@ -1969,7 +1969,7 @@ const RenderFileUpload = (field) => {
|
||||
|
||||
const style = useMemo(
|
||||
() => ({
|
||||
...baseStyle,
|
||||
...baseStyle
|
||||
// ...(isDragActive ? activeStyle : {}),
|
||||
// ...(isDragAccept ? acceptStyle : {}),
|
||||
// ...(isDragReject ? rejectStyle : {}),
|
||||
@@ -2098,7 +2098,7 @@ const RenderFileUpload = (field) => {
|
||||
const blobList = jsonpath({
|
||||
path: "$..[?(@ && @.documentType=='" + field.documentTypeCode + "')]",
|
||||
json: filelistObj,
|
||||
eval: true,
|
||||
eval: true
|
||||
});
|
||||
//const blobList = filelistObj;
|
||||
|
||||
@@ -2175,7 +2175,7 @@ const RenderFileUpload = (field) => {
|
||||
setRejectedFiles([]); // Clear any previously rejected file errorsss
|
||||
};
|
||||
|
||||
const FILENAME_ALLOWED = /^[A-Za-z0-9 ._\-:()]+$/;
|
||||
const FILENAME_ALLOWED = /^[A-Za-z0-9 ._\-:()—]+$/;
|
||||
|
||||
const validateFilename = (file, t) => {
|
||||
const name = file.name;
|
||||
@@ -2186,7 +2186,7 @@ const RenderFileUpload = (field) => {
|
||||
code: "filename-invalid-chars",
|
||||
message: `${name} ${t(
|
||||
"newappeal:new-appeal-fileupload-file-error-invalid-filename-label"
|
||||
)}`,
|
||||
)}`
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2195,7 +2195,7 @@ const RenderFileUpload = (field) => {
|
||||
code: "filename-invalid-chars",
|
||||
message: `${name} ${t(
|
||||
"newappeal:new-appeal-fileupload-file-error-invalid-filename-label"
|
||||
)}`,
|
||||
)}`
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2205,7 +2205,7 @@ const RenderFileUpload = (field) => {
|
||||
code: "filename-invalid-chars",
|
||||
message: `${name} ${t(
|
||||
"newappeal:new-appeal-fileupload-file-error-invalid-filename-label"
|
||||
)}`,
|
||||
)}`
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2226,7 +2226,7 @@ const RenderFileUpload = (field) => {
|
||||
"image/jpeg": [".jpg", ".jpeg"],
|
||||
"image/png": [".png"],
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":
|
||||
[".xlsx"],
|
||||
[".xlsx"]
|
||||
}}
|
||||
validator={(file) => validateFilename(file, t)}
|
||||
onDrop={(acceptedFiles, fileRejections, e) => {
|
||||
@@ -2286,7 +2286,7 @@ const RenderFileUpload = (field) => {
|
||||
"undefined" &&
|
||||
buildAppealFilesArray.push({
|
||||
name: filesUploadObj[key].name,
|
||||
size: filesUploadObj[key].size,
|
||||
size: filesUploadObj[key].size
|
||||
});
|
||||
}
|
||||
|
||||
@@ -2312,14 +2312,14 @@ const RenderFileUpload = (field) => {
|
||||
);
|
||||
|
||||
Object.assign(values, {
|
||||
filesList: buildAppealFilesArray,
|
||||
filesList: buildAppealFilesArray
|
||||
});
|
||||
|
||||
// keep your existing server-side invalid handling
|
||||
if (data.invalidFiles?.length > 0) {
|
||||
setRejectedFiles((prev) => [
|
||||
...prev,
|
||||
...data.invalidFiles,
|
||||
...data.invalidFiles
|
||||
]);
|
||||
setUploadCountMessage(
|
||||
renamedAcceptedFiles.length -
|
||||
@@ -2378,14 +2378,14 @@ const RenderFileUpload = (field) => {
|
||||
{uploadCountMessage > 0 && completedUploadFiles == false && (
|
||||
<div className="govuk-body govuk-!-font-size-14">
|
||||
{t("home:uploading-files-label", {
|
||||
number: uploadCountMessage,
|
||||
number: uploadCountMessage
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
{completedUploadFiles > 0 && uploadCountMessage >= 0 && (
|
||||
<div className="govuk-body govuk-!-font-size-14">
|
||||
{t("home:completed-uploading-files-label", {
|
||||
number: uploadCountMessage,
|
||||
number: uploadCountMessage
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
@@ -2563,7 +2563,7 @@ const RenderSubFields = ({ fields, meta: { touched, error }, ...custom }) => {
|
||||
className="gouk-grid-row"
|
||||
style={{
|
||||
display: "flex",
|
||||
marginBottom: "20px",
|
||||
marginBottom: "20px"
|
||||
}}
|
||||
>
|
||||
<Field
|
||||
@@ -2657,7 +2657,7 @@ export const FieldArrayForm = (props) => {
|
||||
parentFieldShowOnValue,
|
||||
parentField,
|
||||
maxFieldLength,
|
||||
maxSubField,
|
||||
maxSubField
|
||||
} = props;
|
||||
|
||||
const dispatch = useDispatch(); // Get dispatch using useDispatch hook
|
||||
|
||||
Reference in New Issue
Block a user