UNPKG

violet-paginator

Version:

Display, paginate, sort, filter, and update items from the server. violet-paginator is a complete list management library for react/redux applications.

56 lines (45 loc) 1.1 kB
import { recordProps } from '../pageInfoTranslator' export default function select(paginator) { const totalPages = Math.ceil(paginator.get('totalCount') / paginator.get('pageSize')) const page = paginator.get('page') const flip = () => ({ hasPreviousPage: page > 1, hasNextPage: page < totalPages }) const paginate = () => ({ currentPage: page, totalPages, ...flip() }) const tabulate = () => ({ results: paginator.get('results').toJS(), isLoading: paginator.get('isLoading') }) const tabulateLean = () => ({ ids: paginator.get('results').map(r => r.get(recordProps().identifier)), isLoading: paginator.get('isLoading') }) const stretch = () => ({ pageSize: paginator.get('pageSize') }) const sort = () => ({ sort: paginator.get('sort'), sortReverse: paginator.get('sortReverse') }) const violetPaginator = () => ({ ...paginate(), ...tabulate(), ...stretch(), ...sort() }) return { flip, paginate, tabulate, tabulateLean, stretch, sort, violetPaginator } }