From 8e3f33f3a2ca4bb70ffa867667ad4c047091b8c5 Mon Sep 17 00:00:00 2001 From: NorcyChen Date: Sat, 18 Apr 2026 21:38:13 +0800 Subject: [PATCH] Fix showSixWeeks grid using aligned span instead of /6 heuristic Replace (daysBefore + monthLength) / 6 with week-aligned span check: extend by one week only when from.diffDays(to) + 1 < 42. Fixes extra 7th row (e.g. March 2026 with firstDay=1) and missing trailing next-month cells (e.g. May 2026 staying at 5 weeks). Made-with: Cursor --- src/dateutils.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/dateutils.ts b/src/dateutils.ts index 654cd39c0d..968b58b75b 100644 --- a/src/dateutils.ts +++ b/src/dateutils.ts @@ -136,7 +136,6 @@ export function page(date: XDate, firstDayOfWeek = 0, showSixWeeks = false) { firstDayOfWeek = firstDayOfWeek || 0; const from = days[0].clone(); - const daysBefore = from.getDay(); if (from.getDay() !== fdow) { from.addDays(-(from.getDay() + 7 - fdow) % 7); @@ -148,10 +147,11 @@ export function page(date: XDate, firstDayOfWeek = 0, showSixWeeks = false) { to.addDays((ldow + 7 - day) % 7); } - const daysForSixWeeks = (daysBefore + days.length) / 6 >= 6; - - if (showSixWeeks && !daysForSixWeeks) { - to.addDays(7); + if (showSixWeeks) { + const spanDays = from.diffDays(to) + 1; + if (spanDays < 42) { + to.addDays(7); + } } if (isLTE(from, days[0])) {