From 3ec8c27b96aaeb63b4a5970ab8d51cd9485f5c2b Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Fri, 10 Mar 2023 13:19:09 +0100 Subject: [PATCH 1/6] First draft --- .../me/zobrist/tichucounter/data/GameDao.kt | 3 + .../tichucounter/repository/GameRepository.kt | 11 ++- .../ui/composables/TypeaheadTextField.kt | 90 +++++++++++++++++++ .../tichucounter/ui/counter/CounterView.kt | 3 + .../ui/counter/CounterViewModel.kt | 13 +++ .../tichucounter/ui/counter/TeamNamesView.kt | 27 +++--- 6 files changed, 133 insertions(+), 14 deletions(-) create mode 100644 app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt diff --git a/app/src/main/java/me/zobrist/tichucounter/data/GameDao.kt b/app/src/main/java/me/zobrist/tichucounter/data/GameDao.kt index 634b3cb..1f8cd32 100644 --- a/app/src/main/java/me/zobrist/tichucounter/data/GameDao.kt +++ b/app/src/main/java/me/zobrist/tichucounter/data/GameDao.kt @@ -35,4 +35,7 @@ interface GameDao : DaoBase { @Query("UPDATE game SET active = 0 WHERE uid is not :gameId;") fun setOthersInactive(gameId: Long) + @Query("SELECT names FROM (SELECT nameA AS names FROM game UNION ALL SELECT nameB AS names FROM game) GROUP BY names") + fun getDistinctTeamNames(): Flow> + } \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt b/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt index 78e5bb3..78e1fd3 100644 --- a/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt +++ b/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt @@ -2,10 +2,7 @@ package me.zobrist.tichucounter.repository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.filter -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.take +import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import me.zobrist.tichucounter.data.GameDao @@ -23,6 +20,8 @@ class GameRepository @Inject constructor( private var activeGame: Game = Game(true, "TeamA", "TeamB", Date(), Date()) + private var distinctTeamNames: List = listOf() + init { CoroutineScope(Dispatchers.IO).launch { gameDao.getActiveAsFlow().collect { @@ -130,4 +129,8 @@ class GameRepository @Inject constructor( fun getAllWithRoundFlow(): Flow> { return gameDao.getGamesWithRounds() } + + fun getDistinctTeamNames(): Flow> { + return gameDao.getDistinctTeamNames() + } } \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt new file mode 100644 index 0000000..7772d39 --- /dev/null +++ b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt @@ -0,0 +1,90 @@ +package me.zobrist.tichucounter.ui.composables + +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.input.key.Key +import androidx.compose.ui.input.key.key +import androidx.compose.ui.input.key.onKeyEvent +import androidx.compose.ui.layout.onSizeChanged +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.ImeAction + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) +@Composable +fun TypeaheadTextField( + value: String, + items: List, + onValueChange: (String) -> Unit, + modifier: Modifier, + colors: TextFieldColors, + textStyle: TextStyle +) { + + var isFocused by remember { mutableStateOf(false) } + val focusManager = LocalFocusManager.current + + ExposedDropdownMenuBox( + expanded = isFocused, + modifier = modifier, + onExpandedChange = {} + ) { + + var dropDownWidth by remember { mutableStateOf(0) } + + TextField( + value = value, + textStyle = textStyle, + onValueChange = { + onValueChange(it) + }, + singleLine = true, + keyboardOptions = KeyboardOptions( + imeAction = ImeAction.Done, + ), + keyboardActions = KeyboardActions( + onDone = { + focusManager.clearFocus() + } + ), + modifier = Modifier + .menuAnchor() + .onFocusChanged { + isFocused = it.isFocused + } + .onSizeChanged { dropDownWidth = it.width } + .onKeyEvent { event -> + if (event.key == Key.Back || event.key == Key.Enter) { + focusManager.clearFocus() + true + } + false + }, + colors = colors + ) + ExposedDropdownMenu( + expanded = isFocused, + modifier = Modifier + .width(with(LocalDensity.current){dropDownWidth.toDp()}), + onDismissRequest = { } + ) { + val filtered = items.filter { it.contains(value) && it.isNotBlank() } + filtered.forEach { + DropdownMenuItem( + onClick = { + onValueChange(it) + focusManager.clearFocus() + }, + text = { Text(it) }, + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt index a9b0497..8496b43 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt @@ -35,6 +35,7 @@ fun Landscape(viewModel: ICounterViewModel) { TeamNamesView( viewModel.teamNameA, viewModel.teamNameB, + viewModel.distinctTeamNames, { viewModel.updateNameA(it) }, { viewModel.updateNameB(it) } ) @@ -64,6 +65,7 @@ fun Portrait(viewModel: ICounterViewModel) { TeamNamesView( viewModel.teamNameA, viewModel.teamNameB, + viewModel.distinctTeamNames, { viewModel.updateNameA(it) }, { viewModel.updateNameB(it) } ) @@ -111,6 +113,7 @@ internal class PreviewViewModel : ICounterViewModel { override var activeValue: String = currentScoreA override var inactiveValue: String = currentScoreB override var keyboardHidden: Boolean = false + override val distinctTeamNames: List = listOf("TeamA", "asdffd", "TeamB", "really really long Team Name that is way too long") override fun focusLastInput() { } diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt index 81bed74..fbd6642 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt @@ -1,6 +1,7 @@ package me.zobrist.tichucounter.ui.counter import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.focus.FocusRequester @@ -9,6 +10,8 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Job import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.take import kotlinx.coroutines.launch import me.zobrist.tichucounter.data.entity.Round import me.zobrist.tichucounter.domain.Tichu @@ -31,6 +34,7 @@ interface IKeyBoardViewModel { val activeValue: String val inactiveValue: String val keyboardHidden: Boolean + val distinctTeamNames: List fun focusLastInput() fun updateOtherScore() @@ -105,6 +109,9 @@ class CounterViewModel @Inject constructor( override var keyboardHidden by mutableStateOf(false) private set + override var distinctTeamNames by mutableStateOf(listOf()) + private set + override var activeValue: String get() { return if (isBFocused) { @@ -160,6 +167,12 @@ class CounterViewModel @Inject constructor( } } } + + viewModelScope.launch { + gameRepository.getDistinctTeamNames().collect() { + distinctTeamNames = it + } + } } override fun focusLastInput() { diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt index 596c861..58037ef 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt @@ -4,18 +4,22 @@ import android.content.res.Configuration import androidx.compose.foundation.layout.* import androidx.compose.material3.* -import androidx.compose.runtime.Composable +import androidx.compose.runtime.* import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import me.zobrist.tichucounter.ui.AppTheme +import me.zobrist.tichucounter.ui.composables.TypeaheadTextField @OptIn(ExperimentalMaterial3Api::class) @Composable fun TeamNamesView( nameA: String, nameB: String, + nameSuggestions: List, updateA: (String) -> Unit, updateB: (String) -> Unit ) { @@ -25,23 +29,26 @@ fun TeamNamesView( ) Row { - TextField( + + TypeaheadTextField( value = nameA, - textStyle = LocalTextStyle.current.copy(textAlign = TextAlign.Center), + items = nameSuggestions, onValueChange = { updateA(it) }, - singleLine = true, modifier = Modifier.weight(1f), - colors = color + colors = color, + textStyle = LocalTextStyle.current.copy(textAlign = TextAlign.Center) ) - TextField( + TypeaheadTextField( value = nameB, - textStyle = LocalTextStyle.current.copy(textAlign = TextAlign.Center), + items = nameSuggestions, onValueChange = { updateB(it) }, - singleLine = true, modifier = Modifier.weight(1f), - colors = color + colors = color, + textStyle = LocalTextStyle.current.copy(textAlign = TextAlign.Center) ) + + } } @@ -50,6 +57,6 @@ fun TeamNamesView( @Composable private fun TeamNamesViewPreview() { AppTheme { - TeamNamesView("TeamA", "TeamB", {}, {}) + TeamNamesView("TeamA", "TeamB", listOf("Test1", "Test3"), {}, {}) } } -- 2.49.1 From 507944794f239b3cee0733fa87f947467d34f8ba Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Thu, 11 May 2023 23:04:21 +0200 Subject: [PATCH 2/6] Clear focus on opening drawer. --- .../main/java/me/zobrist/tichucounter/MainActivity.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt b/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt index b964c6c..233267d 100644 --- a/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt +++ b/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt @@ -12,7 +12,9 @@ import androidx.compose.material.icons.filled.* import androidx.compose.material.icons.outlined.* import androidx.compose.material3.* import androidx.compose.runtime.* +import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.stringResource import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost @@ -142,7 +144,7 @@ class MainActivity : AppCompatActivity(), ISettingsChangeListener { } } - @OptIn(ExperimentalMaterial3Api::class) + @OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) @Composable fun MyScaffoldLayout( drawerState: DrawerState, @@ -205,7 +207,10 @@ class MainActivity : AppCompatActivity(), ISettingsChangeListener { }, )) - ) { scope.launch { drawerState.open() } } + ) { scope.launch { + currentFocus?.clearFocus() + drawerState.open() + } } Counter(counterViewModel) } -- 2.49.1 From c40d473fa5d61574e38d71f6bc05967a6c6bc6db Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Thu, 11 May 2023 23:05:47 +0200 Subject: [PATCH 3/6] Update value of team name immediately. --- .../java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt index fbd6642..fca9096 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt @@ -268,12 +268,14 @@ class CounterViewModel @Inject constructor( } override fun updateNameA(value: String) { + teamNameA = value viewModelScope.launch { gameRepository.updateActiveTeamName(nameA = value) } } override fun updateNameB(value: String) { + teamNameB = value viewModelScope.launch { gameRepository.updateActiveTeamName(nameB = value) } -- 2.49.1 From 9ddbdb698c3b28cfc6b3acd649642617d8c6a063 Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Thu, 11 May 2023 23:06:29 +0200 Subject: [PATCH 4/6] Better filtering and sorting of suggestions. --- .../ui/composables/TypeaheadTextField.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt index 7772d39..86c79b7 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt @@ -31,6 +31,15 @@ fun TypeaheadTextField( var isFocused by remember { mutableStateOf(false) } val focusManager = LocalFocusManager.current + var filtered = items.filter { it.isNotEmpty() && it != value } + + if(value.isNotEmpty()) + { + filtered = filtered.filter { it.contains(value) } + } + + filtered = filtered.sorted().sortedBy { it.length }.take(5) + ExposedDropdownMenuBox( expanded = isFocused, modifier = modifier, @@ -75,8 +84,8 @@ fun TypeaheadTextField( .width(with(LocalDensity.current){dropDownWidth.toDp()}), onDismissRequest = { } ) { - val filtered = items.filter { it.contains(value) && it.isNotBlank() } - filtered.forEach { + + filtered.forEach { DropdownMenuItem( onClick = { onValueChange(it) -- 2.49.1 From 2e40d0315c61da9a530892684e11e979256e9eee Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Thu, 11 May 2023 23:37:12 +0200 Subject: [PATCH 5/6] Don't show dropdown when empty. --- .../zobrist/tichucounter/ui/composables/TypeaheadTextField.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt index 86c79b7..310d206 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt @@ -79,7 +79,7 @@ fun TypeaheadTextField( colors = colors ) ExposedDropdownMenu( - expanded = isFocused, + expanded = isFocused && filtered.isNotEmpty(), modifier = Modifier .width(with(LocalDensity.current){dropDownWidth.toDp()}), onDismissRequest = { } -- 2.49.1 From 1e8e72557dff5ff1bbe16cfc467294fb255a4b62 Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Thu, 11 May 2023 23:40:17 +0200 Subject: [PATCH 6/6] Move suggestion generation to ViewModel. --- .../ui/composables/TypeaheadTextField.kt | 13 ++------ .../tichucounter/ui/counter/CounterView.kt | 9 ++++-- .../ui/counter/CounterViewModel.kt | 31 +++++++++++++++++-- .../tichucounter/ui/counter/TeamNamesView.kt | 9 +++--- 4 files changed, 42 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt index 310d206..35e9902 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt @@ -31,15 +31,6 @@ fun TypeaheadTextField( var isFocused by remember { mutableStateOf(false) } val focusManager = LocalFocusManager.current - var filtered = items.filter { it.isNotEmpty() && it != value } - - if(value.isNotEmpty()) - { - filtered = filtered.filter { it.contains(value) } - } - - filtered = filtered.sorted().sortedBy { it.length }.take(5) - ExposedDropdownMenuBox( expanded = isFocused, modifier = modifier, @@ -79,13 +70,13 @@ fun TypeaheadTextField( colors = colors ) ExposedDropdownMenu( - expanded = isFocused && filtered.isNotEmpty(), + expanded = isFocused && items.isNotEmpty(), modifier = Modifier .width(with(LocalDensity.current){dropDownWidth.toDp()}), onDismissRequest = { } ) { - filtered.forEach { + items.forEach { DropdownMenuItem( onClick = { onValueChange(it) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt index 8496b43..d838b89 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt @@ -35,7 +35,8 @@ fun Landscape(viewModel: ICounterViewModel) { TeamNamesView( viewModel.teamNameA, viewModel.teamNameB, - viewModel.distinctTeamNames, + viewModel.teamNameSuggestionsA, + viewModel.teamNameSuggestionsB, { viewModel.updateNameA(it) }, { viewModel.updateNameB(it) } ) @@ -65,7 +66,8 @@ fun Portrait(viewModel: ICounterViewModel) { TeamNamesView( viewModel.teamNameA, viewModel.teamNameB, - viewModel.distinctTeamNames, + viewModel.teamNameSuggestionsA, + viewModel.teamNameSuggestionsB, { viewModel.updateNameA(it) }, { viewModel.updateNameB(it) } ) @@ -113,7 +115,8 @@ internal class PreviewViewModel : ICounterViewModel { override var activeValue: String = currentScoreA override var inactiveValue: String = currentScoreB override var keyboardHidden: Boolean = false - override val distinctTeamNames: List = listOf("TeamA", "asdffd", "TeamB", "really really long Team Name that is way too long") + override val teamNameSuggestionsA: List = listOf("TeamA", "asdffd", "TeamB", "really really long Team Name that is way too long") + override val teamNameSuggestionsB: List = listOf("TeamA", "asdffd", "TeamB", "really really long Team Name that is way too long") override fun focusLastInput() { } diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt index fca9096..249c9b2 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt @@ -34,7 +34,6 @@ interface IKeyBoardViewModel { val activeValue: String val inactiveValue: String val keyboardHidden: Boolean - val distinctTeamNames: List fun focusLastInput() fun updateOtherScore() @@ -59,6 +58,8 @@ interface ICounterViewModel : IKeyBoardViewModel { val totalScoreB: Int val teamNameA: String val teamNameB: String + val teamNameSuggestionsA: List + val teamNameSuggestionsB: List fun updateNameA(value: String) fun updateNameB(value: String) @@ -109,7 +110,10 @@ class CounterViewModel @Inject constructor( override var keyboardHidden by mutableStateOf(false) private set - override var distinctTeamNames by mutableStateOf(listOf()) + override var teamNameSuggestionsA by mutableStateOf(listOf()) + private set + + override var teamNameSuggestionsB by mutableStateOf(listOf()) private set override var activeValue: String @@ -151,6 +155,8 @@ class CounterViewModel @Inject constructor( private var deleteJob: Job? = null + private var distinctTeamNames = listOf() + init { viewModelScope.launch { gameRepository.getActiveGameFlow().collect { @@ -164,6 +170,9 @@ class CounterViewModel @Inject constructor( teamNameA = it.game.nameA teamNameB = it.game.nameB + + buildTeamNameSuggestions() + } } } @@ -171,6 +180,8 @@ class CounterViewModel @Inject constructor( viewModelScope.launch { gameRepository.getDistinctTeamNames().collect() { distinctTeamNames = it + + buildTeamNameSuggestions() } } } @@ -339,4 +350,20 @@ class CounterViewModel @Inject constructor( } } } + + private fun buildTeamNameSuggestions(){ + teamNameSuggestionsA = buildTypeaheadList(distinctTeamNames, teamNameA) + teamNameSuggestionsB = buildTypeaheadList(distinctTeamNames, teamNameB) + } + + private fun buildTypeaheadList(rawList: List, currentInput: String ): List { + var filtered = rawList.filter { it.isNotEmpty() && it != currentInput } + + if(currentInput.isNotEmpty()) + { + filtered = filtered.filter { it.contains(currentInput) } + } + + return filtered.sorted().sortedBy { it.length }.take(10) + } } \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt index 58037ef..c8eae5b 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt @@ -19,7 +19,8 @@ import me.zobrist.tichucounter.ui.composables.TypeaheadTextField fun TeamNamesView( nameA: String, nameB: String, - nameSuggestions: List, + nameSuggestionsA: List, + nameSuggestionsB: List, updateA: (String) -> Unit, updateB: (String) -> Unit ) { @@ -32,7 +33,7 @@ fun TeamNamesView( TypeaheadTextField( value = nameA, - items = nameSuggestions, + items = nameSuggestionsA, onValueChange = { updateA(it) }, modifier = Modifier.weight(1f), colors = color, @@ -41,7 +42,7 @@ fun TeamNamesView( TypeaheadTextField( value = nameB, - items = nameSuggestions, + items = nameSuggestionsB, onValueChange = { updateB(it) }, modifier = Modifier.weight(1f), colors = color, @@ -57,6 +58,6 @@ fun TeamNamesView( @Composable private fun TeamNamesViewPreview() { AppTheme { - TeamNamesView("TeamA", "TeamB", listOf("Test1", "Test3"), {}, {}) + TeamNamesView("TeamA", "TeamB", listOf("Test1", "Test3"), listOf("Test3", "Test5"), {}, {}) } } -- 2.49.1