Skip to content

Commit 0de8ff4

Browse files
authored
Merge pull request #437 from eevajonnapanula/more-semantics
A11y: Carousel semantics
2 parents b1dd4f4 + cdbd9da commit 0de8ff4

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

shared/src/commonMain/kotlin/org/jetbrains/kotlinconf/screens/ScheduleScreen.kt

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,13 @@ import androidx.compose.ui.ExperimentalComposeUiApi
3535
import androidx.compose.ui.Modifier
3636
import androidx.compose.ui.backhandler.BackHandler
3737
import androidx.compose.ui.draw.clipToBounds
38+
import androidx.compose.ui.semantics.CollectionInfo
39+
import androidx.compose.ui.semantics.CollectionItemInfo
40+
import androidx.compose.ui.semantics.Role
41+
import androidx.compose.ui.semantics.collectionInfo
42+
import androidx.compose.ui.semantics.collectionItemInfo
3843
import androidx.compose.ui.semantics.heading
44+
import androidx.compose.ui.semantics.role
3945
import androidx.compose.ui.semantics.semantics
4046
import androidx.compose.ui.unit.dp
4147
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -457,6 +463,9 @@ private fun ScheduleList(
457463
modifier = Modifier
458464
.padding(horizontal = 12.dp)
459465
.padding(top = 24.dp, bottom = 8.dp)
466+
.semantics {
467+
heading()
468+
}
460469
)
461470
}
462471

@@ -484,12 +493,20 @@ private fun ScheduleList(
484493
)
485494
HorizontalPager(
486495
state = pagerState,
487-
modifier = Modifier.fillMaxWidth(),
496+
modifier = Modifier.fillMaxWidth()
497+
.semantics {
498+
role = Role.Carousel
499+
collectionInfo = CollectionInfo(
500+
rowCount = 1,
501+
columnCount = workshops.size
502+
)
503+
},
488504
beyondViewportPageCount = 1,
489505
contentPadding = PaddingValues(horizontal = 24.dp),
490506
) { pageIndex ->
507+
val workshopIndex = pageIndex % workshops.size
491508
SessionCard(
492-
session = workshops[pageIndex % workshops.size],
509+
session = workshops[workshopIndex],
493510
isSearch = isSearch,
494511
userSignedIn = userSignedIn,
495512
onBookmark = onBookmark,
@@ -499,6 +516,14 @@ private fun ScheduleList(
499516
onSession = onSession,
500517
modifier = Modifier
501518
.padding(horizontal = 8.dp, vertical = 8.dp)
519+
.semantics {
520+
collectionItemInfo = CollectionItemInfo(
521+
rowIndex = 1,
522+
columnIndex = workshopIndex,
523+
columnSpan = 1,
524+
rowSpan = 1
525+
)
526+
}
502527
)
503528
}
504529
ScrollIndicator(

shared/src/commonMain/kotlin/org/jetbrains/kotlinconf/screens/StartNotificationsScreen.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import androidx.compose.foundation.verticalScroll
1818
import androidx.compose.runtime.Composable
1919
import androidx.compose.runtime.LaunchedEffect
2020
import androidx.compose.ui.Modifier
21+
import androidx.compose.ui.semantics.heading
22+
import androidx.compose.ui.semantics.semantics
2123
import androidx.compose.ui.unit.dp
2224
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2325
import kotlinconfapp.shared.generated.resources.kodee_notifications
@@ -66,7 +68,10 @@ fun StartNotificationsScreen(
6668
)
6769
Text(
6870
stringResource(AppRes.string.notifications_title),
69-
style = KotlinConfTheme.typography.h1
71+
style = KotlinConfTheme.typography.h1,
72+
modifier = Modifier.semantics {
73+
heading()
74+
}
7075
)
7176
Text(
7277
stringResource(AppRes.string.notifications_description),

ui-components/src/commonMain/kotlin/org/jetbrains/kotlinconf/ui/components/ServiceEvents.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import androidx.compose.runtime.Composable
1414
import androidx.compose.ui.Alignment
1515
import androidx.compose.ui.Modifier
1616
import androidx.compose.ui.draw.clip
17+
import androidx.compose.ui.semantics.semantics
1718
import androidx.compose.ui.unit.dp
1819
import org.jetbrains.compose.ui.tooling.preview.Preview
1920
import org.jetbrains.kotlinconf.ui.theme.KotlinConfTheme
@@ -34,7 +35,7 @@ private fun ServiceEventItem(
3435
Row(
3536
verticalAlignment = Alignment.CenterVertically,
3637
horizontalArrangement = Arrangement.spacedBy(12.dp),
37-
modifier = modifier.padding(16.dp)
38+
modifier = modifier.padding(16.dp).semantics(mergeDescendants = true) {}
3839
) {
3940
Text(
4041
text = event.title,

0 commit comments

Comments
 (0)