Navigation

ScrollTop

Pulsante torna-su che appare quando la pagina supera un certo scroll threshold. Configurabile per target window o elemento parent, comportamento smooth/auto, severity e aspetto del pulsante.

Import

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

Esempio Base

Props

PropTipoDefaultDescrizione
target'window' | 'parent''window'Target per l'ascolto degli eventi di scroll. 'window' ascolta la finestra; 'parent' cerca il genitore scrollable
thresholdnumber400Pixel di scroll necessari per mostrare il pulsante
iconstringundefinedClasse CSS dell'icona (default: icona configurata in ConfigPlugin)
behavior'smooth' | 'auto''smooth'Comportamento dello scroll al click
severitySeverity'primary'Stile del pulsante (primary, secondary, success, info, warn, danger, help, contrast)
raisedbooleantrueAggiunge ombra al pulsante
roundedbooleantrueRende il pulsante circolare

Emits

EventoPayloadDescrizione
clickMouseEventEmesso quando il pulsante viene cliccato

Slot

SlotScopeDescrizione
iconTemplate personalizzato per l'icona del pulsante

Esempi

Configurazione base

Diversi stili severity

Pulsante non circolare

Senza ombra

Con icona personalizzata tramite prop

Con slot icona personalizzata

Target parent (container scrollabile)

Ascolto evento click

Comportamento

  • Il pulsante è posizionato in modo fisso (fixed) in basso a destra (bottom-6 right-6).
  • Con target: 'window' ascolta window.scrollY; con target: 'parent' cerca il primo genitore con overflow-y: auto o scroll tramite attributo data-scrolltop-container.
  • L'apparizione/scomparsa usa una transizione animata (fade + translate + scale).
  • L'icona di default è configurata tramite ConfigPlugin (icons.navigation.scrollTop); la prop icon permette di sovrascriverla.

Accessibilità

  • Il pulsante ha aria-label gestito tramite @pzeta/vue-i18n (navigation.scrollToTopAriaLabel).
  • L'evento scroll viene registrato con { passive: true } per ottimizzare le performance.

TypeScript

import type { ScrollTopProps, ScrollTopEmits, ScrollTopSlots } from '@pzeta/vue-components'