input
Selectmultiple

InputSelectMultiple

El componente InputSelectMultiple permite seleccionar múltiples opciones de una lista de elementos. Ofrece funcionalidades avanzadas como validación personalizada, eliminación de opciones seleccionadas y selección de estilo de visualización.

Ejemplo

Importación

Para importar el componente InputSelectMultiple, se puede hacer desde fenextjs

import { InputSelectMultiple } from "fenextjs";

Parámetros

ParámetroTipoRequeridoDefaultDescripcion
classNameSelectMultiplestringno""Clase CSS personalizada para el componente select-multiple.
classNameSelectMultipleListstringno""Clase CSS personalizada para la lista de opciones.
defaultValueInputSelectItemOptionBaseProps<T>[]no[]Opciones predeterminadas seleccionadas al iniciar el componente.
valueInputSelectItemOptionBaseProps<T>[]noOpciones seleccionadas actualmente.
onChange(v?: InputSelectItemOptionBaseProps<T>[]) => voidnoFunción que se ejecuta cuando el valor seleccionado cambia.
onChangeData(v?: T[]) => voidnoFunción que se ejecuta cuando los datos seleccionados cambian.
onChangeValidate(e: InputSelectItemOptionBaseProps<T>[]) => Promise<any> | anynoFunción de validación personalizada que se ejecuta cuando el valor cambia.
iconDeleteReactNodeno<Trash />Icono personalizado para eliminar una opción seleccionada.
typeSelectMultipleStyle'normal' | 'checkbox'no'normal'Define el estilo del select múltiple. Puede ser normal o con casillas de verificación (checkbox).
CustomOptionsSelectedtypeof InputSelectOption<T>noComponente personalizado para renderizar las opciones seleccionadas.
validatorDataFenextjsValidatorClass<T[]>noInstancia de FenextjsValidatorClass para validar los datos seleccionados.

Storybook

Para ver el storybook del componente lo puede hacer con este link (opens in a new tab)

Usos

  • Uso básico de InputSelectMultiple
<InputSelectMultiple
  defaultValue={[
    { label: "Option 1", value: 1 },
    { label: "Option 2", value: 2 },
  ]}
  onChange={(selected) => console.log(selected)}
/>
  • InputSelectMultiple con validación personalizada
<InputSelectMultiple
  onChangeValidate={async (selected) => {
    if (selected.length > 5) {
      throw new Error("No puedes seleccionar más de 5 opciones.");
    }
  }}
  onChangeData={(data) => console.log("Datos seleccionados:", data)}
/>