@chayns-components/core
Version:
A set of beautiful React components for developing your own applications with chayns.
91 lines (88 loc) • 2.65 kB
JavaScript
import { DECIMAL_TEST, INTEGER_TEST, MONEY_TEST, TIME_TEST } from '../constants/numberInput';
export const parseFloatWithDecimals = _ref => {
let {
stringValue,
decimals
} = _ref;
const parsed = parseFloat(stringValue);
if (decimals) {
return parseFloat(parsed.toFixed(decimals));
}
return parsed;
};
export const formateNumber = _ref2 => {
let {
number,
isMoneyInput,
isTimeInput
} = _ref2;
if (isTimeInput && typeof number === 'string') {
let hours = 0;
let minutes = 0;
let firstTwoDigits = number.substring(0, 2);
if (firstTwoDigits.includes(':')) {
firstTwoDigits = firstTwoDigits.replace(':', '');
firstTwoDigits = `0${firstTwoDigits}`;
}
const firstTwoNumbers = Number(firstTwoDigits);
let lastTwoNumbers = 0;
let lastTwoNumbersLength = 0;
if (number.includes(':')) {
lastTwoNumbers = Number(number.substring(3, 5));
lastTwoNumbersLength = number.substring(3, 5).length;
} else {
lastTwoNumbers = Number(number.substring(2, 4));
lastTwoNumbersLength = number.substring(2, 4).length;
}
hours = firstTwoNumbers > 23 ? 23 : firstTwoNumbers;
if (lastTwoNumbers < 7 && lastTwoNumbersLength === 1) {
minutes = lastTwoNumbers * 10;
} else {
minutes = lastTwoNumbers > 59 ? 59 : lastTwoNumbers;
}
const hoursStr = hours < 10 ? `0${hours}` : `${hours}`;
const minutesStr = minutes < 10 ? `0${minutes}` : `${minutes}`;
return `${hoursStr}:${minutesStr}`;
}
if (typeof number !== 'number') {
return '';
}
return number.toLocaleString('de-DE', {
useGrouping: true,
minimumFractionDigits: isMoneyInput ? 2 : undefined,
maximumFractionDigits: isMoneyInput ? 2 : undefined,
maximumSignificantDigits: !isMoneyInput ? 20 : undefined
});
};
export const isValidString = _ref3 => {
let {
isDecimalInput,
isMoneyInput,
isTimeInput,
string
} = _ref3;
let isValid = false;
// Allows numbers, one (comma/point) and any number of decimal places
if (isDecimalInput && DECIMAL_TEST.test(string)) {
isValid = true;
}
// Allows numbers but excludes numbers with leading 0
if (isMoneyInput && MONEY_TEST.test(string)) {
isValid = true;
}
if (isTimeInput && TIME_TEST) {
isValid = true;
}
// Allows numbers but excludes numbers with leading 0
if (!isDecimalInput && !isMoneyInput && !isTimeInput && INTEGER_TEST.test(string)) {
isValid = true;
}
if (string.length === 0) {
isValid = true;
}
if (string.startsWith('0')) {
isValid = true;
}
return isValid;
};
//# sourceMappingURL=numberInput.js.map