Skip to content

Commit 6d970d0

Browse files
fix: improve date selection behavior in DateRangePicker (calcom#21438)
* fix: implement Airbnb-style date selection in DateRangePicker Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * fix: add behavior for clicking on start/end date in DateRangePicker Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: eunjae@cal.com <hey@eunjae.dev>
1 parent 41a6035 commit 6d970d0

1 file changed

Lines changed: 14 additions & 20 deletions

File tree

packages/ui/components/form/date-range-picker/DateRangePicker.tsx

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,22 @@ export function DatePickerWithRange({
4444
onDatesChange({ startDate, endDate });
4545
}
4646
} else {
47-
// for Limit Future Booking (no past dates)
48-
if (!dates.startDate || !dates.endDate) {
49-
onDatesChange({ startDate: date, endDate: date });
50-
} else {
51-
const startTime = dates.startDate.getTime();
52-
const endTime = dates.endDate.getTime();
53-
const clickedTime = date.getTime();
54-
55-
if (clickedTime === startTime || clickedTime === endTime) {
56-
onDatesChange({ startDate: date, endDate: date });
57-
} else if (clickedTime < startTime) {
58-
onDatesChange({ startDate: date, endDate: dates.endDate });
59-
} else if (clickedTime > endTime) {
47+
// for Limit Future Booking and other date range selections (no past dates)
48+
if (!dates.startDate) {
49+
onDatesChange({ startDate: date, endDate: undefined });
50+
} else if (!dates.endDate) {
51+
if (date < dates.startDate) {
52+
onDatesChange({ startDate: date, endDate: dates.startDate });
53+
} else {
6054
onDatesChange({ startDate: dates.startDate, endDate: date });
55+
}
56+
} else {
57+
if (date.getTime() === dates.startDate.getTime() || date.getTime() === dates.endDate.getTime()) {
58+
onDatesChange({ startDate: date, endDate: undefined });
59+
} else if (date < dates.startDate) {
60+
onDatesChange({ startDate: date, endDate: undefined });
6161
} else {
62-
const startDiff = clickedTime - startTime;
63-
const endDiff = endTime - clickedTime;
64-
if (startDiff < endDiff) {
65-
onDatesChange({ startDate: date, endDate: dates.endDate });
66-
} else {
67-
onDatesChange({ startDate: dates.startDate, endDate: date });
68-
}
62+
onDatesChange({ startDate: dates.startDate, endDate: date });
6963
}
7064
}
7165
}

0 commit comments

Comments
 (0)