added tenant fieldarray and date ranges
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { Field, reduxForm } from "redux-form";
|
||||
import { Field, reduxForm, FieldArray } from "redux-form";
|
||||
import { useRouter } from "next/router";
|
||||
import DatePicker, { registerLocale, setDefaultLocale } from "react-datepicker";
|
||||
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
||||
@@ -1736,3 +1736,94 @@ const RenderFileUpload = (field) => {
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
const renderField = ({ input, label, type, meta: { touched, error } }) => (
|
||||
<div>
|
||||
<label>{label}</label>
|
||||
<div>
|
||||
<input {...input} type={type} placeholder={label} />
|
||||
{touched && error && <span>{error}</span>}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
const renderSubFields = ({ fields }) => (
|
||||
<ul>
|
||||
<div>
|
||||
{fields.map((member, index) => (
|
||||
<div key={index}>
|
||||
<h4>Tenant #{index + 1}</h4>
|
||||
<div className="fieldArrayContainer">
|
||||
<Field
|
||||
id={`${member}.${fields.name}`}
|
||||
name={`${member}.${fields.name}`}
|
||||
type="text"
|
||||
component={RenderTextfield}
|
||||
label="Tenant Name"
|
||||
className="govuk-input govuk-input--width-10"
|
||||
/>
|
||||
<Field
|
||||
name={`${member}.dateserved`}
|
||||
type="text"
|
||||
component={RenderDatePicker}
|
||||
label="Date served notice"
|
||||
dateStart={"-6m"}
|
||||
dateEnd={"0"}
|
||||
className="govuk-input govuk-input--width-10"
|
||||
/>
|
||||
<button
|
||||
type="button"
|
||||
title="Remove tenant"
|
||||
onClick={() => fields.remove(index)}
|
||||
className="govuk-button fieldArrayDelete"
|
||||
>
|
||||
X
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
className="govuk-link fieldArrayLink"
|
||||
onClick={() => fields.push({})}
|
||||
>
|
||||
Add Tenant
|
||||
</button>
|
||||
</ul>
|
||||
);
|
||||
|
||||
export const FieldArrayForm = (props) => {
|
||||
const {
|
||||
name,
|
||||
label,
|
||||
validation,
|
||||
form,
|
||||
formProps,
|
||||
parentFieldShowOnValue,
|
||||
parentField,
|
||||
maxFieldLength,
|
||||
} = props;
|
||||
|
||||
var showIfHasParentShowValue =
|
||||
parentField != false &&
|
||||
!_.isEmpty(formProps[form]) &&
|
||||
_.has(formProps[form].values, parentField) &&
|
||||
parentFieldShowOnValue.indexOf(
|
||||
formProps[form].values[parentField].toString()
|
||||
) > -1;
|
||||
|
||||
(showIfHasParentShowValue == parentField) != false &&
|
||||
showIfHasParentShowValue;
|
||||
|
||||
parentFieldShowOnValue;
|
||||
const { handleSubmit, pristine, reset, submitting } = props;
|
||||
return (
|
||||
<>
|
||||
{" "}
|
||||
{showIfHasParentShowValue && (
|
||||
<FieldArray name={name} component={renderSubFields} />
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user