import * as PropTypes from 'prop-types'; import * as React from 'react'; import { Col, Row, Table, SelectCallback, } from 'react-bootstrap'; import { Pagination } from '@react-bootstrap/pagination'; import DataTableHeaderCell from './DataTableHeaderCell'; export interface Props { currentPage?: number; pageSize: number; totalItems: number; onPageClick: SelectCallback; }; export interface DataTableComponent extends React.StatelessComponent { HeaderCell: typeof DataTableHeaderCell; }; const propTypes = { currentPage: PropTypes.number, pageSize: PropTypes.number.isRequired, totalItems: PropTypes.number.isRequired, onPageClick: PropTypes.func.isRequired, children: PropTypes.node, }; const defaultProps = { currentPage: 1, onPageClick: () => {}, }; const DataTable = (({ pageSize, totalItems, currentPage, children, onPageClick, }) => { const start = !currentPage ? 0 : Math.min(((currentPage - 1) * pageSize) + 1, totalItems); const end = !currentPage ? 0 : Math.min(totalItems, currentPage * pageSize); const totalPages = Math.max(0, Math.ceil(totalItems / pageSize)); return (
{children}
Showing {start} to {end} of {totalItems} entries
); }) as DataTableComponent; DataTable.propTypes = propTypes; DataTable.defaultProps = defaultProps; DataTable.HeaderCell = DataTableHeaderCell; export default DataTable;