import { CalendarIcon } from "@/assets/icons"; import { cn } from "@/lib/utils"; import { Control, Controller, FieldValues, Path, RegisterOptions, } from "react-hook-form"; import MultiDatePicker, { DateObject } from "react-multi-date-picker"; import TimePicker from "react-multi-date-picker/plugins/time_picker"; interface IProps { control: Control; name: Path; label: string; placeholder?: string; required?: boolean; multiple?: boolean; range?: boolean; onlyMonthPicker?: boolean; onlyYearPicker?: boolean; minDate?: number; maxDate?: number; timePicker?: boolean; rules?: Omit< RegisterOptions>, "valueAsNumber" | "valueAsDate" | "setValueAs" | "disabled" >; } const DatePicker = ({ control, name, label, multiple = false, placeholder, required, range = false, timePicker = false, onlyMonthPicker = false, onlyYearPicker = false, rules, maxDate, minDate, }: IProps) => { return (
{ const error = errors[name]; return ( <>
] : [] } onlyYearPicker={onlyYearPicker} multiple={multiple} onChange={(date: DateObject | DateObject[] | null) => { if (!date) { return onChange(""); } if (Array.isArray(date)) { const unixTimestamps = date.map((d) => d.toUnix()); onChange(unixTimestamps); } else if (date instanceof DateObject) { onChange(date.isValid ? date.toUnix() : ""); } }} format={"YYYY/MM/DD"} containerClassName="w-full" inputClass={cn( "w-full rounded-lg border-[1.5px] border-stroke bg-transparent px-5.5 py-3 pl-12.5 text-dark outline-none transition focus:border-primary disabled:cursor-default disabled:bg-gray-2 dark:border-dark-3 dark:bg-dark-2 dark:text-white dark:focus:border-primary dark:disabled:bg-dark", error && "!border-red focus:!border-red dark:!border-red", )} placeholder={placeholder} />
{error && (

{error.message as string}

)} ); }} />
); }; export default DatePicker;