UNPKG

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