Swiftpack.co - AllanJuenemann/CalendarView as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by AllanJuenemann.
AllanJuenemann/CalendarView 1.0.4
UICalendarView for SwiftUI
⭐️ 28
🕓 14 weeks ago
iOS
.package(url: "https://github.com/AllanJuenemann/CalendarView.git", from: "1.0.4")

CalendarView

CalendarView makes UIKit's UICalendarView with all its features available to SwiftUI.

Please note that UICalendarView uses DateComponents rather than Date. CalendarView uses the same convention for consistency but might add support for Date in the future.

Usage

Displaying the calendar

import SwiftUI
import CalendarView

var body: some View {
  CalendarView()
}

Configuring the calendar

CalendarView uses the calendar, time zone and locale from the environment.

CalendarView()
  .environment(\.locale, .init(identifier: "de"))

The font design can be configured by using the fontDesign modifier.

CalendarView()
  .fontDesign(.serif)

You can also set the available date range.

CalendarView(availableDateRange: thisYear)

Updating visible components

You can set and update the current components (year, month) that should be visible in the calendar.

VStack {
  CalendarView(visibleDateComponents: $visibleComponents)
  
  Button("Today") {
    withAnimation {
      visibleComponents = calendar.dateComponents([.year, .month], from: .now)
    }
  }
}

Using decorations

Use the decorating modifier to specify which dates should be decorated.

CalendarView()
  .decorating(datesToDecorate)

Decorations can also be customized.

CalendarView()
  .decorating(datesToDecorate) { dateComponents in
    if dateComponents.day == specialDay {
      return .customView {
        Image(systemName: "star.fill")
          .foregroundColor(.yellow)
      }
    }

    return .default(color: .green, size: .small)
  }

Handling selections

CalendarView supports selections of single and multiple dates.

CalendarView(selection: $selectedDates)

You can also configure which dates are selectable and deselectable.

CalendarView(selection: $selectedDates)
  .selectable { dateComponents in
    dateComponents.day > 15
  }
  .deselectable { dateComponents in
    dateComponents.year == currentYear && dateComponents.month == currentMonth
  }

GitHub

link
Stars: 28
Last commit: 14 weeks ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

14 weeks ago

The modifier CalendarView.decorating now takes an Equatable parameter that can be monitored for changes. This fixes an issue where changes to the decoration closure didn't cause CalendarView to update.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics