UNPKG

@wufengteam/wform

Version:

@wufengteam/wform

90 lines 3.14 kB
var __rest = this && this.__rest || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; /* eslint-disable no-console */ import React, { useMemo } from 'react'; import { InputNumber as AntdInputNumber } from 'antd'; var InputNumber = function InputNumber(props) { var value = props.value, _onChange = props.onChange, formatting = props.formatting, disabled = props.disabled, basicStatus = props.basicStatus, placeholder = props.placeholder, onFocusStateChange = props.onFocusStateChange, restProps = __rest(props, ["value", "onChange", "formatting", "disabled", "basicStatus", "placeholder", "onFocusStateChange"]); var formatter = function formatter(va) { var val = va; try { if (va.length > 14) { val = va.substring(0, 14); } if (formatting === 'percent') { if (val.length > 10) { val = val.substring(0, 10); } var p = val.length - val.indexOf('.'); // eslint-disable-next-line no-mixed-operators return "".concat(parseInt("".concat(val * Math.pow(10, p)), 10) * 100 / Math.pow(10, p), "%"); } var withComma = function withComma(str) { return str.split('').reverse().join('').replace(/(\d{1,3})/g, ',$1').split('').reverse().join('').replace(/,$/, ''); }; if (formatting === 'comma' && val.indexOf('.') > -1) { return withComma(val.substring(0, val.indexOf('.'))) + val.substring(val.indexOf('.')); } if (formatting === 'comma') { return withComma("".concat(val)); } } catch (error) { console.error(error); } return val; }; var parser = function parser(val) { try { if (formatting === 'percent') { return parseFloat((val.replace('%', '') / 100).toFixed(10)); } if (formatting === 'comma') { return val.replace(/(,*)/g, ''); } } catch (error) { // eslint-disable-next-line no-console console.error(error); } return val; }; var inputNumberProps = useMemo(function () { var targetProps = Object.assign({}, restProps); if (formatting && formatting !== '') { targetProps.formatter = formatter; targetProps.parser = parser; delete targetProps.precision; } return targetProps; }, [formatting, restProps]); return /*#__PURE__*/React.createElement(AntdInputNumber, Object.assign({}, inputNumberProps, { disabled: disabled || basicStatus === 3, value: value, onChange: function onChange(e) { _onChange(e); }, placeholder: placeholder, onBlur: function onBlur() { onFocusStateChange('blur'); }, onFocus: function onFocus() { onFocusStateChange('focus'); }, style: { width: '100%' } })); }; export default InputNumber;