CronInput
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
| Prop | Tipo | Default | Descrizione |
|---|---|---|---|
modelValue | string | null | '' | Espressione a 5 campi (v-model) |
presets | Array<{ label: string; value: string }> | frequenze comuni | Frequenze proposte nella select |
label | string | — | Etichetta |
placeholder | string | '0 2 * * *' | Placeholder del campo |
helperText | string | — | Testo di aiuto, mostrato quando non c'è anteprima |
error | string | — | Messaggio d'errore: ha la precedenza sull'anteprima |
disabled | boolean | false | Disabilita il campo e nasconde la select |
readonly | boolean | false | Sola lettura, senza select |
invalid | boolean | false | Stato invalido |
required | boolean | false | Asterisco sull'etichetta |
Eventi
| Evento | Payload | Descrizione |
|---|---|---|
update:modelValue | string | Espressione scritta o scelta fra le frequenze |
blur | — | Il campo perde il focus |