diff --git a/apps/tauri/src/lib/components/DateTimePicker.svelte b/apps/tauri/src/lib/components/DateTimePicker.svelte index 92d92cf..a86d791 100644 --- a/apps/tauri/src/lib/components/DateTimePicker.svelte +++ b/apps/tauri/src/lib/components/DateTimePicker.svelte @@ -50,23 +50,28 @@ function selectDay(day: number) { selectedDay = day; + selectedYear = viewYear; + selectedMonth = viewMonth; } function isToday(day: number): boolean { return `${viewYear}-${viewMonth + 1}-${day}` === todayStr; } + let selectedYear = $state(existing ? existing.getFullYear() : now.getFullYear()); + let selectedMonth = $state(existing ? existing.getMonth() : now.getMonth()); + function isSelected(day: number): boolean { - return selectedDay === day && (!value || (() => { - const v = new Date(value); - return v.getFullYear() === viewYear && v.getMonth() === viewMonth; - })()); + return selectedDay === day && selectedYear === viewYear && selectedMonth === viewMonth; } function done() { const h = includeTime ? selectedHour : 0; const m = includeTime ? selectedMinute : 0; - const iso = new Date(viewYear, viewMonth, selectedDay, h, m).toISOString(); + // Commit based on the last-selected year/month, not the currently-viewed + // ones — users can navigate months after selecting a day without + // accidentally shifting the chosen date to the viewed month. + const iso = new Date(selectedYear, selectedMonth, selectedDay, h, m).toISOString(); onchange(iso, includeTime); dismiss(); } @@ -129,9 +134,9 @@