@canutin/svelte-currency-input
Version:
A fully-featured currency input component for Svelte 5 that handles formatting, localization, and validation
34 lines (33 loc) • 1.1 kB
JavaScript
const defaultConfig = {
currencySymbol: '',
groupSeparator: '',
decimalSeparator: '',
prefix: '',
suffix: ''
};
export const getLocaleConfig = (intlConfig) => {
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) => {
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);
};