Skip to content

Commit 8d65c99

Browse files
authored
Fix mobile column resizing (#3727)
1 parent 5695b36 commit 8d65c99

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

packages/@react-spectrum/table/src/TableView.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,14 @@ import ArrowDownSmall from '@spectrum-icons/ui/ArrowDownSmall';
1414
import {chain, mergeProps, useLayoutEffect} from '@react-aria/utils';
1515
import {Checkbox} from '@react-spectrum/checkbox';
1616
import ChevronDownMedium from '@spectrum-icons/ui/ChevronDownMedium';
17-
import {classNames, useDOMRef, useFocusableRef, useStyleProps, useUnwrapDOMRef} from '@react-spectrum/utils';
17+
import {
18+
classNames,
19+
useDOMRef,
20+
useFocusableRef,
21+
useIsMobileDevice,
22+
useStyleProps,
23+
useUnwrapDOMRef
24+
} from '@react-spectrum/utils';
1825
import {DOMRef, FocusableRef, MoveMoveEvent} from '@react-types/shared';
1926
import {FocusRing, FocusScope, useFocusRing} from '@react-aria/focus';
2027
import {getInteractionModality, useHover, usePress} from '@react-aria/interactions';
@@ -653,18 +660,26 @@ function ResizableTableColumnHeader(props) {
653660
return options;
654661
// eslint-disable-next-line react-hooks/exhaustive-deps
655662
}, [allowsSorting]);
663+
let isMobile = useIsMobileDevice();
656664

657665
useEffect(() => {
658666
if (columnState.currentlyResizingColumn === column.key) {
659667
// focusSafely won't actually focus because the focus moves from the menuitem to the body during the after transition wait
660668
// without the immediate timeout, Android Chrome doesn't move focus to the resizer
669+
if (isMobile) {
670+
setTimeout(() => {
671+
resizingRef.current.focus();
672+
onFocusedResizer();
673+
}, 400);
674+
return;
675+
}
661676
setTimeout(() => {
662677
resizingRef.current.focus();
663678
onFocusedResizer();
664679
}, 0);
665680
}
666681
// eslint-disable-next-line react-hooks/exhaustive-deps
667-
}, [columnState.currentlyResizingColumn, column.key]);
682+
}, [columnState.currentlyResizingColumn, column.key, isMobile]);
668683

669684
let showResizer = !isEmpty && ((headerRowHovered && getInteractionModality() !== 'keyboard') || columnState.currentlyResizingColumn != null);
670685

0 commit comments

Comments
 (0)