diff --git a/components/lib/paginator/CurrentPageReport.js b/components/lib/paginator/CurrentPageReport.js index 1ed54325f6..8246db06de 100644 --- a/components/lib/paginator/CurrentPageReport.js +++ b/components/lib/paginator/CurrentPageReport.js @@ -11,7 +11,7 @@ export const CurrentPageReport = React.memo((inProps) => { const report = { currentPage: props.page + 1, - totalPages: props.pageCount, + totalPages: props.totalPages, first: Math.min(props.first + 1, props.totalRecords), last: Math.min(props.first + props.rows, props.totalRecords), rows: props.rows, diff --git a/components/lib/paginator/Paginator.js b/components/lib/paginator/Paginator.js index 7525a2cda7..4c449ae136 100644 --- a/components/lib/paginator/Paginator.js +++ b/components/lib/paginator/Paginator.js @@ -2,7 +2,7 @@ import * as React from 'react'; import { PrimeReactContext } from '../api/Api'; import { useHandleStyle } from '../componentbase/ComponentBase'; import { useMergeProps, useUpdateEffect } from '../hooks/Hooks'; -import { classNames, ObjectUtils } from '../utils/Utils'; +import { ObjectUtils, classNames } from '../utils/Utils'; import { CurrentPageReport } from './CurrentPageReport'; import { FirstPageLink } from './FirstPageLink'; import { JumpToPageInput } from './JumpToPageInput'; @@ -27,13 +27,13 @@ export const Paginator = React.memo( useHandleStyle(PaginatorBase.css.styles, isUnstyled, { name: 'paginator' }); const elementRef = React.useRef(null); const page = Math.floor(props.first / props.rows); - const pageCount = Math.ceil(props.totalRecords / props.rows); + const totalPages = Math.ceil(props.totalRecords / props.rows); const isFirstPage = page === 0; - const isLastPage = page === pageCount - 1; - const isEmpty = pageCount === 0; + const isLastPage = page === totalPages - 1; + const isEmpty = totalPages === 0; const calculatePageLinkBoundaries = () => { - let numberOfPages = pageCount; + let numberOfPages = totalPages; let visiblePages = Math.min(props.pageLinkSize, numberOfPages); //calculate range, keep current in middle if necessary @@ -62,7 +62,7 @@ export const Paginator = React.memo( }; const changePage = (first, rows) => { - let pc = pageCount; + let pc = totalPages; let p = Math.floor(first / rows); if (p >= 0 && p < pc) { @@ -70,7 +70,7 @@ export const Paginator = React.memo( first: first, rows: rows, page: p, - pageCount: pc + totalPages: pc }; if (props.onPageChange) { @@ -99,7 +99,7 @@ export const Paginator = React.memo( }; const changePageToLast = (event) => { - changePage((pageCount - 1) * props.rows, props.rows); + changePage((totalPages - 1) * props.rows, props.rows); event.preventDefault(); }; @@ -116,7 +116,7 @@ export const Paginator = React.memo( useUpdateEffect(() => { if (page > 0 && props.first >= props.totalRecords) { - changePage((pageCount - 1) * props.rows, props.rows); + changePage((totalPages - 1) * props.rows, props.rows); } }, [props.totalRecords]); @@ -125,23 +125,85 @@ export const Paginator = React.memo( switch (key) { case 'FirstPageLink': - element = ; + element = ( + + ); break; case 'PrevPageLink': - element = ; + element = ( + + ); break; case 'NextPageLink': - element = ; + element = ( + + ); break; case 'LastPageLink': - element = ; + element = ( + + ); break; case 'PageLinks': - element = ; + element = ( + + ); break; case 'RowsPerPageDropdown': @@ -151,7 +213,7 @@ export const Paginator = React.memo( key={key} value={props.rows} page={page} - pageCount={pageCount} + totalPages={totalPages} totalRecords={props.totalRecords} options={props.rowsPerPageOptions} onChange={onRowsChange} @@ -173,17 +235,19 @@ export const Paginator = React.memo( reportTemplate={props.currentPageReportTemplate} key={key} page={page} - pageCount={pageCount} - first={props.first} - rows={props.rows} + totalPages={totalPages} totalRecords={props.totalRecords} + rows={props.rows} + first={props.first} template={template} ptm={ptm} /> ); break; case 'JumpToPageInput': - element = ; + element = ( + + ); break; default: @@ -218,7 +282,7 @@ export const Paginator = React.memo( return null; }; - if (!props.alwaysShow && pageCount <= 1) { + if (!props.alwaysShow && totalPages <= 1) { return null; } else { const leftContent = ObjectUtils.getJSXElement(props.leftContent, props); diff --git a/components/lib/paginator/paginator.d.ts b/components/lib/paginator/paginator.d.ts index 7519658cb6..4126feef58 100644 --- a/components/lib/paginator/paginator.d.ts +++ b/components/lib/paginator/paginator.d.ts @@ -173,6 +173,26 @@ interface PaginatorFirstPageLinkOptions { * JSX element to be used as the first page link. */ element: JSX.Element; + /** + * The page number. + */ + page: number; + /** + * The current page number. + */ + currentPage: number; + /** + * The total number of pages. + */ + totalPages: number; + /** + * The total number of records. + */ + totalRecords: number; + /** + * The number of rows per page. + */ + rows: number; /** * The props of Paginator component */ @@ -204,6 +224,26 @@ interface PaginatorPrevPageLinkOptions { * JSX element to be used as the prev page link. */ element: JSX.Element; + /** + * The page number. + */ + page: number; + /** + * The current page number. + */ + currentPage: number; + /** + * The total number of pages. + */ + totalPages: number; + /** + * The total number of records. + */ + totalRecords: number; + /** + * The number of rows per page. + */ + rows: number; /** * The props of Paginator component */ @@ -253,6 +293,14 @@ interface PaginatorPageLinksOptions { * The total number of pages. */ totalPages: number; + /** + * The total number of records. + */ + totalRecords: number; + /** + * The number of rows per page. + */ + rows: number; /** * JSX element to be used as the page links. */ @@ -288,6 +336,26 @@ interface PaginatorNextPageLinkOptions { * JSX element to be used as the next page link. */ element: JSX.Element; + /** + * The page number. + */ + page: number; + /** + * The current page number. + */ + currentPage: number; + /** + * The total number of pages. + */ + totalPages: number; + /** + * The total number of records. + */ + totalRecords: number; + /** + * The number of rows per page. + */ + rows: number; /** * The props of Paginator component */ @@ -319,6 +387,26 @@ interface PaginatorLastPageLinkOptions { * JSX element to be used as the last page link. */ element: JSX.Element; + /** + * The page number. + */ + page: number; + /** + * The current page number. + */ + currentPage: number; + /** + * The total number of pages. + */ + totalPages: number; + /** + * The total number of records. + */ + totalRecords: number; + /** + * The number of rows per page. + */ + rows: number; /** * The props of Paginator component */