/js-pagination-helper

A helper to handle pagination easily

Primary LanguageTypeScriptMIT LicenseMIT

@jalik/pagination-helper

GitHub package.json version Build Status GitHub GitHub last commit GitHub issues npm

Create and manipulate paginations fast and easy.

Features

  • Handle offset based paginations
  • Get calculated page numbers (first, previous, next, last)
  • Get calculated total pages
  • TypeScript declarations ♥
  • 50+ tests

Creating an offset pagination

import { OffsetPagination } from '@jalik/pagination-helper'

// Creates the pagination.
const pagination = new OffsetPagination({
  // Set the limit per page.
  limit: 10,
  // (optional) Set the maxmimum value for limit.
  // maxLimit will be used if limit is above when calling setLimit().
  maxLimit: 100,
  // (optional) Set the first page (1 by default)
  minPage: 1,
  // (optional) Set the initial offset (0 by default).
  offset: 0,
  // (optional) set the initial offset using a page number.
  // If present, it will be used instead of offset.
  page: 1,
  // Set the total number of elements.
  // Pass 0 if you don't have the value initially, then call setTotalElements() later.
  totalElements: 200
})

// Returns a boolean indicating if both paginations are equal.
pagination.equals(new OffsetPagination({ limit: 15, page: 1, totalElements: 200 }))

// Returns the closest valid page (first/last), or the input page if valid.
pagination.getClosestPage(42)

// Returns the first page (see minPage option)
pagination.getFirstPage()

// Returns the last page.
pagination.getLastPage()

// Returns the current limit.
pagination.getLimit()

// Returns the maximum value for limit.
pagination.getMaxLimit()

// Returns the next page.
pagination.getNextPage()
// Returns the next nth page.
pagination.getNextPage(2)

// Returns the current offset.
pagination.getOffset()

// Returns the corresponding offset of a page.
pagination.getOffsetFromPage(5)

// Returns the current page.
pagination.getPage()

// Returns the corresponding page of an offset.
pagination.getPageFromOffset(20)

// Returns the previous page.
pagination.getPreviousPage()
// Returns the previous nth page.
pagination.getPreviousPage(2)

// Returns the total number of elements of the pagination.
pagination.getTotalElements()

// Returns the page count.
pagination.getTotalPages()

// Checks if there is a page after.
pagination.hasNext()
// Checks if there are two pages after.
pagination.hasNext(2)

// Checks if there is a page before.
pagination.hasPrevious()
// Checks if there are two pages before.
pagination.hasPrevious(2)

// Checks if page is between first page (included) and last page (included).
pagination.isPageValid(50)

// Update offset using next page (if available).
pagination.next()

// Update offset using previous page (if available).
pagination.previous()

// Sets the pagination limit (used to calculate page count).
pagination.setLimit(25)

// Sets the offset (used to calculate the page.
// Note: you may prefer to use setPage() instead of setOffset().
pagination.setOffset(20)

// Sets the current page (same as setOffset(20)).
pagination.setPage(2)

// Sets the total number of elements.
pagination.setTotalElements(999)

Changelog

History of releases is in the changelog.

License

The code is released under the MIT License.