@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
JavaScript
;
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