Forms

useFormFieldEvents

Composable interno per gestire gli event handlers comuni dei campi form (input, change, focus, blur, clear).

Composable interno — utilizzato da InputText, Password, InputNumber, Textarea e altri campi form della libreria.

Firma TypeScript

export function useFormFieldEvents<T = string | number>(
  options: UseFormFieldEventsOptions<T>
): FormFieldEventsResult

export interface UseFormFieldEventsOptions<T = string | number> {
  emit: FormFieldEmitFn<T>;
  inputRef?: Ref<HTMLInputElement | HTMLTextAreaElement | null>;
  getValue?: (event: Event) => T;
  emptyValue?: T;             // default: ''
  focusAfterClear?: boolean;  // default: true
}

export interface FormFieldEventsResult {
  handleInput: (event: Event) => void;
  handleChange: (event: Event) => void;
  handleFocus: (event: FocusEvent) => void;
  handleBlur: (event: FocusEvent) => void;
  handleKeydown: (event: KeyboardEvent) => void;
  handleKeyup: (event: KeyboardEvent) => void;
  handleKeypress: (event: KeyboardEvent) => void;
  handlePaste: (event: ClipboardEvent) => void;
  handleClear: (event: MouseEvent | Event) => void;
}

Parametri

ParametroTipoDescrizione
emitFormFieldEmitFn<T>Emit function del componente Vue
inputRefRef<HTMLInputElement | null>Ref all'elemento input (per focus dopo clear)
getValue(event: Event) => TFunzione custom per estrarre il valore (default: event.target.value)
emptyValueTValore usato da handleClear (default: '')
focusAfterClearbooleanFocus sull'input dopo clear (default: true)

Valore di Ritorno

Tutti gli handler emettono i corrispondenti eventi Vue del componente:

HandlerEmette
handleInputupdate:modelValue, input
handleChangechange
handleFocusfocus
handleBlurblur
handleKeydownkeydown
handleKeyupkeyup
handleKeypresskeypress
handlePastepaste
handleClearupdate:modelValue (con emptyValue), clear, input

Esempio

// Uso base per InputText
const { handleInput, handleFocus, handleBlur, handleClear } = useFormFieldEvents({
  emit,
  inputRef
})

// Per InputNumber con getValue custom
const { handleInput, handleChange } = useFormFieldEvents({
  emit,
  inputRef,
  getValue: (event) => {
    const value = (event.target as HTMLInputElement).value
    return parseFloat(value) || 0
  },
  emptyValue: 0
})

Note

  • Gli eventi input e change emettono { originalEvent, value } (non il valore diretto).
  • handleClear esegue il focus sull'input in nextTick dopo aver svuotato il valore.
  • Funzione utility esportata: createPassThroughHandler(emit, eventName) per eventi semplici che non necessitano elaborazione.