tp-react-web-masked-text
Version:
Text and TextInput with mask for React Web applications
47 lines (36 loc) • 1.27 kB
JavaScript
import BaseMask from './_base.mask'
import CustomMask from './custom.mask'
var moment = require('moment')
const DATETIME_MASK_SETTINGS = {
format: 'DD/MM/YYYY HH:mm:ss'
}
export default class DatetimeMask extends BaseMask {
static getKind() {
return 'datetime'
}
getValue(value, settings) {
let mergedSettings = this._getMergedSettings(settings)
let mask = this.getMask(value, mergedSettings)
return CustomMask.shared.getValue(value, { mask })
}
getRawValue(maskedValue, settings) {
let mergedSettings = this._getMergedSettings(settings)
return moment(maskedValue, mergedSettings.format, true)
}
validate(value, settings) {
var maskedValue = this.getValue(value, settings)
let mergedSettings = this._getMergedSettings(settings)
var isValid = moment(maskedValue, mergedSettings.format, true).isValid()
return isValid
}
_getMergedSettings(settings) {
return super.mergeSettings(DATETIME_MASK_SETTINGS, settings)
}
getMask(value, settings) {
let mask = ''
for (var i = 0; i < settings.format.length; i++) {
mask += settings.format[i].replace(/[a-zA-Z]+/g, '9')
}
return mask
}
}