Skip to content

Commit 6869e78

Browse files
fix: use Math.round to get correct scroller first index (#8278) (#8285)
Co-authored-by: Serhii Kulykov <iamkulykov@gmail.com>
1 parent 3b9ff4d commit 6869e78

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

packages/date-picker/src/vaadin-infinite-scroller.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,8 @@ export class InfiniteScroller extends HTMLElement {
371371

372372
/** @private */
373373
_updateClones(viewPortOnly) {
374-
this._firstIndex = ~~((this._buffers[0].translateY - this._initialScroll) / this.itemHeight) + this._initialIndex;
374+
this._firstIndex =
375+
Math.round((this._buffers[0].translateY - this._initialScroll) / this.itemHeight) + this._initialIndex;
375376

376377
const scrollerRect = viewPortOnly ? this.$.scroller.getBoundingClientRect() : undefined;
377378
this._buffers.forEach((buffer, bufferIndex) => {

packages/date-picker/test/scroller.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,3 +125,18 @@ describe('vaadin-infinite-scroller', () => {
125125
});
126126
});
127127
});
128+
129+
describe('fractional item size', () => {
130+
let scroller;
131+
132+
beforeEach(async () => {
133+
scroller = fixtureSync('<vaadin-infinite-scroller></vaadin-infinite-scroller>');
134+
scroller.bufferSize = 80;
135+
scroller.style.setProperty('--vaadin-infinite-scroller-item-height', '30.0001px');
136+
await activateScroller(scroller);
137+
});
138+
139+
it('should be at the position 0', () => {
140+
expect(scroller.position).to.be.closeTo(0, 0.001);
141+
});
142+
});

0 commit comments

Comments
 (0)