Skip to content

Commit d6a00b7

Browse files
committed
fix: outOfRange logic for calendarModel
1 parent 87a255a commit d6a00b7

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

Sources/OBCalendar/Model/CalendarModel.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public enum CalendarModel {
2525
case previousMonth
2626
case nextMonth
2727
case currentMonth
28+
case outOfRange
2829
}
2930

3031
public let day: Int

Sources/OBCalendar/Utility/CalendarModelBuilder.swift

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public enum CalendarModelBuilder {
4848
calendar: calendar,
4949
totalWeekdayCount: weekdayCount,
5050
targetDate: currentDate,
51+
startingDate: startingDate,
5152
result: &result
5253
)
5354
}
@@ -62,11 +63,12 @@ public enum CalendarModelBuilder {
6263

6364
let isLastDayOfMonth = nextDay.isFirstDayOfMonth(calendar: calendar)
6465

65-
if isLastDayOfMonth {
66+
if isLastDayOfMonth || currentDate == endingDate {
6667
addEndingPlaceholder(
6768
calendar: calendar,
6869
totalWeekdayCount: weekdayCount,
6970
targetDate: currentDate,
71+
endingDate: endingDate,
7072
result: &result
7173
)
7274
}
@@ -100,6 +102,7 @@ extension CalendarModelBuilder {
100102
calendar: Calendar,
101103
totalWeekdayCount: Int,
102104
targetDate: Date,
105+
startingDate: Date,
103106
result: inout [CalendarModel.Year]
104107
) {
105108
let placeholderCount = getBeginningPlaceholderCount(
@@ -114,7 +117,9 @@ extension CalendarModelBuilder {
114117
result.appendDay(
115118
number: calendar.component(.day, from: dateToBeAdded),
116119
date: dateToBeAdded,
117-
dateType: .previousMonth
120+
dateType: dateToBeAdded < startingDate
121+
? .outOfRange
122+
: .previousMonth
118123
)
119124
}
120125
}
@@ -124,6 +129,7 @@ extension CalendarModelBuilder {
124129
calendar: Calendar,
125130
totalWeekdayCount: Int,
126131
targetDate: Date,
132+
endingDate: Date,
127133
result: inout [CalendarModel.Year]
128134
) {
129135
let placeholderCount = getEndingPlaceholderCount(
@@ -140,10 +146,13 @@ extension CalendarModelBuilder {
140146
} else {
141147
index
142148
}
149+
let dateToBeAdded = nextDate ?? Date()
143150
result.appendDay(
144151
number: number,
145-
date: nextDate ?? Date(),
146-
dateType: .nextMonth
152+
date: dateToBeAdded,
153+
dateType: dateToBeAdded > endingDate
154+
? .outOfRange
155+
: .nextMonth
147156
)
148157
}
149158
}

0 commit comments

Comments
 (0)