diff --git a/packages/react-native/Libraries/Components/ScrollView/ScrollView.js b/packages/react-native/Libraries/Components/ScrollView/ScrollView.js index 8f4f297ed15..2f7b9faf86f 100644 --- a/packages/react-native/Libraries/Components/ScrollView/ScrollView.js +++ b/packages/react-native/Libraries/Components/ScrollView/ScrollView.js @@ -673,7 +673,7 @@ type ScrollViewBaseProps = $ReadOnly<{ }>; export type ScrollViewProps = $ReadOnly<{ - ...Omit, + ...ViewProps, ...ScrollViewPropsIOS, ...ScrollViewPropsAndroid, ...ScrollViewBaseProps, diff --git a/packages/react-native/Libraries/Components/TextInput/TextInput.flow.js b/packages/react-native/Libraries/Components/TextInput/TextInput.flow.js index 5fa8811144b..acefa1ffc95 100644 --- a/packages/react-native/Libraries/Components/TextInput/TextInput.flow.js +++ b/packages/react-native/Libraries/Components/TextInput/TextInput.flow.js @@ -1031,7 +1031,7 @@ type TextInputBaseProps = $ReadOnly<{ }>; export type TextInputProps = $ReadOnly<{ - ...Omit, + ...Omit, ...TextInputIOSProps, ...TextInputAndroidProps, ...TextInputBaseProps, diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index 2462978d668..c7f9342f3bf 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -3286,6 +3286,7 @@ public abstract class com/facebook/react/uimanager/BaseViewManager : com/faceboo public fun setAccessibilityLabel (Landroid/view/View;Ljava/lang/String;)V public fun setAccessibilityLabelledBy (Landroid/view/View;Lcom/facebook/react/bridge/Dynamic;)V public fun setAccessibilityLiveRegion (Landroid/view/View;Ljava/lang/String;)V + public fun setAccessibilityOrder (Landroid/view/View;Lcom/facebook/react/bridge/ReadableArray;)V public fun setAccessibilityRole (Landroid/view/View;Ljava/lang/String;)V public fun setAccessibilityValue (Landroid/view/View;Lcom/facebook/react/bridge/ReadableMap;)V public fun setBackgroundColor (Landroid/view/View;I)V @@ -3776,14 +3777,6 @@ public final class com/facebook/react/uimanager/ReactAccessibilityDelegate$Role public static fun values ()[Lcom/facebook/react/uimanager/ReactAccessibilityDelegate$Role; } -public final class com/facebook/react/uimanager/ReactAxOrderHelper { - public static final field INSTANCE Lcom/facebook/react/uimanager/ReactAxOrderHelper; - public final fun buildAxOrderList (Landroid/view/View;Ljava/util/List;[Landroid/view/View;)V - public static final fun cleanUpAxOrder (Landroid/view/ViewGroup;)V - public final fun disableFocusForSubtree (Landroid/view/ViewGroup;Ljava/util/List;)V - public static final fun restoreFocusability (Landroid/view/ViewGroup;)V -} - public abstract interface class com/facebook/react/uimanager/ReactClippingProhibitedView { } @@ -6554,8 +6547,6 @@ public final class com/facebook/react/views/view/ReactDrawableHelper { public class com/facebook/react/views/view/ReactViewGroup : android/view/ViewGroup, com/facebook/react/touch/ReactHitSlopView, com/facebook/react/touch/ReactInterceptingViewGroup, com/facebook/react/uimanager/ReactClippingViewGroup, com/facebook/react/uimanager/ReactOverflowViewWithInset, com/facebook/react/uimanager/ReactPointerEventsView, com/facebook/react/uimanager/ReactZIndexedViewGroup { public fun (Landroid/content/Context;)V - public fun addChildrenForAccessibility (Ljava/util/ArrayList;)V - public final fun cleanUpAxOrderListener ()V protected fun dispatchDraw (Landroid/graphics/Canvas;)V public fun dispatchGenericMotionEvent (Landroid/view/MotionEvent;)Z public fun dispatchProvideStructure (Landroid/view/ViewStructure;)V @@ -6563,7 +6554,6 @@ public class com/facebook/react/views/view/ReactViewGroup : android/view/ViewGro public fun draw (Landroid/graphics/Canvas;)V protected fun drawChild (Landroid/graphics/Canvas;Landroid/view/View;J)Z public fun endViewTransition (Landroid/view/View;)V - public final fun getAxOrderList ()Ljava/util/List; protected fun getChildDrawingOrder (II)I public fun getClippingRect (Landroid/graphics/Rect;)V public fun getHitSlopRect ()Landroid/graphics/Rect; @@ -6583,7 +6573,6 @@ public class com/facebook/react/views/view/ReactViewGroup : android/view/ViewGro public fun onViewAdded (Landroid/view/View;)V public fun onViewRemoved (Landroid/view/View;)V public fun requestLayout ()V - public final fun setAxOrderList (Ljava/util/List;)V public final fun setBackfaceVisibility (Ljava/lang/String;)V public final fun setBackfaceVisibilityDependantOpacity ()V public fun setBackgroundColor (I)V @@ -6620,15 +6609,12 @@ public class com/facebook/react/views/view/ReactViewManager : com/facebook/react public fun nextFocusLeft (Lcom/facebook/react/views/view/ReactViewGroup;I)V public fun nextFocusRight (Lcom/facebook/react/views/view/ReactViewGroup;I)V public fun nextFocusUp (Lcom/facebook/react/views/view/ReactViewGroup;I)V - public synthetic fun onDropViewInstance (Landroid/view/View;)V - public fun onDropViewInstance (Lcom/facebook/react/views/view/ReactViewGroup;)V public synthetic fun prepareToRecycleView (Lcom/facebook/react/uimanager/ThemedReactContext;Landroid/view/View;)Landroid/view/View; protected fun prepareToRecycleView (Lcom/facebook/react/uimanager/ThemedReactContext;Lcom/facebook/react/views/view/ReactViewGroup;)Lcom/facebook/react/views/view/ReactViewGroup; public synthetic fun receiveCommand (Landroid/view/View;ILcom/facebook/react/bridge/ReadableArray;)V public synthetic fun receiveCommand (Landroid/view/View;Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;)V public fun receiveCommand (Lcom/facebook/react/views/view/ReactViewGroup;ILcom/facebook/react/bridge/ReadableArray;)V public fun receiveCommand (Lcom/facebook/react/views/view/ReactViewGroup;Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;)V - public fun setAccessibilityOrder (Lcom/facebook/react/views/view/ReactViewGroup;Lcom/facebook/react/bridge/ReadableArray;)V public fun setAccessible (Lcom/facebook/react/views/view/ReactViewGroup;Z)V public fun setBackfaceVisibility (Lcom/facebook/react/views/view/ReactViewGroup;Ljava/lang/String;)V public fun setBackgroundImage (Lcom/facebook/react/views/view/ReactViewGroup;Lcom/facebook/react/bridge/ReadableArray;)V diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java index 6fbd22d7a51..07ac1cad632 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java @@ -30,6 +30,7 @@ import com.facebook.react.bridge.ReadableMapKeySetIterator; import com.facebook.react.bridge.ReadableType; import com.facebook.react.common.MapBuilder; import com.facebook.react.common.ReactConstants; +import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags; import com.facebook.react.uimanager.ReactAccessibilityDelegate.AccessibilityRole; import com.facebook.react.uimanager.ReactAccessibilityDelegate.Role; import com.facebook.react.uimanager.annotations.ReactProp; @@ -311,9 +312,61 @@ public abstract class BaseViewManager + mViewManager.setAccessibilityOrder(view, value as ReadableArray?) ViewProps.OPACITY -> mViewManager.setOpacity(view, (value as Double?)?.toFloat() ?: 1.0f) + ViewProps.OUTLINE_COLOR -> mViewManager.setOutlineColor(view, value as Int?) ViewProps.OUTLINE_OFFSET -> diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAxOrderHelper.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAxOrderHelper.kt deleted file mode 100644 index 5a10d2f3ceb..00000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAxOrderHelper.kt +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.uimanager - -import android.view.View -import android.view.ViewGroup -import com.facebook.react.R - -public object ReactAxOrderHelper { - @JvmStatic - public fun cleanUpAxOrder(host: ViewGroup) { - fun traverse(view: View) { - val originalFocusability = view.getTag(R.id.original_focusability) as Boolean? - if (originalFocusability != null) { - view.isFocusable = originalFocusability - } - - val axOrderParent = view.getTag(R.id.accessibility_order_parent) as View? - if (axOrderParent != null) { - view.setTag(R.id.accessibility_order_parent, null) - } - - if (view is ViewGroup) { - for (i in 0..) { - fun traverse(view: View) { - - if (!axOrderList.contains(view.getTag(R.id.view_tag_native_id))) { - if (view.getTag(R.id.original_focusability) == null) { - view.setTag(R.id.original_focusability, view.isFocusable) - } - view.isFocusable = false - } - - if (view is ViewGroup) { - for (i in 0.., - result: Array, - ) { - val nativeId = view.getTag(R.id.view_tag_native_id) - view.setTag(R.id.accessibility_order_parent, this) - - if (axOrderList.contains(nativeId)) { - val idx = axOrderList.indexOf(nativeId) - if (idx != -1) { - result[idx] = view - } - } - - if (view is ViewGroup) { - for (i in 0..? = null - private var childrenLayoutChangeListener: ChildrenLayoutChangeListener? = null private var onInterceptTouchEventListener: OnInterceptTouchEventListener? = null private var needsOffscreenAlphaCompositing = false private var backfaceOpacity = 0f private var backfaceVisible = false private var childrenRemovedWhileTransitioning: MutableSet? = null - private var accessibilityStateChangeListener: - AccessibilityManager.AccessibilityStateChangeListener? = - null init { initView() @@ -939,70 +931,6 @@ public open class ReactViewGroup public constructor(context: Context?) : alpha = 0f } - override fun addChildrenForAccessibility(outChildren: ArrayList) { - val axOrderParentOrderList = - (getTag(R.id.accessibility_order_parent) as ReactViewGroup?)?.axOrderList - val axOrder: MutableList<*>? = axOrderList - if (axOrder != null) { - - val am: AccessibilityManager? = - this.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager? - if (accessibilityStateChangeListener == null && am != null) { - val newAccessibilityStateChangeListener = - AccessibilityManager.AccessibilityStateChangeListener { enabled -> - if (!enabled) { - ReactAxOrderHelper.restoreFocusability(this) - } - } - - am.addAccessibilityStateChangeListener(newAccessibilityStateChangeListener) - accessibilityStateChangeListener = newAccessibilityStateChangeListener - } - - val result = arrayOfNulls(axOrder.size) - - for (i in 0..() return preparedView } - override fun onDropViewInstance(view: ReactViewGroup) { - super.onDropViewInstance(view) - view.cleanUpAxOrderListener() - } - @ReactProp(name = "accessible") public open fun setAccessible(view: ReactViewGroup, accessible: Boolean) { view.isFocusable = accessible } - @ReactProp(name = ViewProps.ACCESSIBILITY_ORDER) - public open fun setAccessibilityOrder(view: ReactViewGroup, nativeIds: ReadableArray?) { - if (!ReactNativeFeatureFlags.enableAccessibilityOrder()) { - return - } - - ReactAxOrderHelper.cleanUpAxOrder(view) - - if (nativeIds == null) { - view.axOrderList = null - return - } - - val axOrderList = mutableListOf() - - for (i in 0 until nativeIds.size()) { - val id = nativeIds.getString(i) - if (id != null) { - axOrderList.add(id) - } - } - - view.axOrderList = axOrderList - } - @ReactProp(name = "hasTVPreferredFocus") public open fun setTVPreferredFocus(view: ReactViewGroup, hasTVPreferredFocus: Boolean) { if (hasTVPreferredFocus) { diff --git a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/ids.xml b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/ids.xml index a7faf3fd60c..eb8ccbc8c80 100644 --- a/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/ids.xml +++ b/packages/react-native/ReactAndroid/src/main/res/views/uimanager/values/ids.xml @@ -12,7 +12,10 @@ - + + + +