tdesign-react
Version:
TDesign Component for React
339 lines (335 loc) • 13.6 kB
JavaScript
/**
* tdesign v1.13.2
* (c) 2025 tdesign
* @license MIT
*/
import { _ as _defineProperty } from '../_chunks/dep-8618a2f1.js';
import { _ as _slicedToArray } from '../_chunks/dep-118954e6.js';
import { _ as _objectWithoutProperties } from '../_chunks/dep-30ed04a0.js';
import React, { forwardRef, useState, useMemo, useEffect } from 'react';
import classNames from 'classnames';
import { omit, isNaN } from 'lodash-es';
import noop from '../_util/noop.js';
import useConfig from '../hooks/useConfig.js';
import useControlled from '../hooks/useControlled.js';
import { Select } from '../select/index.js';
import { InputNumber } from '../input-number/index.js';
import '../input-adornment/index.js';
import { useLocaleReceiver } from '../locale/LocalReceiver.js';
import useBoundaryJumper from './hooks/useBoundaryJumper.js';
import usePrevNextJumper from './hooks/usePrevNextJumper.js';
import usePageNumber from './hooks/usePageNumber.js';
import useTotal from './hooks/useTotal.js';
import { pageSizeValidator } from './validators.js';
import { paginationDefaultProps } from './defaultProps.js';
import useDefaultProps from '../hooks/useDefaultProps.js';
import InputAdornment from '../input-adornment/InputAdornment.js';
import '../_chunks/dep-c37cc2fd.js';
import '../_chunks/dep-61f5e3d1.js';
import '../config-provider/ConfigContext.js';
import '../locale/zh_CN.js';
import '../_chunks/dep-ab140eb0.js';
import 'dayjs';
import '../_chunks/dep-95bd7102.js';
import '../select/base/Select.js';
import '../_util/helper.js';
import '../_util/forwardRefWithStatics.js';
import 'hoist-non-react-statics';
import '../_chunks/dep-5f59b20a.js';
import '../_chunks/dep-132961ab.js';
import '../select/base/OptionGroup.js';
import '../select/defaultProps.js';
import '../select/base/Option.js';
import '../hooks/useDomRefCallback.js';
import '../hooks/useRipple.js';
import '../_chunks/dep-fab491d8.js';
import '../hooks/useAnimation.js';
import '../_chunks/dep-82b8abc2.js';
import '../common/FakeArrow.js';
import '../loading/index.js';
import '../loading/Loading.js';
import '../common/Portal.js';
import 'react-dom';
import '../hooks/useLayoutEffect.js';
import '../loading/gradient.js';
import '../_chunks/dep-f213e3a9.js';
import '../loading/defaultProps.js';
import '../loading/plugin.js';
import '../_util/react-render.js';
import '../_chunks/dep-1aea5672.js';
import '../common/PluginContainer.js';
import '../config-provider/index.js';
import '../config-provider/ConfigProvider.js';
import '../config-provider/type.js';
import '../loading/style/css.js';
import '../loading/type.js';
import '../select-input/index.js';
import '../select-input/SelectInput.js';
import '../popup/index.js';
import '../popup/Popup.js';
import 'react-transition-group';
import '../_util/ref.js';
import 'react-is';
import '../_util/isFragment.js';
import '../hooks/useAttach.js';
import '../hooks/useMutationObserver.js';
import '../hooks/useLatest.js';
import '../hooks/usePopper.js';
import '@popperjs/core';
import 'react-fast-compare';
import '../hooks/useWindowSize.js';
import '../popup/defaultProps.js';
import '../popup/hooks/useTrigger.js';
import '../_util/composeRefs.js';
import '../_util/listener.js';
import '../popup/utils/transition.js';
import '../popup/PopupPlugin.js';
import '../popup/style/css.js';
import '../popup/type.js';
import '../select-input/useSingle.js';
import '../input/index.js';
import '../input/Input.js';
import 'tdesign-icons-react';
import '../hooks/useGlobalIcon.js';
import '../input/InputGroup.js';
import '../input/defaultProps.js';
import '../_util/parseTNode.js';
import '../_chunks/dep-4e5b1475.js';
import '../_chunks/dep-d104053f.js';
import '../input/useLengthLimit.js';
import '../input/style/css.js';
import '../input/type.js';
import '../select-input/useMultiple.js';
import '../tag-input/index.js';
import '../tag-input/TagInput.js';
import '../hooks/useDragSorter.js';
import '../hooks/useEventCallback.js';
import '../tag-input/useTagScroll.js';
import '../tag-input/useTagList.js';
import '../tag/index.js';
import '../tag/Tag.js';
import '../_chunks/dep-ab4955c6.js';
import '../tag/defaultProps.js';
import '../tag/CheckTag.js';
import '../_chunks/dep-5fa28cf2.js';
import '../tag/CheckTagGroup.js';
import '../tag/style/css.js';
import '../tag/type.js';
import '../tag-input/useHover.js';
import '../tag-input/defaultProps.js';
import '../tag-input/style/css.js';
import '../tag-input/type.js';
import '../select-input/useOverlayInnerStyle.js';
import '../select-input/defaultProps.js';
import '../select-input/style/css.js';
import '../select-input/type.js';
import '../select/base/PopupContent.js';
import '../select/hooks/usePanelVirtualScroll.js';
import '../hooks/useVirtualScroll.js';
import '../hooks/useResizeObserver.js';
import '../select/style/css.js';
import '../select/type.js';
import '../input-number/InputNumber.js';
import '../button/index.js';
import '../button/Button.js';
import '../button/defaultProps.js';
import '../button/style/css.js';
import '../button/type.js';
import '../input-number/useInputNumber.js';
import '../_chunks/dep-dbd5931e.js';
import '../hooks/useCommonClassName.js';
import '../input-number/defaultProps.js';
import '../input-number/style/css.js';
import '../input-number/type.js';
import '../input-adornment/style/css.js';
import '../input-adornment/type.js';
var _excluded = ["theme", "size", "total", "showPageSize", "showPageNumber", "showPreviousAndNextBtn", "showFirstAndLastPageBtn", "showJumper", "pageEllipsisMode", "disabled", "foldedMaxPageBtn", "maxPageBtn", "totalContent", "pageSizeOptions", "onChange", "onCurrentChange", "onPageSizeChange", "style", "className", "selectProps"];
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var Option = Select.Option;
var Pagination = /*#__PURE__*/forwardRef(function (originalProps, ref) {
var props = useDefaultProps(originalProps, paginationDefaultProps);
var theme = props.theme,
size = props.size,
total = props.total,
showPageSize = props.showPageSize,
showPageNumber = props.showPageNumber,
showPreviousAndNextBtn = props.showPreviousAndNextBtn,
showFirstAndLastPageBtn = props.showFirstAndLastPageBtn,
showJumper = props.showJumper,
pageEllipsisMode = props.pageEllipsisMode,
disabled = props.disabled,
foldedMaxPageBtn = props.foldedMaxPageBtn,
maxPageBtn = props.maxPageBtn,
totalContent = props.totalContent,
pageSizeOptions = props.pageSizeOptions,
_props$onChange = props.onChange,
onChange = _props$onChange === void 0 ? noop : _props$onChange,
onCurrentChange = props.onCurrentChange,
onPageSizeChange = props.onPageSizeChange,
style = props.style,
className = props.className,
selectProps = props.selectProps,
otherProps = _objectWithoutProperties(props, _excluded);
var restProps = omit(otherProps, ["current", "pageSize", "defaultPageSize", "defaultCurrent"]);
var _useLocaleReceiver = useLocaleReceiver("pagination"),
_useLocaleReceiver2 = _slicedToArray(_useLocaleReceiver, 2),
locale = _useLocaleReceiver2[0],
t = _useLocaleReceiver2[1];
var _useControlled = useControlled(props, "pageSize", onPageSizeChange),
_useControlled2 = _slicedToArray(_useControlled, 2),
pageSize = _useControlled2[0],
setPageSize = _useControlled2[1];
var _useControlled3 = useControlled(props, "current", onCurrentChange),
_useControlled4 = _slicedToArray(_useControlled3, 2),
current = _useControlled4[0],
setCurrent = _useControlled4[1];
var _useState = useState(current),
_useState2 = _slicedToArray(_useState, 2),
jumpValue = _useState2[0],
setJumpValue = _useState2[1];
var min = 1;
var _useConfig = useConfig(),
classPrefix = _useConfig.classPrefix,
paginationConfig = _useConfig.pagination;
var name = "".concat(classPrefix, "-pagination");
var pageCount = useMemo(function () {
var calCount = Math.ceil(total / pageSize);
return calCount > 0 ? calCount : 1;
}, [pageSize, total]);
var changeCurrent = function changeCurrent(_nextCurrent, _nextPageSize) {
if (disabled || current === _nextCurrent) {
return;
}
var nextCurrent = Math.trunc(_nextCurrent);
if (isNaN(nextCurrent)) return;
var nextPageSize = _nextPageSize;
if (!nextPageSize && !pageSizeValidator(nextPageSize)) {
var _pageSizeOptions$;
nextPageSize = pageSize !== null && pageSize !== void 0 ? pageSize : typeof pageSizeOptions[0] === "number" ? pageSizeOptions[0] : (_pageSizeOptions$ = pageSizeOptions[0]) === null || _pageSizeOptions$ === void 0 ? void 0 : _pageSizeOptions$.value;
}
if (nextCurrent < min) nextCurrent = min;
if (nextCurrent > pageCount) nextCurrent = pageCount;
setCurrent(nextCurrent, {
current: nextCurrent,
previous: current,
pageSize: nextPageSize
});
onChange({
current: nextCurrent,
previous: current,
pageSize: nextPageSize
});
};
var changePageSize = function changePageSize(nextPageSize) {
var nextCurrent = Math.min(current, Math.max(1, Math.ceil(total / nextPageSize)));
var pageInfo = {
current: nextCurrent,
previous: current,
pageSize: nextPageSize
};
setPageSize(nextPageSize, pageInfo);
if (current !== nextCurrent) {
changeCurrent(nextCurrent, nextPageSize);
} else {
onChange(pageInfo);
}
};
var _useTotal = useTotal({
totalContent: totalContent,
pageSize: pageSize,
current: current,
total: total
}),
totalControl = _useTotal.totalControl;
var _useBoundaryJumper = useBoundaryJumper({
disabled: disabled,
current: current,
pageCount: pageCount,
showFirstAndLastPageBtn: showFirstAndLastPageBtn,
changeCurrent: changeCurrent
}),
firstPageJumper = _useBoundaryJumper.firstPageJumper,
lastPageJumper = _useBoundaryJumper.lastPageJumper;
var _usePrevNextJumper = usePrevNextJumper({
disabled: disabled,
current: current,
pageCount: pageCount,
showPreviousAndNextBtn: showPreviousAndNextBtn,
changeCurrent: changeCurrent
}),
prevJumper = _usePrevNextJumper.prevJumper,
nextJumper = _usePrevNextJumper.nextJumper;
var _usePageNumber = usePageNumber({
showPageNumber: showPageNumber,
maxPageBtn: maxPageBtn,
disabled: disabled,
current: current,
pageCount: pageCount,
foldedMaxPageBtn: foldedMaxPageBtn,
changeCurrent: changeCurrent,
pageEllipsisMode: pageEllipsisMode
}),
pageNumberControl = _usePageNumber.pageNumberControl;
useEffect(function () {
setJumpValue(current);
}, [current]);
var pageSizeControl = showPageSize && pageSizeOptions.length ? /* @__PURE__ */React.createElement("div", {
className: "".concat(name, "__select")
}, /* @__PURE__ */React.createElement(Select, _objectSpread({
autoWidth: true,
size: size,
value: pageSize,
disabled: disabled,
onChange: changePageSize
}, selectProps), pageSizeOptions.map(function (item) {
return typeof item === "number" ? /* @__PURE__ */React.createElement(Option, {
key: item,
label: t(locale.itemsPerPage, {
size: item
}),
value: item
}) : /* @__PURE__ */React.createElement(Option, {
key: item.value,
label: item.label,
value: item.value
});
}))) : null;
var DefaultJumper = /* @__PURE__ */React.createElement("div", {
className: "".concat(name, "__jump")
}, t(locale.jumpTo), /* @__PURE__ */React.createElement(InputAdornment, {
append: "/ ".concat(pageCount, " ").concat(t(locale.page))
}, /* @__PURE__ */React.createElement(InputNumber, {
className: "".concat(classPrefix, "-pagination__input"),
min: min,
size: size,
theme: "normal",
max: pageCount,
disabled: disabled,
value: jumpValue,
onChange: function onChange(val) {
return setJumpValue(val);
},
onBlur: function onBlur(val) {
return changeCurrent(val);
},
onEnter: function onEnter(val) {
return changeCurrent(val);
},
placeholder: ""
})));
var globalJumper = paginationConfig.jumper;
var Jumper = globalJumper ? globalJumper({
current: current,
pageCount: pageCount,
onChange: changeCurrent
}) : DefaultJumper;
return /* @__PURE__ */React.createElement("div", _objectSpread({
className: classNames(name, className, _defineProperty(_defineProperty({}, "".concat(classPrefix, "-size-s"), size === "small"), "".concat(classPrefix, "-is-disabled"), disabled)),
style: style,
ref: ref
}, restProps), totalControl, pageSizeControl, firstPageJumper, prevJumper, theme === "default" && pageNumberControl, theme === "simple" && Jumper, nextJumper, lastPageJumper, theme === "default" && showJumper && Jumper);
});
Pagination.displayName = "Pagination";
export { Pagination as default };
//# sourceMappingURL=Pagination.js.map