// react import React, { useState, useEffect } from "react"; // icons import { ChevronDown } from "lucide-react"; // react date-picker import DatePicker, { ReactDatePickerProps } from "react-datepicker"; // components import { WebViewModal } from "./web-view-modal"; import { SecondaryButton, PrimaryButton } from "components/ui"; // helpers import { renderDateFormat } from "helpers/date-time.helper"; interface Props extends ReactDatePickerProps { value: string | undefined; onChange: (value: any) => void; disabled?: boolean; renderAs?: "input" | "button"; error?: any; noBorder?: boolean; } export const DateSelector: React.FC = (props) => { const { value, onChange, disabled = false, renderAs = "button", noBorder = true, error, className, } = props; const [isOpen, setIsOpen] = useState(false); const [selectedDate, setSelectedDate] = useState(null); useEffect(() => { if (value) setSelectedDate(new Date(value)); }, [value]); useEffect(() => { if (!isOpen) return; if (value) setSelectedDate(new Date(value)); else setSelectedDate(new Date()); }, [isOpen, value]); return ( <> { setIsOpen(false); }} >
{ if (!val) setSelectedDate(null); else setSelectedDate(val); }} renderCustomHeader={({ date, decreaseMonth, increaseMonth, prevMonthButtonDisabled, nextMonthButtonDisabled, }) => (

{date.toLocaleString("default", { month: "long" })} {date.getFullYear()}

)} />
{ setIsOpen(false); onChange(null); setSelectedDate(null); }} className="w-full" > Clear { if (!selectedDate) onChange(null); else onChange(renderDateFormat(selectedDate)); setIsOpen(false); }} type="button" className="w-full" > Apply
); };