diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt index aed3c6007f97..17cdbdb099fb 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt @@ -208,11 +208,11 @@ internal data class BorderRadiusStyle( CornerRadii(it, width, height) } ?: zeroRadii, bottomLeft = - (endEnd ?: bottomStart ?: bottomLeft ?: uniform)?.let { + (endEnd ?: bottomEnd ?: bottomLeft ?: uniform)?.let { CornerRadii(it, width, height) } ?: zeroRadii, bottomRight = - (endStart ?: bottomEnd ?: bottomRight ?: uniform)?.let { + (endStart ?: bottomStart ?: bottomRight ?: uniform)?.let { CornerRadii(it, width, height) } ?: zeroRadii, width = width, diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/BorderRadiusStyleTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/BorderRadiusStyleTest.kt index 4a002f15fb8c..f28972f3c1c7 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/BorderRadiusStyleTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/BorderRadiusStyleTest.kt @@ -149,14 +149,14 @@ class BorderRadiusStyleTest { arrayOf( BorderRadiusProp.BORDER_RADIUS, BorderRadiusProp.BORDER_BOTTOM_LEFT_RADIUS, - BorderRadiusProp.BORDER_BOTTOM_START_RADIUS, + BorderRadiusProp.BORDER_BOTTOM_END_RADIUS, BorderRadiusProp.BORDER_END_END_RADIUS, ), ComputedBorderRadiusProp.COMPUTED_BORDER_BOTTOM_RIGHT_RADIUS to arrayOf( BorderRadiusProp.BORDER_RADIUS, BorderRadiusProp.BORDER_BOTTOM_RIGHT_RADIUS, - BorderRadiusProp.BORDER_BOTTOM_END_RADIUS, + BorderRadiusProp.BORDER_BOTTOM_START_RADIUS, BorderRadiusProp.BORDER_END_START_RADIUS, ), ) @@ -174,6 +174,23 @@ class BorderRadiusStyleTest { } } + @Test + fun testBottomLogicalCornersRTLRegardlessOfSwap() { + val borderRadiusStyle = + BorderRadiusStyle( + bottomStart = LengthPercentage(10f, LengthPercentageType.POINT), + bottomEnd = LengthPercentage(20f, LengthPercentageType.POINT), + ) + + for (swap in listOf(false, true)) { + setContextLeftAndRightSwap(ctx, swap) + val resolved = borderRadiusStyle.resolve(1, context = ctx, width = 100f, height = 100f) + + assertThat(resolved.bottomLeft).isEqualTo(CornerRadii(20f, 20f)) + assertThat(resolved.bottomRight).isEqualTo(CornerRadii(10f, 10f)) + } + } + @Test fun testBorderRadiusPercentages() { val borderRadiusStyle =