Chart, Icon e i18n
useChartDefaults
Configurazioni standardizzate per Chart.js: tooltip, griglie, legende, palette colori. Mantiene stili coerenti tra tutti i widget grafici.
import { useChartDefaults } from '@pzeta/vue-widget'
const {
getChartOptions,
getMinimalScales,
tooltipStyle,
gridStyle,
fontStyle,
legendStyle,
colorPalette,
getColor,
} = useChartDefaults()
// Opzioni per tipo
const lineOptions = getChartOptions('line')
const barOptions = getChartOptions('bar', {
showLegend: true,
legendPosition: 'top',
showGridX: false,
})
// Palette colori per dataset multipli
const datasets = data.map((item, i) => ({
...item,
backgroundColor: getColor(i).bg,
borderColor: getColor(i).border,
}))
Opzioni — ChartDefaultsOptions
| Opzione | Tipo | Default | Descrizione |
|---|---|---|---|
showLegend | boolean | false | Mostra legenda |
legendPosition | 'top' | 'bottom' | 'left' | 'right' | 'bottom' | Posizione legenda |
maintainAspectRatio | boolean | false | Mantiene rapporto d'aspetto |
showGridY | boolean | true | Linee griglia asse Y |
showGridX | boolean | true | Linee griglia asse X |
beginAtZero | boolean | true | Asse Y parte da zero |
cutout | string | '60%' | Ritaglio centrale per doughnut |
Tipi grafico — ChartType
'line' | 'bar' | 'doughnut' | 'pie' | 'radar' | 'polarArea'
Palette colori
Sette colori bilanciati (blue, emerald, amber, red, violet, pink, cyan), accessibili tramite getColor(index) con cycle modulo. Ogni colore ha bg (con trasparenza 0.3) e border (pieno).
getMinimalScales() ritorna config scale con display: false ovunque — utile per sparkline.
useIcon
Composable per accedere e modificare il registry icone configurato dal plugin (con fallback su stato globale se il plugin non e installato).
import { useIcon } from '@pzeta/vue-widget'
const { icons, getIcon, setIcons, switchIconSet, resolveIconClass, getCurrentPreset } = useIcon()
// Accesso reattivo alla configurazione completa
const editIcon = icons.value.actions.edit
// Helper tipizzato per singola icona
const editClass = getIcon('actions', 'edit') // 'pi pi-pencil'
// Cambia preset a runtime
switchIconSet('lucide')
// Override parziale
setIcons({ actions: { edit: 'fa-solid fa-pen' } })
// Risoluzione dinamica nome -> classe
resolveIconClass('users') // 'pi pi-users' (con preset primeicons)
resolveIconClass('icon-users') // 'icon-users' (gia completa)
// Preset attivo
getCurrentPreset() // 'primeicons' | 'lucide' | 'fontawesome'
API — UseIconReturn
| Funzione | Firma | Descrizione |
|---|---|---|
icons | ComputedRef<WidgetIcons> | Configurazione reattiva |
getIcon | <K>(category, name) => string | Icona singola tipizzata |
setIcons | (newIcons: DeepPartial<WidgetIcons>) => void | Override parziale (deep merge) |
switchIconSet | (preset: IconPreset) => void | Switch preset completo |
resolveIconClass | (iconName: string) => string | Aggiunge prefisso preset se manca |
getCurrentPreset | () => IconPreset | Preset corrente |
resolveIconClass riconosce i prefissi noti (pi , icon-, fa-, fa ) e li passa attraverso senza modifiche; altrimenti applica il prefisso del preset attivo.
useI18n
Wrapper tipizzato di @pzeta/vue-i18n con tipi specifici per i widget.
import { useI18n } from '@pzeta/vue-widget'
const { t, locale, setLocale } = useI18n()
t('widgets.myTasks.title') // 'Le Mie Attivita'
t('widgets.myTasks.remaining', { count: 3, total: 10 })
// '3 di 10 rimanenti'
await setLocale('en')
console.log(locale.value) // 'en'
API — UseI18nReturn
| Proprieta | Tipo | Descrizione |
|---|---|---|
t | (key: string, params?: InterpolationParams) => string | Traduce chiave con interpolazione |
locale | Ref<SupportedLocale> | Locale corrente reattivo |
setLocale | (locale: SupportedLocale) => Promise<void> | Cambia locale (carica traduzioni lazy) |
Locale supportati
'it' (precaricato) | 'en' | 'de' | 'fr' | 'es'.
Struttura TranslationDictionary
Le chiavi sono organizzate in sette sezioni:
| Sezione | Esempio chiave |
|---|---|
widgets | widgets.dashboard.title |
tables | tables.empty |
buttons | buttons.save |
status | status.active |
common | common.loading, common.currencySymbol |
charts | charts.noData |
countries | countries.IT, countries.DE |
L'app consumer deve aver configurato @pzeta/vue-i18n prima di usare il composable. Vedi Installazione per il setup completo.