import './pagination-controls.css'; import { generatePagesArray } from './generatePagesArray'; import { PageButton } from './PageButton'; import { PageInput } from './PageInput'; interface Props { boundaryLinks?: boolean; currentPage: number; directionLinks?: boolean; itemsPerPage: number; onPageChange(page: number): void; totalCount: number; maxSize: number; isInputVisible?: boolean; } export function PageSelector({ currentPage, totalCount, itemsPerPage, onPageChange, maxSize = 5, directionLinks = true, boundaryLinks = false, isInputVisible = false, }: Props) { const pages = generatePagesArray( currentPage, totalCount, itemsPerPage, maxSize ); const last = pages[pages.length - 1]; if (pages.length <= 1) { return null; } return ( <> {isInputVisible && ( onPageChange(page)} totalPages={Math.ceil(totalCount / itemsPerPage)} /> )} ); }