Skip to content

Commit 9b2a305

Browse files
committed
Revert "Remove AccessibilityStates (microsoft#4625)"
This reverts commit f3d983e.
1 parent 975f2d7 commit 9b2a305

File tree

1 file changed

+43
-3
lines changed

1 file changed

+43
-3
lines changed

vnext/ReactUWP/Views/FrameworkElementViewManager.cpp

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,10 @@ static folly::dynamic GetAccessibilityStateProps() {
152152
folly::dynamic FrameworkElementViewManager::GetNativeProps() const {
153153
folly::dynamic props = Super::GetNativeProps();
154154
props.update(folly::dynamic::object("accessible", "boolean")("accessibilityRole", "string")(
155-
"accessibilityState", GetAccessibilityStateProps())("accessibilityHint", "string")(
156-
"accessibilityLabel", "string")("accessibilityPosInSet", "number")("accessibilitySetSize", "number")(
157-
"testID", "string")("tooltip", "string")("accessibilityActions", "array")("accessibilityLiveRegion", "string"));
155+
"accessibilityStates", "array")("accessibilityState", GetAccessibilityStateProps())(
156+
"accessibilityHint", "string")("accessibilityLabel", "string")("accessibilityPosInSet", "number")(
157+
"accessibilitySetSize", "number")("testID", "string")("tooltip", "string")("accessibilityActions", "array")(
158+
"accessibilityLiveRegion", "string"));
158159
return props;
159160
}
160161

@@ -393,6 +394,45 @@ bool FrameworkElementViewManager::UpdateProperty(
393394
} else if (propertyValue.isNull()) {
394395
element.ClearValue(DynamicAutomationProperties::AccessibilityRoleProperty());
395396
}
397+
} else if (propertyName == "accessibilityStates") {
398+
bool states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::CountStates)] = {};
399+
400+
if (propertyValue.isArray()) {
401+
for (const auto &state : propertyValue) {
402+
if (!state.isString())
403+
continue;
404+
405+
if (state.getString() == "selected")
406+
states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Selected)] = true;
407+
else if (state.getString() == "disabled")
408+
states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Disabled)] = true;
409+
else if (state.getString() == "checked")
410+
states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Checked)] = true;
411+
else if (state.getString() == "unchecked")
412+
states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Unchecked)] = true;
413+
else if (state.getString() == "busy")
414+
states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Busy)] = true;
415+
else if (state.getString() == "expanded")
416+
states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Expanded)] = true;
417+
else if (state.getString() == "collapsed")
418+
states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Collapsed)] = true;
419+
}
420+
}
421+
422+
DynamicAutomationProperties::SetAccessibilityStateSelected(
423+
element, states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Selected)]);
424+
DynamicAutomationProperties::SetAccessibilityStateDisabled(
425+
element, states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Disabled)]);
426+
DynamicAutomationProperties::SetAccessibilityStateChecked(
427+
element, states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Checked)]);
428+
DynamicAutomationProperties::SetAccessibilityStateUnchecked(
429+
element, states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Unchecked)]);
430+
DynamicAutomationProperties::SetAccessibilityStateBusy(
431+
element, states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Busy)]);
432+
DynamicAutomationProperties::SetAccessibilityStateExpanded(
433+
element, states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Expanded)]);
434+
DynamicAutomationProperties::SetAccessibilityStateCollapsed(
435+
element, states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::Collapsed)]);
396436
} else if (propertyName == "accessibilityState") {
397437
bool states[static_cast<int32_t>(winrt::react::uwp::AccessibilityStates::CountStates)] = {};
398438

0 commit comments

Comments
 (0)