-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathGrapesDatePickerDialog.kt
58 lines (55 loc) · 1.87 KB
/
GrapesDatePickerDialog.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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 = { }
)
}
}