envoc-form
Version:
Envoc form components
91 lines (90 loc) • 3.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.any = exports.zipCode = exports.minValue = exports.maxValue = exports.minCount = exports.maxCount = exports.maxLength = exports.integer = exports.length = exports.required = void 0;
var required = function (value) {
return Array.isArray(value)
? value.length > 0
? undefined
: 'Required'
: value || value === false || value === 0
? undefined
: 'Required';
};
exports.required = required;
/** Asserts that the value is a certain number of characters. numbers are coerced to a string */
var length = function (len) { return function (value) {
var hasError = getLengthOfValue(value) !== len;
return !hasError ? undefined : "Length must be ".concat(len);
}; };
exports.length = length;
var integer = function (val) {
if (!val) {
return undefined;
}
if (!Number.isInteger(typeof val === 'number' ? val : parseFloat(val))) {
return 'Must be a whole number';
}
};
exports.integer = integer;
var maxLength = function (len) { return function (value) {
var hasError = getLengthOfValue(value) > len;
return !hasError ? undefined : "Maximum length ".concat(len, " exceeded");
}; };
exports.maxLength = maxLength;
var maxCount = function (count) { return function (value) {
var hasError = !!value && value.filter(function (x) { return !x.isDeleted; }).length > count;
return !hasError ? undefined : "Should not have more than ".concat(count);
}; };
exports.maxCount = maxCount;
var minCount = function (count) { return function (value) {
var hasError = !value || value.filter(function (x) { return !x.isDeleted; }).length < count;
return !hasError ? undefined : "Should have at least ".concat(count);
}; };
exports.minCount = minCount;
var maxValue = function (max) { return function (value) {
var hasError = !!value && value > max;
return !hasError ? undefined : "Maximum value ".concat(max, " exceeded");
}; };
exports.maxValue = maxValue;
var minValue = function (min) { return function (value) {
var hasError = !value || value < min;
return !hasError ? undefined : "Minimum value ".concat(min, " not met");
}; };
exports.minValue = minValue;
/** Validate for a ZIP Code. Accepts formats: ##### and #####-#### */
var zipCode = function (value) {
return value && !/^[0-9]{5}(?:-[0-9]{4})?$/.test(value)
? 'Invalid ZIP Code'
: undefined;
};
exports.zipCode = zipCode;
/** One of the validators provided must be true. */
var any = function (validatorList) {
return function (value) {
if (validatorList.length === 0 || !value) {
return;
}
return validatorList.reduce(function (isAnyTrue, x) { return (isAnyTrue ? isAnyTrue : x(value)); }, undefined);
};
};
exports.any = any;
function getLengthOfValue(value) {
if (value === null) {
return 0;
}
switch (typeof value) {
case 'undefined':
return 0;
case 'string':
return value.length;
case 'number':
// TODO: this seems iffy to me - what if the actual visible value is a fixed length or some special format (e.g. with commas?)
return value.toString().length;
default:
assertUnreachable(value);
return 0;
}
}
function assertUnreachable(x) {
return null;
}