1 | import _extends from "@babel/runtime/helpers/esm/extends";
|
2 | import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
3 | import _typeof from "@babel/runtime/helpers/esm/typeof";
|
4 |
|
5 | var __rest = this && this.__rest || function (s, e) {
|
6 | var t = {};
|
7 |
|
8 | for (var p in s) {
|
9 | if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
10 | }
|
11 |
|
12 | if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
13 | if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
14 | }
|
15 | return t;
|
16 | };
|
17 |
|
18 | import { useState } from 'react';
|
19 | export var DEFAULT_PAGE_SIZE = 10;
|
20 | export function getPaginationParam(pagination, mergedPagination) {
|
21 | var param = {
|
22 | current: mergedPagination.current,
|
23 | pageSize: mergedPagination.pageSize
|
24 | };
|
25 | var paginationObj = pagination && _typeof(pagination) === 'object' ? pagination : {};
|
26 | Object.keys(paginationObj).forEach(function (pageProp) {
|
27 | var value = mergedPagination[pageProp];
|
28 |
|
29 | if (typeof value !== 'function') {
|
30 | param[pageProp] = value;
|
31 | }
|
32 | });
|
33 | return param;
|
34 | }
|
35 |
|
36 | function extendsObject() {
|
37 | var result = {};
|
38 |
|
39 | for (var _len = arguments.length, list = new Array(_len), _key = 0; _key < _len; _key++) {
|
40 | list[_key] = arguments[_key];
|
41 | }
|
42 |
|
43 | list.forEach(function (obj) {
|
44 | if (obj) {
|
45 | Object.keys(obj).forEach(function (key) {
|
46 | var val = obj[key];
|
47 |
|
48 | if (val !== undefined) {
|
49 | result[key] = val;
|
50 | }
|
51 | });
|
52 | }
|
53 | });
|
54 | return result;
|
55 | }
|
56 |
|
57 | export default function usePagination(total, pagination, onChange) {
|
58 | var _a = pagination && _typeof(pagination) === 'object' ? pagination : {},
|
59 | _a$total = _a.total,
|
60 | paginationTotal = _a$total === void 0 ? 0 : _a$total,
|
61 | paginationObj = __rest(_a, ["total"]);
|
62 |
|
63 | var _useState = useState(function () {
|
64 | return {
|
65 | current: 'defaultCurrent' in paginationObj ? paginationObj.defaultCurrent : 1,
|
66 | pageSize: 'defaultPageSize' in paginationObj ? paginationObj.defaultPageSize : DEFAULT_PAGE_SIZE
|
67 | };
|
68 | }),
|
69 | _useState2 = _slicedToArray(_useState, 2),
|
70 | innerPagination = _useState2[0],
|
71 | setInnerPagination = _useState2[1];
|
72 |
|
73 |
|
74 | var mergedPagination = extendsObject(innerPagination, paginationObj, {
|
75 | total: paginationTotal > 0 ? paginationTotal : total
|
76 | });
|
77 |
|
78 | var maxPage = Math.ceil((paginationTotal || total) / mergedPagination.pageSize);
|
79 |
|
80 | if (mergedPagination.current > maxPage) {
|
81 |
|
82 | mergedPagination.current = maxPage || 1;
|
83 | }
|
84 |
|
85 | var refreshPagination = function refreshPagination() {
|
86 | var current = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
87 | var pageSize = arguments.length > 1 ? arguments[1] : undefined;
|
88 | setInnerPagination({
|
89 | current: current,
|
90 | pageSize: pageSize || mergedPagination.pageSize
|
91 | });
|
92 | };
|
93 |
|
94 | var onInternalChange = function onInternalChange(current, pageSize) {
|
95 | var _a;
|
96 |
|
97 | if (pagination) {
|
98 | (_a = pagination.onChange) === null || _a === void 0 ? void 0 : _a.call(pagination, current, pageSize);
|
99 | }
|
100 |
|
101 | refreshPagination(current, pageSize);
|
102 | onChange(current, pageSize || (mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.pageSize));
|
103 | };
|
104 |
|
105 | if (pagination === false) {
|
106 | return [{}, function () {}];
|
107 | }
|
108 |
|
109 | return [_extends(_extends({}, mergedPagination), {
|
110 | onChange: onInternalChange
|
111 | }), refreshPagination];
|
112 | } |
\ | No newline at end of file |