ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
37 lines • 2 kB
JavaScript
import * as React from 'react';
import { Translate } from "../i18n/Translate.js";
import { useTranslate } from "../i18n/useTranslate.js";
import { useListContext } from "../controller/list/useListContext.js";
export const Pagination = () => {
const { page, perPage, total, setPage } = useListContext();
const translate = useTranslate();
if (total === undefined) {
return null;
}
const nbPages = Math.ceil(total / perPage) || 1;
return (React.createElement("div", { style: { display: 'flex', justifyContent: 'space-between' } },
React.createElement("div", null,
React.createElement(Translate, { i18nKey: "ra.navigation.page_range_info", options: {
offsetBegin: (page - 1) * perPage + 1,
offsetEnd: Math.min(page * perPage, total),
total,
} }, `${(page - 1) * perPage + 1}-${Math.min(page * perPage, total)} of ${total}`)),
React.createElement("div", { style: {
display: 'flex',
gap: '0',
alignItems: 'center',
justifyContent: 'end',
} },
page > 1 && (React.createElement("button", { onClick: () => setPage(page - 1), type: "button" },
React.createElement(Translate, { i18nKey: "ra.navigation.previous" }, "Previous"))),
Array.from({ length: nbPages }, (_, i) => i + 1).map(p => (React.createElement("button", { key: p, onClick: () => {
setPage(p);
}, style: {
fontWeight: p === page ? 'bold' : 'normal',
}, "aria-label": translate('ra.navigation.page', {
page: p,
}), type: "button" }, p))),
page < nbPages && (React.createElement("button", { onClick: () => setPage(page + 1), type: "button" },
React.createElement(Translate, { i18nKey: "ra.navigation.next" }, "Next"))))));
};
//# sourceMappingURL=Pagination.js.map