Skip to content

Commit 42d0d8c

Browse files
protikbiswas100Protik Biswas
andauthored
Screen reader fails to announce the expand/collapse state of the navigation button (#15106)
* adding UIA event handler changes for navigator * Change files * adding ViewComponent chnages for accessibility * removing unnecessary change file * Remove vnext/fmt/packages.lock.json --------- Co-authored-by: Protik Biswas <protikbiswas100@microsoft.com>
1 parent a834ec2 commit 42d0d8c

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "prerelease",
3+
"comment": "adding UIA event handler changes for navigator",
4+
"packageName": "react-native-windows",
5+
"email": "protikbiswas100@microsoft.com",
6+
"dependentChangeType": "patch"
7+
}

vnext/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,7 +1009,9 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::Expand() {
10091009

10101010
if (!strongView)
10111011
return UIA_E_ELEMENTNOTAVAILABLE;
1012+
10121013
DispatchAccessibilityAction(m_view, "expand");
1014+
10131015
return S_OK;
10141016
}
10151017

@@ -1018,7 +1020,9 @@ HRESULT __stdcall CompositionDynamicAutomationProvider::Collapse() {
10181020

10191021
if (!strongView)
10201022
return UIA_E_ELEMENTNOTAVAILABLE;
1023+
10211024
DispatchAccessibilityAction(m_view, "collapse");
1025+
10221026
return S_OK;
10231027
}
10241028

vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,26 @@ void ComponentView::updateAccessibilityProps(
835835
winrt::Microsoft::ReactNative::implementation::UpdateUiaPropertiesForAnnotation(
836836
EnsureUiaProvider(), oldViewProps.accessibilityAnnotation, newViewProps.accessibilityAnnotation);
837837

838+
// Handle expand/collapse state changes
839+
if (oldViewProps.accessibilityState.has_value() != newViewProps.accessibilityState.has_value() ||
840+
(oldViewProps.accessibilityState.has_value() && newViewProps.accessibilityState.has_value() &&
841+
oldViewProps.accessibilityState->expanded != newViewProps.accessibilityState->expanded)) {
842+
auto oldExpanded =
843+
oldViewProps.accessibilityState.has_value() && oldViewProps.accessibilityState->expanded.has_value()
844+
? oldViewProps.accessibilityState->expanded.value()
845+
: false;
846+
auto newExpanded =
847+
newViewProps.accessibilityState.has_value() && newViewProps.accessibilityState->expanded.has_value()
848+
? newViewProps.accessibilityState->expanded.value()
849+
: false;
850+
851+
winrt::Microsoft::ReactNative::implementation::UpdateUiaProperty(
852+
EnsureUiaProvider(),
853+
UIA_ExpandCollapseExpandCollapseStatePropertyId,
854+
static_cast<int>(winrt::Microsoft::ReactNative::implementation::GetExpandCollapseState(oldExpanded)),
855+
static_cast<int>(winrt::Microsoft::ReactNative::implementation::GetExpandCollapseState(newExpanded)));
856+
}
857+
838858
if ((oldViewProps.accessibilityState.has_value() && oldViewProps.accessibilityState->selected.has_value()) !=
839859
((newViewProps.accessibilityState.has_value() && newViewProps.accessibilityState->selected.has_value()))) {
840860
auto compProvider =

0 commit comments

Comments
 (0)