Skip to content

Commit 39e7e64

Browse files
authored
fix: adds rtl fix for floating ui implementations (#1732)
1 parent 4d12624 commit 39e7e64

File tree

4 files changed

+32
-4
lines changed

4 files changed

+32
-4
lines changed

packages/datepickers/src/elements/DatePicker/DatePicker.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import React, {
1818
import PropTypes from 'prop-types';
1919
import { mergeRefs } from 'react-merge-refs';
2020
import { ThemeContext } from 'styled-components';
21-
import { autoPlacement, autoUpdate, flip, useFloating } from '@floating-ui/react-dom';
21+
import { autoPlacement, autoUpdate, flip, platform, useFloating } from '@floating-ui/react-dom';
2222
import { IDatePickerProps, PLACEMENT, WEEK_STARTS_ON } from '../../types';
2323
import { Calendar } from './components/Calendar';
2424
import { datepickerReducer, retrieveInitialState } from './utils/date-picker-reducer';
@@ -72,6 +72,10 @@ export const DatePicker = forwardRef<HTMLDivElement, IDatePickerProps>((props, c
7272
update,
7373
floatingStyles: { transform }
7474
} = useFloating({
75+
platform: {
76+
...platform,
77+
isRTL: () => theme.rtl
78+
},
7579
elements: { reference: triggerRef?.current, floating: floatingRef?.current },
7680
placement: floatingPlacement,
7781
middleware: [_placement === 'auto' ? autoPlacement() : flip()]

packages/dropdowns/src/elements/menu/MenuList.tsx

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,15 @@ import {
1414
getFloatingPlacements,
1515
getMenuPosition
1616
} from '@zendeskgarden/react-theming';
17-
import { autoPlacement, autoUpdate, flip, offset, size, useFloating } from '@floating-ui/react-dom';
17+
import {
18+
autoPlacement,
19+
autoUpdate,
20+
flip,
21+
offset,
22+
platform,
23+
size,
24+
useFloating
25+
} from '@floating-ui/react-dom';
1826
import { IMenuListProps, PLACEMENT } from '../../types';
1927
import { StyledFloatingMenu, StyledMenu } from '../../views';
2028
import { createPortal } from 'react-dom';
@@ -59,6 +67,14 @@ export const MenuList = forwardRef<HTMLUListElement, IMenuListProps>(
5967
update,
6068
floatingStyles: { transform }
6169
} = useFloating<HTMLElement>({
70+
platform: {
71+
...platform,
72+
// Defers RTL to Garden
73+
// References:
74+
// - https://github.com/floating-ui/floating-ui/issues/1530
75+
// - https://github.com/floating-ui/floating-ui/blob/master/packages/dom/src/platform/isRTL.ts#L3
76+
isRTL: () => theme.rtl
77+
},
6278
elements: { reference: triggerRef?.current, floating: floatingRef?.current },
6379
placement: floatingPlacement,
6480
middleware: [

packages/modals/src/elements/TooltipModal/TooltipModal.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import React, { HTMLAttributes, useState, useContext, useEffect, useRef } from '
99
import PropTypes from 'prop-types';
1010
import { ThemeContext } from 'styled-components';
1111
import { CSSTransition } from 'react-transition-group';
12-
import { autoPlacement, autoUpdate, offset, useFloating } from '@floating-ui/react-dom';
12+
import { autoPlacement, autoUpdate, offset, platform, useFloating } from '@floating-ui/react-dom';
1313
import { useModal } from '@zendeskgarden/container-modal';
1414
import { mergeRefs } from 'react-merge-refs';
1515
import { TooltipModalContext } from '../../utils/useTooltipModalContext';
@@ -70,6 +70,10 @@ const TooltipModalComponent = React.forwardRef<HTMLDivElement, ITooltipModalProp
7070
update,
7171
floatingStyles: { transform }
7272
} = useFloating({
73+
platform: {
74+
...platform,
75+
isRTL: () => theme.rtl
76+
},
7377
elements: { reference: referenceElement, floating: floatingElement },
7478
placement: floatingPlacement,
7579
middleware: [

packages/tooltips/src/elements/Tooltip.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { useTooltip } from '@zendeskgarden/container-tooltip';
1414
import { composeEventHandlers, getControlledValue } from '@zendeskgarden/container-utilities';
1515
import { StyledTooltipWrapper, StyledTooltip } from '../styled';
1616
import { ITooltipProps, PLACEMENT, SIZE, TYPE } from '../types';
17-
import { autoPlacement, autoUpdate, useFloating } from '@floating-ui/react-dom';
17+
import { autoPlacement, autoUpdate, platform, useFloating } from '@floating-ui/react-dom';
1818
import { DEFAULT_THEME, getFloatingPlacements } from '@zendeskgarden/react-theming';
1919
import { toSize } from './utils';
2020

@@ -63,6 +63,10 @@ export const Tooltip = ({
6363
update,
6464
floatingStyles: { transform }
6565
} = useFloating({
66+
platform: {
67+
...platform,
68+
isRTL: () => theme.rtl
69+
},
6670
elements: { reference: triggerRef?.current, floating: floatingRef?.current },
6771
placement: floatingPlacement,
6872
middleware: _placement === 'auto' ? [autoPlacement()] : undefined

0 commit comments

Comments
 (0)