Skip to content

Commit 5ad55da

Browse files
authored
virtual-scroll: add tests for fixed size items (#11255)
* virtual-scroll: add tests for fixed size items * address comments * fix bug in fixed size strategy * fix bazel build
1 parent 11783b7 commit 5ad55da

File tree

5 files changed

+404
-34
lines changed

5 files changed

+404
-34
lines changed

src/cdk-experimental/scrolling/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ ng_module(
1010
module_name = "@angular/cdk-experimental/scrolling",
1111
assets = [":virtual_scroll_viewport_css"] + glob(["**/*.html"]),
1212
deps = [
13+
"//src/cdk/coercion",
1314
"//src/cdk/collections",
1415
"@rxjs",
1516
],

src/cdk-experimental/scrolling/fixed-size-virtual-scroll.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,12 @@ export class FixedSizeVirtualScrollStrategy implements VirtualScrollStrategy {
9494

9595
const scrollOffset = this._viewport.measureScrollOffset();
9696
const firstVisibleIndex = Math.floor(scrollOffset / this._itemSize);
97+
const firstItemRemainder = scrollOffset % this._itemSize;
9798
const range = this._expandRange(
9899
{start: firstVisibleIndex, end: firstVisibleIndex},
99100
this._bufferSize,
100-
Math.ceil(this._viewport.getViewportSize() / this._itemSize) + this._bufferSize);
101+
Math.ceil((this._viewport.getViewportSize() + firstItemRemainder) / this._itemSize) +
102+
this._bufferSize);
101103
this._viewport.setRenderedRange(range);
102104
this._viewport.setRenderedContentOffset(this._itemSize * range.start);
103105
}

0 commit comments

Comments
 (0)