From a37bcada72a57e63e69d20398ea05ffbd37ab6af Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Fri, 6 Feb 2026 17:10:47 +0530 Subject: [PATCH] fix: recalculate navigation offset after URL date restore Arrow navigation was relative to current period instead of the restored range. Now recomputes monthOffset from the difference between restored dates and current period on URL restore. --- .../components/ui/DatePicker/DatePicker.vue | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/javascript/dashboard/components/ui/DatePicker/DatePicker.vue b/app/javascript/dashboard/components/ui/DatePicker/DatePicker.vue index d087cfc5c..e08398bdb 100644 --- a/app/javascript/dashboard/components/ui/DatePicker/DatePicker.vue +++ b/app/javascript/dashboard/components/ui/DatePicker/DatePicker.vue @@ -20,6 +20,7 @@ import { addMonths, isSameMonth, differenceInCalendarMonths, + differenceInCalendarWeeks, setMonth, setYear, getWeek, @@ -141,6 +142,26 @@ watch( endCurrentDate.value = isSameMonth(newDateRange[0], newDateRange[1]) ? startOfMonth(addMonths(newDateRange[1], 1)) : startOfMonth(newDateRange[1]); + + // Recalculate offset so arrow navigation is relative to restored range + if (isNavigableRange(selectedRange.value)) { + const current = getActiveDateRange( + selectedRange.value, + currentDate.value + ); + if (selectedRange.value === DATE_RANGE_TYPES.THIS_WEEK) { + monthOffset.value = differenceInCalendarWeeks( + newDateRange[0], + current.start, + { weekStartsOn: 1 } + ); + } else { + monthOffset.value = differenceInCalendarMonths( + newDateRange[0], + current.start + ); + } + } } }, { immediate: true }