UNPKG

@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
"use strict"; 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;