tdesign-react
Version:
TDesign Component for React
409 lines (400 loc) • 16.9 kB
JavaScript
/**
* tdesign v1.15.1
* (c) 2025 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var defineProperty = require('../_chunks/dep-0006fcfa.js');
var slicedToArray = require('../_chunks/dep-8e4d656d.js');
var objectWithoutProperties = require('../_chunks/dep-8fa3a4c2.js');
var React = require('react');
var classNames = require('classnames');
var _util_noop = require('../_util/noop.js');
var hooks_useConfig = require('../hooks/useConfig.js');
var hooks_useControlled = require('../hooks/useControlled.js');
var select_index = require('../select/index.js');
var inputNumber_index = require('../input-number/index.js');
var inputAdornment_InputAdornment = require('../input-adornment/InputAdornment.js');
var locale_LocalReceiver = require('../locale/LocalReceiver.js');
var pagination_hooks_useBoundaryJumper = require('./hooks/useBoundaryJumper.js');
var pagination_hooks_usePrevNextJumper = require('./hooks/usePrevNextJumper.js');
var pagination_hooks_usePageNumber = require('./hooks/usePageNumber.js');
var pagination_hooks_useTotal = require('./hooks/useTotal.js');
var pagination_validators = require('./validators.js');
var pagination_defaultProps = require('./defaultProps.js');
var hooks_useDefaultProps = require('../hooks/useDefaultProps.js');
var omit = require('../_chunks/dep-d5e8c967.js');
var isNumber = require('../_chunks/dep-2ffa3ff1.js');
require('../_chunks/dep-667ac7af.js');
require('../_chunks/dep-00b49251.js');
require('../config-provider/ConfigContext.js');
require('../_chunks/dep-1df1dad8.js');
require('../_chunks/dep-5b5ab11b.js');
require('dayjs');
require('../_chunks/dep-f32c03f1.js');
require('../_chunks/dep-31c4bc3d.js');
require('../_chunks/dep-eea2872a.js');
require('../_chunks/dep-25585736.js');
require('../_chunks/dep-62e73936.js');
require('../_chunks/dep-64577888.js');
require('../_chunks/dep-71455db7.js');
require('../_chunks/dep-9e5a468d.js');
require('../_chunks/dep-ec8d2dca.js');
require('../_chunks/dep-fc596d16.js');
require('../_chunks/dep-f26edb7b.js');
require('../_chunks/dep-f33c1939.js');
require('../_chunks/dep-21ece627.js');
require('../_chunks/dep-25e4aa84.js');
require('../_chunks/dep-e1fbe1c3.js');
require('../_chunks/dep-df2b541f.js');
require('../_chunks/dep-edd366db.js');
require('../_chunks/dep-a56c4939.js');
require('../_chunks/dep-6c297e20.js');
require('../_chunks/dep-b7ad4d54.js');
require('../_chunks/dep-a2cb9299.js');
require('../_chunks/dep-f981815b.js');
require('../_chunks/dep-66114ce9.js');
require('../_chunks/dep-62d1dd66.js');
require('../_chunks/dep-7a148045.js');
require('../_chunks/dep-255ceed8.js');
require('../_chunks/dep-79629634.js');
require('../select/base/Select.js');
require('../_util/composeRefs.js');
require('../_util/forwardRefWithStatics.js');
require('hoist-non-react-statics');
require('../_util/helper.js');
require('../_chunks/dep-840b1644.js');
require('../_util/parseTNode.js');
require('../_chunks/dep-59671c87.js');
require('../common/FakeArrow.js');
require('../loading/index.js');
require('../loading/Loading.js');
require('../_chunks/dep-381fa848.js');
require('../_chunks/dep-4ed9eda4.js');
require('../common/Portal.js');
require('react-dom');
require('../hooks/useLayoutEffect.js');
require('../loading/gradient.js');
require('../_chunks/dep-dc4ce063.js');
require('../_chunks/dep-002fcc1e.js');
require('../_chunks/dep-e4e1901e.js');
require('../hooks/useDomRefCallback.js');
require('../loading/defaultProps.js');
require('../loading/plugin.js');
require('../_util/react-render.js');
require('../_chunks/dep-65ef8e09.js');
require('../common/PluginContainer.js');
require('../config-provider/ConfigProvider.js');
require('../_chunks/dep-ab2f63ec.js');
require('../_chunks/dep-a48c7e8b.js');
require('../_chunks/dep-3d4656ee.js');
require('../_chunks/dep-0ffc9d96.js');
require('../_chunks/dep-efe6d243.js');
require('../_chunks/dep-4b18243f.js');
require('../_chunks/dep-bff2c990.js');
require('../select-input/index.js');
require('../select-input/SelectInput.js');
require('../popup/index.js');
require('../popup/Popup.js');
require('react-transition-group');
require('../_util/ref.js');
require('react-is');
require('../_util/isFragment.js');
require('../hooks/useAnimation.js');
require('../hooks/useAttach.js');
require('../hooks/useMutationObserver.js');
require('../hooks/useLatest.js');
require('../_chunks/dep-eb6d55c1.js');
require('../_chunks/dep-014b9b78.js');
require('../_chunks/dep-abdd786a.js');
require('../_chunks/dep-a231fdc5.js');
require('../_chunks/dep-cf14666e.js');
require('../hooks/usePopper.js');
require('@popperjs/core');
require('react-fast-compare');
require('../hooks/useWindowSize.js');
require('../popup/defaultProps.js');
require('../popup/hooks/useTrigger.js');
require('../_util/listener.js');
require('../popup/utils/transition.js');
require('../popup/PopupPlugin.js');
require('../select-input/useSingle.js');
require('../input/index.js');
require('../input/Input.js');
require('tdesign-icons-react');
require('../hooks/useGlobalIcon.js');
require('../input/InputGroup.js');
require('../input/defaultProps.js');
require('../input/useLengthLimit.js');
require('../_chunks/dep-1e4197a4.js');
require('../_chunks/dep-3398c1f2.js');
require('../_chunks/dep-e57bdc8f.js');
require('../_chunks/dep-22b1740a.js');
require('../_chunks/dep-373af7a2.js');
require('../_chunks/dep-fc29b8b5.js');
require('../select-input/useMultiple.js');
require('../tag-input/index.js');
require('../tag-input/TagInput.js');
require('../hooks/useDragSorter.js');
require('../hooks/useEventCallback.js');
require('../tag-input/defaultProps.js');
require('../tag-input/useHover.js');
require('../tag-input/useTagList.js');
require('../tag/index.js');
require('../tag/Tag.js');
require('../_chunks/dep-4d5c26af.js');
require('../tag/defaultProps.js');
require('../tag/CheckTag.js');
require('../_chunks/dep-4406837c.js');
require('../tag/CheckTagGroup.js');
require('../tag-input/useTagScroll.js');
require('../select-input/useOverlayInnerStyle.js');
require('../select-input/defaultProps.js');
require('../select/defaultProps.js');
require('../_chunks/dep-e83bd2ab.js');
require('../select/base/OptionGroup.js');
require('../select/base/Option.js');
require('../hooks/useRipple.js');
require('../_chunks/dep-0c8c9057.js');
require('../select/base/PopupContent.js');
require('../select/hooks/usePanelVirtualScroll.js');
require('../hooks/useVirtualScroll.js');
require('../input-number/InputNumber.js');
require('../button/index.js');
require('../button/Button.js');
require('../button/defaultProps.js');
require('../input-number/useInputNumber.js');
require('../_chunks/dep-e75d22fc.js');
require('../_chunks/dep-221787fe.js');
require('../hooks/useCommonClassName.js');
require('../input-number/defaultProps.js');
require('../_chunks/dep-9a375a19.js');
require('../_chunks/dep-d915c90f.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
/**
* Checks if `value` is `NaN`.
*
* **Note:** This method is based on
* [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
* global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
* `undefined` and other non-number values.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
* @example
*
* _.isNaN(NaN);
* // => true
*
* _.isNaN(new Number(NaN));
* // => true
*
* isNaN(undefined);
* // => true
*
* _.isNaN(undefined);
* // => false
*/
function isNaN(value) {
// An `NaN` primitive is the only value that is not equal to itself.
// Perform the `toStringTag` check first to avoid errors with some
// ActiveX objects in IE.
return isNumber.isNumber(value) && value != +value;
}
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._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_index.Select.Option;
var Pagination = /*#__PURE__*/React.forwardRef(function (originalProps, ref) {
var props = hooks_useDefaultProps["default"](originalProps, pagination_defaultProps.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 ? _util_noop["default"] : _props$onChange,
onCurrentChange = props.onCurrentChange,
onPageSizeChange = props.onPageSizeChange,
style = props.style,
className = props.className,
selectProps = props.selectProps,
otherProps = objectWithoutProperties._objectWithoutProperties(props, _excluded);
var restProps = omit.omit(otherProps, ["current", "pageSize", "defaultPageSize", "defaultCurrent"]);
var _useLocaleReceiver = locale_LocalReceiver.useLocaleReceiver("pagination"),
_useLocaleReceiver2 = slicedToArray._slicedToArray(_useLocaleReceiver, 2),
locale = _useLocaleReceiver2[0],
t = _useLocaleReceiver2[1];
var _useControlled = hooks_useControlled["default"](props, "pageSize", onPageSizeChange),
_useControlled2 = slicedToArray._slicedToArray(_useControlled, 2),
pageSize = _useControlled2[0],
setPageSize = _useControlled2[1];
var _useControlled3 = hooks_useControlled["default"](props, "current", onCurrentChange),
_useControlled4 = slicedToArray._slicedToArray(_useControlled3, 2),
current = _useControlled4[0],
setCurrent = _useControlled4[1];
var _useState = React.useState(current),
_useState2 = slicedToArray._slicedToArray(_useState, 2),
jumpValue = _useState2[0],
setJumpValue = _useState2[1];
var min = 1;
var _useConfig = hooks_useConfig["default"](),
classPrefix = _useConfig.classPrefix,
paginationConfig = _useConfig.pagination;
var name = "".concat(classPrefix, "-pagination");
var pageCount = React.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 && !pagination_validators.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 = pagination_hooks_useTotal["default"]({
totalContent: totalContent,
pageSize: pageSize,
current: current,
total: total
}),
totalControl = _useTotal.totalControl;
var _useBoundaryJumper = pagination_hooks_useBoundaryJumper["default"]({
disabled: disabled,
current: current,
pageCount: pageCount,
showFirstAndLastPageBtn: showFirstAndLastPageBtn,
changeCurrent: changeCurrent
}),
firstPageJumper = _useBoundaryJumper.firstPageJumper,
lastPageJumper = _useBoundaryJumper.lastPageJumper;
var _usePrevNextJumper = pagination_hooks_usePrevNextJumper["default"]({
disabled: disabled,
current: current,
pageCount: pageCount,
showPreviousAndNextBtn: showPreviousAndNextBtn,
changeCurrent: changeCurrent
}),
prevJumper = _usePrevNextJumper.prevJumper,
nextJumper = _usePrevNextJumper.nextJumper;
var _usePageNumber = pagination_hooks_usePageNumber["default"]({
showPageNumber: showPageNumber,
maxPageBtn: maxPageBtn,
disabled: disabled,
current: current,
pageCount: pageCount,
foldedMaxPageBtn: foldedMaxPageBtn,
changeCurrent: changeCurrent,
pageEllipsisMode: pageEllipsisMode
}),
pageNumberControl = _usePageNumber.pageNumberControl;
React.useEffect(function () {
setJumpValue(current);
}, [current]);
var pageSizeControl = showPageSize && pageSizeOptions.length ? /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(name, "__select")
}, /* @__PURE__ */React__default["default"].createElement(select_index.Select, _objectSpread({
autoWidth: true,
size: size,
value: pageSize,
disabled: disabled,
onChange: changePageSize
}, selectProps), pageSizeOptions.map(function (item) {
return typeof item === "number" ? /* @__PURE__ */React__default["default"].createElement(Option, {
key: item,
label: t(locale.itemsPerPage, {
size: item
}),
value: item
}) : /* @__PURE__ */React__default["default"].createElement(Option, {
key: item.value,
label: item.label,
value: item.value
});
}))) : null;
var DefaultJumper = /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(name, "__jump")
}, t(locale.jumpTo), /* @__PURE__ */React__default["default"].createElement(inputAdornment_InputAdornment["default"], {
append: "/ ".concat(pageCount, " ").concat(t(locale.page))
}, /* @__PURE__ */React__default["default"].createElement(inputNumber_index.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__default["default"].createElement("div", _objectSpread({
className: classNames__default["default"](name, className, defineProperty._defineProperty(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";
exports["default"] = Pagination;
//# sourceMappingURL=Pagination.js.map