Componente SelectorField
¿Qué es el componente SelectorField?
SelectorField es un componente de selección (dropdown) altamente personalizable: con soporte para iconos, validación, control programático y múltiples estados de estilo.
¿Cómo se utiliza el SelectorField?
Para usar el componente, importa la clase y configura sus propiedades:
import SelectorField, { SelectorFieldStyle, SelectorFieldController } from "@seigenta/TypesCraft/widgets/selectorField";
import { Icon } from "@seigenta/TypesCraft/widgets";
import { Color, Size } from "@seigenta/TypesCraft/widgets/utils";
// Uso básico
new SelectorField({
options: [
{ value: "1", label: "Opción 1" },
{ value: "2", label: "Opción 2" }
],
placeholder: "Selecciona una opción",
onChange: (value) => console.log(value)
})
Propiedades del componente
SelectorField acepta estas propiedades:
- options: SelectorFieldOption[] - Opciones del dropdown (requerido)
- label?: Widget|string - Etiqueta del campo
- leadingIcon?: Widget - Icono/widget al inicio
- trailingIcon?: Widget - Icono/widget al final
- placeholder?: string - Texto placeholder
- onChange?: (value: string) => void - Callback al cambiar valor
- validation?: (value: string) => string - Función de validación
- controller?: SelectorFieldController - Controlador externo
- style?: SelectorFieldStyle - Estilo base
- styleHover?: SelectorFieldStyle - Estilo hover
- styleFocus?: SelectorFieldStyle - Estilo focus
SelectorFieldStyle - Propiedades de estilo
Configura el estilo del selector:
- inputBackgroundColor?: Color - Color de fondo
- borderStyle?: BorderStyle - Estilo del borde
- radiusBorder?: Size - Radio de borde
- width?: Size - Ancho del campo
- height?: Size - Alto del campo
- labelStyle?: TextStyle - Estilo de la etiqueta
- inputStyle?: TextStyle - Estilo del texto
- dropdownArrowStyle?: Css - Estilo de la flecha
Ejemplos de uso
Ejemplo básico con validación:
new SelectorField({
label: "País",
options: [
{ value: "cl", label: "Chile" },
{ value: "ar", label: "Argentina" },
{ value: "pe", label: "Perú" }
],
placeholder: "Selecciona tu país",
required: true,
validation: (value) => !value ? "Debes seleccionar un país" : "",
autoValidate: AutoValidateMode.onBlur
})
Ejemplo avanzado con controlador y estilos:
const controller = new SelectorFieldController();
new SelectorField({
label: "Tema",
leadingIcon: new Icon({ icon: "palette" }),
options: [
{ value: "light", label: "Claro" },
{ value: "dark", label: "Oscuro" },
{ value: "system", label: "Sistema" }
],
controller,
style: new SelectorFieldStyle({
inputBackgroundColor: Color.hex("#ffffff"),
borderStyle: BorderStyle.all(Size.px(1),
radiusBorder: Size.px(8),
width: Size.px(300),
dropdownArrowStyle: new Css({ color: "#666" })
}),
styleHover: new SelectorFieldStyle({
borderStyle: BorderStyle.all(Size.px(1),
borderColor: Color.hex("#6200ee")
})
})
// Cambiar valor programáticamente
controller.value = "dark";
Comportamiento
El SelectorField:
- Genera un dropdown nativo accesible
- Soporta validación en diferentes eventos (change, blur, focus)
- Permite control programático mediante SelectorFieldController
- Maneja iconos leading/trailing personalizables
- Proporciona múltiples estados de estilo (normal, hover, focus, error)