Components

FormSection

Container sezione con header (titolo + sottotitolo + icona), layout vertical/horizontal/grid e comportamento collassabile.

Panoramica

FormSection è il componente atomico per raggruppare campi correlati con un header opzionale (titolo, sottotitolo, icona) e supporto per:

  • Layout interno: vertical (default), horizontal (flex wrap), grid (N colonne responsive)
  • Collapsible: clic sull'header per chiudere/aprire la sezione
  • Divider: separatore visivo sotto l'header
  • Slot: header e footer per contenuto personalizzato

DynamicFormLayouts lo usa internamente per renderizzare le sezioni dello schema, ma FormSection è esportato anche per costruire layout custom dove non serve la pipeline completa di validazione/dirty tracking.

Anteprima live

Props

PropTipoDefaultDescrizione
titlestringTitolo della sezione
subtitlestringSottotitolo descrittivo
iconstringClasse PrimeIcons (es. 'pi pi-user')
layout'vertical' | 'horizontal' | 'grid''vertical'Disposizione interna dei campi
columnsnumber2Numero colonne griglia (usato solo con layout='grid')
collapsiblebooleanfalseSezione collassabile (clic sull'header)
collapsedbooleanfalseStato iniziale (v-model:collapsed)
dividerbooleantrueMostra divisore sotto l'header
classstring''Classi CSS aggiuntive sul container

Eventi

EventoPayloadDescrizione
update:collapsedbooleanCambio stato chiuso/aperto

Slot

SlotDescrizione
defaultContenuto della sezione (campi)
headerOverride completo dell'header
footerFooter della sezione

Layout

vertical (default)

I campi sono disposti in colonna con gap-4.

horizontal

I campi sono disposti in riga con flex flex-wrap gap-4.

grid

Griglia responsive: 1 colonna su mobile, columns colonne da md (max 4).

Quando usarlo

  • Dentro DynamicFormLayouts non serve istanziarlo direttamente — è già wrappato attorno a ciascuna sezione dello schema con i parametri ricavati da SectionDefinition.
  • Standalone quando hai un form a schema fisso (no validazione condivisa, no dirty tracking) e vuoi solo il visual del header + layout.