UNPKG

react-konva-grid

Version:

Declarative React Canvas Grid primitive for Data table, Pivot table, Excel Worksheets

66 lines 3.06 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(require("react")); /** * Pagination hook * @param props */ const usePagination = (props) => { const { initialCurrentPage = 1, pageSize = 10, total = 0, onChange, component = PaginationComponent, } = props; const [currentPage, setCurrentPage] = react_1.useState(initialCurrentPage); const totalPages = Math.ceil(total / pageSize); const nextPage = () => setCurrentPage((prev) => Math.min(prev + 1, totalPages)); const prevPage = () => setCurrentPage((prev) => Math.max(prev - 1, 1)); const goToFirst = () => setCurrentPage(1); const goToLast = () => setCurrentPage(totalPages); const goToPage = (page) => setCurrentPage(page); react_1.useEffect(() => { onChange && onChange(currentPage); }, [currentPage]); const pageProps = { currentPage, totalPages, nextPage, prevPage, goToFirst, goToLast, goToPage, pageSize, }; const paginationComponent = react_1.default.createElement(component, pageProps); return Object.assign({ paginationComponent }, pageProps); }; const PaginationComponent = ({ currentPage, goToFirst, goToLast, goToPage, totalPages, nextPage, prevPage, }) => { const pages = []; for (let i = 1; i <= totalPages; i++) { const isActive = currentPage === i; pages.push(react_1.default.createElement("button", { onClick: () => goToPage(i) }, isActive ? react_1.default.createElement("strong", null, i) : i)); } return (react_1.default.createElement("div", null, react_1.default.createElement("button", { onClick: goToFirst, disabled: currentPage === 1 }, "First page"), react_1.default.createElement("button", { onClick: prevPage, disabled: currentPage === 1 }, "Prev page"), pages, react_1.default.createElement("button", { onClick: nextPage, disabled: currentPage === totalPages }, "Next page"), react_1.default.createElement("button", { onClick: goToLast, disabled: currentPage === totalPages }, "Last page"))); }; exports.default = usePagination; //# sourceMappingURL=usePagination.js.map