Skip to content

Commit 112afd0

Browse files
authored
Bugfix/callback (#5)
* updated elegantpages to fix bug with willdisplaymonth being called multiple times at calendar creation * fixed bug where a month wouldn't show if the end date was exactly the start of that month * updated the examples * lowered the swift tools version * updated the examples
1 parent 49ee3d2 commit 112afd0

16 files changed

Lines changed: 164 additions & 282 deletions

File tree

Example/Example.xcodeproj/project.pbxproj

Lines changed: 24 additions & 242 deletions
Large diffs are not rendered by default.

Example/Example.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Example/Example/Calendar with Accessory View/ExampleCalendarView.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Kevin Li - 11:47 AM - 6/13/20
22

3+
import ElegantCalendar
34
import SwiftUI
45

56
struct ExampleCalendarView: View {
@@ -10,15 +11,15 @@ struct ExampleCalendarView: View {
1011

1112
@State private var calendarTheme: CalendarTheme = .royalBlue
1213

13-
init(ascVisits: [Visit]) {
14+
init(ascVisits: [Visit], initialMonth: Date?) {
1415
let configuration = CalendarConfiguration(
1516
calendar: currentCalendar,
1617
startDate: ascVisits.first!.arrivalDate,
1718
endDate: ascVisits.last!.arrivalDate)
1819

1920
calendarManager = ElegantCalendarManager(
2021
configuration: configuration,
21-
initialMonth: .daysFromToday(30))
22+
initialMonth: initialMonth)
2223

2324
visitsByDay = Dictionary(
2425
grouping: ascVisits,
@@ -87,6 +88,6 @@ extension ExampleCalendarView: ElegantCalendarDelegate {
8788

8889
struct ExampleCalendarView_Previews: PreviewProvider {
8990
static var previews: some View {
90-
ExampleCalendarView(ascVisits: Visit.mocks(start: .daysFromToday(-365*2), end: .daysFromToday(365*2)))
91+
ExampleCalendarView(ascVisits: Visit.mocks(start: .daysFromToday(-365*2), end: .daysFromToday(365*2)), initialMonth: nil)
9192
}
9293
}

Example/Example/Calendar with Accessory View/Visit.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import SwiftUI
44

55
let currentCalendar = Calendar.current
6+
let screen = UIScreen.main.bounds
67

78
struct Visit {
89

@@ -99,3 +100,11 @@ fileprivate extension Color {
99100
}
100101

101102
}
103+
104+
fileprivate extension DateComponents {
105+
106+
static var everyDay: DateComponents {
107+
DateComponents(hour: 0, minute: 0, second: 0)
108+
}
109+
110+
}

Example/Example/ContentView.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,20 @@ struct ContentView: View {
99
// ExampleYearlyCalendarView(
1010
// ascVisits: Visit.mocks(
1111
// start: .daysFromToday(-30*36),
12-
// end: .daysFromToday(30*36)))
12+
// end: .daysFromToday(30*36)),
13+
// initialYear: .daysFromToday(365))
1314

1415
// ExampleMonthlyCalendarView(
1516
// ascVisits: Visit.mocks(
1617
// start: .daysFromToday(-30*36),
17-
// end: .daysFromToday(30*36)))
18+
// end: .daysFromToday(30*36)),
19+
// initialMonth: .daysFromToday(30))
1820

1921
ExampleCalendarView(
2022
ascVisits: Visit.mocks(
2123
start: .daysFromToday(-30*36),
22-
end: .daysFromToday(30*36)))
24+
end: .daysFromToday(30*36)),
25+
initialMonth: Date())
2326

2427
// ExampleSelectionView()
2528
}

Example/Example/Individual Views/ExampleMonthlyCalendarView.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Kevin Li - 5:51 PM - 6/14/20
22

3+
import ElegantCalendar
34
import SwiftUI
45

56
struct ExampleMonthlyCalendarView: View {
@@ -10,12 +11,12 @@ struct ExampleMonthlyCalendarView: View {
1011

1112
@State private var calendarTheme: CalendarTheme = .royalBlue
1213

13-
init(ascVisits: [Visit]) {
14+
init(ascVisits: [Visit], initialMonth: Date?) {
1415
let configuration = CalendarConfiguration(calendar: currentCalendar,
1516
startDate: ascVisits.first!.arrivalDate,
1617
endDate: ascVisits.last!.arrivalDate)
1718
calendarManager = MonthlyCalendarManager(configuration: configuration,
18-
initialMonth: .daysFromToday(30))
19+
initialMonth: initialMonth)
1920
visitsByDay = Dictionary(grouping: ascVisits, by: { currentCalendar.startOfDay(for: $0.arrivalDate) })
2021

2122
calendarManager.datasource = self
@@ -73,6 +74,6 @@ extension ExampleMonthlyCalendarView: MonthlyCalendarDelegate {
7374

7475
struct ExampleMonthlyCalendarView_Previews: PreviewProvider {
7576
static var previews: some View {
76-
ExampleYearlyCalendarView(ascVisits: Visit.mocks(start: .daysFromToday(-365*2), end: .daysFromToday(365*2)))
77+
ExampleYearlyCalendarView(ascVisits: Visit.mocks(start: .daysFromToday(-365*2), end: .daysFromToday(365*2)), initialYear: nil)
7778
}
7879
}

Example/Example/Individual Views/ExampleYearlyCalendarView.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Kevin Li - 4:49 PM - 6/14/20
22

3+
import ElegantCalendar
34
import SwiftUI
45

56
struct ExampleYearlyCalendarView: View {
@@ -10,12 +11,12 @@ struct ExampleYearlyCalendarView: View {
1011

1112
@State private var calendarTheme: CalendarTheme = .royalBlue
1213

13-
init(ascVisits: [Visit]) {
14+
init(ascVisits: [Visit], initialYear: Date?) {
1415
let configuration = CalendarConfiguration(calendar: currentCalendar,
1516
startDate: ascVisits.first!.arrivalDate,
1617
endDate: ascVisits.last!.arrivalDate)
1718
calendarManager = YearlyCalendarManager(configuration: configuration,
18-
initialYear: .daysFromToday(365))
19+
initialYear: initialYear)
1920
visitsByDay = Dictionary(grouping: ascVisits, by: { currentCalendar.startOfDay(for: $0.arrivalDate) })
2021

2122
calendarManager.delegate = self
@@ -53,6 +54,6 @@ extension ExampleYearlyCalendarView: YearlyCalendarDelegate {
5354

5455
struct ExampleYearlyCalendarView_Previews: PreviewProvider {
5556
static var previews: some View {
56-
ExampleYearlyCalendarView(ascVisits: Visit.mocks(start: .daysFromToday(-365*2), end: .daysFromToday(365*2)))
57+
ExampleYearlyCalendarView(ascVisits: Visit.mocks(start: .daysFromToday(-365*2), end: .daysFromToday(365*2)), initialYear: nil)
5758
}
5859
}

Example/Example/Selection and Exit/ExampleSelectionView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Kevin Li - 8:33 PM - 6/24/20
22

33
import ElegantPages
4+
import ElegantCalendar
45
import SwiftUI
56

67
fileprivate let turnAnimation: Animation = .spring(response: 0.4, dampingFraction: 0.95)

Example/Example/Shared/ChangeThemeButton.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Kevin Li - 7:42 PM - 7/14/20
22

3+
import ElegantCalendar
34
import SwiftUI
45

56
struct ChangeThemeButton: View {
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Kevin Li - 12:05 PM - 8/1/20
2+
3+
import Foundation
4+
5+
extension Date {
6+
7+
static func daysFromToday(_ days: Int) -> Date {
8+
Date().addingTimeInterval(TimeInterval(60*60*24*days))
9+
}
10+
11+
}
12+
13+
extension Date {
14+
15+
var fullDate: String {
16+
DateFormatter.fullDate.string(from: self)
17+
}
18+
19+
var timeOnlyWithPadding: String {
20+
DateFormatter.timeOnlyWithPadding.string(from: self)
21+
}
22+
23+
}
24+
25+
extension DateFormatter {
26+
27+
static var fullDate: DateFormatter {
28+
let formatter = DateFormatter()
29+
formatter.dateFormat = "EEEE, MMM d, yyyy"
30+
return formatter
31+
}
32+
33+
static let timeOnlyWithPadding: DateFormatter = {
34+
let formatter = DateFormatter()
35+
formatter.dateFormat = "h:mm a"
36+
return formatter
37+
}()
38+
39+
}

0 commit comments

Comments
 (0)