UNPKG

envoc-form

Version:

Envoc form components

91 lines (90 loc) 3.51 kB
"use strict"; 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; }