@@ -73,13 +73,9 @@ export const toFloatingPlacement = (
73
73
left : 'right' ,
74
74
'left-start' : 'right-start' ,
75
75
'left-end' : 'right-end' ,
76
- 'top-start' : 'top-end' ,
77
- 'top-end' : 'top-start' ,
78
76
right : 'left' ,
79
77
'right-start' : 'left-start' ,
80
- 'right-end' : 'left-end' ,
81
- 'bottom-start' : 'bottom-end' ,
82
- 'bottom-end' : 'bottom-start'
78
+ 'right-end' : 'left-end'
83
79
} ;
84
80
85
81
retVal = placementMapRtl [ retVal ] || retVal ;
@@ -138,11 +134,12 @@ export const toMenuPosition = (placement?: FloatingPlacement): MenuPosition => {
138
134
/**
139
135
* Convert Floating-UI placement to a valid `arrowStyles` position.
140
136
*
137
+ * @param isRtl Determines if layout is right-to-left.
141
138
* @param placement A Floating-UI placement.
142
139
*
143
140
* @returns An `arrowStyles` position.
144
141
*/
145
- export const toArrowPosition = ( placement ?: FloatingPlacement ) : ArrowPosition => {
142
+ export const toArrowPosition = ( isRtl : boolean , placement ?: FloatingPlacement ) : ArrowPosition => {
146
143
const positionMap : Record < FloatingPlacement , ArrowPosition > = {
147
144
auto : 'top' ,
148
145
top : 'bottom' ,
@@ -158,8 +155,20 @@ export const toArrowPosition = (placement?: FloatingPlacement): ArrowPosition =>
158
155
'left-start' : 'right-top' ,
159
156
'left-end' : 'right-bottom'
160
157
} ;
158
+ let retVal = positionMap [ placement || 'auto' ] ;
159
+
160
+ if ( isRtl ) {
161
+ const rtlPositionMap : Record < string , ArrowPosition > = {
162
+ 'bottom-left' : 'bottom-right' ,
163
+ 'bottom-right' : 'bottom-left' ,
164
+ 'top-left' : 'top-right' ,
165
+ 'top-right' : 'top-left'
166
+ } ;
161
167
162
- return positionMap [ placement || 'auto' ] ;
168
+ retVal = rtlPositionMap [ retVal ] || retVal ;
169
+ }
170
+
171
+ return retVal ;
163
172
} ;
164
173
165
174
/**
0 commit comments