Hi
@Louis Pullen-Freilich [G]
I have tried setting semantic isTraversalGroup flag & traversalIndex but it is not moving to different menu automatically, like I am expecting focus should come to corresponding menu which triggers the navigation.
val menuItems = listOf(
EligibleJourney.INCREASE,
EligibleJourney.REDUCE,
EligibleJourney.CANCEL
)
// Assign a unique traversalIndex to each item.
// The selected item gets a traversalIndex of 0f.
// The other items get a traversalIndex of 1f, 2f, etc., in their original order.
val traversalIndices = mutableMapOf
EligibleJourney, Float()
var currentIndex = 1f
menuItems.forEach { item ->
if (item == selectedJourney) {
traversalIndices[item] = 0f
} else {
traversalIndices[item] = currentIndex
currentIndex += 1f
}
}
// Menu item for 'INCREASE' journey.
MenuTileItem(
modifier = Modifier
.fillMaxWidth()
.padding(top = semanticSpaceFixed24DP)
.semantics {
traversalIndex = traversalIndices[EligibleJourney.INCREASE] ?: 1f
},
type = MenuTileItemType.INCREASE_LIMIT,
enabled = viewModel.isJourneyDisabled(EligibleJourney.INCREASE.name).not(),
onClick = {
viewModel.cacheSelectedJourney(EligibleJourney.INCREASE)
navController.navigate(Screen.ImportantToKnowRoute.route)
}
)
// Menu item for 'REDUCE' journey.
MenuTileItem(
modifier = Modifier
.fillMaxWidth()
.padding(top = semanticSpaceFixed24DP)
.semantics {
traversalIndex = traversalIndices[EligibleJourney.REDUCE] ?: 2f
},
type = MenuTileItemType.REDUCE_LIMIT,
enabled = viewModel.isJourneyDisabled(EligibleJourney.REDUCE.name).not(),
onClick = {
viewModel.cacheSelectedJourney(EligibleJourney.REDUCE)
navController.navigate(Screen.ImportantToKnowRoute.route)
}
)
// Menu item for 'CANCEL' journey.
MenuTileItem(
modifier = Modifier
.fillMaxWidth()
.padding(top = semanticSpaceFixed24DP)
.semantics {
traversalIndex = traversalIndices[EligibleJourney.CANCEL] ?: 3f
},
type = MenuTileItemType.CANCEL_OVERDRAFT,
enabled = viewModel.isJourneyDisabled(EligibleJourney.CANCEL.name).not(),
onClick = {
viewModel.cacheSelectedJourney(EligibleJourney.CANCEL)
navController.navigate(Screen.ImportantToKnowRoute.route)
}
)
}