commit 7024be5d788f3044b7b7d2534e26c586f78af31b
parent 3aebb6379edcbff17a326efe55a49aedeb54f9b8
Author: Harrison Oglesby <oglesby.harrison@gmail.com>
Date: Mon, 3 Nov 2025 22:03:52 +0000
Bug 1994285 - Change divider and hint text for Settings Search bar. Fix Landscape padding. r=android-reviewers,android-l10n-reviewers,delphine,petru
Differential Revision: https://phabricator.services.mozilla.com/D269687
Diffstat:
4 files changed, 42 insertions(+), 26 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchBar.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchBar.kt
@@ -6,7 +6,7 @@ package org.mozilla.fenix.settings.settingssearch
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.height
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.TopAppBar
@@ -16,11 +16,13 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import mozilla.components.compose.base.button.IconButton
import mozilla.components.compose.base.textfield.TextField
+import mozilla.components.compose.base.textfield.TextFieldColors
import mozilla.components.lib.state.ext.observeAsComposableState
import org.mozilla.fenix.R
import org.mozilla.fenix.theme.FirefoxTheme
@@ -42,6 +44,8 @@ fun SettingsSearchBar(
var searchQuery by remember { mutableStateOf(state.searchQuery) }
TopAppBar(
+ modifier = Modifier
+ .height(72.dp),
title = {
TextField(
value = searchQuery,
@@ -50,11 +54,15 @@ fun SettingsSearchBar(
store.dispatch(SettingsSearchAction.SearchQueryUpdated(value))
},
modifier = Modifier
- .fillMaxWidth()
- .padding(end = 8.dp),
+ .fillMaxWidth(),
placeholder = stringResource(R.string.settings_search_title),
singleLine = true,
errorText = stringResource(R.string.settings_search_error_message),
+ colors = TextFieldColors.default(
+ focusedIndicatorColor = Color.Transparent,
+ unfocusedIndicatorColor = Color.Transparent,
+ errorIndicatorColor = Color.Transparent,
+ ),
trailingIcons = {
when (state) {
is SettingsSearchState.SearchInProgress,
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchScreen.kt
@@ -5,6 +5,7 @@
package org.mozilla.fenix.settings.settingssearch
import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
@@ -13,6 +14,7 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
+import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
@@ -36,24 +38,31 @@ fun SettingsSearchScreen(
val state by store.observeAsComposableState { it }
Scaffold(
topBar = {
- SettingsSearchBar(
- store = store,
- onBackClick = onBackClick,
- )
+ Column {
+ SettingsSearchBar(
+ store = store,
+ onBackClick = onBackClick,
+ )
+ HorizontalDivider()
+ }
},
) { paddingValues ->
+ val topPadding = remember(paddingValues) {
+ paddingValues.calculateTopPadding()
+ }
+
when (state) {
is SettingsSearchState.Default -> {
SettingsSearchMessageContent(
modifier = Modifier
- .padding(paddingValues)
+ .padding(top = topPadding)
.fillMaxSize(),
)
}
is SettingsSearchState.NoSearchResults -> {
SettingsSearchMessageContent(
modifier = Modifier
- .padding(paddingValues)
+ .padding(top = topPadding)
.fillMaxSize(),
currentUserQuery = state.searchQuery,
)
@@ -61,7 +70,7 @@ fun SettingsSearchScreen(
is SettingsSearchState.SearchInProgress -> {
LazyColumn(
modifier = Modifier
- .padding(paddingValues)
+ .padding(top = topPadding)
.fillMaxSize(),
) {
items(state.searchResults.size) { index ->
@@ -96,7 +105,7 @@ private fun SettingsSearchMessageContent(
stringResource(R.string.settings_search_empty_query_placeholder)
} else {
stringResource(
- R.string.setttings_search_no_results_found_message,
+ R.string.settings_search_no_results_found_message,
currentUserQuery,
)
}
diff --git a/mobile/android/fenix/app/src/main/res/values/static_strings.xml b/mobile/android/fenix/app/src/main/res/values/static_strings.xml
@@ -251,19 +251,4 @@
<!-- Label for enabling Relay email masks -->
<string name="preferences_enable_relay_email_masks">Enable Relay email masks</string>
-
- <!-- Settings Search Strings -->
- <!-- Title of Settings Search -->
- <string name="settings_search_title">Settings Search</string>
- <!-- Content description (not visible, for screen readers etc.): "Clear search field button for settings search" -->
- <string name="content_description_settings_search_clear_search">Clear Search</string>
- <!-- Content description (not visible, for screen readers etc.): "Navigate back button for settings search" -->
- <string name="content_description_settings_search_navigate_back">Navigate Back</string>
- <!-- Message displayed when the search field in the Settings Search screen is empty -->
- <string name="settings_search_empty_query_placeholder">Search for settings</string>
- <!-- Message when error happens with Settings Search -->
- <string name="settings_search_error_message">Error occurred.</string>
- <!-- Message displayed when the search field is not empty but search results is empty.
- %s will be replaced by user query in search field. -->
- <string name="setttings_search_no_results_found_message">No results found for %s</string>
</resources>
diff --git a/mobile/android/fenix/app/src/main/res/values/strings.xml b/mobile/android/fenix/app/src/main/res/values/strings.xml
@@ -3542,6 +3542,20 @@
<!-- Label for a button opening a feedback forum -->
<string name="review_prompt_feedback_button">Leave feedback</string>
+ <!-- Settings Search Strings -->
+ <!-- Title of Settings Search. "Search" is a verb here-->
+ <string name="settings_search_title">Search Settings</string>
+ <!-- Content description (not visible, for screen readers etc.) for the button to clear the search field for settings search -->
+ <string name="content_description_settings_search_clear_search">Clear Search</string>
+ <!-- Content description (not visible, for screen readers etc.) for the button to navigate back to the Settings page from the Settings Search screen. -->
+ <string name="content_description_settings_search_navigate_back">Navigate Back</string>
+ <!-- Message displayed when the search field in the Settings Search screen is empty -->
+ <string name="settings_search_empty_query_placeholder">No recent searches</string>
+ <!-- Message when error happens with Settings Search -->
+ <string name="settings_search_error_message">An error has occurred</string>
+ <!-- Message title displayed when the search field is not empty but search results is empty. -->
+ <string name="settings_search_no_results_found_message">Nothing turned up</string>
+
<!-- Terms of use pop up prompt -->
<!-- Title for the pop up prompt -->
<string name="terms_of_use_prompt_title">We’ve got an update</string>