Fixed UnittoSearchBar

This commit is contained in:
Sad Ellie 2023-09-23 20:29:02 +03:00
parent 948791aff0
commit e04051950b

View File

@ -75,25 +75,20 @@ fun UnittoSearchBar(
var showSearchInput by remember { mutableStateOf(false) } var showSearchInput by remember { mutableStateOf(false) }
val focusRequester = remember { FocusRequester() } val focusRequester = remember { FocusRequester() }
fun stagedNavigateUp() { LaunchedEffect(showSearchInput) {
if (showSearchInput) { if (showSearchInput) focusRequester.requestFocus() else onQueryChange(TextFieldValue())
// Search text field is open, need to close it and clear search query }
showSearchInput = false
// focusManager.clearFocus()
onQueryChange(TextFieldValue())
} else {
// No search text field is shown, can go back as usual
navigateUp()
}
}
TopAppBar( BackHandler(showSearchInput) { showSearchInput = false }
Crossfade(
modifier = modifier, modifier = modifier,
title = { targetState = showSearchInput,
Crossfade(showSearchInput, label = "Search input") { showSearch -> label = "Search input"
if (showSearch) { ) { showSearch ->
LaunchedEffect(Unit) { focusRequester.requestFocus() } if (showSearch) {
TopAppBar(
title = {
SearchTextField( SearchTextField(
modifier = Modifier modifier = Modifier
.focusRequester(focusRequester) .focusRequester(focusRequester)
@ -103,36 +98,42 @@ fun UnittoSearchBar(
onValueChange = onQueryChange, onValueChange = onQueryChange,
onSearch = {} onSearch = {}
) )
} else { },
navigationIcon = {
NavigateUpButton { showSearchInput = false }
},
actions = {
Row(verticalAlignment = Alignment.CenterVertically) {
ClearButton(visible = query.text.isNotEmpty()) { onQueryChange(TextFieldValue()) }
searchActions()
}
},
scrollBehavior = scrollBehavior,
colors = colors,
)
} else {
TopAppBar(
title = {
Text( Text(
text = title, text = title,
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
style = MaterialTheme.typography.titleLarge style = MaterialTheme.typography.titleLarge
) )
} },
} navigationIcon = {
}, NavigateUpButton { navigateUp() }
navigationIcon = { },
NavigateUpButton { stagedNavigateUp() } actions = {
}, Row(verticalAlignment = Alignment.CenterVertically) {
actions = {
Crossfade(showSearchInput, label = "Search unit") { showSearch ->
Row(verticalAlignment = Alignment.CenterVertically) {
if (showSearch) {
ClearButton(visible = query.text.isNotEmpty()) { onQueryChange(TextFieldValue()) }
searchActions()
} else {
SearchButton { showSearchInput = true } SearchButton { showSearchInput = true }
noSearchActions() noSearchActions()
} }
} },
} scrollBehavior = scrollBehavior,
}, colors = colors,
scrollBehavior = scrollBehavior, )
colors = colors, }
) }
BackHandler { stagedNavigateUp() }
} }
@Composable @Composable