pagination.pug 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. mixin pagination(pages, page_path, max_btns)
  2. //- @param pages.current_page the current page viewed
  3. //- @param pages.total_pages previously calculated,
  4. //- based on total entries and entries per page
  5. //- @param page_path the relative path, minus a trailing slash and page param
  6. //- @param max_btns max number of buttons on either side of the current page
  7. //- button and excludes first, prev, next, last
  8. if pages && pages.current_page && pages.total_pages && pages.total_pages > 1
  9. - var max_btns = max_btns || 4
  10. - var prev_page = Math.max(parseInt(pages.current_page, 10) - max_btns, 1)
  11. - var next_page = parseInt(pages.current_page, 10) + 1
  12. - var next_index = 0;
  13. - var full_page_path = page_path + "/page/"
  14. nav(role="navigation" aria-label="Pagination Navigation")
  15. ul.pagination
  16. if pages.current_page > 1
  17. li
  18. a(
  19. aria-label="Go to first page"
  20. href=page_path
  21. ) « First
  22. li
  23. a(
  24. aria-label="Go to previous page"
  25. href=full_page_path + (parseInt(pages.current_page, 10) - 1)
  26. rel="prev"
  27. ) ‹ Prev
  28. if pages.current_page - max_btns > 1
  29. li
  30. span …
  31. while prev_page < pages.current_page
  32. li
  33. a(
  34. aria-label="Go to page " + prev_page
  35. href=full_page_path + prev_page
  36. ) #{prev_page}
  37. - prev_page++
  38. li(class="active")
  39. span(
  40. aria-label="Current Page, Page " + pages.current_page
  41. aria-current="true"
  42. ) #{pages.current_page}
  43. if pages.current_page < pages.total_pages
  44. while next_page <= pages.total_pages && next_index < max_btns
  45. li
  46. a(
  47. aria-label="Go to page " + next_page
  48. href=full_page_path + next_page
  49. ) #{next_page}
  50. - next_page++
  51. - next_index++
  52. if next_page <= pages.total_pages
  53. li
  54. span …
  55. li
  56. a(
  57. aria-label="Go to next page"
  58. href=full_page_path + (parseInt(pages.current_page, 10) + 1)
  59. rel="next"
  60. ) Next ›
  61. li
  62. a(
  63. aria-label="Go to last page"
  64. href=full_page_path + pages.total_pages
  65. ) Last »