@tableus/ui-bootstrap5
Version:
A Bootstrap 5 UI for tableus.
41 lines • 2.9 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Pagination = void 0;
const react_1 = __importDefault(require("react"));
const react_bootstrap_1 = require("react-bootstrap");
function Pagination({ paginationMethods: { getCanPreviousPage, getCanNextPage, nextPage, previousPage, setPageIndex, setPageSize, }, paginationState: { pageIndex, pageCount, pageSize, total }, paginationConfig, }) {
if (pageCount === undefined)
return null;
let sliderMin = pageIndex - 2;
let sliderMax = pageIndex + 2;
if (sliderMin < 0)
sliderMin = 0;
if (sliderMax > pageCount - 1)
sliderMax = pageCount - 1;
const slider = [];
for (let i = sliderMin; i <= sliderMax; i++) {
slider.push(i);
}
// const canNextPage = getCanNextPage(); broken atm
const canNextPage = pageIndex < pageCount - 1;
return (react_1.default.createElement("div", { className: "bs5-pagination-wrapper" },
react_1.default.createElement("div", null,
react_1.default.createElement(react_bootstrap_1.Pagination, null,
react_1.default.createElement(react_bootstrap_1.Pagination.Prev, { disabled: !getCanPreviousPage(), onClick: previousPage }),
sliderMin > 0 && (react_1.default.createElement(react_bootstrap_1.Pagination.Item, { onClick: () => setPageIndex(0) }, 1)),
sliderMin > 1 && react_1.default.createElement(react_bootstrap_1.Pagination.Ellipsis, null),
slider.map((i) => (react_1.default.createElement(react_bootstrap_1.Pagination.Item, { active: i == pageIndex, key: i, onClick: () => setPageIndex(i) }, i + 1))),
sliderMax < pageCount - 2 && react_1.default.createElement(react_bootstrap_1.Pagination.Ellipsis, null),
sliderMax < pageCount - 1 && (react_1.default.createElement(react_bootstrap_1.Pagination.Item, { onClick: () => setPageIndex(pageCount - 1) }, pageCount)),
react_1.default.createElement(react_bootstrap_1.Pagination.Next, { disabled: !canNextPage, onClick: nextPage })),
total !== undefined && (react_1.default.createElement("span", null,
total,
" ",
total === 1 ? "Eintrag" : "Einträge"))),
(paginationConfig === null || paginationConfig === void 0 ? void 0 : paginationConfig.pageSizeSelect) && (react_1.default.createElement(react_bootstrap_1.Pagination, { className: "bs5-page-size-select" }, paginationConfig.pageSizeSelect.map((size) => (react_1.default.createElement(react_bootstrap_1.Pagination.Item, { active: size === pageSize, key: size, onClick: () => setPageSize(size) }, size)))))));
}
exports.Pagination = Pagination;
//# sourceMappingURL=pagination.js.map
;