1 | import { CSSObject } from '@emotion/react';
|
2 | import { Props } from './Select';
|
3 | import { StylesProps } from './styles';
|
4 | export interface GroupBase<Option> {
|
5 | readonly options: readonly Option[];
|
6 | readonly label?: string;
|
7 | }
|
8 | export declare type OptionsOrGroups<Option, Group extends GroupBase<Option>> = readonly (Option | Group)[];
|
9 | export declare type Options<Option> = readonly Option[];
|
10 | export declare type SingleValue<Option> = Option | null;
|
11 | export declare type MultiValue<Option> = readonly Option[];
|
12 | export declare type PropsValue<Option> = MultiValue<Option> | SingleValue<Option>;
|
13 | export declare type OnChangeValue<Option, IsMulti extends boolean> = IsMulti extends true ? MultiValue<Option> : SingleValue<Option>;
|
14 | export interface Colors {
|
15 | primary: string;
|
16 | primary75: string;
|
17 | primary50: string;
|
18 | primary25: string;
|
19 | danger: string;
|
20 | dangerLight: string;
|
21 | neutral0: string;
|
22 | neutral5: string;
|
23 | neutral10: string;
|
24 | neutral20: string;
|
25 | neutral30: string;
|
26 | neutral40: string;
|
27 | neutral50: string;
|
28 | neutral60: string;
|
29 | neutral70: string;
|
30 | neutral80: string;
|
31 | neutral90: string;
|
32 | }
|
33 | export interface ThemeSpacing {
|
34 | baseUnit: number;
|
35 | controlHeight: number;
|
36 | menuGutter: number;
|
37 | }
|
38 | export interface Theme {
|
39 | borderRadius: number;
|
40 | colors: Colors;
|
41 | spacing: ThemeSpacing;
|
42 | }
|
43 | export declare type ClassNamesState = {
|
44 | [key: string]: boolean;
|
45 | };
|
46 | export declare type CX = (state: ClassNamesState, ...classNames: (string | undefined)[]) => string;
|
47 | export declare type GetStyles<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = <Key extends keyof StylesProps<Option, IsMulti, Group>>(propertyName: Key, props: StylesProps<Option, IsMulti, Group>[Key]) => CSSObjectWithLabel;
|
48 | export interface CommonProps<Option, IsMulti extends boolean, Group extends GroupBase<Option>> {
|
49 | clearValue: () => void;
|
50 | cx: CX;
|
51 | |
52 |
|
53 |
|
54 |
|
55 |
|
56 | getStyles: GetStyles<Option, IsMulti, Group>;
|
57 | getClassNames: <Key extends keyof StylesProps<Option, IsMulti, Group>>(propertyName: Key, props: StylesProps<Option, IsMulti, Group>[Key]) => string | undefined;
|
58 | getValue: () => Options<Option>;
|
59 | hasValue: boolean;
|
60 | isMulti: boolean;
|
61 | isRtl: boolean;
|
62 | options: OptionsOrGroups<Option, Group>;
|
63 | selectOption: (newValue: Option) => void;
|
64 | selectProps: Props<Option, IsMulti, Group>;
|
65 | setValue: (newValue: OnChangeValue<Option, IsMulti>, action: SetValueAction, option?: Option) => void;
|
66 | theme: Theme;
|
67 | }
|
68 | export interface CommonPropsAndClassName<Option, IsMulti extends boolean, Group extends GroupBase<Option>> extends CommonProps<Option, IsMulti, Group> {
|
69 | className?: string | undefined;
|
70 | }
|
71 | export interface ActionMetaBase<Option> {
|
72 | option?: Option | undefined;
|
73 | removedValue?: Option;
|
74 | removedValues?: Options<Option>;
|
75 | name?: string;
|
76 | }
|
77 | export interface SelectOptionActionMeta<Option> extends ActionMetaBase<Option> {
|
78 | action: 'select-option';
|
79 | option: Option | undefined;
|
80 | name?: string;
|
81 | }
|
82 | export interface DeselectOptionActionMeta<Option> extends ActionMetaBase<Option> {
|
83 | action: 'deselect-option';
|
84 | option: Option | undefined;
|
85 | name?: string;
|
86 | }
|
87 | export interface RemoveValueActionMeta<Option> extends ActionMetaBase<Option> {
|
88 | action: 'remove-value';
|
89 | removedValue: Option;
|
90 | name?: string;
|
91 | }
|
92 | export interface PopValueActionMeta<Option> extends ActionMetaBase<Option> {
|
93 | action: 'pop-value';
|
94 | removedValue: Option;
|
95 | name?: string;
|
96 | }
|
97 | export interface ClearActionMeta<Option> extends ActionMetaBase<Option> {
|
98 | action: 'clear';
|
99 | removedValues: Options<Option>;
|
100 | name?: string;
|
101 | }
|
102 | export interface CreateOptionActionMeta<Option> extends ActionMetaBase<Option> {
|
103 | action: 'create-option';
|
104 | name?: string;
|
105 | option: Option;
|
106 | }
|
107 | export interface InitialInputFocusedActionMeta<Option, IsMulti extends boolean> extends ActionMetaBase<Option> {
|
108 | action: 'initial-input-focus';
|
109 | value: OnChangeValue<Option, IsMulti>;
|
110 | options?: Options<Option>;
|
111 | }
|
112 | export declare type ActionMeta<Option> = SelectOptionActionMeta<Option> | DeselectOptionActionMeta<Option> | RemoveValueActionMeta<Option> | PopValueActionMeta<Option> | ClearActionMeta<Option> | CreateOptionActionMeta<Option>;
|
113 | export declare type SetValueAction = 'select-option' | 'deselect-option';
|
114 | export declare type InputAction = 'set-value' | 'input-change' | 'input-blur' | 'menu-close';
|
115 | export interface InputActionMeta {
|
116 | action: InputAction;
|
117 |
|
118 | prevInputValue: string;
|
119 | }
|
120 | export declare type MenuPlacement = 'auto' | 'bottom' | 'top';
|
121 | export declare type CoercedMenuPlacement = 'bottom' | 'top';
|
122 | export declare type MenuPosition = 'absolute' | 'fixed';
|
123 | export declare type FocusDirection = 'up' | 'down' | 'pageup' | 'pagedown' | 'first' | 'last';
|
124 | export declare type GetOptionLabel<Option> = (option: Option) => string;
|
125 | export declare type GetOptionValue<Option> = (option: Option) => string;
|
126 | export declare type CSSObjectWithLabel = CSSObject & {
|
127 | label?: string;
|
128 | };
|