@cranberry-money/shared-utils
Version:
Shared utility functions for Blueberry platform
47 lines • 1.84 kB
JavaScript
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