diff --git a/app/src/main/kotlin/androidx/compose/material3/SearchBar2.kt b/app/src/main/kotlin/androidx/compose/material3/SearchBar2.kt index 334fa1c6a..56e6a5df0 100644 --- a/app/src/main/kotlin/androidx/compose/material3/SearchBar2.kt +++ b/app/src/main/kotlin/androidx/compose/material3/SearchBar2.kt @@ -149,6 +149,7 @@ fun SearchBar( onActiveChange: (Boolean) -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, + title: @Composable (() -> Unit)? = null, placeholder: @Composable (() -> Unit)? = null, leadingIcon: @Composable (() -> Unit)? = null, trailingIcon: @Composable (() -> Unit)? = null, @@ -277,6 +278,7 @@ fun SearchBar( onActiveChange = onActiveChange, modifier = Modifier.padding(paddingValues = animatedInputFieldPadding), enabled = enabled, + label = title.takeUnless { active || animationProgress.value > 0 || state.text.isNotEmpty() }, placeholder = placeholder, leadingIcon = leadingIcon, trailingIcon = trailingIcon, @@ -387,6 +389,7 @@ private fun SearchBarInputField( onActiveChange: (Boolean) -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, + label: @Composable (() -> Unit)? = null, placeholder: @Composable (() -> Unit)? = null, leadingIcon: @Composable (() -> Unit)? = null, trailingIcon: @Composable (() -> Unit)? = null, @@ -427,6 +430,7 @@ private fun SearchBarInputField( singleLine = true, visualTransformation = VisualTransformation.None, interactionSource = interactionSource, + label = label, placeholder = placeholder, leadingIcon = leadingIcon?.let { leading -> { diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt index c1a847b72..6b67af60a 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt @@ -105,8 +105,9 @@ suspend fun SearchDao.suggestions(prefix: String, limit: Int) = @Composable fun SearchBarScreen( + title: String? = null, searchFieldState: TextFieldState, - searchFieldHint: String = "", + searchFieldHint: String? = null, showSearchFab: Boolean = false, onApplySearch: (String) -> Unit, onSearchExpanded: () -> Unit, @@ -249,7 +250,8 @@ fun SearchBarScreen( } active = it }, - placeholder = { Text(searchFieldHint) }, + title = title?.let { { Text(it) } }, + placeholder = searchFieldHint?.let { { Text(it) } }, leadingIcon = { if (active) { IconButton(onClick = { hideSearchView() }) { @@ -327,7 +329,8 @@ abstract class SearchBarScene : BaseScene() { private val searchFieldState = TextFieldState() private var mSuggestionProvider: SuggestionProvider? = null private var onApplySearch: (String) -> Unit = {} - private var searchFieldHint by mutableStateOf("") + private var searchFieldHint by mutableStateOf(null) + private var searchBarTitle by mutableStateOf(null) var showSearchFab by mutableStateOf(false) protected abstract val fabLayout: View @@ -350,6 +353,7 @@ abstract class SearchBarScene : BaseScene() { val fabPadding = with(density) { 16.dp.roundToPx() } val margin = with(density) { 8.dp.roundToPx() } SearchBarScreen( + title = searchBarTitle, searchFieldState = searchFieldState, searchFieldHint = searchFieldHint, showSearchFab = showSearchFab, @@ -452,7 +456,7 @@ abstract class SearchBarScene : BaseScene() { open fun onSearchViewHidden() {} fun setTitle(title: String?) { - // TODO + searchBarTitle = title } fun setSearchBarText(text: String?) { @@ -464,7 +468,7 @@ abstract class SearchBarScene : BaseScene() { } fun setSearchBarHint(hint: String?) { - searchFieldHint = hint.orEmpty() + searchFieldHint = hint } fun setOnApplySearch(lambda: (String) -> Unit) {