i have a startDate
date picker and based on startDate
value i am updating date of endDate
date picker but with 3 months increament.
it works fine when i fist select future date. endDate
value updated correctly. but then when i select past date in startDate
date picker, endDate
picker value not update instead it shows red background color around date or sometimes around month. like below image. but when i open date picket correct date shown in endDate
picker
e.g first select 31 oct in start date , endDate will update corect, then select 15oct you will see endDate is not updated
this is sandbox to reproduce
this is my simple code
import "./styles.css";
import DatePicker from "react-date-picker";
import dayjs from "dayjs";
import { useState } from "react";
export default function App() {
const [startDate, setStateDate] = useState("");
const [endDate, setEndDate] = useState("");
const handleDate = (e) => {
const date = e.target.value;
setStateDate(date);
const endDate = dayjs(date).add(3, "months").toDate();
setEndDate(endDate);
};
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<div style={{display:"flex"}}>
startDate
<input
type="date"
onChange={handleDate}
style={{ marginBottom: "20px", display: "block" }}
/>
</div>
<div style={{display:"flex"}}>
EndDate
<DatePicker
format="dd/MM/yyyy"
// recurrence end date must be after the event start date
minDate={dayjs(startDate).add(1, "day").toDate()}
maxDate={dayjs(startDate).add(3, "months").toDate()}
value={endDate}
onChange={(e) => {
setEndDate(e);
}}
/>
</div>
</div>
);
}
2
Answers
You can modify your
handleDate
function to check if the new endDate falls within the valid range and adjust it if necessary.You just need to remove the
minDate
&maxDate
limit.