Skip to content

Commit 9b42b6e

Browse files
fix: double months on web + wrong layout when range was last day or first day
1 parent a5c8703 commit 9b42b6e

File tree

3 files changed

+33
-24
lines changed

3 files changed

+33
-24
lines changed

src/Date/Calendar.tsx

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -117,26 +117,24 @@ function Calendar(props: CalendarSingleProps | CalendarRangeProps) {
117117
<Swiper
118118
selectedYear={selectedYear}
119119
scrollMode={scrollMode}
120-
renderItem={({ index }) => {
121-
return (
122-
<Month
123-
mode={mode}
124-
key={index}
125-
index={index}
126-
startDate={startDate}
127-
endDate={endDate}
128-
date={date}
129-
onPressYear={onPressYear}
130-
selectedYear={selectedYear}
131-
selectingYear={selectingYear}
132-
onPressDate={onPressDate}
133-
scrollMode={scrollMode}
134-
primaryColor={theme.colors.primary}
135-
selectColor={selectColor}
136-
roundness={theme.roundness}
137-
/>
138-
)
139-
}}
120+
renderItem={({ index }) => (
121+
<Month
122+
mode={mode}
123+
key={index}
124+
index={index}
125+
startDate={startDate}
126+
endDate={endDate}
127+
date={date}
128+
onPressYear={onPressYear}
129+
selectedYear={selectedYear}
130+
selectingYear={selectingYear}
131+
onPressDate={onPressDate}
132+
scrollMode={scrollMode}
133+
primaryColor={theme.colors.primary}
134+
selectColor={selectColor}
135+
roundness={theme.roundness}
136+
/>
137+
)}
140138
renderHeader={({ onPrev, onNext }) => (
141139
<CalendarHeader
142140
onPrev={onPrev}

src/Date/Month.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,9 @@ function Month({
143143
})
144144
: false
145145

146-
let leftCrop: boolean = selectedStartDay || dayOfMonth === 1
147-
let rightCrop: boolean = selectedEndDay || dayOfMonth === daysInMonth
146+
let leftCrop: boolean = selectedStartDay || dayOfMonth === 0
147+
let rightCrop: boolean =
148+
selectedEndDay || dayOfMonth - 1 === daysInMonth
148149

149150
if (dayIndex === 0 && !selectedStartDay) {
150151
leftCrop = false

src/Date/dateUtils.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,18 @@ export function dateToUnix(d: Date): number {
33
}
44

55
export function addMonths(date: Date, count: number) {
6-
const dt = new Date(date.getFullYear(), date.getMonth(), 0)
7-
return new Date(dt.setMonth(dt.getMonth() + count))
6+
let n = date.getDate()
7+
let n2 = new Date(date.getTime())
8+
n2.setDate(1)
9+
n2.setMonth(n2.getMonth() + count)
10+
n2.setDate(
11+
Math.min(
12+
n,
13+
getDaysInMonth({ year: n2.getFullYear(), month: n2.getMonth() })
14+
)
15+
)
16+
17+
return n2
818
}
919

1020
// https://stackoverflow.com/a/1185068/2508481

0 commit comments

Comments
 (0)