From b0aa2a8c31f07ca4d6c1adf2acf968665e1d9395 Mon Sep 17 00:00:00 2001 From: davotoula Date: Sat, 23 Aug 2025 17:12:23 +0100 Subject: [PATCH] added accessibility Description TODO: add translations --- .../navigation/topbars/FeedFilterSpinner.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/FeedFilterSpinner.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/FeedFilterSpinner.kt index 5832d24be..7b9edb425 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/FeedFilterSpinner.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/FeedFilterSpinner.kt @@ -44,6 +44,11 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.semantics.onClick +import androidx.compose.ui.semantics.role +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -113,6 +118,13 @@ fun FeedFilterSpinner( Amethyst.instance.locationManager.setLocationPermission(locationPermissionState.status.isGranted) } + val accessibilityDescription = + if (selected != null) { + "Feed filter, $currentText selected" + } else { + "Feed filter, $selectAnOption" + } + Box( modifier = modifier, contentAlignment = Alignment.Center, @@ -195,6 +207,13 @@ fun FeedFilterSpinner( indication = null, ) { optionsShowing = true + }.semantics { + role = Role.DropdownList + stateDescription = accessibilityDescription + onClick(label = "Open feed filter menu") { + optionsShowing = true + return@onClick true + } }, ) } @@ -202,6 +221,7 @@ fun FeedFilterSpinner( if (optionsShowing) { options.isNotEmpty().also { SpinnerSelectionDialog( + title = explainer, options = options, onDismiss = { optionsShowing = false }, onSelect = {