@data-driven-forms/react-form-renderer
Version:
React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.
261 lines (224 loc) • 9.56 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.required = exports.pattern = exports.numericality = exports.length = exports.dataTypeValidator = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _helpers = require("../common/helpers");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var required = (0, _helpers.memoize)(function () {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
message = _ref.message;
return (0, _helpers.prepare)(function (value) {
var failsValidation = true;
if (typeof value === 'string') {
failsValidation = !value.trim();
} else if (Array.isArray(value)) {
failsValidation = !value.length;
} else {
failsValidation = value === null || value === undefined;
}
if (failsValidation) {
return (0, _helpers.prepareMsg)(message, 'required').defaultMessage;
}
});
});
exports.required = required;
var length = (0, _helpers.memoize)(function () {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
equal = _ref2['='],
is = _ref2.is,
max = _ref2.max,
maximum = _ref2.maximum,
min = _ref2.min,
minimum = _ref2.minimum,
message = _ref2.message;
equal = (0, _helpers.selectNum)(equal, is);
min = (0, _helpers.selectNum)(min, minimum);
max = (0, _helpers.selectNum)(max, maximum);
return (0, _helpers.prepare)(function (value) {
if (!value) {
return;
}
if (equal !== null && value.length !== equal) {
var msg = (0, _helpers.prepareMsg)(message, 'wrongLength', {
count: equal
}).defaultMessage;
return typeof msg === 'string' ? msg : msg(equal);
}
if (max !== null && value.length > max) {
var _msg = (0, _helpers.prepareMsg)(message, 'tooLong', {
count: max
}).defaultMessage;
return typeof _msg === 'string' ? _msg : _msg(max);
}
if (min !== null && value.length < min) {
var _msg2 = (0, _helpers.prepareMsg)(message, 'tooShort', {
count: min
}).defaultMessage;
return typeof _msg2 === 'string' ? _msg2 : _msg2(min);
}
});
});
exports.length = length;
var pattern = (0, _helpers.memoize)(function () {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
pattern = _ref3.pattern,
message = _ref3.message,
flags = _ref3.flags;
var verifiedPattern = typeof pattern === 'string' ? new RegExp(pattern, flags) : pattern;
return (0, _helpers.prepare)(function (value) {
if (!value) {
return;
}
if (Array.isArray(value)) {
var error = value.find(function (item) {
var parsedValue = (0, _typeof2["default"])(item) === 'object' && Object.prototype.hasOwnProperty.call(item, 'value') ? item.value.toString() : typeof item === 'string' ? item : item.toString();
return pattern && !parsedValue.match(verifiedPattern);
});
var msg = (0, _helpers.prepareMsg)(message, 'pattern').defaultMessage;
return error ? typeof msg === 'string' ? msg : msg(pattern) : undefined;
}
var parsedValue = typeof value === 'string' ? value : value.toString();
if (pattern && !parsedValue.match(verifiedPattern)) {
var _msg3 = (0, _helpers.prepareMsg)(message, 'pattern').defaultMessage;
return typeof _msg3 === 'string' ? _msg3 : _msg3(pattern);
}
});
});
exports.pattern = pattern;
var numericality = (0, _helpers.memoize)(function () {
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
even = _ref4.even,
odd = _ref4.odd,
equal = _ref4['='],
equalTo = _ref4.equalTo,
diff = _ref4['!='],
otherThan = _ref4.otherThan,
greater = _ref4['>'],
greaterThan = _ref4.greaterThan,
less = _ref4['<'],
lessThan = _ref4.lessThan,
greaterOrEqual = _ref4['>='],
greaterThanOrEqualTo = _ref4.greaterThanOrEqualTo,
lessOrEqual = _ref4['<='],
lessThanOrEqualTo = _ref4.lessThanOrEqualTo,
message = _ref4.message;
equal = (0, _helpers.selectNum)(equal, equalTo);
diff = (0, _helpers.selectNum)(diff, otherThan);
greater = (0, _helpers.selectNum)(greater, greaterThan);
greaterOrEqual = (0, _helpers.selectNum)(greaterOrEqual, greaterThanOrEqualTo);
less = (0, _helpers.selectNum)(less, lessThan);
lessOrEqual = (0, _helpers.selectNum)(lessOrEqual, lessThanOrEqualTo);
return (0, _helpers.prepare)(function (value) {
if (value === null || value === undefined) {
return;
}
if (!(0, _helpers.isNumber)(value)) {
return (0, _helpers.prepareMsg)(null, 'notANumber').defaultMessage;
}
if (equal !== null && +value !== equal) {
var msg = (0, _helpers.prepareMsg)(message, 'equalTo').defaultMessage;
return typeof msg === 'string' ? msg : msg(equal);
}
if (diff !== null && +value === diff) {
var _msg4 = (0, _helpers.prepareMsg)(message, 'otherThan').defaultMessage;
return typeof _msg4 === 'string' ? _msg4 : _msg4(diff);
}
if (greater !== null && +value <= greater) {
var _msg5 = (0, _helpers.prepareMsg)(message, 'greaterThan').defaultMessage;
return typeof _msg5 === 'string' ? _msg5 : _msg5(greater);
}
if (greaterOrEqual !== null && +value < greaterOrEqual) {
var _msg6 = (0, _helpers.prepareMsg)(message, 'greaterThanOrEqualTo').defaultMessage;
return typeof _msg6 === 'string' ? _msg6 : _msg6(greaterOrEqual);
}
if (less !== null && +value >= less) {
var _msg7 = (0, _helpers.prepareMsg)(message, 'lessThan').defaultMessage;
return typeof _msg7 === 'string' ? _msg7 : _msg7(less);
}
if (lessOrEqual !== null && +value > lessOrEqual) {
var _msg8 = (0, _helpers.prepareMsg)(message, 'lessThanOrEqualTo').defaultMessage;
return typeof _msg8 === 'string' ? _msg8 : _msg8(lessOrEqual);
}
if (even && (0, _helpers.trunc)(+value) % 2) {
return (0, _helpers.prepareMsg)(message, 'even').defaultMessage;
}
if (odd && !((0, _helpers.trunc)(+value) % 2)) {
return (0, _helpers.prepareMsg)(message, 'odd').defaultMessage;
}
});
});
exports.numericality = numericality;
var stringValidator = (0, _helpers.memoize)(function () {
var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
message = _ref5.message;
return (0, _helpers.prepare)(function (value) {
if (!value) {
return;
}
if (Array.isArray(value)) {
var error = value.find(function (item) {
return typeof item !== 'string';
});
return error ? (0, _helpers.prepareMsg)(message, 'mustBeString').defaultMessage : undefined;
}
if (typeof value !== 'string') {
return (0, _helpers.prepareMsg)(message, 'mustBeString').defaultMessage;
}
});
});
var booleanValidator = (0, _helpers.memoize)(function () {
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
message = _ref6.message;
return (0, _helpers.prepare)(function (value) {
if (!value) {
return;
}
if (Array.isArray(value)) {
var error = value.find(function (item) {
return typeof item !== 'boolean';
});
return error ? (0, _helpers.prepareMsg)(message, 'mustBeBool').defaultMessage : undefined;
}
if (typeof value !== 'boolean') {
return (0, _helpers.prepareMsg)(message, 'mustBeBool').defaultMessage;
}
});
});
var dataTypeValidator = function dataTypeValidator(type) {
return {
string: function string(options) {
return stringValidator(_objectSpread({
message: 'Field value has to be string'
}, options));
},
integer: function integer(options) {
return pattern(_objectSpread({
pattern: /^-?\d*$/,
message: 'Value must be integer'
}, options));
},
"boolean": function boolean(options) {
return booleanValidator(_objectSpread({
message: 'Field value has to be boolean'
}, options));
},
number: function number(options) {
return pattern(_objectSpread({
pattern: /^-?\d*[.]{0,1}\d*$/,
message: 'Values must be number'
}, options));
},
"float": function float(options) {
return pattern(_objectSpread({
pattern: /^-?\d*[.]{0,1}\d*$/,
message: 'Values must be number'
}, options));
}
}[type];
};
exports.dataTypeValidator = dataTypeValidator;