Formatting
Panoramica
Quattro composables per formattazione numeri/valute, animazioni di conteggio e gestione visiva dei trend.
useNumberFormat
Formattazione numeri, valute, percentuali e notazione compatta con default italiano.
import { useNumberFormat } from '@pzeta/vue-widget'
const { formatNumber, formatCurrency, formatCompact, formatPercent, formatAuto } = useNumberFormat()
formatNumber(1234.56) // '1.235'
formatNumber(1234.56, { decimals: 2 }) // '1.234,56'
formatNumber(1234, { prefix: '$' }) // '$1.234'
formatCurrency(1234.56) // '1.234,56 EUR'
formatCurrency(1234.56, { currency: 'USD' }) // '$ 1.234,56' (con locale it-IT)
formatCompact(1500000) // '1,5M'
formatCompact(1500, { prefix: '$' }) // '$1,5k'
formatPercent(0.1234) // '12,34%'
formatPercent(0.1234, { decimals: 0 }) // '12%'
formatAuto(1234) // '1.234'
formatAuto(1234.5, ' kg') // '1.234,50 kg'
Opzioni — NumberFormatOptions
| Opzione | Tipo | Default | Descrizione |
|---|---|---|---|
decimals | number | 0 | Cifre decimali |
prefix | string | '' | Prefisso (es. '$', '+') |
suffix | string | '' | Suffisso (es. '%', ' utenti') |
separator | boolean | true | Separatore migliaia |
locale | string | 'it-IT' | Locale Intl |
Soglie formatCompact
| Valore | Notazione |
|---|---|
>= 1.000.000.000 | B (miliardi) |
>= 1.000.000 | M (milioni) |
>= 1.000 | k (migliaia) |
< 1.000 | numero localizzato |
formatPercent aspetta input 0-1 e moltiplica per 100 (es. 0.15 → '15%').
useCurrency
Wrapper specializzato che integra il simbolo valuta dal locale corrente con override per widget.
import { useCurrency } from '@pzeta/vue-widget'
const { symbol, formatAmount, formatAmountWithSeparator } = useCurrency()
symbol.value // '€' (per locale 'it')
formatAmount(1234) // '€1234'
formatAmountWithSeparator(1234.5, 2) // '€1.234,50'
// Con override prop
const { symbol } = useCurrency({ override: props.currency })
| Opzione | Tipo | Descrizione |
|---|---|---|
override | string | Simbolo valuta che sovrascrive quello del locale |
Il simbolo viene letto dalla chiave i18n common.currencySymbol. Se l'app non usa @pzeta/vue-i18n, configurare customTranslations nel plugin.
useCounterAnimation
Anima contatori numerici con incremento progressivo, ideale per metriche dashboard.
import { useCounterAnimation } from '@pzeta/vue-widget'
const { animatedValues, restart } = useCounterAnimation(
() => props.metrics.map(m => m.value),
{ duration: 2000 }
)
// In template:
// <span v-for="(val, i) in animatedValues" :key="i">{{ val }}</span>
// Riavvio manuale dopo aggiornamento dati
watch(() => props.metrics, () => restart())
Opzioni — CounterAnimationOptions
| Opzione | Tipo | Default | Descrizione |
|---|---|---|---|
duration | number | 1500 | Durata totale (ms) |
steps | number | 50 | Numero di step/frame |
round | boolean | true | Arrotonda a interi durante animazione |
animate | boolean | true | Disabilita per accessibilita / mostra valore finale |
L'animazione parte automaticamente al mount e i timer vengono puliti al unmount.
useTrend
Gestione visiva di trend (up/down/neutral) con icone, colori, severity PrimeVue e simboli Unicode.
import { useTrend } from '@pzeta/vue-widget'
const {
getTrendInfo,
getTrendFromChange,
getTrendColorClass,
getTrendSeverity,
getTrendIcon,
getTrendSymbol,
} = useTrend()
const info = getTrendInfo('up')
// { direction: 'up', colorClass: 'text-success-500', severity: 'success',
// icon: 'pi pi-arrow-up', symbol: '↑' }
getTrendFromChange(5.2) // 'up'
getTrendFromChange(-3.1) // 'down'
getTrendFromChange(0) // 'neutral'
Mapping direzioni
| Direzione | colorClass | severity | symbol |
|---|---|---|---|
'up' | text-success-500 | 'success' | ↑ |
'down' | text-danger-500 | 'danger' | ↓ |
'neutral' | text-secondary-500 | 'secondary' | → |
getTrendIcon legge dal registry icone configurato (categoria trend), quindi cambia automaticamente con il preset attivo.