UNPKG

react-native-document-mask

Version:
89 lines (74 loc) 2.13 kB
import React, { Component } from 'react' import { TextInput, findNodeHandle, NativeModules, Platform } from 'react-native' const mask = NativeModules.RNDocumentMask.mask const unmask = NativeModules.RNDocumentMask.unmask const setMask = NativeModules.RNDocumentMask.setMask export { mask, unmask, setMask } export default class Aux extends Component { static defaultProps = { maskDefaultValue: true, } masked = false componentDidMount() { if (this.props.maskDefaultValue && this.props.mask && this.props.value) { mask(this.props.mask, '' + this.props.value, text => this.input && this.input.setNativeProps({ text }), ) } if (this.props.mask && !this.masked) { this.masked = true setMask(findNodeHandle(this.input), this.props.mask) } } componentWillReceiveProps(nextProps) { if (nextProps.mask && (this.props.value !== nextProps.value)) { mask(this.props.mask, '' + nextProps.value, text => this.input && this.input.setNativeProps({ text }) ); } if (this.props.mask !== nextProps.mask) { setMask(findNodeHandle(this.input), nextProps.mask) } } focus() { this.input.focus(); } blur() { this.input.blur(); } clear() { this.input.clear(); } isFocused() { return this.input.isFocused(); } render() { return (<TextInput {...this.props} value={undefined} ref={ref => { this.input = ref if (typeof this.props.refInput === 'function') { this.props.refInput(ref) } }} multiline={this.props.mask && Platform.OS === 'ios' ? false : this.props.multiline} onChangeText={masked => { if (this.props.mask) { const _unmasked = unmask(this.props.mask, masked, unmasked => { this.props.onChangeText && this.props.onChangeText(masked, unmasked) }) } else { this.props.onChangeText && this.props.onChangeText(masked) } }} />); } }