test-nut-ui
Version:
<p align="center"> <img alt="logo" src="https://img11.360buyimg.com/imagetools/jfs/t1/211965/25/7152/22022/61b16785E433119bb/aa41d7a9f7e823f3.png" width="150" style="margin-bottom: 10px;"> </p>
164 lines (163 loc) • 7.49 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
var _excluded = ["disabledHidden", "showTotalText", "totalText", "value", "mode", "prev", "next", "total", "pageSize", "itemSize", "onChange", "ellipse", "itemRender", "defaultValue", "className"];
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys(Object(source), true).forEach(function(key) {
_defineProperty(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
import React__default, { useMemo } from "react";
import classNames from "classnames";
import { useConfig } from "./ConfigProvider.js";
import { u as usePropsValue } from "./use-props-value.js";
import { C as ComponentDefaults } from "./typings.js";
import Button from "./Button.js";
import { g as gr, E as Er } from "./index.js";
var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
disabledHidden: false,
showTotalText: false,
totalText: "",
defaultValue: 1,
mode: "simple",
prev: null,
next: null,
total: 50,
pageSize: 10,
itemSize: 5,
ellipse: false
});
var Pagination = function Pagination2(props) {
var _useConfig = useConfig(), locale = _useConfig.locale;
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), disabledHidden = _defaultProps$props.disabledHidden, showTotalText = _defaultProps$props.showTotalText, totalText = _defaultProps$props.totalText, value = _defaultProps$props.value, mode = _defaultProps$props.mode, prev = _defaultProps$props.prev, next = _defaultProps$props.next, total = _defaultProps$props.total, pageSize = _defaultProps$props.pageSize, itemSize = _defaultProps$props.itemSize, onChange = _defaultProps$props.onChange, ellipse = _defaultProps$props.ellipse, itemRender = _defaultProps$props.itemRender, defaultValue = _defaultProps$props.defaultValue, className = _defaultProps$props.className, rest = _objectWithoutProperties(_defaultProps$props, _excluded);
var classPrefix = "nut-pagination";
var _usePropsValue = usePropsValue({
value,
defaultValue,
finalValue: 1,
onChange
}), _usePropsValue2 = _slicedToArray(_usePropsValue, 2), currentPage = _usePropsValue2[0], setCurrentPage = _usePropsValue2[1];
var pageCount = useMemo(function() {
var num = Math.ceil(total / pageSize);
return Number.isNaN(num) ? 1 : Math.max(1, num);
}, [total, pageSize]);
var pages = useMemo(function() {
var items = [];
var startPage = 1;
var endPage = pageCount;
var partialShow = pageCount > itemSize;
if (partialShow) {
startPage = Math.max(currentPage - Math.floor(itemSize / 2), 1);
endPage = startPage + itemSize - 1;
if (endPage > pageCount) {
endPage = pageCount;
startPage = endPage - itemSize + 1;
}
}
for (var i = startPage; i <= endPage; i++) {
items.push({
number: i,
text: i
});
}
if (partialShow && itemSize > 0 && ellipse) {
if (startPage > 1) {
items.unshift({
number: startPage - 1,
text: "···"
});
}
if (endPage < pageCount) {
items.push({
number: endPage + 1,
text: "···"
});
}
}
return items;
}, [currentPage, itemSize, pageCount]);
var handleSelectPage = function handleSelectPage2(curPage) {
if (curPage > pageCount || curPage < 1)
return;
setCurrentPage(curPage);
};
return React__default.createElement("div", _objectSpread({
className: classNames(classPrefix, className, "".concat(classPrefix, "--").concat(mode))
}, rest), showTotalText ? React__default.createElement("div", {
className: "".concat(classPrefix, "__total-text")
}, totalText || "共".concat(total, "条数据")) : null, mode === "simple" ? React__default.createElement("div", {
className: classNames("".concat(classPrefix, "__prev--simple"), currentPage === 1 ? "disabled" : "", currentPage === 1 && disabledHidden ? "disabled-hidden" : ""),
onClick: function onClick(e) {
return handleSelectPage(currentPage - 1);
}
}, prev || React__default.createElement(Button, {
size: "mini",
type: "primary",
plain: true,
disabled: currentPage === 1
}, locale.pagination.prev)) : React__default.createElement("div", {
className: classNames("".concat(classPrefix, "__prev"), currentPage === 1 ? "disabled" : "", currentPage === 1 && disabledHidden ? "disabled-hidden" : ""),
onClick: function onClick(e) {
return handleSelectPage(currentPage - 1);
}
}, prev || React__default.createElement(gr, {
size: 20
})), mode === "multi" && React__default.createElement("div", {
className: "".concat(classPrefix, "__contain")
}, pages.map(function(item, index) {
return React__default.createElement("div", {
key: "".concat(index, "pagination"),
className: classNames("".concat(classPrefix, "__item"), {
active: item.number === currentPage
}),
onClick: function onClick(e) {
item.number !== currentPage && handleSelectPage(item.number);
}
}, itemRender ? itemRender(item) : item.text);
})), mode === "simple" && React__default.createElement("div", {
className: "".concat(classPrefix, "__contain")
}, React__default.createElement("div", {
className: "".concat(classPrefix, "__contain--simple")
}, React__default.createElement("span", {
className: "".concat(classPrefix, "__contain--simple-highlight")
}, currentPage), React__default.createElement("span", {
className: "".concat(classPrefix, "__contain--simple-symbol")
}, "/"), React__default.createElement("span", null, pageCount))), mode === "simple" ? React__default.createElement("div", {
className: classNames("".concat(classPrefix, "__next--simple"), currentPage >= pageCount ? "disabled" : "", currentPage >= pageCount && disabledHidden ? "disabled-hidden" : ""),
onClick: function onClick(e) {
return handleSelectPage(currentPage + 1);
}
}, next || React__default.createElement(Button, {
size: "mini",
type: "primary",
disabled: currentPage >= pageCount
}, locale.pagination.next)) : React__default.createElement("div", {
className: classNames("".concat(classPrefix, "__next"), currentPage >= pageCount ? "disabled" : "", currentPage >= pageCount && disabledHidden ? "disabled-hidden" : ""),
onClick: function onClick(e) {
return handleSelectPage(currentPage + 1);
}
}, next || React__default.createElement(Er, {
size: 20
})));
};
Pagination.defaultProps = defaultProps;
Pagination.displayName = "NutPagination";
export {
Pagination as default
};