UNPKG

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

Version:

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

185 lines 9.74 kB
"use strict"; 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); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.dataTypeValidator = exports.numericality = exports.pattern = exports.length = exports.required = void 0; var helpers_1 = require("../common/helpers"); exports.required = (0, helpers_1.memoize)(function (_a) { var _b = _a === void 0 ? {} : _a, message = _b.message; return (0, helpers_1.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_1.prepareMsg)(message, 'required', {}).defaultMessage; } }); }); exports.length = (0, helpers_1.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 = (0, helpers_1.selectNum)(equal, is); var finalMin = (0, helpers_1.selectNum)(min, minimum); var finalMax = (0, helpers_1.selectNum)(max, maximum); return (0, helpers_1.prepare)(function (value) { if (!value) { return; } if (finalEqual !== null && value.length !== finalEqual) { var msg = (0, helpers_1.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 = (0, helpers_1.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 = (0, helpers_1.prepareMsg)(message, 'tooShort', { count: finalMin }).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalMin) : String(msg); } }); }); exports.pattern = (0, helpers_1.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 (0, helpers_1.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 = (0, helpers_1.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 = (0, helpers_1.prepareMsg)(message, 'pattern', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(patternOption) : String(msg); } }); }); exports.numericality = (0, helpers_1.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 = (0, helpers_1.selectNum)(equal, equalTo); var finalDiff = (0, helpers_1.selectNum)(diff, otherThan); var finalGreater = (0, helpers_1.selectNum)(greater, greaterThan); var finalGreaterOrEqual = (0, helpers_1.selectNum)(greaterOrEqual, greaterThanOrEqualTo); var finalLess = (0, helpers_1.selectNum)(less, lessThan); var finalLessOrEqual = (0, helpers_1.selectNum)(lessOrEqual, lessThanOrEqualTo); return (0, helpers_1.prepare)(function (value) { if (value === null || value === undefined) { return; } if (!(0, helpers_1.isNumber)(value)) { return (0, helpers_1.prepareMsg)(null, 'notANumber', {}).defaultMessage; } if (finalEqual !== null && +value !== finalEqual) { var msg = (0, helpers_1.prepareMsg)(message, 'equalTo', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalEqual) : String(msg); } if (finalDiff !== null && +value === finalDiff) { var msg = (0, helpers_1.prepareMsg)(message, 'otherThan', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalDiff) : String(msg); } if (finalGreater !== null && +value <= finalGreater) { var msg = (0, helpers_1.prepareMsg)(message, 'greaterThan', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalGreater) : String(msg); } if (finalGreaterOrEqual !== null && +value < finalGreaterOrEqual) { var msg = (0, helpers_1.prepareMsg)(message, 'greaterThanOrEqualTo', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalGreaterOrEqual) : String(msg); } if (finalLess !== null && +value >= finalLess) { var msg = (0, helpers_1.prepareMsg)(message, 'lessThan', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalLess) : String(msg); } if (finalLessOrEqual !== null && +value > finalLessOrEqual) { var msg = (0, helpers_1.prepareMsg)(message, 'lessThanOrEqualTo', {}).defaultMessage; return typeof msg === 'string' ? msg : typeof msg === 'function' ? msg(finalLessOrEqual) : String(msg); } if (even && (0, helpers_1.trunc)(+value) % 2) { return (0, helpers_1.prepareMsg)(message, 'even', {}).defaultMessage; } if (odd && !((0, helpers_1.trunc)(+value) % 2)) { return (0, helpers_1.prepareMsg)(message, 'odd', {}).defaultMessage; } }); }); var stringValidator = (0, helpers_1.memoize)(function (_a) { var _b = _a === void 0 ? {} : _a, message = _b.message; return (0, helpers_1.prepare)(function (value) { if (!value) { return; } if (Array.isArray(value)) { var error = value.find(function (item) { return typeof item !== 'string'; }); return error ? (0, helpers_1.prepareMsg)(message, 'mustBeString', {}).defaultMessage : undefined; } if (typeof value !== 'string') { return (0, helpers_1.prepareMsg)(message, 'mustBeString', {}).defaultMessage; } }); }); var booleanValidator = (0, helpers_1.memoize)(function (_a) { var _b = _a === void 0 ? {} : _a, message = _b.message; return (0, helpers_1.prepare)(function (value) { if (!value) { return; } if (Array.isArray(value)) { var error = value.find(function (item) { return typeof item !== 'boolean'; }); return error ? (0, helpers_1.prepareMsg)(message, 'mustBeBool', {}).defaultMessage : undefined; } if (typeof value !== 'boolean') { return (0, helpers_1.prepareMsg)(message, 'mustBeBool', {}).defaultMessage; } }); }); 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 (0, exports.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 (0, exports.pattern)(__assign({ pattern: /^-?\d*[.]{0,1}\d*$/, message: 'Values must be number' }, options)); }, float: function (options) { if (options === void 0) { options = {}; } return (0, exports.pattern)(__assign({ pattern: /^-?\d*[.]{0,1}\d*$/, message: 'Values must be number' }, options)); }, }[type]); }; exports.dataTypeValidator = dataTypeValidator; //# sourceMappingURL=validator-functions.js.map