Components

IconSelect

Dropdown per la selezione di icone con anteprima visuale, filtro e raggruppamento per categoria.

Panoramica

IconSelect è un componente select specializzato per la selezione di icone. Visualizza l'anteprima dell'icona sia nel dropdown che nel valore selezionato. Include il set completo di PrimeIcons e supporta icone personalizzate con raggruppamento per categoria.

Il valore emesso è la classe CSS dell'icona (es. 'pi pi-home').

Caratteristiche principali:

  • Set icone PrimeIcons predefinito con possibilità di override
  • Filtro/ricerca icone per nome
  • Raggruppamento per categoria (opzionale)
  • Pulsante di reset selezione

Casi d'uso tipici: configurazione voci di menu, selezione icone per categorie, personalizzazione elementi UI.

Anteprima live

Utilizzo nello schema

const schema = [{
  name: 'iconaMenu',
  type: 'icon',
  label: 'Icona voce menu',
  props: {
    showFilter: true,
    showClear: true,
  }
}, {
  name: 'iconaCategoria',
  type: 'icon',
  label: 'Icona categoria',
  props: {
    icons: iconePersonalizzate,   // Set icone custom
    categorized: true,             // Raggruppa per categoria
    showFilter: true,
  }
}]

Utilizzo diretto

Con icone personalizzate e raggruppamento

Props

PropTipoDefaultDescrizione
modelValuestring | nullnullClasse CSS icona selezionata (v-model), es. 'pi pi-home'
labelstringEtichetta del campo
helperTextstringTesto di supporto sotto il campo
errorstringMessaggio di errore (attiva stato invalid)
disabledbooleanfalseDisabilita il campo
invalidbooleanfalseAttiva visivamente lo stato di errore
requiredbooleanfalseIndica campo obbligatorio
iconsIconItem[]PrimeIcons completoSet di icone disponibili
showClearbooleantrueMostra pulsante per resettare la selezione
clearIconstring'pi pi-times'Icona del pulsante reset
showFilterbooleantrueAbilita filtro/ricerca per nome icona
filterPlaceholderstring(da i18n)Placeholder del campo filtro
categorizedbooleanfalseRaggruppa le icone per campo category

Struttura IconItem

interface IconItem {
  name: string       // Classe CSS icona, es. 'pi pi-home'
  label: string      // Etichetta leggibile, es. 'Home'
  category?: string  // Categoria per raggruppamento (usata con categorized: true)
}

Eventi

EventoPayloadDescrizione
update:modelValuestring | nullClasse CSS dell'icona selezionata, o null al reset

Validazione suggerita

import { z } from 'zod'

const schema = z.object({
  iconaMenu: z.string()
    .startsWith('pi ', 'Seleziona un\'icona valida')
    .nullable()
    .refine(v => v !== null, { message: 'L\'icona è obbligatoria' }),
})