Skip to content

Commit 52ab52f

Browse files
committed
Fix scroll on mobile devices
1 parent b7eb1ff commit 52ab52f

3 files changed

Lines changed: 26 additions & 12 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-table-scroll",
3-
"version": "0.0.12b",
3+
"version": "0.0.14b",
44
"author": "Ontuzhev Viacheslav (Natterum)",
55
"license": "MIT",
66
"main": "./dist/cjs/index.js",

src/components/ReactTableScroll.tsx

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,20 @@ interface IProps {
1010

1111
const ReactTableScroll = ({ children }: IProps) => {
1212
const [horizontalScrollStyle, setHorizontalScrollStyle] = useState<object>({});
13+
const [isMobileDevice, setIsMobileDevice] = useState<boolean>(false);
14+
1315
const horizontalScrollRef = useRef<HTMLDivElement | null>(null);
1416
const targetRef = useRef<HTMLDivElement | null>(null);
1517
const tableContainerRef = useRef<HTMLDivElement | null>(null);
1618
const tableWrapperRef = useRef<HTMLDivElement | any>(null);
19+
1720
const { width, height } = useResizeDetector({ targetRef: tableContainerRef });
1821

22+
const MobileDeviceDetector = () => {
23+
const isMobile = /Mobi|Android/i.test(navigator.userAgent);
24+
setIsMobileDevice(isMobile);
25+
};
26+
1927
const diffSizes = (): boolean => {
2028
if (tableContainerRef?.current && targetRef?.current) {
2129
return tableContainerRef.current?.clientWidth > targetRef.current?.clientWidth;
@@ -44,21 +52,28 @@ const ReactTableScroll = ({ children }: IProps) => {
4452

4553
useEffect(() => {
4654
handleResize();
55+
MobileDeviceDetector();
4756
}, [width, height]);
4857

58+
useEffect(() => {
59+
MobileDeviceDetector();
60+
}, []);
61+
4962
return (
50-
<div ref={targetRef}>
51-
<div style={rtsTableWrapper} ref={tableWrapperRef}>
52-
<div style={rtsTableContainer} ref={tableContainerRef}>
53-
{children}
63+
<>
64+
<div ref={targetRef}>
65+
<div style={{ ...rtsTableWrapper, overflowX: isMobileDevice ? 'scroll' : 'hidden' }} ref={tableWrapperRef}>
66+
<div style={rtsTableContainer} ref={tableContainerRef}>
67+
{children}
68+
</div>
5469
</div>
70+
{diffSizes() && !isMobileDevice && (
71+
<div style={rtsTableScrollWrapper} ref={horizontalScrollRef} onScroll={onTableHorizontalScroll}>
72+
<div style={{ ...rtsTableScrollContent, ...horizontalScrollStyle }}></div>
73+
</div>
74+
)}
5575
</div>
56-
{diffSizes() && (
57-
<div style={rtsTableScrollWrapper} ref={horizontalScrollRef} onScroll={onTableHorizontalScroll}>
58-
<div style={{ ...rtsTableScrollContent, ...horizontalScrollStyle }}></div>
59-
</div>
60-
)}
61-
</div>
76+
</>
6277
);
6378
};
6479

src/styles.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { CSSProperties } from 'react';
22

33
export const rtsTableWrapper: CSSProperties = {
4-
overflowX: 'hidden',
54
position: 'relative',
65
width: '100%'
76
};

0 commit comments

Comments
 (0)