Components

CronInput

Espressione cron a 5 campi con frequenze pronte, anteprima leggibile e messaggio chiaro se non è valida (tipo di campo `cron`).

Panoramica

CronInput è il tipo di campo cron (dalla 2.17.0). Serve per un'espressione cron a 5 campi (minuto ora giorno-del-mese mese giorno-della-settimana) che l'utente non dovrebbe scrivere a mano.

  • Una select propone frequenze comuni, oppure quelle passate con presets.
  • Sotto il campo compare l'anteprima leggibile nella lingua corrente: «Ogni giorno alle 02:00», «Dal lunedì al venerdì alle 09:00», «Il giorno 1 di ogni mese alle 00:00».
  • Un'espressione non valida mostra il formato atteso.

La sintassi ammessa è quella standard: *, valori, intervalli (1-5), liste (1,15) e passi (*/15, 0-30/10). Nel giorno della settimana 0 e 7 sono entrambi la domenica.

Anteprima live

Frequenze proposte

Senza presets la select propone sei frequenze comuni, con la loro descrizione come etichetta: ogni 15 minuti, ogni ora, ogni giorno alle 02:00, dal lunedì al venerdì alle 09:00, ogni lunedì alle 08:00, il primo del mese. Le proprie si passano così:

{
  name: 'pianificazione',
  type: 'cron',
  label: 'Pianificazione',
  validation: 'cronexpression',
  props: {
    presets: [
      { label: 'Ogni notte alle 02:00', value: '0 2 * * *' },
      { label: 'Ogni ora lavorativa', value: '0 9-18 * * 1-5' },
    ],
  },
}

Validazione

L'anteprima segnala l'espressione non valida, ma per bloccare il salvataggio serve una regola del form: cronexpression. La regola accetta anche le espressioni a 6 campi (con i secondi), mentre CronInput ne vuole 5.

Descrizione fuori dal form

describeCron e parseCron sono esportate:

import { describeCron, parseCron } from '@pzeta/vue-form'

describeCron('0 9 * * 1-5', t, 'it') // 'Dal lunedì al venerdì alle 09:00'
describeCron('0 2 * *', t, 'it')     // null: non valida
parseCron('*/15 * * * *')            // { minute: { kind: 'step', step: 15 }, hour: { kind: 'any' }, ... }

t è la funzione di traduzione di useI18n() (chiavi ui.cron.*). Se la lingua manca o non è valida, i nomi di giorni e mesi usano quella del browser.

Props

PropTipoDefaultDescrizione
modelValuestring | null''Espressione a 5 campi (v-model)
presetsArray<{ label: string; value: string }>frequenze comuniFrequenze proposte nella select
labelstring—Etichetta
placeholderstring'0 2 * * *'Placeholder del campo
helperTextstring—Testo di aiuto, mostrato quando non c'è anteprima
errorstring—Messaggio d'errore: ha la precedenza sull'anteprima
disabledbooleanfalseDisabilita il campo e nasconde la select
readonlybooleanfalseSola lettura, senza select
invalidbooleanfalseStato invalido
requiredbooleanfalseAsterisco sull'etichetta

Eventi

EventoPayloadDescrizione
update:modelValuestringEspressione scritta o scelta fra le frequenze
blur—Il campo perde il focus