Date Picker
The date picker is an input field that allows you to select dates through textual input or interaction with a calendar options overlay.
| Type | Resource |
|---|---|
| Design | Figma |
| Mobile | Web Storybook |
| Code | Gitlab |

Usage
import id.co.biofarma.binduiandroid.components.datepicker.* var selectedDate by remember(config.initialDate) {
mutableStateOf(config.initialDate)
}
DateInput(
label = "Configured Date Picker",
value = selectedDate,
variant = TextInputVariant.OUTLINE,
dateFormat = "dd-MM-yyyy",
placeholder = "Select date",
disabled = false,
isRequired = true,
iconPosition = IconPosition.END,
onDateSelected = { date -> selectedDate = date },
datePickerParams = DatePickerParams(
confirmButtonText = "OK",
dismissButtonText = "Cancel",
selectableDates = when (config.dateFilter) {
"past" -> PresentPastSelectableDates()
"future" -> FutureSelectableDates()
"custom" -> ConfigurableSelectableDates(
minDate = LocalDate.now().minusDays(7),
maxDate = LocalDate.now().plusDays(7)
)
else -> DatePickerDefaults.AllDates
},
shape = config.radius?.let { RoundedCornerShape(it) } ?: RectangleShape
)
)Examples
selectableDates
Use selectableDates to determine allowed date range.

DateRangeInput
Use DateRangeInput to select date range.

dateFormat
Use dateFormat to determine date formatting.

Props
| Props | Required | Default | Type | Description |
|---|---|---|---|---|
| id | false | - | String | Unique identifier for date picker |
| variant | false | TextInputVariant.OUTLINE | TextInputVariant | Set variant of input |
| label | false | - | String | Set input label of date picker |
| value | false | - | LocalDate? | Used to bind value of selected date |
| placeholder | false | - | String | Set placeholer of input |
| helperText | false | - | String | Set helper text of input |
| errorText | false | - | String | Bind when date input error |
| disabled | false | false | Boolean | Toggle for enabling input |
| isError | false | false | Boolean | true when input is error |
| isRequired | false | false | Boolean | Determine if input is required |
| prefixAddsOn | false | - | String | Allows the addition of a prefix (like a currency symbol or an icon) at the beginning of the input field. |
| suffixAddsOn | false | null | @Composable (() -> Unit)? | Allows the addition of a suffix (like a unit or a button) at the end of the input field. |
| dateFormat | false | dd/MM/yyyy | String | Deterimine date formatting of input value |
| size | false | ComponentSize.MD | ComponentSize | Set size of input component |
| radius | false | ComponentRadius.MD | ComponentRadius | Set corner of input component |
| radius | false | ComponentRadius.MD | ComponentRadius | Set corner of input component |
| mode | false | ThemeMode.LIGHT | ThemeMode | Set theme to dark or light |
| style | false | Modifier | Modifier | Change style of component using modifier |
| datePickerParams | false | DatePickerParams() | DatePickerParams | Set date picker params |
| icon | false | { DefaultCalendarIcon(disabled = disabled) } | @Composable (() -> Unit)? | Set icon of date picker |
| iconPosition | false | IconPosition.END | IconPosition | Set icon position of date picker |
| onDateSelected | true | - | (LocalDate?) -> Unit | Callback when user selected date |