redux-form-validators
Version:
Simple validations with redux-form / react-final-form
22 lines (18 loc) • 744 B
JavaScript
import messages from './messages'
import Validators from './validators'
import { toObjectMsg, prepare, memoize } from './helpers'
export default function addValidator ({ validator, defaultMessage, defaultMsg }) {
defaultMsg = toObjectMsg(defaultMsg || defaultMessage) || messages.invalid
return memoize(function (options = {}) {
let msg = toObjectMsg(options.msg || options.message) || defaultMsg
return prepare(options.if, options.unless, options.allowBlank, function (...args) {
let result = validator(options, ...args)
if (typeof result !== 'boolean') {
return result ? Validators.formatMessage(result) : null
}
if (!result) {
return Validators.formatMessage(msg)
}
})
})
}