diff --git a/components/elements/index.js b/components/elements/index.js index e0270579..1a120f29 100644 --- a/components/elements/index.js +++ b/components/elements/index.js @@ -70,6 +70,7 @@ const RenderTextfield = ({ : 100 : 200 } + // pattern={custom.hasOwnProperty("pattern") && custom.pattern} /> > @@ -1303,10 +1304,20 @@ export function NumericField(props) { formProps, parentFieldShowOnValue, parentField, + maxFieldLength, } = props; const required = (value) => { return value || value == 0 ? undefined : "Is required"; }; + const isNumber = (value) => { + const regex = /^\d*\.?\d{0,1}$/; + return regex.test(value) ? undefined : "Should be a number or decimal"; + }; + + const maxLength = (max) => (value) => + value && value.length > max + ? `Must be ${max} characters or less` + : undefined; //parentFieldShowOnValue var showIfHasParentShowValue = @@ -1350,7 +1361,7 @@ export function NumericField(props) { name={props.name} id={props.name} type="number" - className="govuk-input govuk-input--width-20" + className="govuk-input govuk-input--width-20 wwwww" spellCheck="false" aria-describedby={name} pattern="[0-9]*" @@ -1360,6 +1371,22 @@ export function NumericField(props) { component={RenderTextfield} label={label} normalize={(value) => parseInt(value)} + + // name={props.name} + // id={props.name} + // // component="input" + // type="text" + // className="govuk-input govuk-input--width-20 wwww" + // aria-describedby={name} + // pattern="^\d*(\.\d{0,2})?$" + // validate={[ + // required, + // isNumber, + // maxLength(props.maxFieldLength), + // ]} + // component={RenderTextfield} + // label={props.label} + // maxFieldLength={props.maxFieldLength} /> )} @@ -1380,6 +1407,16 @@ export function DecimalField(props) { } = props; const required = (value) => (value ? undefined : "Is required"); + const isNumber = (value) => { + const regex = /^\d*\.?\d{0,1}$/; + return regex.test(value) ? undefined : "Should be a number or decimal"; + }; + + const maxLength = (max) => (value) => + value && value.length > max + ? `Must be ${max} characters or less` + : undefined; + //parentFieldShowOnValue var showIfHasParentShowValue = parentField != false && @@ -1427,12 +1464,17 @@ export function DecimalField(props) { className="govuk-input govuk-input--width-10" spellCheck="false" aria-describedby={name} - pattern="[0-9]*" + pattern="^\d*(\.\d{0,2})?$" inputMode="numeric" parse={Number} - validate={eval(validation)} + validate={[ + required, + isNumber, + maxLength(props.maxFieldLength), + ]} component={RenderTextfield} label={props.label} + maxFieldLength={props.maxFieldLength} /> )} @@ -1858,33 +1900,43 @@ const renderField = ({ input, label, type, meta: { touched, error } }) => ( const RenderSubFields = ({ fields }) => { let { t } = useTranslation(); + + let subTitle = fields.name.split("pinswg_")[1]; + return (
- {t("newappeal:new-appeal-complete-paragraph-3")}::
+ {t("newappeal:new-appeal-complete-paragraph-3")}:
{t("home:login-contact-email")}
diff --git a/components/pdftemplates/planningappeals78_pdf.js b/components/pdftemplates/planningappeals78_pdf.js
index 9ec3f81a..19875061 100644
--- a/components/pdftemplates/planningappeals78_pdf.js
+++ b/components/pdftemplates/planningappeals78_pdf.js
@@ -108,9 +108,9 @@ export const planningappeals78_pdf = ({ docProps, pickListData }) => {
}
let values = docProps;
- let datestr = values.pinswg_name.split("-");
- let signedDate = datestr[2] + "/" + datestr[1] + "/" + datestr[0];
- let appealTypeValue = getFormCollectionByID(values.pinswg_appealcasetype);
+ // let datestr = values.pinswg_name.split("-");
+ // let signedDate = datestr[2] + "/" + datestr[1] + "/" + datestr[0];
+ // let appealTypeValue = getFormCollectionByID(values.pinswg_appealcasetype);
var path = require("path");
const configDirectory = path.resolve(process.cwd(), "data/formsxml");
diff --git a/data/formsxml/planningappeals78.xml b/data/formsxml/planningappeals78.xml
index dd795819..a34c1a2f 100644
--- a/data/formsxml/planningappeals78.xml
+++ b/data/formsxml/planningappeals78.xml
@@ -144,6 +144,14 @@