Skip to content

Commit 8404ea3

Browse files
committed
feat: date initializer for OBCalendar
1 parent 16a2b91 commit 8404ea3

File tree

2 files changed

+111
-51
lines changed

2 files changed

+111
-51
lines changed

Sources/OBCalendar/OBCalendar.swift

Lines changed: 3 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public struct OBCalendar<
3434
_ daysView: OBCollectionView<Day, CalendarModel.Day>
3535
) -> Month
3636

37-
@ViewBuilder
37+
@ViewBuilder
3838
let dayContent: (
3939
_ model: (
4040
year: CalendarModel.Year,
@@ -47,52 +47,6 @@ public struct OBCalendar<
4747
day: ScrollViewProxy?
4848
)
4949
) -> Day
50-
51-
init(
52-
years: [CalendarModel.Year],
53-
lazyYears: Bool = false,
54-
lazyMonths: Bool = false,
55-
lazyDays: Bool = false,
56-
57-
@ViewBuilder dayContent: @escaping (
58-
_ model: (
59-
year: CalendarModel.Year,
60-
month: CalendarModel.Month,
61-
day: CalendarModel.Day
62-
),
63-
_ scrollProxy: (
64-
year: ScrollViewProxy?,
65-
month: ScrollViewProxy?,
66-
day: ScrollViewProxy?
67-
)
68-
) -> Day,
69-
70-
@ViewBuilder monthContent: @escaping (
71-
_ model: (
72-
year: CalendarModel.Year,
73-
month: CalendarModel.Month
74-
),
75-
_ scrollProxy: (
76-
year: ScrollViewProxy?,
77-
month: ScrollViewProxy?
78-
),
79-
_ daysView: OBCollectionView<Day, CalendarModel.Day>
80-
) -> Month,
81-
82-
@ViewBuilder yearContent: @escaping (
83-
_ year: CalendarModel.Year,
84-
_ scrollProxy: ScrollViewProxy?,
85-
_ monthsView: OBCollectionView<Month, CalendarModel.Month>
86-
) -> Year
87-
) {
88-
self.years = years
89-
self.lazyYears = lazyYears
90-
self.lazyMonths = lazyMonths
91-
self.lazyDays = lazyDays
92-
self.yearContent = yearContent
93-
self.monthContent = monthContent
94-
self.dayContent = dayContent
95-
}
9650

9751
let dayGridItem: [GridItem] = [
9852
.init(spacing: .zero),
@@ -154,10 +108,8 @@ public struct OBCalendar<
154108
let placeholderView = Color.red
155109

156110
return OBCalendar(
157-
years: CalendarModelBuilder.defaultLayout(
158-
startingDate: startingDate,
159-
endingDate: endingDate
160-
)
111+
startingDate: startingDate,
112+
endingDate: endingDate
161113
) { model, scrollProxy in
162114

163115
ZStack {
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
//
2+
// OBCalendar+Init.swift
3+
//
4+
//
5+
// Created by Metin Tarık Kiki on 1.10.2024.
6+
//
7+
8+
import SwiftUI
9+
10+
extension OBCalendar {
11+
12+
//MARK: - Years array
13+
public init(
14+
years: [CalendarModel.Year],
15+
lazyYears: Bool = false,
16+
lazyMonths: Bool = false,
17+
lazyDays: Bool = false,
18+
19+
@ViewBuilder dayContent: @escaping (
20+
_ model: (
21+
year: CalendarModel.Year,
22+
month: CalendarModel.Month,
23+
day: CalendarModel.Day
24+
),
25+
_ scrollProxy: (
26+
year: ScrollViewProxy?,
27+
month: ScrollViewProxy?,
28+
day: ScrollViewProxy?
29+
)
30+
) -> Day,
31+
32+
@ViewBuilder monthContent: @escaping (
33+
_ model: (
34+
year: CalendarModel.Year,
35+
month: CalendarModel.Month
36+
),
37+
_ scrollProxy: (
38+
year: ScrollViewProxy?,
39+
month: ScrollViewProxy?
40+
),
41+
_ daysView: OBCollectionView<Day, CalendarModel.Day>
42+
) -> Month,
43+
44+
@ViewBuilder yearContent: @escaping (
45+
_ year: CalendarModel.Year,
46+
_ scrollProxy: ScrollViewProxy?,
47+
_ monthsView: OBCollectionView<Month, CalendarModel.Month>
48+
) -> Year
49+
) {
50+
self.years = years
51+
self.lazyYears = lazyYears
52+
self.lazyMonths = lazyMonths
53+
self.lazyDays = lazyDays
54+
self.yearContent = yearContent
55+
self.monthContent = monthContent
56+
self.dayContent = dayContent
57+
}
58+
59+
//MARK: - Start-end date
60+
public init(
61+
startingDate: Date,
62+
endingDate: Date,
63+
lazyYears: Bool = false,
64+
lazyMonths: Bool = false,
65+
lazyDays: Bool = false,
66+
@ViewBuilder dayContent: @escaping (
67+
_ model: (
68+
year: CalendarModel.Year,
69+
month: CalendarModel.Month,
70+
day: CalendarModel.Day
71+
),
72+
_ scrollProxy: (
73+
year: ScrollViewProxy?,
74+
month: ScrollViewProxy?,
75+
day: ScrollViewProxy?
76+
)
77+
) -> Day,
78+
79+
@ViewBuilder monthContent: @escaping (
80+
_ model: (
81+
year: CalendarModel.Year,
82+
month: CalendarModel.Month
83+
),
84+
_ scrollProxy: (
85+
year: ScrollViewProxy?,
86+
month: ScrollViewProxy?
87+
),
88+
_ daysView: OBCollectionView<Day, CalendarModel.Day>
89+
) -> Month,
90+
91+
@ViewBuilder yearContent: @escaping (
92+
_ year: CalendarModel.Year,
93+
_ scrollProxy: ScrollViewProxy?,
94+
_ monthsView: OBCollectionView<Month, CalendarModel.Month>
95+
) -> Year
96+
) {
97+
let years = CalendarModelBuilder.defaultLayout(startingDate: startingDate, endingDate: endingDate)
98+
self.init(
99+
years: years,
100+
lazyYears: lazyYears,
101+
lazyMonths: lazyMonths,
102+
lazyDays: lazyDays,
103+
dayContent: dayContent,
104+
monthContent: monthContent,
105+
yearContent: yearContent
106+
)
107+
}
108+
}

0 commit comments

Comments
 (0)