File tree Expand file tree Collapse file tree 4 files changed +24
-12
lines changed Expand file tree Collapse file tree 4 files changed +24
-12
lines changed Original file line number Diff line number Diff line change @@ -64,7 +64,7 @@ struct DemoCalendar: View {
64
64
OBCalendar ( years: years) { model, scrollProxy in
65
65
ZStack {
66
66
let day = model. day
67
- if day . dateType == . currentMonth {
67
+ if case . insideRange ( . currentMonth ) = model . day . dateType {
68
68
Text ( " \( day. day) " )
69
69
. foregroundColor (
70
70
selectedDate == day. date
@@ -78,8 +78,8 @@ struct DemoCalendar: View {
78
78
. frame ( width: 35 , height: 35 )
79
79
. background (
80
80
ContentBuilder . buildContent {
81
- if selectedDate == model. day. date
82
- && model . day . dateType == . currentMonth {
81
+ if selectedDate == model. day. date,
82
+ case . insideRange ( . currentMonth ) = model . day . dateType {
83
83
Circle ( )
84
84
. foregroundColor ( . green)
85
85
}
Original file line number Diff line number Diff line change @@ -25,17 +25,21 @@ public enum CalendarModel {
25
25
case previousMonth
26
26
case nextMonth
27
27
case currentMonth
28
- case outOfRange
28
+ }
29
+
30
+ public enum RangeType {
31
+ case outOfRange( DateType )
32
+ case insideRange( DateType )
29
33
}
30
34
31
35
public let day : Int
32
36
public let date : Date
33
- public let dateType : DateType
37
+ public let dateType : RangeType
34
38
}
35
39
}
36
40
37
41
extension Array where Element == CalendarModel . Year {
38
- mutating func appendDay( number: Int , date: Date , dateType: CalendarModel . Day . DateType ) {
42
+ mutating func appendDay( number: Int , date: Date , dateType: CalendarModel . Day . RangeType ) {
39
43
let lastMonths = self [ self . endIndex- 1 ] . months
40
44
self [ self . endIndex- 1 ]
41
45
. months [ lastMonths. endIndex- 1 ]
Original file line number Diff line number Diff line change @@ -117,7 +117,7 @@ public struct OBCalendar<
117
117
) { model, scrollProxy in
118
118
119
119
ZStack {
120
- if model . day . dateType == . currentMonth {
120
+ if case . insideRange ( . currentMonth ) = model . day . dateType {
121
121
Text ( " \( model. day. day) " )
122
122
} else {
123
123
placeholderView
Original file line number Diff line number Diff line change @@ -56,7 +56,7 @@ public enum CalendarModelBuilder {
56
56
result. appendDay (
57
57
number: currentDay,
58
58
date: currentDate,
59
- dateType: . currentMonth
59
+ dateType: . insideRange ( . currentMonth)
60
60
)
61
61
62
62
if let nextDay = calendar. date ( byAdding: . day, value: 1 , to: currentDate) {
@@ -118,8 +118,12 @@ extension CalendarModelBuilder {
118
118
number: calendar. component ( . day, from: dateToBeAdded) ,
119
119
date: dateToBeAdded,
120
120
dateType: dateToBeAdded < startingDate
121
- ? . outOfRange
122
- : . previousMonth
121
+ ? . outOfRange(
122
+ calendar. compare ( dateToBeAdded, to: startingDate, toGranularity: . month) == . orderedSame
123
+ ? . currentMonth
124
+ : . previousMonth
125
+ )
126
+ : . insideRange( . previousMonth)
123
127
)
124
128
}
125
129
}
@@ -151,8 +155,12 @@ extension CalendarModelBuilder {
151
155
number: number,
152
156
date: dateToBeAdded,
153
157
dateType: dateToBeAdded > endingDate
154
- ? . outOfRange
155
- : . nextMonth
158
+ ? . outOfRange(
159
+ calendar. compare ( dateToBeAdded, to: endingDate, toGranularity: . month) == . orderedSame
160
+ ? . currentMonth
161
+ : . nextMonth
162
+ )
163
+ : . insideRange( . nextMonth)
156
164
)
157
165
}
158
166
}
You can’t perform that action at this time.
0 commit comments