UNPKG

tdesign-react

Version:
339 lines (335 loc) 13.6 kB
/** * 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