UNPKG

wix-style-react

Version:
67 lines (65 loc) 2.05 kB
"use strict"; exports.__esModule = true; exports.validateValue = exports.normalizeValue = exports.isInRange = exports.defaultValueToNullIfInvalidNumber = exports.defaultValueToNullIfEmpty = void 0; var isEmptyValue = value => value === null || value === undefined || value === ''; var isInvalidNumber = value => isEmptyValue(value) || !/[0-9]$/.test(String(value)); var defaultValueToNullIfEmpty = (value, defaultValue) => { if (!isEmptyValue(value)) { return String(value); } return !isEmptyValue(defaultValue) ? Number(defaultValue) : ''; }; exports.defaultValueToNullIfEmpty = defaultValueToNullIfEmpty; var defaultValueToNullIfInvalidNumber = value => isInvalidNumber(value) ? null : Number(value); exports.defaultValueToNullIfInvalidNumber = defaultValueToNullIfInvalidNumber; var normalizeValue = value => { var valueWithDotDecimalSeparator = value.replace(',', '.'); if (isInvalidNumber(valueWithDotDecimalSeparator)) { return valueWithDotDecimalSeparator; } // Preserve minus sign when typing '-00'. return valueWithDotDecimalSeparator.startsWith('-') ? valueWithDotDecimalSeparator.replace(/^-0+(?!\.|,|$)/, '-') : valueWithDotDecimalSeparator.replace(/^0+(?!\.|,|$)/, ''); }; exports.normalizeValue = normalizeValue; var isInRange = _ref => { var { value, minValue, maxValue } = _ref; return !(!Number.isNaN(minValue) && value < Number(minValue)) && !(!Number.isNaN(maxValue) && value > Number(maxValue)); }; exports.isInRange = isInRange; var validateValue = _ref2 => { var { value, minValue, maxValue } = _ref2; if (isEmptyValue(value)) { return { hasError: false }; } if (isInvalidNumber(value)) { return { hasError: true, validationType: 'formatError' }; } if (!isInRange({ value: Number(value), minValue, maxValue })) { return { hasError: true, validationType: 'outOfBoundsError' }; } return { hasError: false }; }; exports.validateValue = validateValue; //# sourceMappingURL=index.js.map