import { useState } from "react"; import { Box, Typography, Paper, Popover } from "@mui/material"; import { DateRange, Range, DateRangeProps } from "react-date-range"; import { format } from "date-fns"; import "react-date-range/dist/styles.css"; import "react-date-range/dist/theme/default.css"; import "./DateRangePicker.scss"; interface IDateRangePickerProps { value?: Range[]; onChange?: (ranges: Range[]) => void; } export const DateRangePicker = ({ value, onChange }: IDateRangePickerProps) => { const [internalRange, setInternalRange] = useState([ { startDate: new Date(), endDate: new Date(), key: "selection", }, ]); const [anchorEl, setAnchorEl] = useState(null); const range = value ?? internalRange; const handleSelect: DateRangeProps["onChange"] = ranges => { if (ranges.selection) { const newRange = [ranges.selection]; if (onChange) { onChange(newRange); } else { setInternalRange(newRange); } if (ranges.selection.endDate !== ranges.selection.startDate) { setAnchorEl(null); } } }; const handleClick = (event: React.MouseEvent) => { setAnchorEl(event.currentTarget); }; const handleClose = () => { setAnchorEl(null); }; const open = Boolean(anchorEl); const id = open ? "date-range-popover" : undefined; return ( {format(range[0].startDate ?? new Date(), "PPP")} -{" "} {format(range[0].endDate ?? new Date(), "PPP")} ); };