UNPKG

@vs-form/vs-number-format

Version:

Formatted Number Component for vs-form

53 lines (46 loc) 2.27 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var React = require('react'); var vsForm = require('@vs-form/vs-form'); var NumberFormat = _interopDefault(require('react-number-format')); class VsNumberFormat extends React.Component { constructor(props) { super(props); this.changeValue = (dataProps) => (evt) => { const value = evt.target.value; const schemaValue = value === '' ? null : this.comp.data.dataType === vsForm.enums.DataType.integer ? vsForm.toInteger(value) : vsForm.toNumber(value); dataProps.updateValue(value, schemaValue); }; this.initProps = () => { vsForm.set(this.comp.props, 'InputProps.inputComponent', this.NumberFormatCustom); }; this.NumberFormatCustom = (p) => { const { inputRef, onChange, ...other } = p; if (this.comp.numberFormatProps) { return (React.createElement(NumberFormat, Object.assign({}, other, this.comp.numberFormatProps, { getInputRef: p.inputRef, onValueChange: (values) => { onChange({ target: { value: values.value } }); } }))); } else { return null; } }; this.initProps(); } get comp() { return this.props.comp; } render() { return React.createElement(vsForm.BaseInput, Object.assign({ value: this.getValue, onChange: this.changeValue }, this.props)); } getValue(dataProps) { const numValue = vsForm.isNull(dataProps.state.value) ? '' : this.comp.data.dataType === vsForm.enums.DataType.integer ? vsForm.toInteger(dataProps.state.value) : vsForm.toNumber(dataProps.state.value); return vsForm.isNumber(numValue) ? dataProps.state.value : ''; } } const register = () => vsForm.registerComponent(vsForm.enums.Component.numberformat, VsNumberFormat); exports.VsNumberFormat = VsNumberFormat; exports.register = register;