acud
Version:
acg react 组件库
93 lines • 3.19 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
/**
* @file pagination/rc-pagination/Goto
* @author chenyaqiu
*/
import React from 'react';
import Button from '../../button';
import { KEYCODE } from './KeyCode';
;
var Goto = function Goto(_ref) {
var locale = _ref.locale,
rootPrefixCls = _ref.rootPrefixCls,
quickGo = _ref.quickGo,
goButton = _ref.goButton,
disabled = _ref.disabled;
var prefixCls = "".concat(rootPrefixCls, "-options");
var _React$useState = React.useState(''),
_React$useState2 = _slicedToArray(_React$useState, 2),
goInputText = _React$useState2[0],
setGoInputText = _React$useState2[1];
var getValidValue = React.useMemo(function () {
// eslint-disable-next-line no-restricted-globals
return !goInputText || isNaN(goInputText) ? undefined : Number(goInputText);
}, [goInputText]);
var handleChange = React.useCallback(function (e) {
return setGoInputText(e.target.value);
}, []);
var handleBlur = React.useCallback(function (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(getValidValue);
}, [quickGo, getValidValue, goInputText, rootPrefixCls, goButton]);
var go = React.useCallback(function (e) {
if (goInputText === '') {
return;
}
if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {
setGoInputText('');
quickGo(getValidValue);
}
}, [goInputText, quickGo, getValidValue]);
var gotoButton = React.useMemo(function () {
if (goButton) {
if (typeof goButton === 'boolean') {
return /*#__PURE__*/React.createElement(Button, {
type: "default",
onClick: go,
onKeyUp: go,
disabled: disabled,
className: "".concat(prefixCls, "-quick-jumper-button")
}, locale.jump_to_confirm);
}
return /*#__PURE__*/React.createElement("span", {
onClick: go,
onKeyUp: go
}, goButton);
}
return /*#__PURE__*/React.createElement(Button, {
type: "default",
onClick: go,
onKeyUp: go,
disabled: disabled,
className: "".concat(prefixCls, "-quick-jumper-button")
}, "GO");
}, [goButton, locale, go, disabled, prefixCls]);
var goInput = React.useMemo(function () {
if (quickGo) {
return /*#__PURE__*/React.createElement("div", {
className: "".concat(prefixCls, "-quick-jumper")
}, locale.jump_to, /*#__PURE__*/React.createElement("input", {
disabled: disabled,
type: "text",
value: goInputText,
onChange: handleChange,
onKeyUp: go,
onBlur: handleBlur
}), locale.page, gotoButton);
}
return null;
}, [gotoButton, quickGo, goInputText, disabled, handleChange, go, handleBlur, locale, prefixCls]);
if (!quickGo) {
return null;
}
return /*#__PURE__*/React.createElement("li", {
className: "".concat(prefixCls)
}, goInput);
};
export default Goto;