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
*/