UNPKG

sd-formik-validators

Version:
133 lines (132 loc) 5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var date_fns_1 = require("date-fns"); var regex_1 = require("./regex"); var composeValidators = function () { var validators = []; for (var _i = 0; _i < arguments.length; _i++) { validators[_i] = arguments[_i]; } return function (value) { return validators.reduce(function (error, validator) { return error || validator(value); }, undefined); }; }; exports.composeValidators = composeValidators; // https://stackoverflow.com/questions/54443161/parse-and-format-date-in-string/54443608 var dateValidator = function (value) { if (value) { if (Object.prototype.toString.call(value) === '[object Date]') { if (isNaN(value.getTime())) { return 'Invalid Date'; } else { return undefined; } } else { return 'Invalid Date'; } } else { return undefined; } }; exports.dateValidator = dateValidator; var minDateValidator = function (minDateOptions) { return function (value) { var minDate = minDateOptions.minDate, customMessage = minDateOptions.customMessage; var msg = customMessage ? customMessage : "Date must be greater than minimum date."; if (value instanceof Date) { return date_fns_1.compareAsc(minDate, value) === 1 ? msg : undefined; } else if (typeof value === 'string') { return date_fns_1.compareAsc(minDate, new Date(value)) === 1 ? msg : undefined; } else { return undefined; } }; }; exports.minDateValidator = minDateValidator; var maxDateValidator = function (maxDateOptions) { return function (value) { var maxDate = maxDateOptions.maxDate, customMessage = maxDateOptions.customMessage; var msg = customMessage ? customMessage : "Date must be greater than max date."; if (value instanceof Date) { return date_fns_1.compareAsc(maxDate, value) === -1 ? msg : undefined; } else if (typeof value === 'string') { return date_fns_1.compareAsc(maxDate, new Date(value)) === -1 ? msg : undefined; } else { return undefined; } }; }; exports.maxDateValidator = maxDateValidator; var emailValidator = function (value) { if (value === '') { return undefined; } return regex_1.emailRegex.test(value) ? undefined : 'Not a valid email'; }; exports.emailValidator = emailValidator; var honeypotValidator = function (value) { return !value ? undefined : ' '; }; exports.honeypotValidator = honeypotValidator; var minLengthValidator = function (minOptions) { return function (value) { if (!value) { return undefined; } var minLength = minOptions.minLength, customMessage = minOptions.customMessage; var msg = customMessage ? customMessage : "Field must have " + minLength + " characters."; return value.length >= minLength ? undefined : msg; }; }; exports.minLengthValidator = minLengthValidator; var isSameDay = function (d1, d2) { return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate(); }; var notPastDateValidator = function (value) { if (value) { if (Object.prototype.toString.call(value) === '[object Date]') { if (isNaN(value.getTime())) { return 'Invalid Date'; } else { if (isSameDay(new Date(), value) || date_fns_1.compareAsc(value, new Date()) === 1) { return undefined; } else { return 'Date cannot be in the past.'; } } } else { return 'Invalid Date'; } } }; exports.notPastDateValidator = notPastDateValidator; var regexValidator = function (regexOptions) { return function (value) { var regex = regexOptions.regex, message = regexOptions.message; return regex.test(value) ? undefined : message; }; }; exports.regexValidator = regexValidator; var requiredValidator = function (value) { return value ? undefined : 'Required'; }; exports.requiredValidator = requiredValidator; var stringDateValidator = function (_a) { var _b = _a.message, message = _b === void 0 ? 'Invalid Date' : _b, _c = _a.inputMaskToIgnore, inputMaskToIgnore = _c === void 0 ? '__/__/____' : _c; return function (value) { if (!value || value === inputMaskToIgnore) { return undefined; } return date_fns_1.isValid(new Date(value)) ? undefined : message; }; }; exports.stringDateValidator = stringDateValidator; var zipValidator = function (value) { if (value === '') { return undefined; } return regex_1.zipRegex.test(value) ? undefined : 'Not a valid zip code'; }; exports.zipValidator = zipValidator;