Skip to content
Snippets Groups Projects
Commit 28e24c90 authored by Charlotte Lu's avatar Charlotte Lu Committed by Android (Google) Code Review
Browse files

Merge "SettingsExposedDropdownMenuCheckBox requires input index." into main

parents 3faf4e64 5df0081a
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,7 @@ package com.android.settingslib.spa.gallery.editor
import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
......@@ -45,13 +45,13 @@ object SettingsExposedDropdownMenuBoxPageProvider : SettingsPageProvider {
@Composable
override fun Page(arguments: Bundle?) {
var selectedItem by remember { mutableStateOf("item1") }
var selectedItem by remember { mutableIntStateOf(-1) }
val options = listOf("item1", "item2", "item3")
RegularScaffold(title = TITLE) {
SettingsExposedDropdownMenuBox(
label = exposedDropdownMenuBoxLabel,
options = options,
selectedOptionText = selectedItem,
selectedOptionIndex = selectedItem,
enabled = true,
onselectedOptionTextChange = { selectedItem = it })
}
......
......@@ -41,9 +41,9 @@ import com.android.settingslib.spa.framework.theme.SettingsTheme
fun SettingsExposedDropdownMenuBox(
label: String,
options: List<String>,
selectedOptionText: String,
selectedOptionIndex: Int,
enabled: Boolean,
onselectedOptionTextChange: (String) -> Unit,
onselectedOptionTextChange: (Int) -> Unit,
) {
var expanded by remember { mutableStateOf(false) }
ExposedDropdownMenuBox(
......@@ -58,8 +58,8 @@ fun SettingsExposedDropdownMenuBox(
modifier = Modifier
.menuAnchor()
.fillMaxWidth(),
value = selectedOptionText,
onValueChange = onselectedOptionTextChange,
value = options.getOrElse(selectedOptionIndex) { "" },
onValueChange = { },
label = { Text(text = label) },
trailingIcon = {
ExposedDropdownMenuDefaults.TrailingIcon(
......@@ -81,7 +81,7 @@ fun SettingsExposedDropdownMenuBox(
DropdownMenuItem(
text = { Text(option) },
onClick = {
onselectedOptionTextChange(option)
onselectedOptionTextChange(options.indexOf(option))
expanded = false
},
contentPadding = ExposedDropdownMenuDefaults.ItemContentPadding,
......@@ -103,7 +103,7 @@ private fun SettingsExposedDropdownMenuBoxsPreview() {
SettingsExposedDropdownMenuBox(
label = "ExposedDropdownMenuBoxLabel",
options = options,
selectedOptionText = item1,
selectedOptionIndex = 0,
enabled = true,
onselectedOptionTextChange = {})
}
......
......@@ -31,6 +31,7 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
......@@ -54,7 +55,7 @@ fun SettingsExposedDropdownMenuCheckBox(
enabled: Boolean,
onSelectedOptionStateChange: () -> Unit,
) {
var dropDownWidth by remember { mutableStateOf(0) }
var dropDownWidth by remember { mutableIntStateOf(0) }
var expanded by remember { mutableStateOf(false) }
ExposedDropdownMenuBox(
expanded = expanded,
......@@ -104,7 +105,7 @@ fun SettingsExposedDropdownMenuCheckBox(
)
}
onSelectedOptionStateChange()
}) {
}) {
Row(
modifier = Modifier
.fillMaxHeight()
......
......@@ -17,6 +17,7 @@
package com.android.settingslib.spa.widget.editor
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
......@@ -40,13 +41,13 @@ class SettingsExposedDropdownMenuBoxTest {
@Test
fun exposedDropdownMenuBoxs_displayed() {
composeTestRule.setContent {
var selectedItem by remember { mutableStateOf("item1") }
var selectedItem by remember { mutableStateOf(0) }
SettingsExposedDropdownMenuBox(
label = exposedDropdownMenuBoxLabel,
options = options,
selectedOptionText = selectedItem,
selectedOptionIndex = selectedItem,
enabled = true,
onselectedOptionTextChange = {selectedItem = it})
onselectedOptionTextChange = { selectedItem = it })
}
composeTestRule.onNodeWithText(exposedDropdownMenuBoxLabel, substring = true)
.assertIsDisplayed()
......@@ -55,13 +56,13 @@ class SettingsExposedDropdownMenuBoxTest {
@Test
fun exposedDropdownMenuBoxs_expanded() {
composeTestRule.setContent {
var selectedItem by remember { mutableStateOf("item1") }
var selectedItem by remember { mutableIntStateOf(0) }
SettingsExposedDropdownMenuBox(
label = exposedDropdownMenuBoxLabel,
options = options,
selectedOptionText = selectedItem,
selectedOptionIndex = selectedItem,
enabled = true,
onselectedOptionTextChange = {selectedItem = it})
onselectedOptionTextChange = { selectedItem = it })
}
composeTestRule.onNodeWithText(item2, substring = true)
.assertDoesNotExist()
......@@ -74,13 +75,13 @@ class SettingsExposedDropdownMenuBoxTest {
@Test
fun exposedDropdownMenuBoxs_valueChanged() {
composeTestRule.setContent {
var selectedItem by remember { mutableStateOf("item1") }
var selectedItem by remember { mutableIntStateOf(0) }
SettingsExposedDropdownMenuBox(
label = exposedDropdownMenuBoxLabel,
options = options,
selectedOptionText = selectedItem,
selectedOptionIndex = selectedItem,
enabled = true,
onselectedOptionTextChange = {selectedItem = it})
onselectedOptionTextChange = { selectedItem = it })
}
composeTestRule.onNodeWithText(item2, substring = true)
.assertDoesNotExist()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment