1 | import { ComponentType, ReactNode, MouseEventHandler, ReactElement } from 'react';
|
2 | import { CSSObject } from '@emotion/serialize';
|
3 |
|
4 | import { colors, spacing } from '../theme';
|
5 | import { CommonProps, InnerRef, OptionTypeBase, GroupTypeBase } from '../types';
|
6 |
|
7 | interface State {
|
8 |
|
9 | isDisabled: boolean;
|
10 |
|
11 | isFocused: boolean;
|
12 |
|
13 | isSelected: boolean;
|
14 | }
|
15 | interface InnerProps {
|
16 | id: string;
|
17 | key: string;
|
18 | onClick: MouseEventHandler<HTMLDivElement>;
|
19 | onMouseMove: MouseEventHandler<HTMLDivElement>;
|
20 | onMouseOver: MouseEventHandler<HTMLDivElement>;
|
21 | tabIndex: number;
|
22 | }
|
23 | export type OptionProps<
|
24 | OptionType extends OptionTypeBase,
|
25 | IsMulti extends boolean,
|
26 | GroupType extends GroupTypeBase<OptionType> = GroupTypeBase<OptionType>
|
27 | > = CommonProps<OptionType, IsMulti, GroupType> &
|
28 | State & {
|
29 |
|
30 | children: ReactNode;
|
31 |
|
32 | innerRef: InnerRef;
|
33 |
|
34 | innerProps: InnerProps;
|
35 |
|
36 | label: string;
|
37 | |
38 |
|
39 | type: 'option';
|
40 |
|
41 | data: any;
|
42 | };
|
43 |
|
44 | export function optionCSS(state: State): CSSObject;
|
45 |
|
46 | declare function Option<
|
47 | OptionType extends OptionTypeBase,
|
48 | IsMulti extends boolean,
|
49 | GroupType extends GroupTypeBase<OptionType> = GroupTypeBase<OptionType>
|
50 | // tslint:disable-next-line:no-unnecessary-generics
|
51 | >(props: OptionProps<OptionType, IsMulti, GroupType>): ReactElement;
|
52 |
|
53 | export default Option;
|