UNPKG

ahooks

Version:
76 lines (75 loc) 3.13 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray")); var _tslib = require("tslib"); var _react = require("react"); var _useMemoizedFn = _interopRequireDefault(require("../useMemoizedFn")); var _useRequest = _interopRequireDefault(require("../useRequest")); var usePagination = function usePagination(service) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _a; var _options$defaultPageS = options.defaultPageSize, defaultPageSize = _options$defaultPageS === void 0 ? 10 : _options$defaultPageS, _options$defaultCurre = options.defaultCurrent, defaultCurrent = _options$defaultCurre === void 0 ? 1 : _options$defaultCurre, rest = (0, _tslib.__rest)(options, ["defaultPageSize", "defaultCurrent"]); var result = (0, _useRequest["default"])(service, Object.assign({ defaultParams: [{ current: defaultCurrent, pageSize: defaultPageSize }], refreshDepsAction: function refreshDepsAction() { // eslint-disable-next-line @typescript-eslint/no-use-before-define changeCurrent(1); } }, rest)); var _ref = result.params[0] || {}, _ref$current = _ref.current, current = _ref$current === void 0 ? 1 : _ref$current, _ref$pageSize = _ref.pageSize, pageSize = _ref$pageSize === void 0 ? defaultPageSize : _ref$pageSize; var total = ((_a = result.data) === null || _a === void 0 ? void 0 : _a.total) || 0; var totalPage = (0, _react.useMemo)(function () { return Math.ceil(total / pageSize); }, [pageSize, total]); var onChange = function onChange(c, p) { var toCurrent = c <= 0 ? 1 : c; var toPageSize = p <= 0 ? 1 : p; var tempTotalPage = Math.ceil(total / toPageSize); if (toCurrent > tempTotalPage) { toCurrent = Math.max(1, tempTotalPage); } var _ref2 = result.params || [], _ref3 = (0, _toArray2["default"])(_ref2), _ref3$ = _ref3[0], oldPaginationParams = _ref3$ === void 0 ? {} : _ref3$, restParams = _ref3.slice(1); result.run.apply(result, [Object.assign(Object.assign({}, oldPaginationParams), { current: toCurrent, pageSize: toPageSize })].concat((0, _toConsumableArray2["default"])(restParams))); }; var changeCurrent = function changeCurrent(c) { onChange(c, pageSize); }; var changePageSize = function changePageSize(p) { onChange(current, p); }; return Object.assign(Object.assign({}, result), { pagination: { current: current, pageSize: pageSize, total: total, totalPage: totalPage, onChange: (0, _useMemoizedFn["default"])(onChange), changeCurrent: (0, _useMemoizedFn["default"])(changeCurrent), changePageSize: (0, _useMemoizedFn["default"])(changePageSize) } }); }; var _default = exports["default"] = usePagination;