This shows a date selector dialog. First day of week, labels, and style can be adjusted to your needs. Check out the composable and it's documentation in the code snipplet below. Generally following can be adjusted: * custom texts * custom first day of week * cel height of the calendar * optional next/previous month buttons #### Example ```kt if (state.visible) { // special state for date dialog val date = rememberDialogDate() // optional settings var setup = DialogDateDefaults.setup( dateCellHeight = 32.dp ) if (customSetup) { setup = DialogDateDefaults.setup( buttonToday = { enabled, onClick -> FilledIconButton(onClick = onClick, enabled = enabled) { Icon(Icons.Default.Today, null) } }, firstDayOfWeek = DayOfWeek.SUNDAY, dateCellHeight = 32.dp, showNextPreviousMonthButtons = false, showNextPreviousYearButtons = false, // formats are just defined as they are already by default, but you // see how you could simply change them... formatterWeekDayLabel = { defaultFormatterWeekDayLabel(it) }, formatterSelectedDate = { defaultFormatterSelectedDate(it) }, formatterSelectedMonth = { defaultFormatterSelectedMonth(it) }, formatterSelectedYear = { it.toString() }, formatterMonthSelectorList = { defaultFormatterSelectedMonthInSelectorList(it) }, formatterYearSelectorList = { it.toString() } ) } val dateRange = DialogDateDefaults.dateRange() DialogDate( state = state, date = date, setup = setup, dateRange = dateRange, icon = icon, title = { Text("Select Date") }, style = style, onEvent = { if (it is DialogEvent.Button && it.button == DialogButtonType.Positive) { showInfo("Selected Date: ${date.value}") } else { showInfo("Event $it") } } ) } ``` #### Composable ```kt /** * Shows a dialog with an input field * *   * * **Basic Parameters:** all params not described here are derived from [Dialog], check it out for more details * * @param date the selected date state * @param dateRange the supported [DialogDate.Range] - use [DialogDateDefaults.dateRange] to provide your own data * @param setup the [DialogDate.Setup] - use [DialogDateDefaults.setup] to provide your own data */ @OptIn(ExperimentalComposeUiApi::class) @Composable fun DialogDate( state: DialogState, // Custom - Required date: MutableState, // Custom - Optional dateRange: DialogDate.Range = DialogDateDefaults.dateRange(), setup: DialogDate.Setup = DialogDateDefaults.setup(), // Base Dialog - Optional title: (@Composable () -> Unit)? = null, icon: (@Composable () -> Unit)? = null, style: ComposeDialogStyle = DialogDefaults.defaultDialogStyle(), buttons: DialogButtons = DialogDefaults.buttons(), options: DialogOptions = DialogDefaults.options(), onEvent: (event: DialogEvent) -> Unit = {} ) ``` #### Screenshots | | | | |-|-|-------------------------------------------------------| | ![Screenshot](../screenshots/date/demo_calendar1.jpg) | ![Screenshot](../screenshots/date/demo_calendar2.jpg) | ![Screenshot](../screenshots/date/demo_calendar3.jpg) |