import * as React from 'react'; import PageButton from '../buttons/page-button'; import * as classnames from 'classnames'; const Pagination = (props: { activePage: number, totalPages: number, onClick: (pageNumber: number) => void, className?: string, style?: any }) => { const { activePage, totalPages, onClick, className, style } = props; const breakElement =
; const allPageElements = []; let pageRangeArr = []; let pageRange; for (let i = 0; i < totalPages; i++) { const isActive = i === activePage; const pageClass = classnames('pagination-element', { isActive }); allPageElements.push( onClick(i)} pageNumber={i} className={pageClass} key={i} /> ); } if (totalPages <= 5) { pageRangeArr = allPageElements; pageRange =
{pageRangeArr}
; } else if (activePage + 1 === 1) { pageRangeArr = allPageElements.slice(0, activePage + 3); pageRange = (
{pageRangeArr} {breakElement} {allPageElements[totalPages - 1]}
); } else if (activePage !== 0 && activePage <= 3) { pageRangeArr = allPageElements.slice(0, activePage + 2); pageRange = (
{pageRangeArr} {breakElement} {allPageElements[totalPages - 1]}
); } else if (activePage === totalPages - 1) { pageRangeArr = allPageElements.slice(activePage - 3); pageRange = (
{allPageElements[0]} {breakElement} {pageRangeArr}
); } else if (activePage !== totalPages - 1 && activePage >= totalPages - 4) { pageRangeArr = allPageElements.slice(activePage - 1); pageRange = (
{allPageElements[0]} {breakElement} {pageRangeArr}
); } else if (activePage > 3 && activePage < totalPages - 4) { pageRangeArr = allPageElements.slice(activePage - 1, activePage + 2); pageRange = (
{allPageElements[0]} {breakElement} {pageRangeArr} {breakElement} {allPageElements[totalPages - 1]}
); } const wrapperClass = classnames('pagination-container', className); return (
{activePage === 0 ? null :
onClick(activePage - 1)} />} {pageRange} {activePage === totalPages - 1 ? null :
onClick(activePage + 1)} />}
); }; export default Pagination;