From 3a2f97fd2b651e23df9358d00b590d7f160b9b6c Mon Sep 17 00:00:00 2001 From: Vitalii Vanziak Date: Mon, 19 Jan 2026 17:11:01 +0200 Subject: [PATCH 1/2] Support TalkBack for error messages on card form --- .../ui/card/tokenization/screen/CardTokenizationContent.kt | 6 ++++++ .../com/processout/sdk/ui/card/update/CardUpdateScreen.kt | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/ui/src/main/kotlin/com/processout/sdk/ui/card/tokenization/screen/CardTokenizationContent.kt b/ui/src/main/kotlin/com/processout/sdk/ui/card/tokenization/screen/CardTokenizationContent.kt index a03d7d48c..ab1523647 100644 --- a/ui/src/main/kotlin/com/processout/sdk/ui/card/tokenization/screen/CardTokenizationContent.kt +++ b/ui/src/main/kotlin/com/processout/sdk/ui/card/tokenization/screen/CardTokenizationContent.kt @@ -10,6 +10,9 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.semantics.LiveRegionMode +import androidx.compose.ui.semantics.liveRegion +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.dp import androidx.lifecycle.Lifecycle @@ -136,6 +139,9 @@ private fun Section( modifier = Modifier .fillMaxWidth() .padding(top = spacing.space8) + .semantics { + liveRegion = LiveRegionMode.Polite + } ) var currentSubsection by remember { mutableStateOf(Section(id = String())) } currentSubsection = section.subsection ?: currentSubsection diff --git a/ui/src/main/kotlin/com/processout/sdk/ui/card/update/CardUpdateScreen.kt b/ui/src/main/kotlin/com/processout/sdk/ui/card/update/CardUpdateScreen.kt index 749333f91..80f1f9b6f 100644 --- a/ui/src/main/kotlin/com/processout/sdk/ui/card/update/CardUpdateScreen.kt +++ b/ui/src/main/kotlin/com/processout/sdk/ui/card/update/CardUpdateScreen.kt @@ -17,6 +17,9 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.rememberNestedScrollInteropConnection import androidx.compose.ui.res.colorResource +import androidx.compose.ui.semantics.LiveRegionMode +import androidx.compose.ui.semantics.liveRegion +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.lifecycle.Lifecycle @@ -104,6 +107,9 @@ internal fun CardUpdateScreen( modifier = Modifier .fillMaxWidth() .padding(top = spacing.space8) + .semantics { + liveRegion = LiveRegionMode.Polite + } ) } } From ae24c6e54577e7f5a3d5d7198d39c8df02c0db37 Mon Sep 17 00:00:00 2001 From: Vitalii Vanziak Date: Mon, 19 Jan 2026 17:24:21 +0200 Subject: [PATCH 2/2] Support TalkBack on POMessageBox --- .../com/processout/sdk/ui/core/component/POMessageBox.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ui-core/src/main/kotlin/com/processout/sdk/ui/core/component/POMessageBox.kt b/ui-core/src/main/kotlin/com/processout/sdk/ui/core/component/POMessageBox.kt index 5d0e700e9..e6c8b424e 100644 --- a/ui-core/src/main/kotlin/com/processout/sdk/ui/core/component/POMessageBox.kt +++ b/ui-core/src/main/kotlin/com/processout/sdk/ui/core/component/POMessageBox.kt @@ -18,6 +18,9 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.Shape import androidx.compose.ui.res.colorResource +import androidx.compose.ui.semantics.LiveRegionMode +import androidx.compose.ui.semantics.liveRegion +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.processout.sdk.ui.core.R @@ -65,6 +68,9 @@ fun POMessageBox( } POTextWithIcon( text = currentText, + modifier = Modifier.semantics { + liveRegion = LiveRegionMode.Polite + }, style = style.textWithIcon, horizontalArrangement = horizontalArrangement )