Preview: getLocaleConfig.ts
Size: 1.25 KB
/home/byroehnu/easepaybiz.easetack.com/node_modules/react-currency-input-field/src/components/utils/getLocaleConfig.ts
import { IntlConfig } from '../CurrencyInputProps';
type LocaleConfig = {
currencySymbol: string;
groupSeparator: string;
decimalSeparator: string;
prefix: string;
suffix: string;
};
const defaultConfig: LocaleConfig = {
currencySymbol: '',
groupSeparator: '',
decimalSeparator: '',
prefix: '',
suffix: '',
};
/**
* Get locale config from input or default
*/
export const getLocaleConfig = (intlConfig?: IntlConfig): LocaleConfig => {
const { locale, currency, ...formatOptions } = intlConfig || {};
const numberFormatter = locale
? new Intl.NumberFormat(locale, {
...formatOptions,
...(currency && { currency, style: 'currency' }),
})
: new Intl.NumberFormat();
return numberFormatter.formatToParts(1000.1).reduce((prev, curr, i): LocaleConfig => {
if (curr.type === 'currency') {
if (i === 0) {
return { ...prev, currencySymbol: curr.value, prefix: curr.value };
} else {
return { ...prev, currencySymbol: curr.value, suffix: curr.value };
}
}
if (curr.type === 'group') {
return { ...prev, groupSeparator: curr.value };
}
if (curr.type === 'decimal') {
return { ...prev, decimalSeparator: curr.value };
}
return prev;
}, defaultConfig);
};
Directory Contents
Dirs: 1 × Files: 15