mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Extended Accessibility Actions Support (#24695)
Summary: This is a reconstitution of #24190. It extends accessibility actions to include both a name and user facing label. These extensions support both standard and custom actions. We've also added actions support on Android, and added examples to RNTester showing how both standard and custom accessibility actions are used. ## Changelog [general] [changed] - Enhanced accessibility actions support Pull Request resolved: https://github.com/facebook/react-native/pull/24695 Differential Revision: D15391408 Pulled By: cpojer fbshipit-source-id: 5ed48004d46d9887da53baea7fdcd0e7e15c5739
This commit is contained in:
1 parent
933e65e245
commit
14b4668947
13 files changed
+504
-281
No files matched your search
@@ -14,11 +14,14 @@ import java.util.HashMap;
|
||||
|
||||
import com.facebook.react.R;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.uimanager.AccessibilityDelegateUtil.AccessibilityRole;
|
||||
import com.facebook.react.common.MapBuilder;
|
||||
import com.facebook.react.uimanager.ReactAccessibilityDelegate;
|
||||
import com.facebook.react.uimanager.ReactAccessibilityDelegate.AccessibilityRole;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
import com.facebook.react.uimanager.util.ReactFindViewUtil;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Map;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
/**
|
||||
@@ -38,6 +41,7 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
private static final String PROP_ACCESSIBILITY_LIVE_REGION = "accessibilityLiveRegion";
|
||||
private static final String PROP_ACCESSIBILITY_ROLE = "accessibilityRole";
|
||||
private static final String PROP_ACCESSIBILITY_STATES = "accessibilityStates";
|
||||
private static final String PROP_ACCESSIBILITY_ACTIONS = "accessibilityActions";
|
||||
private static final String PROP_IMPORTANT_FOR_ACCESSIBILITY = "importantForAccessibility";
|
||||
|
||||
// DEPRECATED
|
||||
@@ -189,6 +193,15 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
}
|
||||
}
|
||||
|
||||
@ReactProp(name = PROP_ACCESSIBILITY_ACTIONS)
|
||||
public void setAccessibilityActions(T view, ReadableArray accessibilityActions) {
|
||||
if (accessibilityActions == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
view.setTag(R.id.accessibility_actions, accessibilityActions);
|
||||
}
|
||||
|
||||
@ReactProp(name = PROP_IMPORTANT_FOR_ACCESSIBILITY)
|
||||
public void setImportantForAccessibility(@Nonnull T view, @Nullable String importantForAccessibility) {
|
||||
if (importantForAccessibility == null || importantForAccessibility.equals("auto")) {
|
||||
@@ -291,7 +304,7 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
}
|
||||
|
||||
private void updateViewAccessibility(@Nonnull T view) {
|
||||
AccessibilityDelegateUtil.setDelegate(view);
|
||||
ReactAccessibilityDelegate.setDelegate(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -299,4 +312,11 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
super.onAfterUpdateTransaction(view);
|
||||
updateViewAccessibility(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Map<String, Object> getExportedCustomDirectEventTypeConstants() {
|
||||
return MapBuilder.<String, Object>builder()
|
||||
.put("performAction", MapBuilder.of("registrationName", "onAccessibilityAction"))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user