UNPKG

@cranberry-money/shared-utils

Version:

Shared utility functions for Blueberry platform

47 lines 1.84 kB
import { DEFAULT_CURRENCY, DECIMAL_PLACES } from '@cranberry-money/shared-constants'; export const NUMBER_FORMAT_OPTIONS_CURRENCY = { style: 'currency', minimumFractionDigits: DECIMAL_PLACES, maximumFractionDigits: DECIMAL_PLACES, }; export const NUMBER_FORMAT_OPTIONS_CURRENCY_SIGNED = { ...NUMBER_FORMAT_OPTIONS_CURRENCY, signDisplay: 'always', }; export function formatCurrency(value) { if (!value && value !== 0) return ''; const numValue = typeof value === 'string' ? parseFloat(value) : value; if (isNaN(numValue)) return ''; return numValue.toLocaleString('en-AU', { minimumFractionDigits: 2, maximumFractionDigits: 2, }); } export function parseCurrencyInput(value) { const cleanValue = value.replace(/[^0-9.]/g, ''); const parts = cleanValue.split('.'); const formattedValue = parts[0] + (parts.length > 1 && parts[1] ? '.' + parts[1].slice(0, 2) : ''); return parseFloat(formattedValue) || 0; } export function formatCurrencyWithCode(value, currencyCode = DEFAULT_CURRENCY, locale = 'en-AU', minimumFractionDigits = 0, maximumFractionDigits = 0) { if (value == null || isNaN(value)) return ''; return new Intl.NumberFormat(locale, { style: 'currency', currency: currencyCode, minimumFractionDigits, maximumFractionDigits, }).format(value); } export function formatDefaultCurrency(value, minimumFractionDigits = 0, maximumFractionDigits = 0) { return formatCurrencyWithCode(value, DEFAULT_CURRENCY, 'en-AU', minimumFractionDigits, maximumFractionDigits); } export function formatShares(shares, locale = 'en-AU') { return new Intl.NumberFormat(locale, { minimumFractionDigits: 0, maximumFractionDigits: 0, }).format(shares); } //# sourceMappingURL=currency.js.map