Skip to content

Commit a81d0e7

Browse files
committed
Improve accessibility of checkbox.
+ Add missing Checkbox role which is only set if onClick is set. + Add state description to output the checked state via TalkBack. Relates #453, #417, #318
1 parent d0581a0 commit a81d0e7

File tree

2 files changed

+24
-2
lines changed
  • multiplatform-markdown-renderer-m2/src/commonMain/kotlin/com/mikepenz/markdown/m2/elements
  • multiplatform-markdown-renderer-m3/src/commonMain/kotlin/com/mikepenz/markdown/m3/elements

2 files changed

+24
-2
lines changed

multiplatform-markdown-renderer-m2/src/commonMain/kotlin/com/mikepenz/markdown/m2/elements/MarkdownCheckBox.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ package com.mikepenz.markdown.m2.elements
22

33
import androidx.compose.material.Checkbox
44
import androidx.compose.runtime.Composable
5+
import androidx.compose.ui.semantics.Role.Companion.Checkbox
6+
import androidx.compose.ui.semantics.role
7+
import androidx.compose.ui.semantics.semantics
8+
import androidx.compose.ui.semantics.stateDescription
59
import androidx.compose.ui.text.TextStyle
610
import com.mikepenz.markdown.compose.elements.MarkdownCheckBox
711
import org.intellij.markdown.ast.ASTNode
@@ -16,6 +20,13 @@ fun MarkdownCheckBox(
1620
node = node,
1721
style = style,
1822
checkedIndicator = { checked, modifier ->
19-
Checkbox(checked = checked, onCheckedChange = null, modifier = modifier)
23+
Checkbox(
24+
checked = checked,
25+
onCheckedChange = null,
26+
modifier = modifier.semantics {
27+
role = Checkbox
28+
stateDescription = if (checked) "Checked" else "Unchecked"
29+
},
30+
)
2031
},
2132
)

multiplatform-markdown-renderer-m3/src/commonMain/kotlin/com/mikepenz/markdown/m3/elements/MarkdownCheckBox.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ package com.mikepenz.markdown.m3.elements
22

33
import androidx.compose.material3.Checkbox
44
import androidx.compose.runtime.Composable
5+
import androidx.compose.ui.semantics.Role.Companion.Checkbox
6+
import androidx.compose.ui.semantics.role
7+
import androidx.compose.ui.semantics.semantics
8+
import androidx.compose.ui.semantics.stateDescription
59
import androidx.compose.ui.text.TextStyle
610
import com.mikepenz.markdown.compose.elements.MarkdownCheckBox
711
import org.intellij.markdown.ast.ASTNode
@@ -16,6 +20,13 @@ fun MarkdownCheckBox(
1620
node = node,
1721
style = style,
1822
checkedIndicator = { checked, modifier ->
19-
Checkbox(checked = checked, onCheckedChange = null, modifier = modifier)
23+
Checkbox(
24+
checked = checked,
25+
onCheckedChange = null,
26+
modifier = modifier.semantics {
27+
role = Checkbox
28+
stateDescription = if (checked) "Checked" else "Unchecked"
29+
},
30+
)
2031
},
2132
)

0 commit comments

Comments
 (0)