import React from 'react'; import { GroupBy } from './List'; import { DataItem, RenderProp, Value } from './types'; import { TextAccessor, DataKeyAccessor } from './Accessors'; import { WidgetHTMLProps } from './shared'; import { UserProvidedMessages } from './messages'; export interface ListboxHandle { scrollIntoView(): void; } export declare type RenderItemProp = RenderProp<{ item: TDataItem; searchTerm?: string; index: number; text: string; value: unknown; disabled: boolean; }>; export declare type RenderGroupProp = RenderProp<{ group: any; }>; export declare type SingleChangeHandler = (dataItem: TDataItem, metadata: { lastValue: Value; originalEvent?: React.SyntheticEvent; }) => void; export declare type MultipleChangeHandler = (dataItem: readonly TDataItem[], metadata: { action: 'insert' | 'remove'; dataItem: TDataItem; lastValue: Value; originalEvent?: React.SyntheticEvent; }) => void; export interface BaseListboxProps extends WidgetHTMLProps { data: TDataItem[]; defaultValue?: Value; focusedItem?: TDataItem; className?: string; multiple?: boolean; readOnly?: boolean; /** * @example false */ disabled?: boolean | TDataItem[]; messages?: UserProvidedMessages; renderItem?: RenderItemProp; renderGroup?: RenderGroupProp; searchTerm?: string; groupBy?: GroupBy; optionComponent?: React.ElementType; textField?: TextAccessor; dataKey?: DataKeyAccessor; } export interface SingleListboxProps extends BaseListboxProps { value?: Value; defaultValue?: Value; multiple?: false; onChange?: SingleChangeHandler; } export interface MultipleListboxProps extends BaseListboxProps { value?: Value[]; defaultValue?: Value[]; multiple: true; onChange?: MultipleChangeHandler; } export declare type ListboxProps = SingleListboxProps | MultipleListboxProps; declare interface Listbox { (props: ListboxProps & React.RefAttributes): React.ReactElement | null; displayName?: string; propTypes?: any; } declare const Listbox: Listbox; export default Listbox; //# sourceMappingURL=Listbox.d.ts.map