generated from boboko/starter
20 lines
745 B
JavaScript
20 lines
745 B
JavaScript
// Mirrors App\Support\Price::format() — keep both in sync. Greek formatting:
|
|
// comma as the decimal separator, dot as the thousands separator, and no
|
|
// decimals shown unless the amount actually needs them.
|
|
// 19.00 -> "€19", 19.50 -> "€19,5", 19.55 -> "€19,55"
|
|
export function formatPrice(amount, currency = '€') {
|
|
if (amount === null || amount === undefined) return null
|
|
|
|
const value = Math.round(parseFloat(amount) * 100) / 100
|
|
const cents = Math.round(value * 100)
|
|
|
|
const decimals = cents % 100 === 0 ? 0 : (cents % 10 === 0 ? 1 : 2)
|
|
|
|
const formatted = value.toLocaleString('el-GR', {
|
|
minimumFractionDigits: decimals,
|
|
maximumFractionDigits: decimals,
|
|
})
|
|
|
|
return currency + formatted
|
|
}
|