Data

TimerDisplay

Contatore HH:MM:SS a cifre tabellari per durate in corso. Due modalità — controllata dal chiamante oppure automatica con intervallo gestito dal componente e fermato allo smontaggio.

Import

import { TimerDisplay } from '@pzeta/vue-components'
// oppure tramite plugin:
import { DataPlugin } from '@pzeta/vue-components'
app.use(DataPlugin)

Esempio Base

Modalità

Il componente ha due modalità, selezionate dalla presenza di start.

ModalitàPropChi possiede il conteggioQuando usarla
ControllatasecondsIl chiamanteIl valore arriva già calcolato dal backend o da uno store
Automaticastart (+ running)Il componenteSi conosce l'istante di inizio e non si vuole riscrivere setInterval

Nella modalità automatica il valore viene ricalcolato dall'orologio di sistema a ogni tick, non accumulato dai tick stessi: il conteggio non va in deriva se la scheda resta in background, e l'intervallo viene fermato allo smontaggio senza che il chiamante debba ricordarsene.

Props

PropTipoDefaultDescrizione
secondsnumber0Secondi trascorsi (modalità controllata). Ignorato quando è valorizzato start
startstring | Date | numberIstante di inizio (modalità automatica): stringa ISO, Date o timestamp in millisecondi
runningbooleantrueNella modalità automatica, indica se il conteggio sta avanzando
compactbooleanfalseNasconde le ore finché restano a zero, mostrando MM:SS
labelstringEtichetta accessibile del timer (aria-label)

Emits

EventoPayloadDescrizione
tickseconds: numberEmesso a ogni secondo trascorso nella modalità automatica

Formattazione

InputOutputNota
500:00:05Padding a due cifre su ore, minuti e secondi
366101:01:01
360000100:00:00Le ore non vengono troncate a due cifre
125 con compact02:05Le ore compaiono appena diventano diverse da zero
-3000:00:00I valori negativi sono trattati come zero
61.900:01:01I secondi frazionari vengono troncati

Esempi

Modalità controllata

Modalità automatica con pausa

Sospendere il conteggio ferma l'aggiornamento della resa, non l'orologio: alla ripresa il valore riparte dal tempo realmente trascorso dall'istante di inizio, non da dove si era fermata la resa.

Modalità compatta

Con evento tick

In una card di lavorazione

Accessibilità

  • Il componente espone role="timer" con aria-live="off": un aggiornamento al secondo annunciato da uno screen reader renderebbe la pagina inusabile. Se il valore finale conta (per esempio a fine lavorazione), annunciarlo con una live region separata.
  • La prop label fornisce l'etichetta accessibile del timer: senza, il ruolo timer resta privo di nome.
  • Le cifre sono rese con tabular-nums, così la larghezza non cambia a ogni tick e il layout non oscilla.

TypeScript

import type { TimerDisplayProps, TimerDisplayEmits } from '@pzeta/vue-components'

// Modalità controllata
const controllata: TimerDisplayProps = { seconds: 3661, compact: false }

// Modalità automatica
const automatica: TimerDisplayProps = {
  start: '2026-08-11T10:00:00.000Z',
  running: true,
  label: 'Durata della rilevazione',
}