Data

Carousel

Componente carosello per scorrere una collezione di elementi con navigazione, autoplay e supporto responsive.

Import

import { Carousel } from '@pzeta/vue-components'

Esempio Base

Props

PropTipoDefaultDescrizione
valueunknown[][]Array di elementi da visualizzare
pagenumber0Pagina corrente (supporta v-model:page)
numVisiblenumber1Numero di elementi visibili per pagina
numScrollnumber1Numero di elementi da scorrere ad ogni navigazione
responsiveOptionsCarouselResponsiveOptions[][]Opzioni responsive per breakpoint
orientation'horizontal' | 'vertical''horizontal'Orientamento del carosello
verticalViewPortHeightstring'300px'Altezza viewport in modalità verticale
circularbooleanfalseNavigazione circolare (loop infinito)
autoplayIntervalnumber0Intervallo autoplay in ms (0 = disabilitato)
showNavigatorsbooleantrueMostra i pulsanti di navigazione prev/next
showIndicatorsbooleantrueMostra gli indicatori di pagina
containerClassClassValue''Classe CSS aggiuntiva per il viewport
contentClassClassValue''Classe CSS aggiuntiva per il contenuto
indicatorsContentClassClassValue''Classe CSS aggiuntiva per gli indicatori
prevButtonPropsobjectProps aggiuntivi per il pulsante prev
nextButtonPropsobjectProps aggiuntivi per il pulsante next

CarouselResponsiveOptions

ProprietàTipoDescrizione
breakpointstringBreakpoint CSS (es. '768px')
numVisiblenumberNumero di elementi visibili sotto questo breakpoint
numScrollnumberNumero di elementi da scorrere sotto questo breakpoint

Emits

EventoPayloadDescrizione
update:pagenumberEmesso al cambio di pagina (usabile con v-model:page)

Slot

SlotScopeDescrizione
item{ data: unknown, index: number }Template per ogni elemento del carosello
headerContenuto nell'header del carosello
footerContenuto nel footer del carosello
previconIcona custom per il pulsante precedente
nexticonIcona custom per il pulsante successivo
emptyContenuto mostrato quando value e' vuoto

Esempi

Carosello Circolare con Autoplay

Carosello Verticale

Accessibilita'

  • I pulsanti prev/next hanno aria-label localizzati tramite @pzeta/vue-i18n
  • Gli indicatori di pagina hanno aria-label con il numero di pagina
  • I pulsanti sono disabilitati (disabled) quando la navigazione non e' possibile (modalita' non circolare)
  • Il DOM e' navigabile da tastiera tramite gli elementi <button> nativi

TypeScript

import type { CarouselProps, CarouselResponsiveOptions } from '@pzeta/vue-components'

const responsiveOptions: CarouselResponsiveOptions[] = [
  { breakpoint: '1024px', numVisible: 3, numScroll: 1 },
  { breakpoint: '768px', numVisible: 2, numScroll: 1 },
  { breakpoint: '560px', numVisible: 1, numScroll: 1 },
]