diff --git a/Sources/OBCalendar/OBCalendar.swift b/Sources/OBCalendar/OBCalendar.swift index 19db221..4574574 100644 --- a/Sources/OBCalendar/OBCalendar.swift +++ b/Sources/OBCalendar/OBCalendar.swift @@ -34,7 +34,7 @@ public struct OBCalendar< _ daysView: OBCollectionView ) -> Month - @ViewBuilder + @ViewBuilder let dayContent: ( _ model: ( year: CalendarModel.Year, @@ -47,52 +47,6 @@ public struct OBCalendar< day: ScrollViewProxy? ) ) -> Day - - init( - years: [CalendarModel.Year], - lazyYears: Bool = false, - lazyMonths: Bool = false, - lazyDays: Bool = false, - - @ViewBuilder dayContent: @escaping ( - _ model: ( - year: CalendarModel.Year, - month: CalendarModel.Month, - day: CalendarModel.Day - ), - _ scrollProxy: ( - year: ScrollViewProxy?, - month: ScrollViewProxy?, - day: ScrollViewProxy? - ) - ) -> Day, - - @ViewBuilder monthContent: @escaping ( - _ model: ( - year: CalendarModel.Year, - month: CalendarModel.Month - ), - _ scrollProxy: ( - year: ScrollViewProxy?, - month: ScrollViewProxy? - ), - _ daysView: OBCollectionView - ) -> Month, - - @ViewBuilder yearContent: @escaping ( - _ year: CalendarModel.Year, - _ scrollProxy: ScrollViewProxy?, - _ monthsView: OBCollectionView - ) -> Year - ) { - self.years = years - self.lazyYears = lazyYears - self.lazyMonths = lazyMonths - self.lazyDays = lazyDays - self.yearContent = yearContent - self.monthContent = monthContent - self.dayContent = dayContent - } let dayGridItem: [GridItem] = [ .init(spacing: .zero), @@ -154,10 +108,8 @@ public struct OBCalendar< let placeholderView = Color.red return OBCalendar( - years: CalendarModelBuilder.defaultLayout( - startingDate: startingDate, - endingDate: endingDate - ) + startingDate: startingDate, + endingDate: endingDate ) { model, scrollProxy in ZStack { diff --git a/Sources/OBCalendar/Utility/OBCalendar+Init.swift b/Sources/OBCalendar/Utility/OBCalendar+Init.swift new file mode 100644 index 0000000..377fe00 --- /dev/null +++ b/Sources/OBCalendar/Utility/OBCalendar+Init.swift @@ -0,0 +1,108 @@ +// +// OBCalendar+Init.swift +// +// +// Created by Metin Tarık Kiki on 1.10.2024. +// + +import SwiftUI + +extension OBCalendar { + + //MARK: - Years array + public init( + years: [CalendarModel.Year], + lazyYears: Bool = false, + lazyMonths: Bool = false, + lazyDays: Bool = false, + + @ViewBuilder dayContent: @escaping ( + _ model: ( + year: CalendarModel.Year, + month: CalendarModel.Month, + day: CalendarModel.Day + ), + _ scrollProxy: ( + year: ScrollViewProxy?, + month: ScrollViewProxy?, + day: ScrollViewProxy? + ) + ) -> Day, + + @ViewBuilder monthContent: @escaping ( + _ model: ( + year: CalendarModel.Year, + month: CalendarModel.Month + ), + _ scrollProxy: ( + year: ScrollViewProxy?, + month: ScrollViewProxy? + ), + _ daysView: OBCollectionView + ) -> Month, + + @ViewBuilder yearContent: @escaping ( + _ year: CalendarModel.Year, + _ scrollProxy: ScrollViewProxy?, + _ monthsView: OBCollectionView + ) -> Year + ) { + self.years = years + self.lazyYears = lazyYears + self.lazyMonths = lazyMonths + self.lazyDays = lazyDays + self.yearContent = yearContent + self.monthContent = monthContent + self.dayContent = dayContent + } + + //MARK: - Start-end date + public init( + startingDate: Date, + endingDate: Date, + lazyYears: Bool = false, + lazyMonths: Bool = false, + lazyDays: Bool = false, + @ViewBuilder dayContent: @escaping ( + _ model: ( + year: CalendarModel.Year, + month: CalendarModel.Month, + day: CalendarModel.Day + ), + _ scrollProxy: ( + year: ScrollViewProxy?, + month: ScrollViewProxy?, + day: ScrollViewProxy? + ) + ) -> Day, + + @ViewBuilder monthContent: @escaping ( + _ model: ( + year: CalendarModel.Year, + month: CalendarModel.Month + ), + _ scrollProxy: ( + year: ScrollViewProxy?, + month: ScrollViewProxy? + ), + _ daysView: OBCollectionView + ) -> Month, + + @ViewBuilder yearContent: @escaping ( + _ year: CalendarModel.Year, + _ scrollProxy: ScrollViewProxy?, + _ monthsView: OBCollectionView + ) -> Year + ) { + let years = CalendarModelBuilder.defaultLayout(startingDate: startingDate, endingDate: endingDate) + self.init( + years: years, + lazyYears: lazyYears, + lazyMonths: lazyMonths, + lazyDays: lazyDays, + dayContent: dayContent, + monthContent: monthContent, + yearContent: yearContent + ) + } +}