UNPKG

@data-driven-forms/react-form-renderer

Version:

React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.

181 lines 8.89 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { memoize, prepare, prepareMsg, selectNum, isNumber, trunc } from '../common/helpers'; export var required = memoize(function (_a) { var _b = _a === void 0 ? {} : _a, message = _b.message; return 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 prepareMsg(message, 'required', {}).defaultMessage; } }); }); export var length = memoize(function (_a) { var _b = _a === void 0 ? {} : _a, equal = _b["="], is = _b.is, max = _b.max, maximum = _b.maximum, min = _b.min, minimum = _b.minimum, message = _b.message; var finalEqual = selectNum(equal, is); var finalMin = selectNum(min, minimum); var finalMax = selectNum(max, maximum); return prepare(function (value) { if (!value) { return; } if (finalEqual !== null && value.length !== finalEqual) { var msg = prepareMsg(message, 'wrongLength', { count: finalEqual }).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalEqual) : String(msg); } if (finalMax !== null && value.length > finalMax) { var msg = prepareMsg(message, 'tooLong', { count: finalMax }).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalMax) : String(msg); } if (finalMin !== null && value.length < finalMin) { var msg = prepareMsg(message, 'tooShort', { count: finalMin }).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalMin) : String(msg); } }); }); export var pattern = memoize(function (_a) { var _b = _a === void 0 ? {} : _a, patternOption = _b.pattern, message = _b.message, flags = _b.flags; var verifiedPattern = typeof patternOption === 'string' ? new RegExp(patternOption, flags) : patternOption; return prepare(function (value) { if (!value) { return; } if (Array.isArray(value)) { var error = value.find(function (item) { var parsedValue = typeof item === 'object' && Object.prototype.hasOwnProperty.call(item, 'value') ? item.value.toString() : typeof item === 'string' ? item : item.toString(); return patternOption && !parsedValue.match(verifiedPattern); }); var msg = prepareMsg(message, 'pattern', {}).defaultMessage; return error ? (typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(patternOption) : String(msg)) : undefined; } var parsedValue = typeof value === 'string' ? value : value.toString(); if (patternOption && !parsedValue.match(verifiedPattern)) { var msg = prepareMsg(message, 'pattern', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(patternOption) : String(msg); } }); }); export var numericality = memoize(function (_a) { var _b = _a === void 0 ? {} : _a, even = _b.even, odd = _b.odd, equal = _b["="], equalTo = _b.equalTo, diff = _b["!="], otherThan = _b.otherThan, greater = _b[">"], greaterThan = _b.greaterThan, less = _b["<"], lessThan = _b.lessThan, greaterOrEqual = _b[">="], greaterThanOrEqualTo = _b.greaterThanOrEqualTo, lessOrEqual = _b["<="], lessThanOrEqualTo = _b.lessThanOrEqualTo, message = _b.message; var finalEqual = selectNum(equal, equalTo); var finalDiff = selectNum(diff, otherThan); var finalGreater = selectNum(greater, greaterThan); var finalGreaterOrEqual = selectNum(greaterOrEqual, greaterThanOrEqualTo); var finalLess = selectNum(less, lessThan); var finalLessOrEqual = selectNum(lessOrEqual, lessThanOrEqualTo); return prepare(function (value) { if (value === null || value === undefined) { return; } if (!isNumber(value)) { return prepareMsg(null, 'notANumber', {}).defaultMessage; } if (finalEqual !== null && +value !== finalEqual) { var msg = prepareMsg(message, 'equalTo', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalEqual) : String(msg); } if (finalDiff !== null && +value === finalDiff) { var msg = prepareMsg(message, 'otherThan', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalDiff) : String(msg); } if (finalGreater !== null && +value <= finalGreater) { var msg = prepareMsg(message, 'greaterThan', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalGreater) : String(msg); } if (finalGreaterOrEqual !== null && +value < finalGreaterOrEqual) { var msg = prepareMsg(message, 'greaterThanOrEqualTo', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalGreaterOrEqual) : String(msg); } if (finalLess !== null && +value >= finalLess) { var msg = prepareMsg(message, 'lessThan', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalLess) : String(msg); } if (finalLessOrEqual !== null && +value > finalLessOrEqual) { var msg = prepareMsg(message, 'lessThanOrEqualTo', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalLessOrEqual) : String(msg); } if (even && trunc(+value) % 2) { return prepareMsg(message, 'even', {}).defaultMessage; } if (odd && !(trunc(+value) % 2)) { return prepareMsg(message, 'odd', {}).defaultMessage; } }); }); var stringValidator = memoize(function (_a) { var _b = _a === void 0 ? {} : _a, message = _b.message; return prepare(function (value) { if (!value) { return; } if (Array.isArray(value)) { var error = value.find(function (item) { return typeof item !== 'string'; }); return error ? prepareMsg(message, 'mustBeString', {}).defaultMessage : undefined; } if (typeof value !== 'string') { return prepareMsg(message, 'mustBeString', {}).defaultMessage; } }); }); var booleanValidator = memoize(function (_a) { var _b = _a === void 0 ? {} : _a, message = _b.message; return prepare(function (value) { if (!value) { return; } if (Array.isArray(value)) { var error = value.find(function (item) { return typeof item !== 'boolean'; }); return error ? prepareMsg(message, 'mustBeBool', {}).defaultMessage : undefined; } if (typeof value !== 'boolean') { return prepareMsg(message, 'mustBeBool', {}).defaultMessage; } }); }); export var dataTypeValidator = function (type) { return ({ string: function (options) { if (options === void 0) { options = {}; } return stringValidator(__assign({ message: 'Field value has to be string' }, options)); }, integer: function (options) { if (options === void 0) { options = {}; } return pattern(__assign({ pattern: /^-?\d*$/, message: 'Value must be integer' }, options)); }, boolean: function (options) { if (options === void 0) { options = {}; } return booleanValidator(__assign({ message: 'Field value has to be boolean' }, options)); }, number: function (options) { if (options === void 0) { options = {}; } return pattern(__assign({ pattern: /^-?\d*[.]{0,1}\d*$/, message: 'Values must be number' }, options)); }, float: function (options) { if (options === void 0) { options = {}; } return pattern(__assign({ pattern: /^-?\d*[.]{0,1}\d*$/, message: 'Values must be number' }, options)); }, }[type]); }; //# sourceMappingURL=validator-functions.js.map