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ámetro | Tipo | Requerido | Default | Descripcion |
---|---|---|---|---|
classNameSelectMultiple | string | no | "" | Clase CSS personalizada para el componente select-multiple . |
classNameSelectMultipleList | string | no | "" | Clase CSS personalizada para la lista de opciones. |
defaultValue | InputSelectItemOptionBaseProps<T>[] | no | [] | Opciones predeterminadas seleccionadas al iniciar el componente. |
value | InputSelectItemOptionBaseProps<T>[] | no | Opciones seleccionadas actualmente. | |
onChange | (v?: InputSelectItemOptionBaseProps<T>[]) => void | no | Función que se ejecuta cuando el valor seleccionado cambia. | |
onChangeData | (v?: T[]) => void | no | Función que se ejecuta cuando los datos seleccionados cambian. | |
onChangeValidate | (e: InputSelectItemOptionBaseProps<T>[]) => Promise<any> | any | no | Función de validación personalizada que se ejecuta cuando el valor cambia. | |
iconDelete | ReactNode | no | <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 ). |
CustomOptionsSelected | typeof InputSelectOption<T> | no | Componente personalizado para renderizar las opciones seleccionadas. | |
validatorData | FenextjsValidatorClass<T[]> | no | Instancia 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)}
/>