olifolkerd / tabulator

Interactive Tables and Data Grids for JavaScript
http://tabulator.info
MIT License
6.78k stars 821 forks source link

Progressive Load: Scroll on Basic Renderer jumps to top while scrolling #4469

Closed Bobcat64 closed 7 months ago

Bobcat64 commented 7 months ago

Describe the bug Basic Vertical Renderer bounces to top when using Progressive Load Scroll. This happens when new data is fetched and added from the server.

Tabulator Info

Working Example https://jsfiddle.net/qsk5zLwh/2/

To Reproduce

  1. Construct table with renderVertical:"basic" and progressiveLoad:"scroll"
  2. Connect table to remote source with enough rows to require multiple requests
  3. Scroll table towards bottom
  4. Notice table jumps to top and scroll bar shrink as new rows were added

Expected behavior Smooth scrolling. Fetching the next page should not reset the scroll position.

Desktop:

Additional context BasicVerticalRenderer rerenderRows clears all rows then renders them again. This shrinks the container element and resets the scroll position. Documentation for renderers states that rerenderRows should maintain scroll position.

Have encountered scrolling issues using the default virtual dom renderer like #4353 and #3654 both of which are resolved by switching to the basic renderer.

I have used the suggestion in #4424 and made the basic renderer's rerenderRows remember the scrollTop before clearing and then reapplying it after rendering to resolve the issue.

cjaeriksson commented 7 months ago

Seeing the same thing with the virtual renderer (tried the basic as well). All rows have the same height, so it shouldn't be related to any issues with variable row heights.

olifolkerd commented 7 months ago

You can't use progressive scroll and the basic render they incompatible. The basic renderer is extremely simple and will redraw the whole table when new data is added, resetting the position.

If you have a scrolling table you should be using the virtual renderer.

The basic renderer is only intended for very simple tables