diff --git a/src/components/form/components/DateInput.tsx b/src/components/form/components/DateInput.tsx index 6656038d..371d8afc 100644 --- a/src/components/form/components/DateInput.tsx +++ b/src/components/form/components/DateInput.tsx @@ -13,10 +13,15 @@ import { AnswerType } from '../interface'; import WebBasedDatePicker from '../../../../RN-UI-LIB/src/components/WebBasedDatePicker'; import { BUSINESS_DATE_FORMAT, + CUSTOM_ISO_DATE_FORMAT, DefaultPickerModeVisibleFormatMapping, IDateTimePickerMode, + ISO_DATE_FORMAT, dateFormat, } from '../../../../RN-UI-LIB/src/utlis/dates'; +import dayjs, { Dayjs } from 'dayjs'; +import customParseFormat from 'dayjs/plugin/customParseFormat'; +dayjs.extend(customParseFormat); interface IDateInput { questionType: string; @@ -75,15 +80,13 @@ const DateInput: React.FC = (props) => { validate: (data) => validateInput(data, { required: { ...question.metadata.validators?.required }, - [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.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.MAX_TODAY]: { ...question.metadata.validators?.[Validators.MAX_TODAY] }, [Validators.MIN_TODAY]: { ...question.metadata.validators?.[Validators.MIN_TODAY] }, [Validators.MAX_DATE]: { ...question.metadata.validators?.[Validators.MAX_DATE] }, @@ -92,13 +95,9 @@ const DateInput: React.FC = (props) => { 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(); + dayjs(dateString, CUSTOM_ISO_DATE_FORMAT, true); + const parsedDate = dayjs(dateString, CUSTOM_ISO_DATE_FORMAT, true); + dateString = parsedDate.format(ISO_DATE_FORMAT); } return (