package de.timklge.karooheadwind.screens import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MenuAnchorType import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier data class DropdownOption(val id: String, val name: String) @OptIn(ExperimentalMaterial3Api::class) @Composable fun Dropdown(label: String, options: List, initialSelection: DropdownOption, onSelect: (selectedOption: DropdownOption) -> Unit) { var expanded by remember { mutableStateOf(false) } var selected by remember { mutableStateOf(initialSelection) } ExposedDropdownMenuBox( expanded = expanded, onExpandedChange = { expanded = it }, ) { OutlinedTextField( readOnly = true, value = selected.name, onValueChange = { }, modifier = Modifier.menuAnchor(MenuAnchorType.PrimaryEditable, true).fillMaxWidth(), label = { Text(label) }, trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon( expanded = expanded ) }, colors = ExposedDropdownMenuDefaults.textFieldColors() ) ExposedDropdownMenu( expanded = expanded, onDismissRequest = { expanded = false }, ) { options.forEach { option -> DropdownMenuItem( text = { Text(option.name, style = MaterialTheme.typography.bodyLarge) }, onClick = { selected = option expanded = false onSelect(selected) }, contentPadding = ExposedDropdownMenuDefaults.ItemContentPadding, ) } } } }