import React, { useEffect, useState } from 'react'; import ConditionallyRender from '../ConditionallyRender'; import classnames from 'classnames'; import { useStyles } from './PaginationUI.styles'; import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos'; import ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos'; import DoubleArrowIcon from '@material-ui/icons/DoubleArrow'; import { useMediaQuery, useTheme } from '@material-ui/core'; interface IPaginateUIProps { pages: any[]; pageIndex: number; prevPage: () => void; setPageIndex: (idx: number) => void; nextPage: () => void; style?: React.CSSProperties; } const PaginateUI = ({ pages, pageIndex, prevPage, setPageIndex, nextPage, ...rest }: IPaginateUIProps) => { const STARTLIMIT = 6; const theme = useTheme(); const styles = useStyles(); const [limit, setLimit] = useState(STARTLIMIT); const [start, setStart] = useState(0); const matches = useMediaQuery(theme.breakpoints.down('sm')); useEffect(() => { if (matches) { setLimit(4); } }, [matches]); useEffect(() => { if (pageIndex === 0 && start !== 0) { setStart(0); setLimit(STARTLIMIT); } }, [pageIndex, start]); return ( 1} show={
0} show={ <> } /> {pages .map((page, idx) => { const active = pageIndex === idx; return ( ); }) .slice(start, limit)} } />
} /> ); }; export default PaginateUI;