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;