From 84361d8e81461149e1179ec586112035758fcf1f Mon Sep 17 00:00:00 2001 From: Jean-Philippe <112860634+jpbarbaud@users.noreply.github.com> Date: Mon, 26 Feb 2024 17:33:15 +0100 Subject: [PATCH] Create GrapesDatePickerDialog --- .../calendar/GrapesDatePickerDialog.kt | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 library-compose/src/main/java/com/spendesk/grapes/compose/calendar/GrapesDatePickerDialog.kt diff --git a/library-compose/src/main/java/com/spendesk/grapes/compose/calendar/GrapesDatePickerDialog.kt b/library-compose/src/main/java/com/spendesk/grapes/compose/calendar/GrapesDatePickerDialog.kt new file mode 100644 index 00000000..5b7cc8b6 --- /dev/null +++ b/library-compose/src/main/java/com/spendesk/grapes/compose/calendar/GrapesDatePickerDialog.kt @@ -0,0 +1,58 @@ +package com.spendesk.grapes.compose.calendar + +import androidx.compose.material3.DatePickerColors +import androidx.compose.material3.DatePickerDialog +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.window.DialogProperties +import com.spendesk.grapes.compose.theme.GrapesTheme +import java.util.Date + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun GrapesDatePickerDialog( + initialDisplayedDate: Date, + onDateSelected: (selectedDate: Date) -> Unit, + modifier: Modifier = Modifier, + colors: DatePickerColors = GrapesDatePickerDefaults.colors(), + shape: Shape = GrapesTheme.shapes.shape2, + dismissOnBack: Boolean = true, + dismissOnClickOutside: Boolean = true, + confirmButton: @Composable () -> Unit = { }, + dismissButton: (@Composable () -> Unit)? = null, + onDismissRequest: (() -> Unit)? = null, +) { + DatePickerDialog( + modifier = modifier, + onDismissRequest = { onDismissRequest?.invoke() }, + confirmButton = confirmButton, + dismissButton = dismissButton, + colors = colors, + shape = shape, + properties = DialogProperties( + dismissOnBackPress = dismissOnBack, + dismissOnClickOutside = dismissOnClickOutside, + ), + content = { + GrapesDatePicker( + initialDisplayedDate = initialDisplayedDate, + onDateSelected = { date -> onDateSelected(date) } + ) + } + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Preview(showBackground = false) +@Composable +fun PreviewGrapesDatePickerDialog() { + GrapesTheme { + GrapesDatePickerDialog( + initialDisplayedDate = Date(), + onDateSelected = { } + ) + } +}