'use client'; import * as React from 'react'; import { Calendar as CalendarIcon } from 'lucide-react'; import { format } from 'date-fns'; import { cn } from '@/lib/utils'; import { Button } from '@/components/ui/button'; import DatePickerLib from 'react-datepicker'; import 'react-datepicker/dist/react-datepicker.css'; interface DatePickerProps { date: Date | undefined; setDate: (date: Date | undefined) => void; label?: string; } export function DatePicker({ date, setDate, label }: DatePickerProps) { const [isOpen, setIsOpen] = React.useState(false); const wrapperRef = React.useRef(null); // Close calendar when clicking outside React.useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) { setIsOpen(false); } }; if (isOpen) { document.addEventListener('mousedown', handleClickOutside); } return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [isOpen]); return (
{label && ( )}
{isOpen && (
{ setDate(selectedDate || undefined); if (selectedDate) { setIsOpen(false); } }} minDate={new Date()} inline calendarClassName="!border-0" wrapperClassName="w-full" />
)}
); }