Skip to content

abhihyder/js-paginator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JS Paginator

js-paginator is a lightweight utility for simplifying pagination in JavaScript applications. Whether you're working with APIs or databases, js-paginator provides a straightforward way to generate pagination links and manage pagination logic.

Features

  • Easy Integration: Integrate pagination functionality seamlessly into your JavaScript applications with minimal setup.
  • Flexible Configuration: Customize pagination settings to fit your specific use case, including specifying the current page, limit per page, total number of items, and base URL.
  • Advanced Pagination: Supports both simple and complex pagination scenarios, including scenarios with large datasets and custom query parameters.
  • Concise and Readable: Generates clear and concise pagination links, making it easy for users to navigate through paginated content.
  • Lightweight: Designed to be lightweight and performant, ensuring minimal impact on application performance.

Installation

You can install js-paginator via npm. Navigate to your project directory and run:

npm i @abhihyder/js-paginator

Usage

Basic Usage

const paginator = require("@abhihyder/js-paginator");
// Or
import paginator from "@abhihyder/js-paginator";

// Get pagination data
const pagination = paginator({
  currentPage: 10,
  limit: 10,
  totalItem: 200,
  baseUrl: "https://example.com/api/items",
});

console.log(pagination);

Response

{
  "currentPage": 10,
  "totalPages": 20,
  "from": 91,
  "to": 100,
  "totalItem": 200,
  "links": {
    "first": "https://example.com/api/items?page=1&limit=10",
    "last": "https://example.com/api/items?page=20&limit=10",
    "prev": "https://example.com/api/items?page=9&limit=10",
    "next": "https://example.com/api/items?page=11&limit=10"
  },
  "pagination": [
    {
      "page": 1,
      "url": "https://example.com/api/items?page=1&limit=10"
    },
    {
      "page": 2,
      "url": "https://example.com/api/items?page=2&limit=10"
    },
    {
      "page": "...",
      "url": null
    },
    {
      "page": 9,
      "url": "https://example.com/api/items?page=9&limit=10"
    },
    {
      "page": 10,
      "url": "https://example.com/api/items?page=10&limit=10"
    },
    {
      "page": 11,
      "url": "https://example.com/api/items?page=11&limit=10"
    },
    {
      "page": "...",
      "url": null
    },
    {
      "page": 19,
      "url": "https://example.com/api/items?page=19&limit=10"
    },
    {
      "page": 20,
      "url": "https://example.com/api/items?page=20&limit=10"
    }
  ]
}

Advanced Usage

// Specify custom query parameters
const queryString = {
  name: "javascript",
  category: "books",
};

// Pass custom query parameters
const pagination = paginator(
  {
    currentPage: 10,
    limit: 10,
    totalItem: 200,
    baseUrl: "https://example.com/api/items",
  },
  queryString
);

console.log(pagination);

Response

{
  "currentPage": 10,
  "totalPages": 20,
  "from": 91,
  "to": 100,
  "totalItem": 200,
  "links": {
    "first": "https://example.com/api/items?page=1&limit=10&name=javascript&category=books",
    "last": "https://example.com/api/items?page=20&limit=10&name=javascript&category=books",
    "prev": "https://example.com/api/items?page=9&limit=10&name=javascript&category=books",
    "next": "https://example.com/api/items?page=11&limit=10&name=javascript&category=books"
  },
  "pagination": [
    {
      "page": 1,
      "url": "https://example.com/api/items?page=1&limit=10&name=javascript&category=books"
    },
    {
      "page": 2,
      "url": "https://example.com/api/items?page=2&limit=10&name=javascript&category=books"
    },
    {
      "page": "...",
      "url": null
    },
    {
      "page": 9,
      "url": "https://example.com/api/items?page=9&limit=10&name=javascript&category=books"
    },
    {
      "page": 10,
      "url": "https://example.com/api/items?page=10&limit=10&name=javascript&category=books"
    },
    {
      "page": 11,
      "url": "https://example.com/api/items?page=11&limit=10&name=javascript&category=books"
    },
    {
      "page": "...",
      "url": null
    },
    {
      "page": 19,
      "url": "https://example.com/api/items?page=19&limit=10&name=javascript&category=books"
    },
    {
      "page": 20,
      "url": "https://example.com/api/items?page=20&limit=10&name=javascript&category=books"
    }
  ]
}

License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published