UNPKG

@vs-form/vs-text-mask

Version:

TextMask Component for vs-form

48 lines (44 loc) 1.62 kB
import { Component, createElement } from 'react'; import { set, BaseInput, common, registerComponent, enums } from '@vs-form/vs-form'; import MaskedInput from 'react-text-mask'; class VsMaskInput extends Component { constructor(props) { super(props); this.changeValue = (dataProps) => (evt) => { const value = evt.target.value; dataProps.updateValue(value); }; this.initProps = () => { const maskProps = this.comp.maskProps; if (maskProps) { set(this.comp.props, 'InputProps.inputComponent', this.TextMaskCustom); } }; this.TextMaskCustom = (p) => { const { inputRef, ...other } = p; if (this.comp.maskProps) { return (createElement(MaskedInput, Object.assign({}, other, { ref: p.inputRef }, this.comp.maskProps))); } else { return null; } }; this.initProps(); } get comp() { return this.props.comp; } render() { return createElement(BaseInput, Object.assign({ value: this.getValue, onChange: this.changeValue }, this.props)); } getValue(dataProps) { let defaultValue; if (common.dataTypeIsArray(this.comp.data.dataType)) { defaultValue = []; } else { defaultValue = ''; } return dataProps.state.value || defaultValue; } } const register = () => registerComponent(enums.Component.maskinput, VsMaskInput); export { VsMaskInput, register };