Jan
09/08/2023, 10:23 AMJan
09/08/2023, 10:23 AM@Composable
fun SubjectField(
subject: TextFieldValue,
onSubjectChange: (TextFieldValue) -> Unit,
isError: Boolean,
suggestions: List<String>
) {
var expandSuggestions by remember { mutableStateOf(false) }
ExposedDropdownMenuBox(expanded = expandSuggestions, onExpandedChange = { expandSuggestions = it }) {
ErrorOutlinedTextField(
modifier = Modifier.menuAnchor(),
value = subject,
onValueChange = { onSubjectChange(it); expandSuggestions = true },
label = { Text(stringResource(R.string.subject)) },
leadingIcon = { Icon(rememberTypeSpecimen(), contentDescription = null) },
singleLine = true,
errorDisplayDelay = 150.milliseconds,
displayError = isError && subject.text.isBlank()
)
ExposedDropdownMenu(
expanded = suggestions.isNotEmpty() && subject.text.isNotBlank() && expandSuggestions,
onDismissRequest = { expandSuggestions = false }
) {
suggestions.forEach {
DropdownMenuItem(
text = { Text(it) },
onClick = {
onSubjectChange(TextFieldValue(it, TextRange(it.length))); expandSuggestions =
false
},
contentPadding = ExposedDropdownMenuDefaults.ItemContentPadding
)
}
}
}
}