UNPKG

@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
"use strict"; 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