Data

Paginator

Controllo di paginazione standalone con navigazione configurabile, dropdown righe per pagina, report pagina corrente e slot personalizzabili.

Import

import { Paginator } from '@pzeta/vue-components'
import type {
  PaginatorProps,
  PaginatorEmits,
  PaginatorPageState,
  PaginatorTemplate,
  PaginatorSize,
  PaginatorVariant,
  PageState,
} from '@pzeta/vue-components'

Esempio Base

Props

PropTipoDefaultDescrizione
totalRecordsnumber0Numero totale di record
rowsnumber10Numero di righe per pagina
firstnumber0Indice del primo record (v-model:first)
pageLinkSizenumber5Numero di link pagina da mostrare
rowsPerPageOptionsnumber[][]Opzioni per il dropdown righe per pagina (se vuoto il dropdown non appare)
templatestring | PaginatorTemplate'FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink'Template elementi paginator
currentPageReportTemplatestring'({currentPage} di {totalPages})'Template report pagina corrente
alwaysShowbooleantrueMostra sempre il paginator anche con una sola pagina
variant'basic' | 'bordered' | 'bordered-group''basic'Variante visiva
size'small' | 'medium' | 'large''medium'Dimensione del componente
disabledbooleanfalseDisabilita tutti i controlli

Emits

EventoPayloadDescrizione
pagePaginatorPageStateCambio pagina
update:firstnumberCambio indice primo record (per v-model:first)
update:rowsnumberCambio righe per pagina

PaginatorPageState

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

Slot

SlotScopeDescrizione
startPaginatorPageStateContenuto personalizzato a sinistra
endPaginatorPageStateContenuto personalizzato a destra

Template — Elementi disponibili

La prop template è una stringa con i nomi degli elementi separati da spazi. Gli elementi disponibili sono:

ElementoDescrizione
FirstPageLinkPulsante prima pagina
PrevPageLinkPulsante pagina precedente
PageLinksLink numerici alle pagine
NextPageLinkPulsante pagina successiva
LastPageLinkPulsante ultima pagina
RowsPerPageDropdownDropdown selezione righe per pagina
CurrentPageReportReport pagina corrente
JumpToPageInputInput per navigare a una pagina specifica
JumpToPageDropdownDropdown per navigare a una pagina specifica

Template responsivo

La prop template accetta anche un oggetto PaginatorTemplate per variare il template in base al breakpoint:

interface PaginatorTemplate {
  '640px'?: string    // template per schermi piccoli
  '960px'?: string    // template per schermi medi
  '1280px'?: string   // template per schermi grandi
  default?: string    // template di fallback
}

CurrentPageReportTemplate — Variabili

Il currentPageReportTemplate supporta le seguenti variabili:

VariabileValore
{currentPage}Numero pagina corrente (1-based)
{totalPages}Numero totale di pagine
{first}Indice del primo record (1-based)
{last}Indice dell'ultimo record
{rows}Righe per pagina
{totalRecords}Totale record

Esempi

Template minimo

Con JumpToPage e RowsPerPage

Varianti visive

Dimensioni

Slot start/end

Disabilitato

Integrazione manuale con una lista

Note

  • Il paginator si nasconde automaticamente quando alwaysShow è false e c'è una sola pagina.
  • Il dropdown RowsPerPageDropdown non appare se rowsPerPageOptions è un array vuoto (default).
  • PageState è un alias di PaginatorPageState per compatibilità con PrimeVue 4.

Accessibilità

Il componente usa un elemento <nav> con aria-label localizzato. I pulsanti di navigazione hanno aria-label descrittivi. Il link della pagina corrente ha aria-current="page". I pulsanti disabilitati ricevono l'attributo disabled.

TypeScript

import type {
  PaginatorProps,
  PaginatorEmits,
  PaginatorPageState,
  PaginatorTemplate,
  PaginatorSize,
  PaginatorVariant,
  PageState,  // alias di PaginatorPageState
} from '@pzeta/vue-components'