File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -369,9 +369,12 @@ const Table = <RecordType extends DefaultRecordType>(
369369 const scrollBodyContainerRef = React . useRef < HTMLDivElement > ( null ) ;
370370 const [ hoverEle , setHoverEle ] = React . useState < ScrollSource | null > ( null ) ;
371371 const onHoverScrollSource = React . useCallback (
372- ( source : ScrollSource ) => ( ) => {
373- setHoverEle ( source ) ;
374- } ,
372+ ( source : ScrollSource ) : React . MouseEventHandler < HTMLElement > =>
373+ event => {
374+ if ( event . buttons === 0 ) {
375+ setHoverEle ( source ) ;
376+ }
377+ } ,
375378 [ ] ,
376379 ) ;
377380 const onLeaveTable = React . useCallback ( ( ) => {
@@ -519,7 +522,7 @@ const Table = <RecordType extends DefaultRecordType>(
519522 sticky : undefined ,
520523 } ) ;
521524
522- if ( source && hoverEle && scrollSource && hoverEle !== scrollSource ) {
525+ if ( source === 'body' && hoverEle && hoverEle !== 'body' ) {
523526 return ;
524527 }
525528
Original file line number Diff line number Diff line change @@ -263,6 +263,41 @@ describe('Table.Virtual', () => {
263263 expect ( setScrollLeft ) . not . toHaveBeenCalled ( ) ;
264264 } ) ;
265265
266+ it ( 'should not change hovered scroll source while dragging' , ( ) => {
267+ const { container } = getTable ( ) ;
268+
269+ resize ( container . querySelector ( '.rc-table' ) ! ) ;
270+
271+ fireEvent . mouseEnter ( container . querySelector ( '.rc-table-header' ) ! ) ;
272+ fireEvent . mouseEnter ( container . querySelector ( '.rc-table-tbody-virtual' ) ! , {
273+ buttons : 1 ,
274+ } ) ;
275+
276+ setScrollLeft . mockClear ( ) ;
277+
278+ fireEvent . wheel ( container . querySelector ( '.rc-table-tbody-virtual-holder' ) ! , {
279+ deltaX : 10 ,
280+ } ) ;
281+
282+ expect ( setScrollLeft ) . not . toHaveBeenCalled ( ) ;
283+ } ) ;
284+
285+ it ( 'should process direct header scroll when body is hovered' , ( ) => {
286+ const { container } = getTable ( ) ;
287+
288+ resize ( container . querySelector ( '.rc-table' ) ! ) ;
289+
290+ fireEvent . mouseEnter ( container . querySelector ( '.rc-table-tbody-virtual' ) ! ) ;
291+
292+ setScrollLeft . mockClear ( ) ;
293+
294+ fireEvent . wheel ( container . querySelector ( '.rc-table-header' ) ! , {
295+ deltaX : 10 ,
296+ } ) ;
297+
298+ expect ( setScrollLeft ) . toHaveBeenCalled ( ) ;
299+ } ) ;
300+
266301 it ( 'should reset hovered scroll source when leaving table' , ( ) => {
267302 const { container } = getTable ( ) ;
268303 const table = container . querySelector ( '.rc-table' ) as HTMLElement ;
You can’t perform that action at this time.
0 commit comments