diff --git a/source/MultiGrid/MultiGrid.jest.js b/source/MultiGrid/MultiGrid.jest.js index 06d352556..d042b5a0e 100644 --- a/source/MultiGrid/MultiGrid.jest.js +++ b/source/MultiGrid/MultiGrid.jest.js @@ -712,4 +712,27 @@ describe('MultiGrid', () => { expect(onScrollbarPresenceChange).not.toHaveBeenCalled(); }); }); + + describe('isScrolling', () => { + it('should be true for all cells being rendered while scrolling', () => { + const cellRenderer = jest.fn(); + + const component = render( + getMarkup({ + cellRenderer, + }), + ); + cellRenderer.mockReset(); + + component._bottomRightGrid.handleScrollEvent({ + scrollTop: 100, + }); + expect(cellRenderer).toHaveBeenCalled(); + + cellRenderer.mock.calls.forEach(call => { + const args = call[0]; + expect(args.isScrolling).toBeTruthy(); + }); + }); + }); }); diff --git a/source/MultiGrid/MultiGrid.js b/source/MultiGrid/MultiGrid.js index 4a1eb8e99..99c99c03f 100644 --- a/source/MultiGrid/MultiGrid.js +++ b/source/MultiGrid/MultiGrid.js @@ -228,7 +228,7 @@ class MultiGrid extends React.PureComponent { // scrollTop and scrollLeft props are explicitly filtered out and ignored - const {scrollLeft, scrollTop} = this.state; + const {scrollLeft, scrollTop, isScrolling} = this.state; return (
@@ -238,6 +238,7 @@ class MultiGrid extends React.PureComponent { ...rest, onScroll, scrollLeft, + isScrolling: isScrolling || undefined, })}
@@ -245,6 +246,7 @@ class MultiGrid extends React.PureComponent { ...rest, onScroll, scrollTop, + isScrolling: isScrolling || undefined, })} {this._renderBottomRightGrid({ ...rest, @@ -559,9 +561,14 @@ class MultiGrid extends React.PureComponent { _onScroll = scrollInfo => { const {scrollLeft, scrollTop} = scrollInfo; + const isScrolling = + this.state.scrollTop !== scrollTop || + this.state.scrollLeft !== scrollLeft; + this.setState({ scrollLeft, scrollTop, + isScrolling, }); const onScroll = this.props.onScroll; if (onScroll) {