@vs-form/vs-number-format
Version:
Formatted Number Component for vs-form
53 lines (46 loc) • 2.27 kB
JavaScript
;
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;