import React, { Dispatch, HTMLAttributes } from 'react' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faStepBackward, faStepForward, faForward, faBackward } from '@fortawesome/free-solid-svg-icons' import '../styles.css' export interface Props extends HTMLAttributes { activePage: number count: number rowsPerPage: number totalPages: number setActivePage: Dispatch setOptionRowsPerPage: Dispatch } export const Pagination = ({ activePage, count, rowsPerPage, totalPages, setActivePage, setOptionRowsPerPage, ...props }: Props): JSX.Element => { const beginning = activePage === 1 ? 1 : rowsPerPage * (activePage -1) + 1 const end = activePage === totalPages ? count : beginning + rowsPerPage - 1 return ( { setOptionRowsPerPage( parseInt(event.target.value)) setActivePage(1) } } > 2 Results (Debug) 3 Results (Debug) 10 Results 50 Results 100 Results Showing {beginning === end ? end : `${beginning} - ${end}`} of {count} results setActivePage(1)} > setActivePage(activePage - 1)} > { if ( activePage > 1 ) { setActivePage(activePage - 1) } }} > { activePage > 1 && (activePage - 1).toString() } {activePage.toString()} { if ( activePage < totalPages ) { setActivePage(activePage + 1) } }} > { activePage < totalPages && (activePage + 1).toString() } setActivePage(activePage + 1)} > setActivePage(totalPages)} > ) }