import React from "react"; import { type InputProps } from "./Input"; import type { PaginationInterface } from "../../interfaces"; export interface SearchSelectOption { label: string; value?: string; description?: string | number; icon?: string; } export interface SearchSelectInputProps extends Omit { value?: T | K | string; /** * Callback cuando cambia el valor del input. * Recibe la opción completa (T) si no hay getOptionValue, o el valor extraído (K) si hay getOptionValue. * También es compatible con react-hook-form: acepta el onChange estándar de HTML. */ onChange?: ((value: T | K) => void) | React.ChangeEventHandler; /** * Función que realiza la búsqueda y devuelve un Promise con los resultados */ onSearchPromiseFn: (text: string) => Promise | PaginationInterface>; /** * Función que busca un elemento individual usando su valor (K). * Se usa cuando hay un valor por defecto que no está presente en las opciones cargadas. * Recibe el valor (K) y devuelve una Promise con el objeto completo (T) o undefined si no se encuentra. */ onSingleSearchPromiseFn: (value: K) => Promise; /** * Callback al seleccionar una opción. Devuelve el item completo (T) y el valor mapeado (K) */ onSelectOption?: (option: T, value: K) => void; /** * Título del dialog de selección. Por defecto "Seleccione una opción" */ dialogTitle?: string; /** * Posición del botón de búsqueda. Por defecto "right" */ icon?: string; iconPosition?: "left" | "right"; /** * Texto a mostrar cuando no hay resultados */ noResultsText?: string; /** * Obtiene el label que se muestra para cada opción. Por defecto usa la propiedad "label". */ getOptionLabel?: (item: T) => string; /** * Obtiene el valor que se devuelve al seleccionar una opción. Por defecto usa la propiedad "value". */ getOptionValue?: (item: T) => K; /** * Obtiene la descripción opcional para cada opción. Por defecto usa la propiedad "description". */ getOptionDescription?: (item: T) => string | number | undefined; /** * Renderizado personalizado de cada opción. Si se define, se ignora el render por defecto. */ renderOption?: (item: T) => React.ReactNode; /** * Si es true, el input será de solo lectura. No se podrá modificar ni abrir el diálogo de selección. * Por defecto es false. */ readOnly?: boolean; } export declare const SearchSelectInput: (props: SearchSelectInputProps & { ref?: React.ForwardedRef; }) => React.ReactElement; //# sourceMappingURL=SearchSelectInput.d.ts.map