UNPKG

react-currency-input-field

Version:

React <input/> component for formatting currency and numbers.

49 lines (43 loc) 1.28 kB
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); };