@chayns-components/core
Version:
A set of beautiful React components for developing your own applications with chayns.
97 lines (93 loc) • 2.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.parseFloatWithDecimals = exports.isValidString = exports.formateNumber = void 0;
var _numberInput = require("../constants/numberInput");
const parseFloatWithDecimals = ({
stringValue,
decimals
}) => {
const parsed = parseFloat(stringValue);
if (decimals) {
return parseFloat(parsed.toFixed(decimals));
}
return parsed;
};
exports.parseFloatWithDecimals = parseFloatWithDecimals;
const formateNumber = ({
number,
isMoneyInput,
isTimeInput
}) => {
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
});
};
exports.formateNumber = formateNumber;
const isValidString = ({
isDecimalInput,
isMoneyInput,
isTimeInput,
string
}) => {
let isValid = false;
// Allows numbers, one (comma/point) and any number of decimal places
if (isDecimalInput && _numberInput.DECIMAL_TEST.test(string)) {
isValid = true;
}
// Allows numbers but excludes numbers with leading 0
if (isMoneyInput && _numberInput.MONEY_TEST.test(string)) {
isValid = true;
}
if (isTimeInput && _numberInput.TIME_TEST) {
isValid = true;
}
// Allows numbers but excludes numbers with leading 0
if (!isDecimalInput && !isMoneyInput && !isTimeInput && _numberInput.INTEGER_TEST.test(string)) {
isValid = true;
}
if (string.length === 0) {
isValid = true;
}
if (string.startsWith('0')) {
isValid = true;
}
return isValid;
};
exports.isValidString = isValidString;
//# sourceMappingURL=numberInput.js.map