Components

InplaceSelectRemote

Select inline con editing in-place: visualizza il valore come testo e apre un dropdown al click per la modifica.

Panoramica

InplaceSelectRemote è un componente select con interazione in-place: mostra il valore corrente come testo semplice e, al click, si trasforma in un dropdown per consentire la modifica. Ideale per editing rapido in tabelle, liste o schede dettaglio.

Caratteristiche principali:

  • Visualizzazione compatta come testo (non occupa spazio come un dropdown standard)
  • Caricamento lazy: le opzioni vengono richieste solo alla prima apertura
  • Supporto opzioni statiche (prop options) o remote (fetchFn)
  • In alternativa a fetchFn, la chiamata PostgREST può essere composta dal componente dichiarando la risorsa: Sorgente dati endpoint
  • Template di visualizzazione personalizzabile (displayTemplate)
  • Chiusura automatica dopo la selezione

Casi d'uso tipici: modifica stato in una riga di tabella, cambio assegnatario in una lista task, aggiornamento categoria senza aprire un form completo.

Anteprima live (con fetchFn mockato)

Utilizzo nello schema

const schema = [{
  name: 'statoOrdine',
  type: 'inplaceselect',
  label: 'Stato',
  props: {
    fetchFn: fetchStatiOrdine,
    optionLabel: 'descrizione',
    optionValue: 'codice',
    placeholder: 'Seleziona stato',
  }
}]

Utilizzo diretto

Con opzioni statiche

Con template di visualizzazione personalizzato

Utilizzo in tabella

Sorgente dati endpoint

In alternativa a fetchFn, InplaceSelectRemote può comporre da sé la chiamata PostgREST a partire dalla risorsa dichiarata:

props: {
  endpoint: 'statiordine',
  order: 'descrizione.asc',
  optionLabel: 'descrizione',
  optionValue: 'codstato'
}

fetchFn ha sempre la precedenza: se sono presenti entrambe, endpoint viene ignorato. La forma dell'endpoint, la traduzione dei filtri e l'ordine con cui viene risolto il trasporto sono descritti in Sorgente dati endpoint.

Props

PropTipoDefaultDescrizione
modelValueunknownValore selezionato (v-model)
fetchFnFetchFnFunzione asincrona per caricare le opzioni
optionsRecord<string, unknown>[][]Opzioni statiche (alternativa a fetchFn)
filterstring | endpoint`string
selectstringColonne da selezionare (solo con endpoint)
orderstringOrdinamento PostgREST, es. 'nome.asc' (solo con endpoint)
limitnumberNumero massimo di righe restituite (solo con endpoint)
baseUrlstring''Prefisso del gateway PostgREST, se l'endpoint dichiara uno schema
keyNamestring'id'Chiave primaria della risorsa (solo client PostgREST standalone)
FilterCriteria`Filtro statico passato alla fetchFn
optionLabelstring'label'Proprietà da usare come etichetta
optionValuestring'value'Proprietà da usare come valore
placeholderstring(da i18n)Testo mostrato quando nessun valore è selezionato
displayTemplate(item: Record<string, unknown>) => stringFunzione per formattare il testo visualizzato
editablebooleantrueAbilita il click per aprire il dropdown
inputPropsRecord<string, unknown>{}Props aggiuntive per il Select sottostante

Comportamento caricamento opzioni

Il componente utilizza il caricamento lazy (immediate: false):

  • Le opzioni non vengono richieste al mount
  • La prima apertura del componente (handleOpen) triggera il reload()
  • Se al mount è già presente un modelValue, le opzioni vengono caricate immediatamente per mostrare l'etichetta corretta
  • I cambiamenti al filter prop causano un reload automatico

Eventi

EventoPayloadDescrizione
update:modelValueunknownValore aggiornato
changeunknownEmesso dopo la selezione (stesso valore di update:modelValue)