UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

52 lines 1.93 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { useEffect, useReducer, useCallback, useRef } from 'react'; var paginationReducer = function (prevState, nextState) { return __assign(__assign({}, prevState), nextState); }; var defaultPagination = { page: 1, perPage: 25, }; /** * Hooks to provide pagination state (page and perPage) * * @example * * const { page, setPage, perPage, setPerPage } = usePagination(initialPerPage); * * @param {number} initialPagination the initial value per page * @returns {PaginationHookResult} The pagination props */ export default (function (initialPagination) { if (initialPagination === void 0) { initialPagination = {}; } var _a = useReducer(paginationReducer, __assign(__assign({}, defaultPagination), initialPagination)), pagination = _a[0], setPagination = _a[1]; var isFirstRender = useRef(true); var setPerPage = useCallback(function (perPage) { return setPagination({ perPage: perPage, page: 1 }); }, []); var setPage = useCallback(function (page) { return setPagination({ page: page }); }, []); useEffect(function () { if (isFirstRender.current) { isFirstRender.current = false; return; } setPerPage(initialPagination.perPage || 25); }, [initialPagination.perPage, setPerPage]); return { page: pagination.page, perPage: pagination.perPage, pagination: pagination, setPage: setPage, setPerPage: setPerPage, setPagination: setPagination, }; }); //# sourceMappingURL=usePaginationState.js.map