133 lines
4.6 KiB
JavaScript
133 lines
4.6 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode"));
|
|
var _react = _interopRequireDefault(require("react"));
|
|
var defaultPageSizeOptions = [10, 20, 50, 100];
|
|
var Options = function Options(props) {
|
|
var _props$pageSizeOption = props.pageSizeOptions,
|
|
pageSizeOptions = _props$pageSizeOption === void 0 ? defaultPageSizeOptions : _props$pageSizeOption,
|
|
locale = props.locale,
|
|
changeSize = props.changeSize,
|
|
pageSize = props.pageSize,
|
|
goButton = props.goButton,
|
|
quickGo = props.quickGo,
|
|
rootPrefixCls = props.rootPrefixCls,
|
|
disabled = props.disabled,
|
|
buildOptionText = props.buildOptionText,
|
|
showSizeChanger = props.showSizeChanger,
|
|
sizeChangerRender = props.sizeChangerRender;
|
|
var _React$useState = _react.default.useState(''),
|
|
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
|
goInputText = _React$useState2[0],
|
|
setGoInputText = _React$useState2[1];
|
|
var getValidValue = function getValidValue() {
|
|
return !goInputText || Number.isNaN(goInputText) ? undefined : Number(goInputText);
|
|
};
|
|
var mergeBuildOptionText = typeof buildOptionText === 'function' ? buildOptionText : function (value) {
|
|
return "".concat(value, " ").concat(locale.items_per_page);
|
|
};
|
|
var handleChange = function handleChange(e) {
|
|
setGoInputText(e.target.value);
|
|
};
|
|
var handleBlur = function handleBlur(e) {
|
|
if (goButton || goInputText === '') {
|
|
return;
|
|
}
|
|
setGoInputText('');
|
|
if (e.relatedTarget && (e.relatedTarget.className.indexOf("".concat(rootPrefixCls, "-item-link")) >= 0 || e.relatedTarget.className.indexOf("".concat(rootPrefixCls, "-item")) >= 0)) {
|
|
return;
|
|
}
|
|
quickGo === null || quickGo === void 0 || quickGo(getValidValue());
|
|
};
|
|
var go = function go(e) {
|
|
if (goInputText === '') {
|
|
return;
|
|
}
|
|
if (e.keyCode === _KeyCode.default.ENTER || e.type === 'click') {
|
|
setGoInputText('');
|
|
quickGo === null || quickGo === void 0 || quickGo(getValidValue());
|
|
}
|
|
};
|
|
var getPageSizeOptions = function getPageSizeOptions() {
|
|
if (pageSizeOptions.some(function (option) {
|
|
return option.toString() === pageSize.toString();
|
|
})) {
|
|
return pageSizeOptions;
|
|
}
|
|
return pageSizeOptions.concat([pageSize]).sort(function (a, b) {
|
|
var numberA = Number.isNaN(Number(a)) ? 0 : Number(a);
|
|
var numberB = Number.isNaN(Number(b)) ? 0 : Number(b);
|
|
return numberA - numberB;
|
|
});
|
|
};
|
|
// ============== cls ==============
|
|
var prefixCls = "".concat(rootPrefixCls, "-options");
|
|
|
|
// ============== render ==============
|
|
|
|
if (!showSizeChanger && !quickGo) {
|
|
return null;
|
|
}
|
|
var changeSelect = null;
|
|
var goInput = null;
|
|
var gotoButton = null;
|
|
|
|
// >>>>> Size Changer
|
|
if (showSizeChanger && sizeChangerRender) {
|
|
changeSelect = sizeChangerRender({
|
|
disabled: disabled,
|
|
size: pageSize,
|
|
onSizeChange: function onSizeChange(nextValue) {
|
|
changeSize === null || changeSize === void 0 || changeSize(Number(nextValue));
|
|
},
|
|
'aria-label': locale.page_size,
|
|
className: "".concat(prefixCls, "-size-changer"),
|
|
options: getPageSizeOptions().map(function (opt) {
|
|
return {
|
|
label: mergeBuildOptionText(opt),
|
|
value: opt
|
|
};
|
|
})
|
|
});
|
|
}
|
|
|
|
// >>>>> Quick Go
|
|
if (quickGo) {
|
|
if (goButton) {
|
|
gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/_react.default.createElement("button", {
|
|
type: "button",
|
|
onClick: go,
|
|
onKeyUp: go,
|
|
disabled: disabled,
|
|
className: "".concat(prefixCls, "-quick-jumper-button")
|
|
}, locale.jump_to_confirm) : /*#__PURE__*/_react.default.createElement("span", {
|
|
onClick: go,
|
|
onKeyUp: go
|
|
}, goButton);
|
|
}
|
|
goInput = /*#__PURE__*/_react.default.createElement("div", {
|
|
className: "".concat(prefixCls, "-quick-jumper")
|
|
}, locale.jump_to, /*#__PURE__*/_react.default.createElement("input", {
|
|
disabled: disabled,
|
|
type: "text",
|
|
value: goInputText,
|
|
onChange: handleChange,
|
|
onKeyUp: go,
|
|
onBlur: handleBlur,
|
|
"aria-label": locale.page
|
|
}), locale.page, gotoButton);
|
|
}
|
|
return /*#__PURE__*/_react.default.createElement("li", {
|
|
className: prefixCls
|
|
}, changeSelect, goInput);
|
|
};
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
Options.displayName = 'Options';
|
|
}
|
|
var _default = exports.default = Options; |