https://github.com/darkokoa/compose-datetime-wheel-picker
Wheel Date & Time Picker in Compose Multiplatform
https://github.com/darkokoa/compose-datetime-wheel-picker
android compose compose-multiplatform compose-ui datetime-picker jetpack-compose kotiln kotlin-multiplatform
Last synced: 26 days ago
JSON representation
Wheel Date & Time Picker in Compose Multiplatform
- Host: GitHub
- URL: https://github.com/darkokoa/compose-datetime-wheel-picker
- Owner: darkokoa
- License: apache-2.0
- Created: 2024-02-03T14:56:38.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-09-02T17:12:22.000Z (about 1 month ago)
- Last Synced: 2025-09-02T19:07:54.248Z (about 1 month ago)
- Topics: android, compose, compose-multiplatform, compose-ui, datetime-picker, jetpack-compose, kotiln, kotlin-multiplatform
- Language: Kotlin
- Homepage:
- Size: 483 KB
- Stars: 184
- Watchers: 2
- Forks: 14
- Open Issues: 16
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
- mobile-awesome - compose_multiplatform_date_time_picker - Wheel Date & Time Picker in Compose Multiplatform. (Multiplatform / Android samples)
- awesome-list - darkokoa/compose-datetime-wheel-picker - Wheel Date & Time Picker in Compose Multiplatform (Kotlin)
README
# datetime-wheel-picker (work-in-progress 👷🔧️👷♀️⛏)
![badge-android][badge-android]
![badge-jvm][badge-jvm]
![badge-ios][badge-ios]
![badge-js][badge-js]
![badge-wasm][badge-wasm][Compose Multiplatform](https://www.jetbrains.com/compose-multiplatform/) datetime picker implementation featuring customizable wheel pickers for date, time, and datetime selection.
| Picker | Usage |
|--------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|
|| ```WheelDateTimePicker { snappedDateTime -> }``` |
|| ```WheelDatePicker { snappedDate -> }``` |
|| ```WheelTimePicker { snappedTime -> }``` |
|| ```WheelTimePicker(timeFormatter = timeFormatter(timeFormat = TimeFormat.AM_PM)) { snappedTime -> }``` |
## Features
```kotlin
WheelDateTimePicker(
startDateTime = LocalDateTime(
year = 2025,
month = 10,
day = 20,
hour = 5,
minute = 30
),
minDateTime = Clock.System
.now()
.toLocalDateTime(TimeZone.currentSystemDefault()),
maxDateTime = LocalDateTime(
year = 2025,
month = 10,
day = 20,
hour = 5,
minute = 30
),
dateFormatter = dateFormatter(
locale = Locale.current,
monthDisplayStyle = MonthDisplayStyle.SHORT,
cjkSuffixConfig = CjkSuffixConfig.HideAll
),
timeFormatter = timeFormatter(
timeFormat = TimeFormat.HOUR_24
),
size = DpSize(200.dp, 100.dp),
rowCount = 5,
textStyle = MaterialTheme.typography.titleSmall,
textColor = Color(0xFFffc300),
selectorProperties = WheelPickerDefaults.selectorProperties(
enabled = true,
shape = RoundedCornerShape(0.dp),
color = Color(0xFFf1faee).copy(alpha = 0.2f),
border = BorderStroke(2.dp, Color(0xFFf1faee))
)
) { snappedDateTime -> }
```
## Setup
datetime-wheel-picker has multiple active versions. The higher one uses the latest versions for Compose, while the others use only stable versions. Choose the one that matches your Compose version, considering this table:| Compose Version | datetime-wheel-picker Version |
|-----------------|:--------------------------------------------------------------------------------------------------------------------------------------:|
| Compose 1.7 | [![badge-version-compose1.7]](https://central.sonatype.com/artifact/io.github.darkokoa/datetime-wheel-picker/1.1.0-alpha05-compose1.7) |
| Compose 1.8 | [![badge-version-compose1.8]](https://central.sonatype.com/artifact/io.github.darkokoa/datetime-wheel-picker/1.1.0-alpha05-compose1.8) |
| Compose 1.9 | [![badge-version-compose1.9]](https://central.sonatype.com/artifact/io.github.darkokoa/datetime-wheel-picker/1.1.0-alpha05-compose1.9) |- Add the Maven Central repository if it is not already there:
```kotlin
repositories {
mavenCentral()
}
```- In Compose multiplatform projects, add a dependency to the commonMain source set dependencies:
```kotlin
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("io.github.darkokoa:datetime-wheel-picker:")
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.7.1")
}
}
}
}```
- To use the library in a single-platform project (such as Android project), add a dependency to the dependencies
block:```kotlin
dependencies {
implementation("io.github.darkokoa:datetime-wheel-picker:")
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.7.1")
}
```- If your minimum Android platform's API level (minSdk) < 26, please
enable [Desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring) like this:```kotlin
compileOptions {
isCoreLibraryDesugaringEnabled = true
}//...
dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
}
```## License
Released under the [Apache License, Version 2.0](https://opensource.org/license/apache-2-0).
## Thx
[WheelPickerCompose](https://github.com/commandiron/WheelPickerCompose)
[badge-version-compose1.7]: https://img.shields.io/maven-central/v/io.github.darkokoa/datetime-wheel-picker?versionSuffix=compose1.7&style=flat
[badge-version-compose1.8]: https://img.shields.io/maven-central/v/io.github.darkokoa/datetime-wheel-picker?versionSuffix=compose1.8&style=flat
[badge-version-compose1.9]: https://img.shields.io/maven-central/v/io.github.darkokoa/datetime-wheel-picker?versionSuffix=compose1.9&style=flat
[badge-android]: https://img.shields.io/badge/platform-android-6EDB8D.svg?style=flat
[badge-jvm]: https://img.shields.io/badge/platform-jvm-DB413D.svg?style=flat
[badge-ios]: https://img.shields.io/badge/platform-ios-CDCDCD.svg?style=flat
[badge-js]: https://img.shields.io/badge/platform-js-F8DB5D.svg?style=flat
[badge-wasm]: https://img.shields.io/badge/platform-wasm-654FF0.svg?style=flat