Data

DataView

Componente per visualizzare collezioni di dati in layout lista o griglia, con paginazione e ordinamento integrati. I template list e grid sono completamente personalizzabili tramite slot.

Import

import { DataView } from '@pzeta/vue-components'
import type {
  DataViewProps,
  DataViewEmits,
  DataViewLayout,
  DataViewPageEvent,
  DataViewSortOrder,
} from '@pzeta/vue-components'

Esempio Base

Props

PropTipoDefaultDescrizione
valueunknown[][]Array di dati da visualizzare
layout'list' | 'grid''list'Layout di visualizzazione
dataKeystring'id'Campo per identificare univocamente ogni record
rowsnumber10Numero di righe per pagina
firstnumber0Indice del primo record (v-model:first)
totalRecordsnumberTotale record per lazy mode
paginatorbooleanfalseAbilita la paginazione
rowsPerPageOptionsnumber[][10, 25, 50]Opzioni per il dropdown righe per pagina
currentPageReportTemplatestring'Showing {first} to {last} of {totalRecords}'Template report pagina corrente
pageLinkSizenumber5Numero di link pagina da mostrare
alwaysShowPaginatorbooleantrueMostra paginatore anche con una sola pagina
sortFieldstringCampo per ordinamento
sortOrder1 | -1 | nullnullDirezione ordinamento (1=asc, -1=desc)
lazybooleanfalseAbilita lazy mode (paginazione server-side)
loadingbooleanfalseMostra indicatore di caricamento
classstringClasse CSS aggiuntiva per il contenitore

Emits

EventoPayloadDescrizione
pageDataViewPageEventCambio pagina
sort{ sortField: string; sortOrder: DataViewSortOrder }Cambio ordinamento
update:layoutDataViewLayoutCambio layout
update:firstnumberCambio indice prima riga
update:rowsnumberCambio righe per pagina
update:sortFieldstringCambio campo ordinamento
update:sortOrderDataViewSortOrderCambio direzione ordinamento

DataViewPageEvent

interface DataViewPageEvent {
  first: number       // Indice del primo record
  rows: number        // Righe per pagina
  page: number        // Pagina corrente (0-based)
  pageCount: number   // Numero totale di pagine
}

Slot

SlotScopeDescrizione
list{ items: unknown[] }Template per layout lista (riceve gli items della pagina corrente)
grid{ items: unknown[] }Template per layout griglia (riceve gli items della pagina corrente)
headerContenuto nella zona header sopra la lista/griglia
footerContenuto nella zona footer sotto il paginatore
emptyTemplate per stato vuoto
loadingTemplate per stato di caricamento
paginatorstartContenuto a sinistra del paginatore
paginatorendContenuto a destra del paginatore

Esempi

Layout griglia

Con paginazione

Layout switcher (lista/griglia)

Lazy loading (server-side)

Stato vuoto personalizzato

Metodi esposti (defineExpose)

Metodo/PropDescrizione
processedDataDati dopo l'ordinamento (ref)
paginatedDataDati della pagina corrente (ref)
totalRecordsNumero totale record (ref)
setLayout(layout)Cambia programmaticamente il layout

Accessibilità

Il componente usa un contenitore div semantico. Per migliorare l'accessibilità degli elementi della lista/griglia, aggiungere attributi aria-label nei template personalizzati.

TypeScript

import type {
  DataViewProps,
  DataViewEmits,
  DataViewLayout,
  DataViewSortOrder,
  DataViewPageEvent,
  DataViewListSlotProps,
  DataViewGridSlotProps,
} from '@pzeta/vue-components'