@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
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);
};
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