@kubit-ui-web/react-components
Version:
Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience
54 lines • 2.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.removeThousandSeparator = exports.convertDecimalSeparator = exports.checkValidFormattedNumber = exports.getDecimalSeparator = exports.getThousandSeparator = exports.formatNumber = void 0;
const DEFAULT_LOCALE = 'en-US';
const formatNumber = (amount, formatNumber, locale = DEFAULT_LOCALE) => {
const { ...options } = formatNumber;
const formattedNumber = new Intl.NumberFormat(locale, {
...options,
}).format(amount);
return formattedNumber;
};
exports.formatNumber = formatNumber;
const getThousandSeparator = (locale = DEFAULT_LOCALE) => {
const formattedNumber = new Intl.NumberFormat(locale).format(1000);
// the second character should be the thousand separator
const thousandSeparator = formattedNumber[1];
return thousandSeparator;
};
exports.getThousandSeparator = getThousandSeparator;
const getDecimalSeparator = (locale = DEFAULT_LOCALE) => {
const formattedNumber = new Intl.NumberFormat(locale).format(0.1);
// the first character should be the decimal separator
const decimalSeparator = formattedNumber[1];
return decimalSeparator;
};
exports.getDecimalSeparator = getDecimalSeparator;
// check if value is valid to transform
const checkValidFormattedNumber = (value, locale = DEFAULT_LOCALE) => {
// only numbers, commas and dots
const regex = /^[0-9,.]*$/;
const lastChar = value[value.length - 1];
const decimalSeparator = (0, exports.getDecimalSeparator)(locale);
return regex.test(value) && lastChar !== decimalSeparator;
};
exports.checkValidFormattedNumber = checkValidFormattedNumber;
// convert a string with a decimal separator to a string with a dot as decimal separator ready to convert to number
const convertDecimalSeparator = (value, decimalSeparator) => {
return value.replace(decimalSeparator, '.');
};
exports.convertDecimalSeparator = convertDecimalSeparator;
// remove existing thousand separator
const removeThousandSeparator = (value, locale = DEFAULT_LOCALE, replaceDecimalSeparator = true) => {
// get thousand and decimal separator
const thousandSeparator = (0, exports.getThousandSeparator)(locale);
const decimalSeparator = (0, exports.getDecimalSeparator)(locale);
// remove existing thousand separator and replace decimal separator by .
const regexThousandSeparator = new RegExp('\\' + thousandSeparator, 'g');
if (replaceDecimalSeparator) {
return (0, exports.convertDecimalSeparator)(value.replace(regexThousandSeparator, ''), decimalSeparator);
}
return value.replace(regexThousandSeparator, '');
};
exports.removeThousandSeparator = removeThousandSeparator;
//# sourceMappingURL=formatNumber.js.map