Skip to content

Commit 002fede

Browse files
committed
Add stable accessibilityOrder prop
1 parent 2ff3b81 commit 002fede

13 files changed

Lines changed: 137 additions & 65 deletions

File tree

packages/react-native/Libraries/Components/ScrollView/ScrollView.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ type ScrollViewBaseProps = Readonly<{
685685

686686
/** @build-types emit-as-interface Nativewind compatibility */
687687
export type ScrollViewProps = Readonly<{
688-
...Omit<ViewProps, 'experimental_accessibilityOrder'>,
688+
...Omit<ViewProps, 'accessibilityOrder' | 'experimental_accessibilityOrder'>,
689689
...ScrollViewPropsIOS,
690690
...ScrollViewPropsAndroid,
691691
...ScrollViewBaseProps,

packages/react-native/Libraries/Components/TextInput/TextInput.flow.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1058,7 +1058,10 @@ type TextInputBaseProps = Readonly<{
10581058

10591059
/** @build-types emit-as-interface Uniwind compatibility */
10601060
export type TextInputProps = Readonly<{
1061-
...Omit<ViewProps, 'style' | 'experimental_accessibilityOrder'>,
1061+
...Omit<
1062+
ViewProps,
1063+
'style' | 'accessibilityOrder' | 'experimental_accessibilityOrder',
1064+
>,
10621065
...TextInputIOSProps,
10631066
...TextInputAndroidProps,
10641067
...TextInputBaseProps,

packages/react-native/Libraries/Components/View/ViewAccessibility.d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ export interface AccessibilityProps
4747
*/
4848
accessibilityState?: AccessibilityState | undefined;
4949

50+
/**
51+
* Defines the order in which descendant elements receive accessibility focus.
52+
* The elements in the array represent nativeID values for the respective
53+
* descendant elements.
54+
*/
55+
accessibilityOrder?: ReadonlyArray<string> | undefined;
56+
5057
/**
5158
* alias for accessibilityState
5259
*

packages/react-native/Libraries/Components/View/ViewPropTypes.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,11 @@ type ViewBaseProps = Readonly<{
507507
* The elements in the array represent nativeID values for the respective
508508
* descendant elements.
509509
*/
510+
accessibilityOrder?: ?Array<string>,
511+
512+
/**
513+
* Deprecated. Use accessibilityOrder instead.
514+
*/
510515
experimental_accessibilityOrder?: ?Array<string>,
511516
}>;
512517

packages/react-native/Libraries/NativeComponent/BaseViewConfig.android.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ const validAttributesForNonEventProps = {
224224
accessibilityState: true,
225225
accessibilityActions: true,
226226
accessibilityValue: true,
227+
accessibilityOrder: true,
227228
experimental_accessibilityOrder: true,
228229
importantForAccessibility: true,
229230
screenReaderFocusable: true,

packages/react-native/Libraries/NativeComponent/BaseViewConfig.ios.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ const validAttributesForNonEventProps = {
200200
accessibilityIgnoresInvertColors: true,
201201
accessibilityShowsLargeContentViewer: true,
202202
accessibilityLargeContentTitle: true,
203+
accessibilityOrder: true,
203204
experimental_accessibilityOrder: true,
204205
accessibilityRespondsToUserInteraction: true,
205206
testID: true,

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,8 @@ public object ViewProps {
159159
public const val ACCESSIBILITY_ACTIONS: String = "accessibilityActions"
160160
public const val ACCESSIBILITY_VALUE: String = "accessibilityValue"
161161
public const val ACCESSIBILITY_LABELLED_BY: String = "accessibilityLabelledBy"
162-
public const val ACCESSIBILITY_ORDER: String = "experimental_accessibilityOrder"
162+
public const val ACCESSIBILITY_ORDER: String = "accessibilityOrder"
163+
public const val EXPERIMENTAL_ACCESSIBILITY_ORDER: String = "experimental_accessibilityOrder"
163164
public const val IMPORTANT_FOR_ACCESSIBILITY: String = "importantForAccessibility"
164165
public const val SCREEN_READER_FOCUSABLE: String = "screenReaderFocusable"
165166
public const val ROLE: String = "role"

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,15 @@ public open class ReactViewManager : ReactClippingViewManager<ReactViewGroup>()
9999

100100
@ReactProp(name = ViewProps.ACCESSIBILITY_ORDER)
101101
public open fun setAccessibilityOrder(view: ReactViewGroup, nativeIds: ReadableArray?) {
102+
updateAccessibilityOrder(view, nativeIds)
103+
}
104+
105+
@ReactProp(name = ViewProps.EXPERIMENTAL_ACCESSIBILITY_ORDER)
106+
public open fun setExperimentalAccessibilityOrder(view: ReactViewGroup, nativeIds: ReadableArray?) {
107+
updateAccessibilityOrder(view, nativeIds)
108+
}
109+
110+
private fun updateAccessibilityOrder(view: ReactViewGroup, nativeIds: ReadableArray?) {
102111
if (!ReactNativeFeatureFlags.enableAccessibilityOrder()) {
103112
return
104113
}

packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,13 @@ AccessibilityProps::AccessibilityProps(
5252
: convertRawProp(
5353
context,
5454
rawProps,
55-
"experimental_accessibilityOrder",
56-
sourceProps.accessibilityOrder,
55+
"accessibilityOrder",
56+
convertRawProp(
57+
context,
58+
rawProps,
59+
"experimental_accessibilityOrder",
60+
sourceProps.accessibilityOrder,
61+
{}),
5762
{})),
5863
accessibilityLabelledBy(
5964
ReactNativeFeatureFlags::enableCppPropsIteratorSetter()
@@ -269,6 +274,7 @@ void AccessibilityProps::setProp(
269274
RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityState);
270275
RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityLabel);
271276
RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityOrder);
277+
RAW_SET_PROP_SWITCH_CASE(accessibilityOrder, "experimental_accessibilityOrder");
272278
RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityLabelledBy);
273279
RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityLiveRegion);
274280
RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityHint);

packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -914,7 +914,7 @@ folly::dynamic HostPlatformViewProps::getDiffProps(
914914
for (const auto& accessibilityChildId : accessibilityOrder) {
915915
accessibilityChildrenIds.push_back(accessibilityChildId);
916916
}
917-
result["experimental_accessibilityOrder"] = accessibilityChildrenIds;
917+
result["accessibilityOrder"] = accessibilityChildrenIds;
918918
}
919919

920920
if (accessibilityLiveRegion != oldProps->accessibilityLiveRegion) {

0 commit comments

Comments
 (0)