An open API service indexing awesome lists of open source software.

https://github.com/writetome51/array-paginator

A Typescript/Javascript class for paginating an array
https://github.com/writetome51/array-paginator

array-manipulations javascript pagination paginator typescript

Last synced: 8 months ago
JSON representation

A Typescript/Javascript class for paginating an array

Awesome Lists containing this project

README

          

# ArrayPaginator\

A TypeScript class for paginating an array.

## API

```ts
export type ArrayPaginatorSettings = {
/*****
Defaults to most recent setting, or if not set, empty array
*****/
array?: T[];

/*****
Defaults to most recent setting, or if not set, 25
*****/
pageLength?: number;

/*****
Defaults to most recent setting, or if not set, 1
*****/
pageNumber?: number;
};

export type ArrayPaginatorData = Omit<
Required>,
'array'
>
& {
pageTotal: number;
page: T[];
};

export declare class ArrayPaginator {

get data(): ArrayPaginatorData;

constructor(settings?: ArrayPaginatorSettings);

set(settings?: ArrayPaginatorSettings): void;
}
```

## Usage Examples

```ts
// Get an instance:
const paginator = new ArrayPaginator({
array: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
pageLength: 5
});

console.log(paginator.data);
/*****
{
pageLength: 5
pageNumber: 1
pageTotal: 2
page: [1,2,3,4,5]
}
*****/

paginator.set({pageLength: 4});
console.log(paginator.data);
/*****
{
pageLength: 4
pageNumber: 1
pageTotal: 3
page: [1,2,3,4]
}
*****/

paginator.set({pageNumber: 2});
console.log(paginator.data);
/*****
{
pageLength: 4
pageNumber: 2
pageTotal: 3
page: [5,6,7,8]
}
*****/

paginator.set({pageLength: 20, pageNumber: 1});
console.log(paginator.data);
/*****
{
pageLength: 20
pageNumber: 1
pageTotal: 1
page: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
*****/

// Since the total array length is only 10, trying to get a second page results in error:
paginator.set({pageNumber: 2});
// 'Error: The requested page does not exist'

```

## Installation

```bash
npm i @writetome51/array-paginator
```

## Loading

```js
import {ArrayPaginator} from '@writetome51/array-paginator';
```

## License

[MIT](https://choosealicense.com/licenses/mit/)