wix-style-react
Version:
wix-style-react
67 lines (65 loc) • 2.05 kB
JavaScript
;
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