assets/javascripts/paginate.js (5 lines of code) (raw):

const paginationContainerClass = ".pagination-container"; const max = 20; function paginate(items, itemsPerPage, itemsContainer, paginationContainer) { let currentPage = 1; const totalPages = Math.ceil(items.length / itemsPerPage); function showItems(page) { const startIndex = (page - 1) * itemsPerPage; const endIndex = startIndex + itemsPerPage; const pageItems = items.slice(startIndex, endIndex); itemsContainer.innerHTML = ""; pageItems.forEach((item) => { const li = document.createElement("li"); li.innerText = item.innerText; itemsContainer.appendChild(item); }); window.scrollTo({top: queryInputOffsetTop, behavior: 'smooth'}); } function setupPagination() { const pagination = document.querySelector(paginationContainer); pagination.innerHTML = ""; if (totalPages > 1) { for (let i = 1; i <= totalPages; i++) { const link = document.createElement("a"); link.href = "#"; link.innerText = i; if (i === currentPage) { link.classList.add("active"); } link.addEventListener("click", (event) => { event.preventDefault(); currentPage = i; showItems(currentPage); const currentActive = pagination.querySelector(".active"); currentActive.classList.remove("active"); link.classList.add("active"); }); pagination.appendChild(link); } } } showItems(currentPage); setupPagination(); }