• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

IgniteUI / igniteui-webcomponents / 35968466218
99%

Build:
DEFAULT BRANCH: master
Ran 24 Sep 2026 07:15AM UTC
Jobs 1
Files 259
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Sep 2026 07:13AM UTC coverage: 98.542%. Remained the same
35968466218

push

github

web-flow
feat(virtual-scroll): recycle item elements, add keyFunction, fix nearest and the size estimate (#2401)

Render the window through a new `recycle` directive instead of a
positional `map`. An item that stays in the window keeps its element, so a
scroll step updates only the items that enter the window. The elements of
the items that leave are reused for the items that enter, in DOM order,
and elements that no item needs wait detached, so a scroll creates no DOM
once the window has its full size. Lit's `repeat` cannot do this: it never
reuses DOM across keys, and in lit-html 3.3.1-3.3.3 its `removePart`
leaves one comment node for each removed item (lit/lit#5010).

- Add `keyFunction`. Without it, the index is the key. With it, an
  element follows its item across sort, insert and remove.
- Replace the estimate of unmeasured items with the average measured
  size. After the first measurements, apply it only while every item
  before the rendered window is measured, so the rendered items do not
  move. Count only the sizes measured since `estimatedItemSize` changed.
- Make `scrollToIndex` with `block: 'nearest'` follow native
  `scrollIntoView`. An item after the viewport now aligns to the end, so
  a scroll to the next item moves one item, not a page.

A moved element needs a new style and layout. Only kept elements could
stay in place, so on a scroll that keeps part of the window, each
recycled element moved from one end of the window to the other, and a
scroll by most of the window moved most of its elements. Select the
elements that stay in place as the heaviest subsequence of all reused
elements that keeps the old DOM order. A kept element weighs 2 and a
recycled one weighs 1, because a recycled element needs a new layout
for its new item anyway. So on a scroll, the kept elements move only
when they are fewer than half the recycled ones, that is, on a scroll
by more than two thirds of the window. With a grid-like template, this
saves up to 9% of the... (continued)

7564 of 7893 branches covered (95.83%)

Branch coverage included in aggregate %.

544 of 550 new or added lines in 5 files covered. (98.91%)

52184 of 52739 relevant lines covered (98.95%)

1498.84 hits per line

Uncovered Changes

Lines Coverage ∆ File
6
98.16
src/components/virtualization/recycle.ts
Jobs
ID Job ID Ran Files Coverage
1 35968466218.1 24 Sep 2026 07:15AM UTC 259
98.54
GitHub Action Run
Source Files on build 35968466218
  • Tree
  • List 259
  • Changed 4
  • Source Changed 4
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #35968466218
  • 24865c56 on github
  • Prev Build on master (#35858604173)
  • Next Build on master (#35991299121)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc