KalleJoP

KalleJoP

How do you use the phoenix infinitescroll hook with tables?

Hi everyone,

I’m trying to implement infinite scroll in both directions (up and down) using the phx-viewport-top and phx-viewport-bottom events from the default Phoenix.InfiniteScroll hook.

It works great when using a basic div layout or ul list.
However, when I try to apply the same behavior inside a table layout (using either actual <table> elements or display: table/display: grid with divs), it breaks or behaves inconsistently:

  • The scroll events don’t fire reliably.
  • Sometimes the scroll container doesn’t fill the expected space.
  • Sticky headers work, but scrolling seems unpredictable.

I’ve also tried wrapping the table in scrollable containers, adjusting min-height, overflow, etc., but with no luck so far.

Is this a known limitation with how phx-viewport-* interacts with table or grid layouts?
Do I need to customize the hook for these layouts, or is there a clean workaround?

Thanks a lot for your help! :blush:

Most Liked

woylie

woylie

I don’t know whether it’s applicable to your situation, but I just added a guide about infinite scroll to the Flop Phoenix documentation: Load More and Infinite Scroll — Flop Phoenix v0.26.1. Might be helpful even if you don’t use the library. Note that the example is using the observer API instead of phx-viewport-*, based on a code snippet posted by @Thr3x: Infinite scroll pagination · Issue #192 · woylie/flop_phoenix · GitHub.

garrison

garrison

I can’t speak to the specifics of your problem and I’ve never actually tried building an infinite scroll table. With that said, keep in mind that tables can be weird in that they change their layout based on their rows, so if you have rows come in with different sizes it could reflow the whole table in a way that changes the scroll position and makes things feel buggy. That could be what’s happening.

KalleJoP

KalleJoP

Thanks for the advice!

I managed to solve it (although it’s still a bit buggy at times) using the Intersection Observer API combined with parts of the original Phoenix hook.

I’ve shared the hook as a GitHub Gist in case anyone else finds it useful.
If you have any suggestions for improvements, I’d love to hear them!

Where Next?

Popular in Questions Top

Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
vac
Hi, I’m quite new in Elixir and I’m trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and I...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
itssasanka
Hi all, Trying to get some more clarity over utc_datetime and naive_datetime for Ecto: The documentation above suggests that while ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
New

Other popular topics Top

Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

We're in Beta

About us Mission Statement