LifeUI
1.53.2
Inicio

Multi Select

Seleccionar múltiples opciones de una lista desplegable

Opciones de tipo Objeto

⚠️ Importante: Cuando trabajas con opciones de objeto, SIEMPRE debes proporcionar la prop getOptionLabel. Esta función le indica al componente qué propiedad del objeto mostrar como texto en los badges cuando se selecciona una opción.

¿Por qué es necesario getOptionLabel?

  1. Identificación del texto a mostrar: El componente necesita saber qué propiedad del objeto mostrar en los badges cuando se selecciona una opción
  2. Consistencia: Asegura que el texto mostrado en los badges use la misma propiedad del objeto
  3. Flexibilidad: Permite trabajar con objetos que tienen múltiples propiedades de texto

¿Qué hace getOptionLabel?

  • Muestra: Cuando seleccionas "Alex Torres", el badge mostrará "Alex Torres" (usando la propiedad name)
  • Identifica: El componente usa esta función para identificar qué texto mostrar para cada opción seleccionada

Tipos de Datos

String

Las opciones de string son la forma más simple de usar el componente. No requieren configuración adicional:

const stringOptions = [
  "React",
  "Vue.js",
  "Angular",
  "Svelte",
  "Next.js",
  "Nuxt",
  "Astro",
  "SolidJS",
  "Qwik",
  "Tailwind CSS",
];

Objeto

⚠️ Requiere getOptionLabel: Cuando usas objetos, debes especificar qué propiedad contiene el texto a mostrar en los badges.

interface User {
  name: string;
  email: string;
  avatar?: string;
  role?: string;
}
 
const objectOptions: User[] = [
  { name: "Alex Torres", email: "alex.torres@example.com", role: "Developer" },
  { name: "María García", email: "maria.garcia@example.com", role: "Designer" },
  { name: "Luis Fernández", email: "luis.fernandez@example.com", role: "Manager" },
];
 
// Uso obligatorio con getOptionLabel
<MultiSelect
  options={objectOptions}
  getOptionLabel={(user) => user.name} // ← Especifica qué propiedad usar
  // ... otras props
/>;

Render personalizado de Opciones

💡 Consejo: renderOption te permite personalizar completamente cómo se ve cada opción en la lista desplegable. Puedes mostrar información adicional accediendo a cualquier propiedad del objeto, mientras que getOptionLabel se encarga del texto que aparece en los badges.

Tamaños

Deshabilitado

Error

Altura máxima del popover

Ajusta la altura máxima del popover de opciones mandando el slot de clase areaViewport en la propiedad classNames

Props

PropTipoRequeridoDescripción
placeholderstring-Texto que se muestra cuando no hay elementos seleccionados.
optionsstring[] | Record<string, any>[]-Lista de opciones disponibles para seleccionar.
size'small' | 'medium' | 'large'-Tamaño del multiselect.
disabledboolean-Indica si el multiselect debe deshabilitarse.
errorboolean-Indica si el multiselect está en estado de error.
selectedItemsstring[] | Record<string, any>[]-Valor controlado de las opciones seleccionadas.
defaultSelectedItemsstring[] | Record<string, any>[]-Valor inicial de las opciones seleccionadas (no controlado).
onChangeItems(items: string[] | Record<string, any>[]) => void-Callback que es ejecutado cuando las opciones seleccionadas son modificadas.
getOptionLabel(option: Record<string, any>) => string-Una función que debe retornar una cadena para mostrarlo como texto en el badge cuando es seleccionada una opción. Usalo solo cuando mandes como opciones una lista de objetos.
renderOption(item: string | Record<string, any>, isSelected: boolean) => ReactNode-Función para personalizar el renderizado de cada opción en la lista desplegable.
classNames{ root?: string; placeholder?: string; options?: string; option?: string; areaViewport?: string }-Clases CSS personalizadas para diferentes partes del componente.