package com.taskttl.ui.components import androidx.compose.material3.DatePicker import androidx.compose.material3.DatePickerDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.rememberDatePickerState import androidx.compose.runtime.Composable import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone import kotlinx.datetime.toInstant import kotlinx.datetime.toLocalDateTime import org.jetbrains.compose.resources.stringResource import taskttl.composeapp.generated.resources.Res import taskttl.composeapp.generated.resources.cancel import taskttl.composeapp.generated.resources.confirm import kotlin.time.Clock import kotlin.time.ExperimentalTime import kotlin.time.Instant @OptIn(ExperimentalMaterial3Api::class, ExperimentalTime::class) @Composable fun CompactDatePickerDialog( show: Boolean, initialSelected: LocalDateTime?, onConfirm: (LocalDateTime) -> Unit, onDismiss: () -> Unit ) { if (!show) return val initialMillis = ( initialSelected?.toInstant(TimeZone.currentSystemDefault()) ?: Clock.System.now() ).toEpochMilliseconds() val state = rememberDatePickerState(initialSelectedDateMillis = initialMillis) DatePickerDialog( onDismissRequest = onDismiss, confirmButton = { TextButton( onClick = { val millis = state.selectedDateMillis if (millis != null) { val instant = Instant.fromEpochMilliseconds(millis) val selected = instant.toLocalDateTime(TimeZone.currentSystemDefault()) onConfirm(selected) } onDismiss() } ) { Text(stringResource(Res.string.confirm)) } }, dismissButton = { TextButton(onClick = onDismiss) { Text(stringResource(Res.string.cancel)) } } ) { DatePicker( state = state, headline = null, title = null, showModeToggle = false ) } }