import * as React from 'react'; import {ChangeEvent, MouseEvent, SFC} from 'react'; import {Icon} from './../'; import {numberWithCommas} from './utils/number'; export interface DatagridPaginationProps { limitOptions: number[]; limit: number; skip: number; total: number; onChangeLimit: (limit: number) => void; onChangeSkip: (skip: number) => void; } export const DatagridPagination: SFC = (props) => { const {limitOptions, limit, skip, total} = props; return (
{!total ? ( Results not found ) : ([ Rows per page  ,
, {numberWithCommas(skip + 1)} - {numberWithCommas(pageLimit(limit, skip, total))}  of  {numberWithCommas(total)} , , , ])}
); }; DatagridPagination.displayName = 'DatagridPagination'; const handleChangeLimit = (props: DatagridPaginationProps) => (e: ChangeEvent) => { props.onChangeLimit(parseInt(e.target.value, 10)); }; const handleChangeSkip = (props: DatagridPaginationProps, direction: 'prev' | 'next') => { return (e: MouseEvent) => { const {limit, skip} = props; const updatedSkip = direction === 'next' ? skip + limit : skip - limit; props.onChangeSkip(updatedSkip); }; }; const pageLimit = (limit: number, skip: number, total: number) => { if ((skip + limit) > total) { return total; } return limit + skip; };