diff --git a/Sources/ElegantCalendar/Helpers/Models/CalendarConfiguration.swift b/Sources/ElegantCalendar/Helpers/Models/CalendarConfiguration.swift index 79e924c..2ffc2c5 100644 --- a/Sources/ElegantCalendar/Helpers/Models/CalendarConfiguration.swift +++ b/Sources/ElegantCalendar/Helpers/Models/CalendarConfiguration.swift @@ -6,13 +6,15 @@ public struct CalendarConfiguration: Equatable { public let calendar: Calendar public let ascending: Bool + public let allowHaptics: Bool public let startDate: Date public let endDate: Date public let themeColor: Color - public init(calendar: Calendar = .current, ascending: Bool = true, startDate: Date, endDate: Date, themeColor: Color) { + public init(calendar: Calendar = .current, ascending: Bool = true, allowHaptics: Bool = true, startDate: Date, endDate: Date, themeColor: Color) { self.calendar = calendar self.ascending = ascending + self.allowHaptics = allowHaptics self.startDate = startDate self.endDate = endDate self.themeColor = themeColor @@ -45,6 +47,10 @@ extension ConfigurationDirectAccess { configuration.calendar } + var allowHaptics: Bool { + configuration.allowHaptics + } + var startDate: Date { configuration.startDate } diff --git a/Sources/ElegantCalendar/Helpers/Models/ObservableObjects/MonthlyCalendarManager.swift b/Sources/ElegantCalendar/Helpers/Models/ObservableObjects/MonthlyCalendarManager.swift index 82f606e..b135fca 100644 --- a/Sources/ElegantCalendar/Helpers/Models/ObservableObjects/MonthlyCalendarManager.swift +++ b/Sources/ElegantCalendar/Helpers/Models/ObservableObjects/MonthlyCalendarManager.swift @@ -61,7 +61,7 @@ extension MonthlyCalendarManager: ElegantPagesDelegate { delegate?.calendar(willDisplayMonth: currentMonth) - if isHapticActive { + if allowHaptics && isHapticActive { UIImpactFeedbackGenerator.generateSelectionHaptic() } else { isHapticActive = true diff --git a/Sources/ElegantCalendar/Views/Monthly/DayView.swift b/Sources/ElegantCalendar/Views/Monthly/DayView.swift index 733ca14..2c1eaa7 100644 --- a/Sources/ElegantCalendar/Views/Monthly/DayView.swift +++ b/Sources/ElegantCalendar/Views/Monthly/DayView.swift @@ -80,9 +80,11 @@ struct DayView: View, MonthlyCalendarManagerDirectAccess { private func notifyManager() { guard isDayWithinDateRange else { return } - UIImpactFeedbackGenerator.generateSelectionHaptic() - if isDayToday || isDayWithinWeekMonthAndYear { + if configuration.allowHaptics { + UIImpactFeedbackGenerator.generateSelectionHaptic() + } + calendarManager.dayTapped(day: day) } }