ahooks
Version:
react hooks library
76 lines (75 loc) • 3.13 kB
JavaScript
;
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;