From ffb5fc1e1da15bd8a32d075040afac4fd5665d92 Mon Sep 17 00:00:00 2001 From: vicdotexe Date: Mon, 13 Jan 2025 14:12:01 -0800 Subject: [PATCH] fix: dont lock next-day drag behaviors --- src/components/Week.vue | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/components/Week.vue b/src/components/Week.vue index 62c3215..c1f8b92 100644 --- a/src/components/Week.vue +++ b/src/components/Week.vue @@ -315,7 +315,10 @@ function onMouseMove(mouseEvent: MouseEvent) { const newEndTime = addMinutes(initialState.endDate, minuteDelta); if (handle == "body") { - if (differenceInCalendarDays(newStartTime, initialState.startDate) > 0) { + if ( + differenceInCalendarDays(newStartTime, initialState.startDate) > 0 && + !isSameDay(newStartTime, getDateFromX(startX)) + ) { return; } @@ -334,13 +337,18 @@ function onMouseMove(mouseEvent: MouseEvent) { ? [anchor, newTime] : [newTime, anchor]; - let max = startOfDay(addDays(initialState.startDate, 1)); - max = addHours(max, props.hoursPastMidnight); + const mouseDownColumnDate = getDateFromX(startX); + let max = isSameDay(mouseDownColumnDate, initialState.endDate) + ? endOfDay(mouseDownColumnDate) + : startOfDay(addDays(initialState.startDate, 1)); + max = addHours(max, props.hoursPastMidnight); - if (!isSameDay(startDate, initialState.startDate) || - isAfter(endDate,max)) { - return; - } + if ( + !isSameDay(startDate, initialState.startDate) || + isAfter(endDate, max) + ) { + return; + } event.startDate = startDate; event.endDate = endDate;