ivt
Version:
Ivt Components Library
52 lines (50 loc) • 2.15 kB
JavaScript
function formatNumberWithComma({ value, minimumFractionDigits = 0, maximumFractionDigits = 12, currency }) {
const options = {
minimumFractionDigits,
maximumFractionDigits
};
if (currency) {
options.style = "currency";
options.currency = currency;
}
const formatter = new Intl.NumberFormat("pt-BR", options);
return formatter.format(value);
}
/**
* Formata um número no padrão pt-BR (ex.: 1234.56 -> "1.234,56").
* @param value Número a ser formatado
* @param minimumFractionDigits Dígitos decimais mínimos
* @param maximumFractionDigits Dígitos decimais máximos
* @returns String formatada (ex.: "1.234,56")
*/ function formatNumberPtBr(value, minimumFractionDigits, maximumFractionDigits) {
return new Intl.NumberFormat("pt-BR", {
minimumFractionDigits,
maximumFractionDigits
}).format(value);
}
/**
* Formata um número como string monetária no padrão pt-BR.
* Usa o símbolo da API, se fornecido, ou tenta formatar com Intl.NumberFormat.
* @param value Valor numérico a ser formatado
* @param currency Código da moeda (ex.: "BRL", "USD-PTAX")
* @param symbol Símbolo da moeda (ex.: "R$", "$")
* @param minimumFractionDigits Dígitos decimais mínimos (padrão: 2)
* @param maximumFractionDigits Dígitos decimais máximos (padrão: 2)
* @returns String formatada (ex.: "R$ 1.234,56")
*/ function formatMoney({ value, currency = "BRL", symbol, minimumFractionDigits = 2, maximumFractionDigits = 2 }) {
const isValidIntlCurrency = currency && /^[A-Z]{3}$/.test(currency);
if (isValidIntlCurrency) {
const formatter = new Intl.NumberFormat("pt-BR", {
style: "currency",
currency,
minimumFractionDigits,
maximumFractionDigits
});
return formatter.format(value);
}
const formattedValue = formatNumberPtBr(value, minimumFractionDigits, maximumFractionDigits);
const finalSymbol = symbol || "$";
return `${finalSymbol} ${formattedValue}`;
}
export { formatNumberWithComma as a, formatMoney as f };
//# sourceMappingURL=format-numbers-LmnBEQr0.mjs.map