UNPKG

oneframe-react

Version:

Oneframe React ## Components, Hooks, Helper Functions & State Management

79 lines (78 loc) 4.22 kB
"use strict"; 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; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(require("react")); const lodash_1 = require("lodash"); const react_number_format_1 = __importDefault(require("react-number-format")); const prop_types_1 = __importDefault(require("prop-types")); const NumberInputComponent = (props) => { const { inputRef, className, onChange } = props, inputFormatOther = __rest(props, ["inputRef", "className", "onChange"]); if (props.returnValue === 'formattedValue' && (props.prefix || props.suffix)) { console.warn('If you use suffix or prefix, for returnValue props, you must choose one of the following;' + '\n\n"floatValue (integer value)", "value (string value)"' + '\n\notherwise you will enter an infinite loop'); } return react_1.useMemo(() => { return (react_1.default.createElement(react_number_format_1.default, Object.assign({ getInputRef: inputRef, className: `${className} oneframe-form-number-input-format` }, lodash_1.omit(inputFormatOther, 'returnValue'), { isAllowed: values => { return !(props.returnValue === 'floatValue' && values.value.length === 16); }, isNumericString: true, onValueChange: values => { onChange({ target: { value: props.returnValue ? values[props.returnValue] : values.value, }, }); } }))); }, [className, inputFormatOther, props, onChange, inputRef]); }; NumberInputComponent.propTypes = { inputRef: prop_types_1.default.func, onChange: prop_types_1.default.func, thousandSeparator: prop_types_1.default.oneOfType([prop_types_1.default.bool, prop_types_1.default.oneOf([',', '.', ' '])]), decimalSeparator: prop_types_1.default.oneOf([',', '.']), decimalScale: prop_types_1.default.number, fixedDecimalScale: prop_types_1.default.bool, allowNegative: prop_types_1.default.bool, allowEmptyFormatting: prop_types_1.default.bool, prefix: prop_types_1.default.string, suffix: prop_types_1.default.string, format: prop_types_1.default.string, mask: prop_types_1.default.string, type: prop_types_1.default.oneOf(['text', 'tel', 'password']), returnValue: prop_types_1.default.oneOf(['floatValue', 'formattedValue', 'value']), displayType: prop_types_1.default.oneOf(['text', 'input', undefined]), removeFormatting: prop_types_1.default.func, }; exports.default = react_1.default.memo(NumberInputComponent, (p, n) => lodash_1.isEqual(p.onChange, n.onChange) && lodash_1.isEqual(p.thousandSeparator, n.thousandSeparator) && lodash_1.isEqual(p.decimalSeparator, n.decimalSeparator) && lodash_1.isEqual(p.decimalScale, n.decimalScale) && lodash_1.isEqual(p.fixedDecimalScale, n.fixedDecimalScale) && lodash_1.isEqual(p.allowNegative, n.allowNegative) && lodash_1.isEqual(p.allowEmptyFormatting, n.allowEmptyFormatting) && lodash_1.isEqual(p.mask, n.mask) && lodash_1.isEqual(p.returnValue, n.returnValue) && lodash_1.isEqual(p.removeFormatting, n.removeFormatting) && lodash_1.isEqual(p.format, n.format) && lodash_1.isEqual(p.suffix, n.suffix) && lodash_1.isEqual(p.prefix, n.prefix) && lodash_1.isEqual(p.type, n.type));