@root-systems/redux-form-validators
Version:
Simple validations with redux-form
58 lines (45 loc) • 1.81 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.inclusionExclusion = inclusionExclusion;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactIntl = require('react-intl');
var _helpers = require('./helpers');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var DEFAULT_CASE_SENSITIVE = true;
var inclusion = (0, _helpers.memoize)(function (options) {
return inclusionExclusion(true, options);
});
exports.default = inclusion;
function inclusionExclusion(inclusion, _ref) {
var inc = _ref['in'],
within = _ref.within,
caseSensitive = _ref.caseSensitive,
message = _ref.message,
msg = _ref.msg,
ifCond = _ref['if'],
unless = _ref.unless,
_ref$allowBlank = _ref.allowBlank,
allowBlank = _ref$allowBlank === undefined ? _helpers.DEFAULT_ALLOW_BLANK : _ref$allowBlank;
msg = (0, _helpers.formatMessage)(msg || message);
caseSensitive = null != caseSensitive ? caseSensitive : DEFAULT_CASE_SENSITIVE;
within = [].concat(within || inc).map(function (val) {
return caseSensitive ? '' + val : ('' + val).toLowerCase();
});
return (0, _helpers.prepare)(ifCond, unless, allowBlank, function (value) {
if (!caseSensitive) {
value = value.toLowerCase();
}
if (inclusion) {
if (within.indexOf(value) < 0) {
return msg || _react2.default.createElement(_reactIntl.FormattedMessage, { id: 'form.errors.inclusion', defaultMessage: 'is not included in the list' });
}
} else {
if (within.indexOf(value) >= 0) {
return msg || _react2.default.createElement(_reactIntl.FormattedMessage, { id: 'form.errors.exclusion', defaultMessage: 'is reserved' });
}
}
});
}
;