diff --git a/src/vaadin-grid-data-provider-mixin.html b/src/vaadin-grid-data-provider-mixin.html index b204a55a2..a6104f788 100644 --- a/src/vaadin-grid-data-provider-mixin.html +++ b/src/vaadin-grid-data-provider-mixin.html @@ -382,8 +382,7 @@ .forEach(row => { const cachedItem = this._cache.getItemForIndex(row.index); if (cachedItem) { - this._toggleAttribute('loading', false, row); - this._updateItem(row, cachedItem); + this._getItem(row.index, row); } }); diff --git a/test/data-provider.html b/test/data-provider.html index 1866eb1a1..d545dd2cd 100644 --- a/test/data-provider.html +++ b/test/data-provider.html @@ -303,6 +303,20 @@ expect(grid.dataProvider.getCall(0).args[0].parentItem).to.be.undefined; }); + it('should request items when scrolled to an expanded parent', done => { + grid.size = 51; + grid.dataProvider = sinon.spy(infiniteDataProvider); + grid.itemIdPath = 'value'; + grid.expandedItems = [{value: 'foo50'}]; + flushGrid(grid); + animationFrameFlush(() => { + grid.$.table.scrollTop = 10000; + flushGrid(grid); + expect(grid.dataProvider.lastCall.args[0].parentItem).to.be.ok; + done(); + }); + }); + it('should request pages from 0', () => { expect(grid.dataProvider.getCall(0).args[0].page).to.equal(0); expect(grid.dataProvider.getCall(1).args[0].page).to.equal(1);