hijabi-dashboard/src/Components/ValidationField/View/Date.tsx
KarimAldeen 469ab0f3b3 #33
2024-03-28 14:44:49 +03:00

52 lines
1.5 KiB
TypeScript

import { Form, DatePicker } from 'antd';
import React from 'react';
import useFormField from '../../../Hooks/useFormField';
import dayjs from 'dayjs';
const DateField = ({ name, label, picker = "date", isDisabled, props, onChange, placeholder, className, Format }: any) => {
const { errorMsg, isError, t, formik } = useFormField(name, props);
const onCalendarChange = (value: any) => {
formik.setFieldValue(name, value);
};
// Function to check if a date is valid
const isValidDate = (date: any) => {
return date && !isNaN(date.valueOf()) && dayjs(date).isValid();
};
// Set a default invalid date if the provided defaultValue is invalid
const getDefaultDate = () => {
const defaultValue = formik.values[name];
return isValidDate(defaultValue) ? defaultValue : null; // Set to null or any other default invalid date
};
return (
<div className='ValidationField'>
<label htmlFor={name} className="text">
{t(`${label ? label : name}`)}
</label>
<Form.Item
hasFeedback
validateStatus={isError ? "error" : ""}
help={isError ? errorMsg : ""}
>
<DatePicker
picker={picker}
placeholder={placeholder}
allowClear
className={`${className} w-100`}
defaultValue={getDefaultDate()}
size="large"
onChange={onChange || onCalendarChange}
disabled={isDisabled}
format={Format}
/>
</Form.Item>
</div>
);
}
export default DateField;