Skip to content

Commit 7e01984

Browse files
committed
fix(list-screen): enable search input with focus workaround
1 parent d19dde0 commit 7e01984

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

  • feature/list_screen/src/main/kotlin/de/davis/keygo/feature/list_screen/presentation/components

feature/list_screen/src/main/kotlin/de/davis/keygo/feature/list_screen/presentation/components/ListSearchTextField.kt

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,21 @@ import androidx.compose.material3.SearchBarState
1919
import androidx.compose.material3.SearchBarValue
2020
import androidx.compose.material3.Text
2121
import androidx.compose.runtime.Composable
22+
import androidx.compose.runtime.LaunchedEffect
2223
import androidx.compose.runtime.derivedStateOf
2324
import androidx.compose.runtime.getValue
25+
import androidx.compose.runtime.mutableStateOf
2426
import androidx.compose.runtime.remember
2527
import androidx.compose.runtime.rememberCoroutineScope
28+
import androidx.compose.runtime.setValue
2629
import androidx.compose.ui.Modifier
30+
import androidx.compose.ui.focus.focusProperties
2731
import androidx.compose.ui.res.stringResource
2832
import de.davis.keygo.feature.list_screen.R
2933
import de.davis.keygo.feature.list_screen.presentation.model.FilterBottomSheetState
3034
import de.davis.keygo.feature.list_screen.presentation.model.ListItemState
3135
import de.davis.keygo.feature.list_screen.presentation.selectedVaultIcon
36+
import kotlinx.coroutines.android.awaitFrame
3237
import kotlinx.coroutines.launch
3338

3439
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
@@ -43,6 +48,14 @@ internal fun ListSearchTextField(
4348
onVaultSelectorClick: () -> Unit,
4449
filterBottomSheetState: FilterBottomSheetState,
4550
) {
51+
// TODO: remove this workaround, when https://issuetracker.google.com/issues/433382598 is fixed
52+
// Workaround: https://issuetracker.google.com/issues/433382598#comment6
53+
var allowFocus by remember { mutableStateOf(false) }
54+
LaunchedEffect(Unit) {
55+
awaitFrame()
56+
allowFocus = true
57+
}
58+
4659
val scope = rememberCoroutineScope()
4760
SearchBarDefaults.InputField(
4861
textFieldState = searchTextFieldState,
@@ -51,8 +64,11 @@ internal fun ListSearchTextField(
5164
onSubmitQuery()
5265
scope.launch { searchBarState.animateToCollapsed() }
5366
},
54-
enabled = false, // TODO: remove when b/464761441 is fixed
55-
modifier = Modifier.fillMaxWidth(),
67+
modifier = Modifier
68+
.fillMaxWidth()
69+
.focusProperties {
70+
canFocus = allowFocus
71+
},
5672
leadingIcon = {
5773
AnimatedContent(
5874
targetState = !uiState.hasSearchQuery && searchBarState.targetValue == SearchBarValue.Collapsed

0 commit comments

Comments
 (0)