tablor-core
Version:
Core features for data tables, grids, and advanced search, pagination, and sorting in Angular.
106 lines (105 loc) • 3.81 kB
TypeScript
import { Subject } from 'rxjs';
import { ImmutableAugmentedItem, ItemsAddedPayload, ItemsRemovedPayload, Item } from '../stores/items-store/interfaces';
import { NbOfItemsPerPageChangedPayload, NbOfTotalPagesChangedPayload, PageNbChangedPayload, PaginatedItemsChangedPayload } from './interfaces';
import { SearchedItemsChangedPayload } from '../searcher/searcher/interfaces';
import { SortingOptionsChangedPayload } from '../sorter/interfaces';
import { Searcher } from '../searcher/searcher/searcher';
/**
* Handles pagination of items
*/
export declare class Paginator<T extends Item<T>> {
protected readonly getSearchResults: Searcher<T>['getMutableItems'];
protected readonly $itemsRemoved: Subject<ItemsRemovedPayload<T>>;
protected readonly $itemsAdded: Subject<ItemsAddedPayload<T>>;
protected readonly $searchedItemsChanged: Subject<SearchedItemsChangedPayload<T>>;
protected readonly $sortingOptionsChanged: Subject<SortingOptionsChangedPayload<T>>;
protected _paginatedItems: Readonly<ImmutableAugmentedItem<T>[]>;
protected _pageNb: number;
protected _nbOfItemsPerPage: number;
protected _nbOfTotalPages: number;
readonly $pageNbChanged: Subject<PageNbChangedPayload<T>>;
readonly $nbOfItemsPerPageChanged: Subject<NbOfItemsPerPageChangedPayload<T>>;
readonly $nbOfTotalPagesChanged: Subject<NbOfTotalPagesChangedPayload<T>>;
readonly $paginatedItemsChanged: Subject<PaginatedItemsChangedPayload<T>>;
constructor(getSearchResults: Searcher<T>['getMutableItems'], $itemsRemoved: Subject<ItemsRemovedPayload<T>>, $itemsAdded: Subject<ItemsAddedPayload<T>>, $searchedItemsChanged: Subject<SearchedItemsChangedPayload<T>>, $sortingOptionsChanged: Subject<SortingOptionsChangedPayload<T>>);
/**
* Returns the current page number
*/
getPageNb(): number;
/**
* Sets the current page number
*/
setPageNb(nb: number): void;
/**
* Returns the number of items per page
*/
getNbOfItemsPerPage(): number;
/**
* Sets the number of items per page
*/
setNbOfItemsPerPage(nb: number): void;
/**
* Returns the total number of pages
*/
getNbOfPages(): number;
/**
* Returns the current page index
*/
getPageIndex(): number;
/**
* Returns the total number of items
*/
getPageSize(): number;
/**
* Returns the current page items
*/
getItems(): Readonly<ImmutableAugmentedItem<T>[]>;
/**
* Updates the current page items
*/
protected updatePageItemsInternal(): void;
/**
* Updates the number of items per page
*/
protected updateItemsPerPage(nb: number): void;
/**
* Updates the current page number
*/
protected updatePageNb(nb: number): void;
/**
* Updates the number of total pages
*/
protected updateNbOfTotalPages(): void;
/**
* Updates the current page items
*/
protected handleItemsRemoved(): void;
/**
* Updates the current page items
*/
protected handleItemsAdded(): void;
/**
* Updates the current page items
*/
protected handleItemsSearched(): void;
/**
* Updates the current page items
*/
protected handleItemsSorted(): void;
/**
* Updates the current page items
*/
protected raiseNbOfItemsPerPageChanged(prevNbOfItemsPerPage: number): void;
/**
* Updates the current page items
*/
protected raiseNbOfTotalPagesChanged(prevNbOfTotalPages: number): void;
/**
* Updates the current page items
*/
protected raisePageNbChanged(prevPageNb: number): void;
/**
* Updates the current page items
*/
protected raisePaginatedItemsChanged(prevPaginatedItems: Readonly<ImmutableAugmentedItem<T>[]>): void;
}