pagination.eta 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. <%
  2. const MAX_PAGINATED_PAGES = Math.min(it.max_pages, 9);
  3. let pagination_min = it.page_num;
  4. let pagination_max = it.page_num;
  5. let nb_paginated_pages = 1;
  6. while (nb_paginated_pages < MAX_PAGINATED_PAGES) {
  7. if (pagination_min > 1) {
  8. pagination_min--;
  9. nb_paginated_pages++;
  10. }
  11. if (pagination_max < it.max_pages) {
  12. pagination_max++;
  13. nb_paginated_pages++;
  14. }
  15. }
  16. const previous = Math.max(it.page_num - 1, 1);
  17. const next = Math.min(it.page_num + 1, it.max_pages);
  18. %>
  19. <div class="pagination">
  20. <div class="flex justify-between m-5">
  21. <a class="text-xl text-zinc-400 hover:text-zinc-50" href="<%= it.url_formatter(previous) %>"><span class="text-2xl text-orange-600 mr-2">‹</span>Previous</a>
  22. <div class="number-nav leading-10">
  23. <% for (let i = pagination_min; i <= pagination_max; i++) { %>
  24. <a class="<%= i == it.page_num ? 'current ' : '' %> page" href="<%= it.url_formatter(i) %>"><%= i %></a>
  25. <% } %>
  26. </div>
  27. <a class="text-xl text-zinc-400 hover:text-zinc-50" href="<%= it.url_formatter(next) %>">Next<span class="text-2xl text-orange-600 ml-2">›</span></a>
  28. </div>
  29. </div>