UNPKG

@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
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); };