https://github.com/rodzyk/pair-pagination
A TypeScript utility for generating page pairs in pagination, with customizable options like pair limit and flat structure.
https://github.com/rodzyk/pair-pagination
npm npm-package page-navigation page-pairs pagination pagination-helper pagination-helpers pair-pagination typescript utility
Last synced: 4 months ago
JSON representation
A TypeScript utility for generating page pairs in pagination, with customizable options like pair limit and flat structure.
- Host: GitHub
- URL: https://github.com/rodzyk/pair-pagination
- Owner: rodzyk
- License: mit
- Created: 2024-11-22T20:05:06.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-22T20:05:19.000Z (over 1 year ago)
- Last Synced: 2025-09-21T23:39:00.112Z (8 months ago)
- Topics: npm, npm-package, page-navigation, page-pairs, pagination, pagination-helper, pagination-helpers, pair-pagination, typescript, utility
- Language: TypeScript
- Homepage:
- Size: 35.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pair Pagination
**Pair Pagination** is a simple TypeScript utility for generating page pairs in pagination. It allows you to create customizable pagination structures with options like pair limits and flat or nested outputs.
---
## Features
- **Generate Page Pairs:** Create pairs of pages for easy navigation in paginated content.
- **Customizable Options:** Configure pair limits, flat or nested output formats, and more.
- **TypeScript Support:** Fully typed for seamless integration with TypeScript projects.
- **Lightweight and Simple:** Easy to use and requires minimal setup.
---
## Installation
Install the library using npm:
```bash
npm i pair-pagination
```
## Usage
### Import and Use
```typescript
import { pairPagination } from 'pair-pagination';
const pairs = pairPagination({
currentPage: 4,
totalPages: 10,
flat: false
});
console.log(pairs);
// Output: [1, [2, 3], [4, 5], [6, 7], [8, 9], 10]
```
### API
#### `pairPagination(options: PaginationOptions): PairPagination`
Generates page pairs based on the provided pagination options.
`PaginationOptions`:
- `currentPage` (number): The currently active page.
- `totalPages` (number): Total number of pages.
- `pairLimit` (number, optional): The number of pairs to display around the current page. Default is `1`.
- `flat` (boolean, optional): If true, flattens the output into a single array. Default is `true`.
Returns:
- `PagePairs`: An array of numbers or pairs of numbers.
#### `pairPaginationByItems(option: PairPaginationByItemsOption): PairPagination `
Generates page pairs based on the total number of items and items per page.
`PairPaginationByItemsOption`:
- `totalItems` (number): Total number of items.
- `limitItems` (number): Number of items per page.
- `currentPage` (number): The currently active page.
- `pairLimit` (number, optional): The number of pairs to display around the current page. Default is `1`.
- `flat` (boolean, optional): If true, flattens the output into a single array. Default is `true`.
Returns:
- `PagePairs`: An array of numbers or pairs of numbers.
## Testing
Run tests using Jest:
```bash
npm test
```
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
## Contributing
Contributions are welcome! Please open an issue or submit a pull request on the GitHub repository.