@wufengteam/wform
Version:
@wufengteam/wform
90 lines • 3.14 kB
JavaScript
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;