UNPKG

2.38 kBTypeScriptView Raw
1import React from 'react';
2import { GroupBy } from './List';
3import { DataItem, RenderProp, Value } from './types';
4import { TextAccessor, DataKeyAccessor } from './Accessors';
5import { WidgetHTMLProps } from './shared';
6import { UserProvidedMessages } from './messages';
7export interface ListboxHandle {
8 scrollIntoView(): void;
9}
10export declare type RenderItemProp<TDataItem> = RenderProp<{
11 item: TDataItem;
12 searchTerm?: string;
13 index: number;
14 text: string;
15 value: unknown;
16 disabled: boolean;
17}>;
18export declare type RenderGroupProp = RenderProp<{
19 group: any;
20}>;
21export declare type SingleChangeHandler<TDataItem> = (dataItem: TDataItem, metadata: {
22 lastValue: Value;
23 originalEvent?: React.SyntheticEvent;
24}) => void;
25export declare type MultipleChangeHandler<TDataItem> = (dataItem: readonly TDataItem[], metadata: {
26 action: 'insert' | 'remove';
27 dataItem: TDataItem;
28 lastValue: Value;
29 originalEvent?: React.SyntheticEvent;
30}) => void;
31export interface BaseListboxProps<TDataItem> extends WidgetHTMLProps {
32 data: TDataItem[];
33 defaultValue?: Value;
34 focusedItem?: TDataItem;
35 className?: string;
36 multiple?: boolean;
37 readOnly?: boolean;
38 /**
39 * @example false
40 */
41 disabled?: boolean | TDataItem[];
42 messages?: UserProvidedMessages;
43 renderItem?: RenderItemProp<TDataItem>;
44 renderGroup?: RenderGroupProp;
45 searchTerm?: string;
46 groupBy?: GroupBy<TDataItem>;
47 optionComponent?: React.ElementType;
48 textField?: TextAccessor;
49 dataKey?: DataKeyAccessor;
50}
51export interface SingleListboxProps<TDataItem> extends BaseListboxProps<TDataItem> {
52 value?: Value;
53 defaultValue?: Value;
54 multiple?: false;
55 onChange?: SingleChangeHandler<TDataItem>;
56}
57export interface MultipleListboxProps<TDataItem> extends BaseListboxProps<TDataItem> {
58 value?: Value[];
59 defaultValue?: Value[];
60 multiple: true;
61 onChange?: MultipleChangeHandler<TDataItem>;
62}
63export declare type ListboxProps<TDataItem> = SingleListboxProps<TDataItem> | MultipleListboxProps<TDataItem>;
64declare interface Listbox {
65 <TDataItem = DataItem>(props: ListboxProps<TDataItem> & React.RefAttributes<ListboxHandle>): React.ReactElement | null;
66 displayName?: string;
67 propTypes?: any;
68}
69declare const Listbox: Listbox;
70export default Listbox;
71//# sourceMappingURL=Listbox.d.ts.map
\No newline at end of file