acud
Version:
acg react 组件库
84 lines (82 loc) • 3.27 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
/**
* @file pagination/rc-pagination/Options
* @author chenyaqiu
*/
;
var defaultPageSizeOptions = ['10', '20', '50', '100'];
var Options = function Options(_ref) {
var _ref$pageSizeOptions = _ref.pageSizeOptions,
pageSizeOptions = _ref$pageSizeOptions === void 0 ? defaultPageSizeOptions : _ref$pageSizeOptions,
changeSize = _ref.changeSize,
pageSize = _ref.pageSize,
rootPrefixCls = _ref.rootPrefixCls,
selectComponentClass = _ref.selectComponentClass,
buildOptionText = _ref.buildOptionText,
selectPrefixCls = _ref.selectPrefixCls,
disabled = _ref.disabled,
Option = _ref.Option,
locale = _ref.locale;
var prefixCls = "".concat(rootPrefixCls, "-options");
var Select = selectComponentClass;
var handleBuildOptionText = _react["default"].useCallback(function (value) {
return "".concat(value);
}, []);
buildOptionText = _react["default"].useCallback(function (value) {
return "".concat(value, " ").concat(locale.items_per_page);
}, [locale]);
var handleChangeSize = _react["default"].useCallback(function (value) {
changeSize(Number(value));
}, [changeSize]);
var curPageSizeOptions = _react["default"].useMemo(function () {
if (pageSizeOptions.some(function (option) {
return option.toString() === pageSize.toString();
})) {
return pageSizeOptions;
}
return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {
// eslint-disable-next-line no-restricted-globals
var numberA = isNaN(Number(a)) ? 0 : Number(a);
// eslint-disable-next-line no-restricted-globals
var numberB = isNaN(Number(b)) ? 0 : Number(b);
return numberA - numberB;
});
}, [pageSize, pageSizeOptions]);
var changeSelect = _react["default"].useMemo(function () {
if (changeSize && Select) {
var options = curPageSizeOptions.map(function (opt) {
return /*#__PURE__*/_react["default"].createElement(Option, {
key: opt.toString(),
value: opt.toString()
}, (buildOptionText || handleBuildOptionText)(opt));
});
return /*#__PURE__*/_react["default"].createElement(Select, {
disabled: disabled,
prefixCls: selectPrefixCls,
showSearch: false,
className: "".concat(prefixCls, "-size-changer"),
optionLabelProp: "children",
dropdownMatchSelectWidth: false,
value: (pageSize || curPageSizeOptions[0]).toString(),
onChange: handleChangeSize,
getPopupContainer: function getPopupContainer(triggerNode) {
return triggerNode.parentNode;
}
}, options);
}
return null;
}, [Select, buildOptionText, changeSize, handleChangeSize, disabled, pageSize, curPageSizeOptions, handleBuildOptionText, prefixCls, selectPrefixCls, Option]);
if (!changeSize || !Select) {
return null;
}
return /*#__PURE__*/_react["default"].createElement("li", {
className: "".concat(prefixCls)
}, changeSelect);
};
var _default = exports["default"] = Options;