TP-42454 | Feedback template separation changes

This commit is contained in:
Aman Chaturvedi
2023-10-25 22:56:53 +05:30
parent 586db3afce
commit 770a8e1701
7 changed files with 2643 additions and 36 deletions

View File

@@ -57,9 +57,9 @@ const Submit: React.FC<ISubmit> = (props) => {
const sectionsArray = templateData.widget[visited].sections;
return (
<View>
<View key={visited}>
{sectionsArray?.map((section: string) => (
<View>
<View key={section}>
{sections?.[section]?.questions?.map((question: string) => {
const answer =
data.widgetContext[visited].sectionContext[section].questionContext[

View File

@@ -15,6 +15,7 @@ import {
BUSINESS_DATE_FORMAT,
DefaultPickerModeVisibleFormatMapping,
IDateTimePickerMode,
dateFormat,
} from '../../../../RN-UI-LIB/src/utlis/dates';
interface IDateInput {
@@ -42,7 +43,6 @@ const DateInput: React.FC<IDateInput> = (props) => {
}
const handleChange = (text: string, onChange: (...event: any[]) => void) => {
console.log('text', text);
addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.AV_FORM_ELEMENT_CHANGED, {
caseId,
questionType,
@@ -71,27 +71,42 @@ const DateInput: React.FC<IDateInput> = (props) => {
validate: (data) =>
validateInput(data, {
required: { ...question.metadata.validators?.required },
[Validators.PATTERN]: {
value:
/(^(((0[1-9]|1[0-9]|2[0-8])[-](0[1-9]|1[012]))|((29|30|31)[-](0[13578]|1[02]))|((29|30)[-](0[4,6,9]|11)))[-](19|[2-9][0-9])\d\d$)|(^29[-]02[-](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)/,
message: `Please enter correct date, in format of ${
DefaultPickerModeVisibleFormatMapping[IDateTimePickerMode.DATE]
}`,
},
[Validators.PATTERN]: question.metadata.validators?.required
? {
value:
/(^(((0[1-9]|1[0-9]|2[0-8])[-](0[1-9]|1[012]))|((29|30|31)[-](0[13578]|1[02]))|((29|30)[-](0[4,6,9]|11)))[-](19|[2-9][0-9])\d\d$)|(^29[-]02[-](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)/,
message: `Please enter correct date, in format of ${
DefaultPickerModeVisibleFormatMapping[IDateTimePickerMode.DATE]
}`,
}
: null,
[Validators.MAX_TODAY]: { ...question.metadata.validators?.[Validators.MAX_TODAY] },
[Validators.MIN_TODAY]: { ...question.metadata.validators?.[Validators.MIN_TODAY] },
}),
}}
render={({ field: { onChange } }) => (
<WebBasedDatePicker
displayFormat="DD-MM-YYYY"
min={new Date().toString()}
containerStyle={GenericStyles.containerStyle}
type="date"
onChange={(text) => handleChange(text, onChange)}
outputFormat="DD-MM-YYYY"
/>
)}
render={({ field: { onChange, value } }) => {
let dateString = value?.answer;
if (dateString) {
const parts = dateString.split('-');
const day = parts[0];
const month = parts[1];
const year = parts[2];
const date = new Date(`${year}-${month}-${day}`);
dateString = date.toString();
}
return (
<WebBasedDatePicker
displayFormat="DD-MM-YYYY"
value={question.metadata.defaultValue === 'CURRENT' ? Date().toString() : dateString}
min={new Date().toString()}
containerStyle={GenericStyles.containerStyle}
type="date"
onChange={(text) => handleChange(text, onChange)}
outputFormat="DD-MM-YYYY"
/>
);
}}
name={`widgetContext.${widgetId}.sectionContext.${props.sectionId}.questionContext.${questionId}`}
/>
<ErrorMessage

View File

@@ -65,6 +65,7 @@ const PhoneNumberSelection: React.FC<IPhoneNumberSelection> = (props) => {
{currentCase.phoneNumbers?.map((phoneNumber, index) => {
return (
<RNRadioButton
key={phoneNumber.number}
id={phoneNumber.number}
value={getPhoneNumberString(phoneNumber)}
containerStyle={GenericStyles.containerStyle}

View File

@@ -71,24 +71,30 @@ const TimeInput: React.FC<ITimeInput> = (props) => {
validate: (data) =>
validateInput(data, {
required: { ...question.metadata.validators?.required },
[Validators.PATTERN]: {
value: /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/,
message: `Please enter correct time, in format of ${
DefaultPickerModeVisibleFormatMapping[IDateTimePickerMode.TIME]
}`,
},
[Validators.PATTERN]: question.metadata.validators?.required
? {
value: /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/,
message: `Please enter correct time, in format of ${
DefaultPickerModeVisibleFormatMapping[IDateTimePickerMode.TIME]
}`,
}
: null,
}),
}}
render={({ field: { onChange, value } }) => (
<WebBasedDatePicker
value={value}
containerStyle={GenericStyles.containerStyle}
type="time"
onChange={(text) => {
handleChange(text, onChange);
}}
/>
)}
render={({ field: { onChange, value } }) => {
return (
<WebBasedDatePicker
value={
question.metadata.defaultValue === 'CURRENT' ? Date().toString() : value?.answer
}
containerStyle={GenericStyles.containerStyle}
type="time"
onChange={(text) => {
handleChange(text, onChange);
}}
/>
);
}}
name={`widgetContext.${widgetId}.sectionContext.${props.sectionId}.questionContext.${questionId}`}
/>
<ErrorMessage

View File

@@ -28,6 +28,9 @@ export function validateInput(data: { answer: any; type: string }, allRules: any
if (allRules) {
for (const ruleName of Object.keys(allRules)) {
const rule = allRules[ruleName];
if (!rule) {
continue;
}
if (ruleName === 'required' && rule.value) {
if (
data?.answer === null ||

2581
src/reducer/mockData.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -57,6 +57,7 @@ const ForeclosureBottomSheet: React.FC<IForeclosureBottomSheet> = ({
<Text style={[GenericStyles.fontSize13]}>Select payment date</Text>
<WebBasedDatePicker
type="date"
value={Date().toString()}
onChange={handleDateChange}
min={new Date().toString()}
outputFormat={ISO_DATE_FORMAT}