Highly configurable Kotlin Multiplatform Compose library where you can easily draw calendar picker for any platform you want: Android, iOS, Desktop or even Web!
We give you logic, you define UI with Composables!
Features:
Feature | Supported |
---|---|
Single month calendar view | ✅ |
Week calendar | ✅ |
Horizontal calendar | ✅ |
Customizable UI | ✅ |
Headers support | ✅ |
Calendar offsets | ✅ |
Single selection | ✅ |
Multiple selection | ✅ |
Month/Year picker | ✅ |
Scroll to date animation | ✅ |
Vertical calendar | ✅ |
Range selection | ✅ |
You can test Web version here: Web Demo It is builded sample app and distributed by Github Pages.
In Android project:
dependencies {
implementation 'io.github.wojciechosak:calendar:<latest-version>'
}
In Kotlin Multiplatform project:
commonMain.dependencies {
implementation 'io.github.wojciechosak:calendar:<latest-version>'
}
HorizontalCalendarView(startDate = startDate) { monthOffset ->
CalendarView(
config = rememberCalendarState(
startDate = startDate,
monthOffset = 0
),
day = { dayState ->
// define your day composable here!
}
)
}
Basic horizontal scrollable view:
HorizontalCalendarView(startDate = startDate) { monthOffset ->
CalendarView(
config = rememberCalendarState(
startDate = startDate,
monthOffset = monthOffset,
),
)
}
Documentation can be found here: docs.md
List of available views
Simply use in Compose any view you want:
View type | Preview |
---|---|
CalendarView | |
HorizontalView | |
VerticalView | |
WeekView | |
MonthPicker | |
YearPicker |
Each view get as parameter day cell composable. Thanks to that your calendar can look whatever you like:
Compose version | Library version |
---|---|
1.5.11 | 0.0.8-compose-1.5.11 |
1.6.1 | 0.0.9 |
1.6.10 | 1.0.0 |
1.6.10 | 1.0.1 |
In directory sample you can find bunch of examples. You can run Android/iOS application and test it yourself. Below you can find instruction how to run sample project on your computer.
Sample project
- check your system with KDoctor
- install JDK 17 on your machine
To run the application on android device/emulator:
- open project in Android Studio and run imported android run configuration
To build the application bundle:
- run
./gradlew :sample:composeApp:assembleDebug
- find
.apk
file insample/composeApp/build/outputs/apk/debug/composeApp-debug.apk
Run the desktop application: ./gradlew :sample:composeApp:run
To run the application on iPhone device/simulator:
- Open
iosApp/iosApp.xcproject
in Xcode and run standard configuration - In XCode open Build Phases -> Run Script -> paste script:
cd "$SRCROOT/../../"
./gradlew :sample:composeApp:embedAndSignAppleFrameworkForXcode
And build the project.
- After that you can use Kotlin Multiplatform Mobile plugin for Android Studio
Run the browser application: ./gradlew :sample:composeApp:jsBrowserDevelopmentRun