UNPKG

react-native-masked-text

Version:

Text and TextInput with mask for React Native applications

62 lines (48 loc) 1.69 kB
import BaseMask from './_base.mask' import CustomMask from './custom.mask' const PHONE_8_MASK = '9999-9999' const PHONE_9_MASK = '99999-9999' const CEL_PHONE_SETTINGS = { withDDD: true, dddMask: '(99) ' } export default class CelPhoneMask extends BaseMask { static getType() { return 'cel-phone' } getValue(value, settings) { let cleanedValue = super.removeNotNumbers(value) let mask = this.getMask(cleanedValue, settings) return CustomMask.shared.getValue(cleanedValue, { mask }) } getRawValue(maskedValue, settings) { return super.removeNotNumbers(maskedValue) } validate(value, settings) { let valueToValidate = super.getDefaultValue(value) valueToValidate = this.getValue(value, settings) let mask = this.getMask(value, settings) return valueToValidate.length === mask.length } getMask(value, settings) { let mergedSettings = super.mergeSettings(CEL_PHONE_SETTINGS, settings) let numbers = super.removeNotNumbers(value) let mask = PHONE_8_MASK let use9DigitMask = (() => { if (mergedSettings.withDDD) { let numbersDDD = super.removeNotNumbers(mergedSettings.dddMask) let remainingValueNumbers = numbers.substr(numbersDDD.length) return remainingValueNumbers.length >= 9 } else { return numbers.length >= 9 } })() if (use9DigitMask) { mask = PHONE_9_MASK } if (mergedSettings.withDDD) { mask = `${mergedSettings.dddMask}${mask}` } return mask } }