@@ -6,11 +6,29 @@ import 'simplebar-react/dist/simplebar.min.css';
66
77const MainContainer = styled . div < {
88 $mode : 'AUTO' | 'FIXED' ;
9+ $showHorizontalScrollbar : boolean ;
10+ $showVerticalScrollbar : boolean ;
911} > `
1012 display: flex;
1113 flex-direction: column;
1214 height: 100%;
1315 position: relative;
16+
17+ /* Critical CSS controls for SimpleBar */
18+
19+
20+ ${ props => ! props . $showHorizontalScrollbar && `
21+ div.simplebar-horizontal {
22+ visibility: hidden !important;
23+ }
24+ ` }
25+
26+ ${ props => ! props . $showVerticalScrollbar && `
27+ div.simplebar-vertical {
28+ visibility: hidden !important;
29+ }
30+ ` }
31+
1432` ;
1533
1634const StickyToolbar = styled . div < {
@@ -24,46 +42,33 @@ const StickyToolbar = styled.div<{
2442 ? '0 2px 8px rgba(0,0,0,0.1)'
2543 : '0 -2px 8px rgba(0,0,0,0.1)'
2644 } ;
45+ flex-shrink: 0;
2746` ;
2847
2948const DefaultToolbar = styled . div `
3049 flex-shrink: 0;
50+ /* Prevent horizontal scrolling while allowing vertical flow */
51+ position: sticky;
52+ left: 0;
53+ right: 0;
54+ z-index: 1;
55+ background: inherit;
3156` ;
3257
3358const TableSection = styled . div < {
3459 $mode : 'AUTO' | 'FIXED' ;
3560} > `
36-
3761 flex: 1 1 auto;
3862 min-height: 0;
39- border: 4px solid blue;
40- overflow: hidden;
63+ min-width: 0;
4164` ;
4265
43-
44- const SimpleBarWrapper = styled ( SimpleBar ) < {
45- $showVertical : boolean ;
46- $showHorizontal : boolean ;
47- } > `
66+ const SimpleBarWrapper = styled ( SimpleBar ) `
4867 height: 100%;
49- border: 4px solid red ;
68+ overflow: auto !important ;
5069
51- .ant-table-content, .ant-table-body {
52- overflow: unset !important;
53- }
54-
55- ${ props => ! props . $showVertical && `
56- .simplebar-track.simplebar-vertical {
57- visibility: hidden !important;
58- }
59- ` }
60-
61- ${ props => ! props . $showHorizontal && `
62- .simplebar-track.simplebar-horizontal {
63- visibility: hidden !important;
64- }
65- ` }
66-
70+
71+ /* CRITICAL: Transfer scroll control from Ant Design to SimpleBar */
6772` ;
6873
6974interface TableContainerProps {
@@ -89,32 +94,50 @@ export const TableContainer: React.FC<TableContainerProps> = ({
8994 showVerticalScrollbar,
9095 showHorizontalScrollbar
9196} ) => {
92-
97+ const hideScrollbar = ! showHorizontalScrollbar && ! showVerticalScrollbar ;
9398
9499 return (
95- < MainContainer $mode = { mode } ref = { containerRef } >
96- { stickyToolbar && toolbarPosition === 'above' && (
100+ < MainContainer
101+ $mode = { mode }
102+ ref = { containerRef }
103+ $showHorizontalScrollbar = { showHorizontalScrollbar }
104+ $showVerticalScrollbar = { showVerticalScrollbar }
105+ >
106+ { /* Sticky above toolbar - always visible */ }
107+ { stickyToolbar && toolbarPosition === 'above' && showToolbar && (
97108 < StickyToolbar $position = "above" > { toolbar } </ StickyToolbar >
98109 ) }
99- < TableSection $mode = { mode } >
100-
101- < SimpleBarWrapper
102- $showVertical = { showVerticalScrollbar }
103- $showHorizontal = { showHorizontalScrollbar }
104- >
105- { ! stickyToolbar && toolbarPosition === 'above' && (
106- < DefaultToolbar > { toolbar } </ DefaultToolbar >
107- ) }
108- { children }
109- { ! stickyToolbar && toolbarPosition === 'below' && (
110- < DefaultToolbar > { toolbar } </ DefaultToolbar >
110+
111+ < TableSection $mode = { mode } >
112+ { hideScrollbar ? (
113+ /* No scrollbars - render without SimpleBar */
114+ < >
115+ { ! stickyToolbar && toolbarPosition === 'above' && showToolbar && (
116+ < DefaultToolbar > { toolbar } </ DefaultToolbar >
117+ ) }
118+ { children }
119+ { ! stickyToolbar && toolbarPosition === 'below' && showToolbar && (
120+ < DefaultToolbar > { toolbar } </ DefaultToolbar >
121+ ) }
122+ </ >
123+ ) : (
124+ /* Scrollbars enabled - use SimpleBar */
125+ < SimpleBarWrapper className = "simplebar-wrapper" >
126+ { ! stickyToolbar && toolbarPosition === 'above' && showToolbar && (
127+ < DefaultToolbar > { toolbar } </ DefaultToolbar >
128+ ) }
129+ { children }
130+ { ! stickyToolbar && toolbarPosition === 'below' && showToolbar && (
131+ < DefaultToolbar > { toolbar } </ DefaultToolbar >
132+ ) }
133+ </ SimpleBarWrapper >
134+ ) }
135+ </ TableSection >
136+
137+ { /* Sticky below toolbar - always visible */ }
138+ { stickyToolbar && toolbarPosition === 'below' && showToolbar && (
139+ < StickyToolbar $position = "below" > { toolbar } </ StickyToolbar >
111140 ) }
112- </ SimpleBarWrapper >
113-
114- </ TableSection >
115- { stickyToolbar && toolbarPosition === 'below' && (
116- < StickyToolbar $position = "below" > { toolbar } </ StickyToolbar >
117- ) }
118- </ MainContainer >
141+ </ MainContainer >
119142 ) ;
120143} ;
0 commit comments