react-date-range icon indicating copy to clipboard operation
react-date-range copied to clipboard

Possible to put a limit to the range selection?

Open eitai opened this issue 1 year ago • 2 comments

Possible to put a limit to the range selection?

eitai avatar Aug 07 '23 13:08 eitai

yes. There is minDate and maxDate prop for it.

umakantp avatar Dec 29 '23 11:12 umakantp

You can achieve it with this workaround

  const [state, setState] = useState({ startDate: new Date(), endDate: new Date(), key: "your-key" });
  const [focusedRange, setFocusedRange] = useState([0, 0] as RangeFocus);
  const [selecting, setSelecting] = useState(false);

  // Selection limited min/max Dates
  const minDateLimit = addDays(state.startDate, -DAYS_LIMIT + 1)
  const maxDateLimit = addDays(state.startDate, DAYS_LIMIT - 1)

  const minDate = selecting ? minDateLimit : addDays(new Date(), -300)
  const maxDate = selecting ? maxDateLimit : addDays(new Date(), 900)

  const handleFocusChange = (newFocusedRange: RangeFocus) => {
    setFocusedRange(newFocusedRange);
    if (newFocusedRange[1] === 1) setSelecting(true);
    else setSelecting(false);
  };

return (
  <DateRange
    ranges={[state]}
    focusedRange={focusedRange}
    onRangeFocusChange={handleFocusChange}
    minDate={minDate}
    maxDate={maxDate}
    // *other props*
  />
);

I hope it helped :))

x-Foz3R-x avatar Feb 20 '24 19:02 x-Foz3R-x