UNPKG

@ucloud-pccl/react-components

Version:
762 lines (756 loc) 29.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _isObject2 = _interopRequireDefault(require("lodash/isObject")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _SvgIcon = _interopRequireDefault(require("../../components/SvgIcon")); var _Tooltip = _interopRequireDefault(require("../../components/Tooltip")); var _KeyCode = _interopRequireDefault(require("../../interfaces/KeyCode")); var _style = require("./style"); var _this8 = void 0; var _excluded = ["disabled", "className", "readOnly", "style", "defaultValue", "focusOnUpDown", "onChange", "onFocus", "onBlur", "onEnter", "upHandler", "downHandler", "formatter", "parser", "precision", "styleType", "suffix", "inputStyle", "onNumberChange", "computeValidNumber", "hideHandler", "size", "tooltip", "downStep", "upStep"]; function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /** * copy from rc-input-number */ function noop() {} function defaultParser(input) { return input.replace(/[^\w.-]+/g, ''); } var SPEED = 200; var DELAY = 600; var StyleType = ['default', 'split', 'pagination']; var Size = ['sm', 'md', 'lg']; /** * Max Safe Integer -- on IE this is not available, so manually set the number in that case. * The reason this is used, instead of Infinity is because numbers above the MSI are unstable */ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; var NumberInput = /*#__PURE__*/function (_Component) { function NumberInput(props) { var _this3 = this; var _this; (0, _classCallCheck2.default)(this, NumberInput); _this = _callSuper(this, NumberInput, [props]); _this.onKeyDown = function (e) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } if (e.keyCode === _KeyCode.default['ARROW_UP']) { var ratio = _this.getRatio(e); _this.up(e, ratio); _this.stop(); } else if (e.keyCode === _KeyCode.default['ARROW_DOWN']) { var _ratio = _this.getRatio(e); _this.down(e, _ratio); _this.stop(); } else if (e.keyCode === _KeyCode.default['ENTER']) { var _this2; (_this2 = _this).onEnter.apply(_this2, [e].concat(args)); } var onKeyDown = _this.props.onKeyDown; if (onKeyDown) { onKeyDown.apply(void 0, [e].concat(args)); } }; _this.onKeyUp = function (e) { _this.stop(); var onKeyUp = _this.props.onKeyUp; if (onKeyUp) { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } onKeyUp.apply(void 0, [e].concat(args)); } }; _this.onChange = function (e) { (0, _newArrowCheck2.default)(this, _this3); if (_this.state.focused) { _this.inputting = true; } var input = _this.props.parser(_this.getValueFromEvent(e)); _this.setState({ inputValue: input }); _this.props.onChange(_this.toNumberWhenUserInput(input)); // valid number or invalid string }.bind(this); _this.onFocus = function () { var _this$props; _this.setState({ focused: true }); (_this$props = _this.props).onFocus.apply(_this$props, arguments); }; _this.onBlur = function (e) { var _this4 = this; for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { args[_key3 - 1] = arguments[_key3]; } _this.inputting = false; _this.setState({ focused: false }); var value = _this.getCurrentValidValue(_this.state.inputValue); e.persist(); // fix https://github.com/react-component/input-number/issues/51 _this.setValue(value, function () { var _this$props2; (0, _newArrowCheck2.default)(this, _this4); (_this$props2 = _this.props).onBlur.apply(_this$props2, [e].concat(args)); _this.props.onNumberChange(value); }.bind(this)); }; _this.onEnter = function (e) { var _this5 = this; for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { args[_key4 - 1] = arguments[_key4]; } var value = _this.getCurrentValidValue(_this.state.inputValue); if (e) { e.persist(); e.preventDefault(); } _this.setValue(value, function () { var _this$props3; (0, _newArrowCheck2.default)(this, _this5); (_this$props3 = _this.props).onEnter.apply(_this$props3, [e].concat(args)); _this.props.onNumberChange(value); }.bind(this)); }; _this.stop = function () { (0, _newArrowCheck2.default)(this, _this3); if (_this.autoStepTimer) { clearTimeout(_this.autoStepTimer); } }.bind(this); _this.down = function (e, ratio, recursive) { (0, _newArrowCheck2.default)(this, _this3); _this.pressingUpOrDown = true; _this.step('down', e, ratio, recursive); }.bind(this); _this.up = function (e, ratio, recursive) { (0, _newArrowCheck2.default)(this, _this3); _this.pressingUpOrDown = true; _this.step('up', e, ratio, recursive); }.bind(this); _this.renderHandler = function () { var _this6 = this; (0, _newArrowCheck2.default)(this, _this3); var _this$props4 = _this.props, upHandler = _this$props4.upHandler, downHandler = _this$props4.downHandler, readOnly = _this$props4.readOnly, max = _this$props4.max, min = _this$props4.min, disabled = _this$props4.disabled, styleType = _this$props4.styleType, hideHandler = _this$props4.hideHandler; if (hideHandler) return null; var value = _this.state.value; var editable = !readOnly && !disabled; var upDisabled; var downDisabled; if (value || value === 0) { if (!isNaN(value)) { var val = Number(value); if (val >= max) { upDisabled = true; } if (val <= min) { downDisabled = true; } } else { upDisabled = true; downDisabled = true; } } var upEvents = { onMouseDown: function onMouseDown(e) { (0, _newArrowCheck2.default)(this, _this6); return editable && !upDisabled ? _this.up(e) : noop(); }.bind(this), onMouseUp: function onMouseUp(e) { (0, _newArrowCheck2.default)(this, _this6); return _this.stop(e); }.bind(this), onMouseLeave: function onMouseLeave(e) { (0, _newArrowCheck2.default)(this, _this6); return _this.stop(e); }.bind(this) }; var downEvents = { onMouseDown: function onMouseDown(e) { (0, _newArrowCheck2.default)(this, _this6); return editable && !downDisabled ? _this.down(e) : noop(); }.bind(this), onMouseUp: function onMouseUp(e) { (0, _newArrowCheck2.default)(this, _this6); return _this.stop(e); }.bind(this), onMouseLeave: function onMouseLeave(e) { (0, _newArrowCheck2.default)(this, _this6); return _this.stop(e); }.bind(this) }; return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({ className: (0, _classnames.default)(_style.handlerUpCls, (disabled || upDisabled) && _style.handlerDisabledCls), unselectable: "unselectable", disabled: disabled || upDisabled }, upEvents), upHandler || /*#__PURE__*/_react.default.createElement(_SvgIcon.default, { type: { default: 'triangle-up', split: 'plus', pagination: 'arrow-right' }[styleType] })), /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({ className: (0, _classnames.default)(_style.handlerDownCls, (disabled || downDisabled) && _style.handlerDisabledCls), unselectable: "unselectable", disabled: disabled || downDisabled }, downEvents), downHandler || /*#__PURE__*/_react.default.createElement(_SvgIcon.default, { type: { default: 'triangle-down', split: 'minus', pagination: 'arrow-left' }[styleType] }))); }.bind(this); _this.onTooltipVisibleChange = function (visible) { (0, _newArrowCheck2.default)(this, _this3); _this.setState({ tooltipVisible: visible }); }.bind(this); _this.renderInput = function () { (0, _newArrowCheck2.default)(this, _this3); /* eslint-disable no-unused-vars */ var _this$props5 = _this.props, disabled = _this$props5.disabled, className = _this$props5.className, readOnly = _this$props5.readOnly, style = _this$props5.style, defaultValue = _this$props5.defaultValue, focusOnUpDown = _this$props5.focusOnUpDown, onChange = _this$props5.onChange, onFocus = _this$props5.onFocus, onBlur = _this$props5.onBlur, onEnter = _this$props5.onEnter, upHandler = _this$props5.upHandler, downHandler = _this$props5.downHandler, formatter = _this$props5.formatter, parser = _this$props5.parser, precision = _this$props5.precision, styleType = _this$props5.styleType, suffix = _this$props5.suffix, inputStyle = _this$props5.inputStyle, onNumberChange = _this$props5.onNumberChange, computeValidNumber = _this$props5.computeValidNumber, hideHandler = _this$props5.hideHandler, size = _this$props5.size, tooltip = _this$props5.tooltip, downStep = _this$props5.downStep, upStep = _this$props5.upStep, rest = (0, _objectWithoutProperties2.default)(_this$props5, _excluded); /* eslint-enable no-unused-vars */ var _this$state = _this.state, focused = _this$state.focused, inputValue = _this$state.inputValue, value = _this$state.value, tooltipVisible = _this$state.tooltipVisible; // focus state, show input value // unfocus state, show valid value var inputDisplayValue; if (focused) { inputDisplayValue = inputValue; } else { inputDisplayValue = _this.toPrecisionAsStep(value); } if (inputDisplayValue === undefined || inputDisplayValue === null) { inputDisplayValue = ''; } var inputDisplayValueFormat = _this.formatWrapper(inputDisplayValue); var editable = !readOnly && !disabled; var input = /*#__PURE__*/_react.default.createElement("div", { className: _style.inputWrapCls }, /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({}, rest, { className: _style.inputCls, size: size, autoComplete: "off", onFocus: _this.onFocus, onBlur: _this.onBlur, onKeyDown: editable ? _this.onKeyDown : noop, onKeyUp: editable ? _this.onKeyUp : noop, onChange: _this.onChange, disabled: disabled, readOnly: readOnly, ref: _this.input, value: inputDisplayValueFormat, style: inputStyle })), suffix && /*#__PURE__*/_react.default.createElement("span", { className: _style.suffixCls }, suffix)); if (!tooltip) { return input; } else if (typeof tooltip === 'string' || /*#__PURE__*/_react.default.isValidElement(tooltip)) { return /*#__PURE__*/_react.default.createElement(_Tooltip.default, { popup: tooltip, visible: focused || tooltipVisible, onVisibleChange: _this.onTooltipVisibleChange }, input); } else if ((0, _isObject2.default)(tooltip)) { return /*#__PURE__*/_react.default.createElement(_Tooltip.default, (0, _extends2.default)({ visible: focused || tooltipVisible, onVisibleChange: _this.onTooltipVisibleChange }, tooltip), input); } else { return input; } }.bind(this); var _value; if ('value' in props) { _value = props.value; } else { _value = props.defaultValue; } _value = _this.toNumber(_value); _this.state = { inputValue: _this.toPrecisionAsStep(_value), value: _value, focused: props.autoFocus, tooltipVisible: false }; _this.input = /*#__PURE__*/_react.default.createRef(); return _this; } (0, _inherits2.default)(NumberInput, _Component); return (0, _createClass2.default)(NumberInput, [{ key: "componentDidMount", value: function componentDidMount() { this.componentDidUpdate(); } }, { key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if ('value' in nextProps) { var value = this.state.focused ? nextProps.value : this.getValidValue(nextProps.value, nextProps.min, nextProps.max); this.setState({ value: value, inputValue: this.inputting ? value : this.toPrecisionAsStep(value) }); } } }, { key: "componentWillUpdate", value: function componentWillUpdate() { try { this.start = this.input.current.selectionStart; this.end = this.input.current.selectionEnd; } catch (e) { // Fix error in Chrome: // Failed to read the 'selectionStart' property from 'HTMLInputElement' // http://stackoverflow.com/q/21177489/3040605 } } }, { key: "componentDidUpdate", value: function componentDidUpdate() { // pressingUpOrDown is true means that someone just click up or down button // https://github.com/ant-design/ant-design/issues/9204 if (!this.pressingUpOrDown) { return; } if (this.props.focusOnUpDown && this.state.focused) { var selectionRange = this.input.current.setSelectionRange; if (selectionRange && typeof selectionRange === 'function' && this.start !== undefined && this.end !== undefined) { this.input.current.setSelectionRange(this.start, this.end); } else { this.focus(); } this.pressingUpOrDown = false; } } }, { key: "componentWillUnmount", value: function componentWillUnmount() { this.stop(); } }, { key: "getCurrentValidValue", value: function getCurrentValidValue(value) { var val = value; if (val === '') { val = ''; } else if (!this.isNotCompleteNumber(val)) { val = this.getValidValue(val); } else { val = this.state.value; } return this.props.computeValidNumber(this.toNumber(val)); } }, { key: "getRatio", value: function getRatio(e) { var ratio = 1; if (e.metaKey || e.ctrlKey) { ratio = 0.1; } else if (e.shiftKey) { ratio = 10; } return ratio; } }, { key: "getValueFromEvent", value: function getValueFromEvent(e) { return e.target.value.trim().replace(/。/g, '.'); } }, { key: "getValidValue", value: function getValidValue(value) { var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props.min; var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.props.max; var val = parseFloat(value, 10); // https://github.com/ant-design/ant-design/issues/7358 if (isNaN(val)) { return value; } if (val < min) { val = min; } if (val > max) { val = max; } return val; } }, { key: "setValue", value: function setValue(v, callback) { // trigger onChange var newValue = this.isNotCompleteNumber(parseFloat(v, 10)) ? undefined : parseFloat(v, 10); var changed = newValue !== this.state.value || "".concat(newValue) !== "".concat(this.state.inputValue); // https://github.com/ant-design/ant-design/issues/7363 if (!('value' in this.props)) { this.setState({ value: newValue, inputValue: this.toPrecisionAsStep(v) }, callback); } else { // always set input value same as value this.setState({ inputValue: this.toPrecisionAsStep(this.state.value) }, callback); } if (changed) { this.props.onChange(newValue); } } }, { key: "getPrecision", value: function getPrecision(value) { if ('precision' in this.props) { return this.props.precision; } var valueString = value.toString(); if (valueString.indexOf('e-') >= 0) { return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10); } var precision = 0; if (valueString.indexOf('.') >= 0) { precision = valueString.length - valueString.indexOf('.') - 1; } return precision; } // step={1.0} value={1.51} // press + // then value should be 2.51, rather than 2.5 // if this.props.precision is undefined // https://github.com/react-component/input-number/issues/39 }, { key: "getMaxPrecision", value: function getMaxPrecision(currentValue) { var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; if ('precision' in this.props) { return this.props.precision; } var step = this.props.step; var ratioPrecision = this.getPrecision(ratio); var stepPrecision = this.getPrecision(step); var currentValuePrecision = this.getPrecision(currentValue); if (!currentValue) { return ratioPrecision + stepPrecision; } return Math.max(currentValuePrecision, ratioPrecision + stepPrecision); } }, { key: "getPrecisionFactor", value: function getPrecisionFactor(currentValue) { var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var precision = this.getMaxPrecision(currentValue, ratio); return Math.pow(10, precision); } }, { key: "focus", value: function focus() { this.input.current.focus(); } }, { key: "blur", value: function blur() { this.input.current.blur(); } }, { key: "formatWrapper", value: function formatWrapper(num) { if (this.props.formatter) { return this.props.formatter(num); } return num; } }, { key: "toPrecisionAsStep", value: function toPrecisionAsStep(num) { if (this.isNotCompleteNumber(num) || num === '') { return num; } var precision = Math.abs(this.getMaxPrecision(num)); if (precision === 0) { return num.toString(); } if (!isNaN(precision)) { return Number(num).toFixed(precision); } return num.toString(); } // '1.' '1x' 'xx' '' => are not complete numbers }, { key: "isNotCompleteNumber", value: function isNotCompleteNumber(num) { return isNaN(num) || num === '' || num === null || num && num.toString().indexOf('.') === num.toString().length - 1; } }, { key: "toNumber", value: function toNumber(num) { if (this.isNotCompleteNumber(num)) { return num; } if ('precision' in this.props) { return Number(Number(num).toFixed(this.props.precision)); } return Number(num); } // '1.0' '1.00' => may be a inputing number }, { key: "toNumberWhenUserInput", value: function toNumberWhenUserInput(num) { // num.length > 16 => prevent input large number will became Infinity if ((/\.\d*0$/.test(num) || num.length > 16) && this.state.focused) { return num; } return this.toNumber(num); } }, { key: "upStep", value: function upStep(val, rat) { var _this$props6 = this.props, step = _this$props6.step, upStep = _this$props6.upStep, min = _this$props6.min; var precisionFactor = this.getPrecisionFactor(val, rat); var precision = Math.abs(this.getMaxPrecision(val, rat)); if (upStep != null) { step = upStep; } var result; if (typeof val === 'number') { result = ((precisionFactor * val + precisionFactor * step * rat) / precisionFactor).toFixed(precision); } else { result = min === -Infinity ? step : min; } return this.toNumber(result); } }, { key: "downStep", value: function downStep(val, rat) { var _this$props7 = this.props, step = _this$props7.step, downStep = _this$props7.downStep, min = _this$props7.min; var precisionFactor = this.getPrecisionFactor(val, rat); var precision = Math.abs(this.getMaxPrecision(val, rat)); if (downStep != null) { step = downStep; } var result; if (typeof val === 'number') { result = ((precisionFactor * val - precisionFactor * step * rat) / precisionFactor).toFixed(precision); } else { result = min === -Infinity ? -step : min; } return this.toNumber(result); } }, { key: "step", value: function step(type, e) { var _this7 = this; var ratio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var recursive = arguments.length > 3 ? arguments[3] : undefined; this.stop(); if (e) { e.persist(); e.preventDefault(); } var props = this.props; if (props.disabled) { return; } var value = this.toNumber(this.state.inputValue || 0); if (this.isNotCompleteNumber(value)) { return; } var val = this["".concat(type, "Step")](value, ratio); var outOfRange = val > props.max || val < props.min; if (val > props.max) { val = props.max; } else if (val < props.min) { val = props.min; } if (outOfRange) { return; } this.setValue(this.getCurrentValidValue(val), function () { (0, _newArrowCheck2.default)(this, _this7); return this.props.onNumberChange(val); }.bind(this)); this.autoStepTimer = setTimeout(function () { (0, _newArrowCheck2.default)(this, _this7); this[type](e, ratio, true); }.bind(this), recursive ? SPEED : DELAY); } }, { key: "render", value: function render() { var _this$props8 = this.props, disabled = _this$props8.disabled, className = _this$props8.className, style = _this$props8.style, styleType = _this$props8.styleType, hideHandler = _this$props8.hideHandler, size = _this$props8.size; var focused = this.state.focused; return /*#__PURE__*/_react.default.createElement(_style.NumberInputWrap, { focused: focused, disabled: disabled, hideHandler: hideHandler, size: size, styleType: styleType, style: style, className: (0, _classnames.default)(_style.prefixCls, "".concat(_style.prefixCls, "-styletype-").concat(styleType), focused && "".concat(_style.prefixCls, "-focused"), disabled && "".concat(_style.prefixCls, "-disabled"), className) }, this.renderHandler(), this.renderInput()); } }]); }(_react.Component); NumberInput.propTypes = { /** 值,受控 */ value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), /** 默认值,非受控 */ defaultValue: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), /** @ignore */ focusOnUpDown: _propTypes.default.bool, /** @ignore */ autoFocus: _propTypes.default.bool, /** 修改回调 */ onChange: _propTypes.default.func, /** * 有效的修改回调,使用按钮改变值或者输入、回车后失焦时触发,可防止监听到无效的回调 * @param value - 当前的值,必为有效数字 */ onNumberChange: _propTypes.default.func, /** @ignore */ onKeyDown: _propTypes.default.func, /** @ignore */ onKeyUp: _propTypes.default.func, /** @ignore */ onEnter: _propTypes.default.func, /** 禁用 */ disabled: _propTypes.default.bool, /** @ignore */ onFocus: _propTypes.default.func, /** @ignore */ onBlur: _propTypes.default.func, /** 只读 */ readOnly: _propTypes.default.bool, /** 最大值 */ max: _propTypes.default.number, /** 最小值 */ min: _propTypes.default.number, /** 按钮每次变动大小 */ step: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), /** 增加按钮点击增加的大小,会覆盖 step */ upStep: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), /** 减少按钮点击减少的大小,会覆盖 step */ downStep: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), /** 自定义'+'按钮 */ upHandler: _propTypes.default.node, /** 自定义'-'按钮 */ downHandler: _propTypes.default.node, /** 定义数值展示格式化 */ formatter: _propTypes.default.func, /** 定义输入内容过滤 */ parser: _propTypes.default.func, /** 精度,小数点位数 */ precision: _propTypes.default.number, /** @ignore */ className: _propTypes.default.string, /** @ignore */ style: _propTypes.default.object, /** 样式风格 */ styleType: _propTypes.default.oneOf(StyleType), /** 尺寸 */ size: _propTypes.default.oneOf(Size), /** 自定义后缀 */ suffix: _propTypes.default.node, /** input框自定义样式 */ inputStyle: _propTypes.default.object, /** 计算合法值 */ computeValidNumber: _propTypes.default.func, /** 是否隐藏操作按钮 */ hideHandler: _propTypes.default.bool, /** * 输入提示,hover 和输入焦点时显示,可直接传入 tooltip 内容,或传入 tooltip 的 props,props 参考 tooltip 组件文档 * 注意,如果使用自定义 props 中的 visible 和 onVisibleChange 则需要自己去控制 tooltip 的显示隐藏 */ tooltip: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.object]) }; NumberInput.defaultProps = { focusOnUpDown: true, min: -MAX_SAFE_INTEGER, step: 1, onChange: noop, onNumberChange: noop, onKeyDown: noop, onEnter: noop, onFocus: noop, onBlur: noop, parser: defaultParser, styleType: StyleType[0], size: 'md', computeValidNumber: function computeValidNumber(v) { (0, _newArrowCheck2.default)(this, _this8); return v; }.bind(void 0) }; NumberInput.StyleType = StyleType; NumberInput.Size = Size; var _default = exports.default = NumberInput;