1 | import React from 'react';
|
2 | import { GroupBy } from './List';
|
3 | import { DataItem, RenderProp, Value } from './types';
|
4 | import { TextAccessor, DataKeyAccessor } from './Accessors';
|
5 | import { WidgetHTMLProps } from './shared';
|
6 | import { UserProvidedMessages } from './messages';
|
7 | export interface ListboxHandle {
|
8 | scrollIntoView(): void;
|
9 | }
|
10 | export declare type RenderItemProp<TDataItem> = RenderProp<{
|
11 | item: TDataItem;
|
12 | searchTerm?: string;
|
13 | index: number;
|
14 | text: string;
|
15 | value: unknown;
|
16 | disabled: boolean;
|
17 | }>;
|
18 | export declare type RenderGroupProp = RenderProp<{
|
19 | group: any;
|
20 | }>;
|
21 | export declare type SingleChangeHandler<TDataItem> = (dataItem: TDataItem, metadata: {
|
22 | lastValue: Value;
|
23 | originalEvent?: React.SyntheticEvent;
|
24 | }) => void;
|
25 | export declare type MultipleChangeHandler<TDataItem> = (dataItem: readonly TDataItem[], metadata: {
|
26 | action: 'insert' | 'remove';
|
27 | dataItem: TDataItem;
|
28 | lastValue: Value;
|
29 | originalEvent?: React.SyntheticEvent;
|
30 | }) => void;
|
31 | export 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 |
|
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 | }
|
51 | export interface SingleListboxProps<TDataItem> extends BaseListboxProps<TDataItem> {
|
52 | value?: Value;
|
53 | defaultValue?: Value;
|
54 | multiple?: false;
|
55 | onChange?: SingleChangeHandler<TDataItem>;
|
56 | }
|
57 | export interface MultipleListboxProps<TDataItem> extends BaseListboxProps<TDataItem> {
|
58 | value?: Value[];
|
59 | defaultValue?: Value[];
|
60 | multiple: true;
|
61 | onChange?: MultipleChangeHandler<TDataItem>;
|
62 | }
|
63 | export declare type ListboxProps<TDataItem> = SingleListboxProps<TDataItem> | MultipleListboxProps<TDataItem>;
|
64 | declare interface Listbox {
|
65 | <TDataItem = DataItem>(props: ListboxProps<TDataItem> & React.RefAttributes<ListboxHandle>): React.ReactElement | null;
|
66 | displayName?: string;
|
67 | propTypes?: any;
|
68 | }
|
69 | declare const Listbox: Listbox;
|
70 | export default Listbox;
|
71 |
|
\ | No newline at end of file |