1 | import * as React from 'react';
|
2 | import {StyletronComponent} from 'styletron-react';
|
3 | import {SIZE} from '../input';
|
4 | import {OnItemSelect} from '../menu';
|
5 | import {Override} from '../overrides';
|
6 | import {Locale} from '../locale';
|
7 |
|
8 | export {SIZE} from '../input';
|
9 |
|
10 | export interface TYPE {
|
11 | select: 'select';
|
12 | search: 'search';
|
13 | }
|
14 | export interface STATE_CHANGE_TYPE {
|
15 | select: 'select';
|
16 | remove: 'remove';
|
17 | clear: 'clear';
|
18 | }
|
19 |
|
20 | export interface Option {
|
21 | readonly id?: string | number;
|
22 | readonly label?: React.ReactNode;
|
23 | readonly disabled?: boolean;
|
24 | readonly clearableValue?: boolean;
|
25 | readonly isCreatable?: boolean;
|
26 | readonly __optgroup?: string;
|
27 | [others: string]: any;
|
28 | }
|
29 | export type Value = ReadonlyArray<Option>;
|
30 | export type OptgroupsT = {__ungrouped: Value; [key: string]: Value};
|
31 | export type OptionsT = Value | OptgroupsT;
|
32 |
|
33 | export type ChangeAction = () => any;
|
34 |
|
35 | export type filterOptions = (
|
36 | options: Value,
|
37 | filterValue: string,
|
38 | excludeOptions?: Value,
|
39 | newProps?: {
|
40 | filterOption?: (option: Option, filterValue: string) => boolean;
|
41 | ignoreCase?: boolean;
|
42 | labelKey?: string;
|
43 | matchPos?: 'any' | 'start';
|
44 | matchProp?: 'any' | 'label' | 'value';
|
45 | trimFilter?: boolean;
|
46 | valueKey?: string;
|
47 | },
|
48 | ) => Value;
|
49 |
|
50 | export interface SelectOverrides {
|
51 | Root?: Override<any>;
|
52 | ControlContainer?: Override<any>;
|
53 | Placeholder?: Override<any>;
|
54 | ValueContainer?: Override<any>;
|
55 | SingleValue?: Override<any>;
|
56 | MultiValue?: Override<any>;
|
57 | Tag?: Override<any>;
|
58 | InputContainer?: Override<any>;
|
59 | Input?: Override<any>;
|
60 | IconsContainer?: Override<any>;
|
61 | SelectArrow?: Override<any>;
|
62 | ClearIcon?: Override<any>;
|
63 | LoadingIndicator?: Override<any>;
|
64 | SearchIconContainer?: Override<any>;
|
65 | SearchIcon?: Override<any>;
|
66 | Popover?: Override<any>;
|
67 | DropdownContainer?: Override<any>;
|
68 | Dropdown?: Override<any>;
|
69 | DropdownOption?: Override<any>;
|
70 | DropdownListItem?: Override<any>;
|
71 | OptionContent?: Override<any>;
|
72 | StatefulMenu?: Override<any>;
|
73 | }
|
74 | export interface SelectProps {
|
75 | 'aria-label'?: string;
|
76 | 'aria-errormessage'?: string;
|
77 | 'aria-describedby'?: string;
|
78 | 'aria-labelledby'?: string;
|
79 | autoFocus?: boolean;
|
80 | backspaceRemoves?: boolean;
|
81 | backspaceClearsInputValue?: boolean;
|
82 | clearable?: boolean;
|
83 | closeOnSelect?: boolean;
|
84 | creatable?: boolean;
|
85 | deleteRemoves?: boolean;
|
86 | disabled?: boolean;
|
87 | error?: boolean;
|
88 | positive?: boolean;
|
89 | escapeClearsValue?: boolean;
|
90 | filterOptions?: (
|
91 | options: Value,
|
92 | filterValue: string,
|
93 | excludeOptions?: Value,
|
94 | newProps?: {valueKey: string; labelKey: string},
|
95 | ) => Value;
|
96 | filterOutSelected?: boolean;
|
97 | getOptionLabel?: (args: {
|
98 | option?: Option;
|
99 | optionState: {
|
100 | $selected?: boolean;
|
101 | $disabled?: boolean;
|
102 | $isHighlighted?: boolean;
|
103 | };
|
104 | }) => React.ReactNode;
|
105 | getValueLabel?: (args: {option: Option}) => React.ReactNode;
|
106 | id?: string;
|
107 | controlRef?: React.Ref<HTMLInputElement | HTMLDivElement>;
|
108 | isLoading?: boolean;
|
109 | labelKey?: string;
|
110 | startOpen?: boolean;
|
111 | maxDropdownHeight?: string;
|
112 | multi?: boolean;
|
113 | noResultsMsg?: React.ReactNode;
|
114 | onBlur?: (e: Event) => any;
|
115 | onBlurResetsInput?: boolean;
|
116 | onChange?: (params: OnChangeParams) => any;
|
117 | onFocus?: React.FocusEventHandler<HTMLElement>;
|
118 | onInputChange?: React.FormEventHandler<HTMLInputElement>;
|
119 | onCloseResetsInput?: boolean;
|
120 | onSelectResetsInput?: boolean;
|
121 | onOpen?: () => any;
|
122 | onClose?: () => any;
|
123 | openOnClick?: boolean;
|
124 | options?: OptionsT;
|
125 | overrides?: SelectOverrides;
|
126 | placeholder?: React.ReactNode;
|
127 | required?: boolean;
|
128 | searchable?: boolean;
|
129 | size?: SIZE[keyof SIZE];
|
130 | type?: TYPE[keyof TYPE];
|
131 | value?: Value;
|
132 | valueKey?: string;
|
133 | mountNode?: HTMLElement;
|
134 | }
|
135 | export interface SelectState {
|
136 | activeDescendant: string | null;
|
137 | inputValue: string;
|
138 | isFocused: boolean;
|
139 | isOpen: boolean;
|
140 | isPseudoFocused: boolean;
|
141 | }
|
142 | export class Select extends React.Component<SelectProps, SelectState> {
|
143 | focus(): void;
|
144 | handleTouchOutside(event: TouchEvent): void;
|
145 | handleTouchMove(): void;
|
146 | handleTouchStart(): void;
|
147 | handleTouchEnd(event: TouchEvent): void;
|
148 | handleTouchEndClearValue(event: TouchEvent): void;
|
149 | handleClick(event: MouseEvent | TouchEvent): void;
|
150 | closeMenu(): void;
|
151 | handleInputFocus(event: React.FocusEvent<HTMLElement>): void;
|
152 | handleBlur(event: Event): void;
|
153 | handleClickOutside(event: MouseEvent): void;
|
154 | handleInputChange(event: React.FormEvent<HTMLInputElement>): void;
|
155 | handleKeyDown(event: KeyboardEvent): void;
|
156 | getOptionLabel(
|
157 | locale: Locale,
|
158 | {
|
159 | option,
|
160 | }: {
|
161 | option: Option;
|
162 | optionState: {
|
163 | $selected: boolean;
|
164 | $disabled: boolean;
|
165 | $isHighlighted: boolean;
|
166 | };
|
167 | },
|
168 | ): React.ReactNode;
|
169 | getValueLabel({option}: {option: Option}): React.ReactNode;
|
170 | getValueArray(value: Value): Option[];
|
171 | setValue(value: Value, option: Option, type: ChangeAction): void;
|
172 | selectValue({item}: {item: Option}): void;
|
173 | addValue(item: Option): void;
|
174 | popValue(): void;
|
175 | removeValue(item: Option): void;
|
176 | clearValue(event: KeyboardEvent | MouseEvent | TouchEvent): void;
|
177 | renderLoading(): React.ReactNode;
|
178 | renderValue(
|
179 | valueArray: Value,
|
180 | isOpen: boolean,
|
181 | locale: Locale,
|
182 | ): React.ReactNode;
|
183 | renderInput(): React.ReactNode;
|
184 | renderClear(): React.ReactNode;
|
185 | renderArrow(): React.ReactNode;
|
186 | renderSearch(): React.ReactNode;
|
187 | filterOption(excludeOptions?: Value): Value;
|
188 | getSharedProps(): {
|
189 | $clearable: boolean;
|
190 | $creatable: boolean;
|
191 | $disabled: boolean;
|
192 | $error: boolean;
|
193 | $positive: boolean;
|
194 | $isFocused: boolean;
|
195 | $isLoading: boolean;
|
196 | $isOpen: boolean;
|
197 | $isPseudoFocused: boolean;
|
198 | $multi: boolean;
|
199 | $required: boolean;
|
200 | $searchable: boolean;
|
201 | $size: SIZE[keyof SIZE];
|
202 | $type: TYPE[keyof TYPE];
|
203 | };
|
204 | }
|
205 |
|
206 | export const SingleValue: React.FC<any>;
|
207 | export const MultiValue: React.FC<any>;
|
208 |
|
209 | export interface AutosizeInputOverrides {
|
210 | Input?: Override<any>;
|
211 | }
|
212 | export interface AutosizeInputProps {
|
213 | value?: string;
|
214 | defaultValue?: string;
|
215 | inputRef?: React.Ref<any>;
|
216 | overrides?: AutosizeInputOverrides;
|
217 | $size?: SIZE[keyof SIZE];
|
218 | }
|
219 | export interface AutosizeInputState {
|
220 | inputWidth: number;
|
221 | }
|
222 | export class AutosizeInput extends React.Component<
|
223 | AutosizeInputProps,
|
224 | AutosizeInputState
|
225 | > {
|
226 | sizerRef(el?: HTMLElement): void;
|
227 | updateInputWidth(): void;
|
228 | }
|
229 |
|
230 | export interface DropdownOverrides {
|
231 | DropdownContainer?: Override<any>;
|
232 | Dropdown?: Override<any>;
|
233 | DropdownOption?: Override<any>;
|
234 | DropdownListItem?: Override<any>;
|
235 | OptionContent?: Override<any>;
|
236 | StatefulMenu?: Override<any>;
|
237 | }
|
238 | export interface DropdownProps {
|
239 | error?: boolean;
|
240 | getOptionLabel?: (args: {
|
241 | option: Option;
|
242 | optionState: {
|
243 | $selected: boolean;
|
244 | $disabled: boolean;
|
245 | $isHighlighted: boolean;
|
246 | };
|
247 | }) => React.ReactNode;
|
248 | id?: string;
|
249 | innerRef?: React.Ref<any>;
|
250 | isLoading?: boolean;
|
251 | labelKey?: string;
|
252 | maxDropdownHeight?: string;
|
253 | multi?: boolean;
|
254 | onActiveDescendantChange?: (id?: string) => void;
|
255 | noResultsMsg?: React.ReactNode;
|
256 | onItemSelect?: OnItemSelect;
|
257 | options?: Value;
|
258 | overrides?: DropdownOverrides;
|
259 | required?: boolean;
|
260 | searchable?: boolean;
|
261 | size?: SIZE[keyof SIZE];
|
262 | type?: TYPE[keyof TYPE];
|
263 | value?: Value;
|
264 | valueKey?: string;
|
265 | width?: number;
|
266 | keyboardControlNode?: React.Ref<any>;
|
267 | }
|
268 | export class SelectDropdown extends React.Component<DropdownProps> {
|
269 | getSharedProps(): {
|
270 | $error: boolean;
|
271 | $isLoading: boolean;
|
272 | $multi: boolean;
|
273 | $required: boolean;
|
274 | $searchable: boolean;
|
275 | $size: SIZE[keyof SIZE];
|
276 | $type: TYPE[keyof TYPE];
|
277 | $width: number;
|
278 | };
|
279 | getItemLabel(option: {[key: string]: any}): React.ReactNode;
|
280 | onMouseDown(e: Event): void;
|
281 | }
|
282 |
|
283 | export interface State {
|
284 | value: Value;
|
285 | }
|
286 | export type StateReducer = (
|
287 | stateType: string,
|
288 | nextState: State,
|
289 | currentState: State,
|
290 | ) => State;
|
291 | export interface OnChangeParams {
|
292 | value: Value;
|
293 | option?: Option;
|
294 | type?: STATE_CHANGE_TYPE[keyof STATE_CHANGE_TYPE];
|
295 | }
|
296 | export type StatefulSelectProps = SelectProps & {
|
297 | initialState?: State;
|
298 | stateReducer?: StateReducer;
|
299 | };
|
300 | export const StatefulSelect: React.FC<StatefulSelectProps>;
|
301 |
|
302 | export interface StatefulContainerProps {
|
303 | overrides?: SelectOverrides;
|
304 | children?: React.ReactNode;
|
305 | initialState?: State;
|
306 | stateReducer?: StateReducer;
|
307 | onChange?: (params: OnChangeParams) => any;
|
308 | }
|
309 | export class StatefulSelectContainer extends React.Component<
|
310 | StatefulContainerProps,
|
311 | State
|
312 | > {
|
313 | onChange(params: OnChangeParams): void;
|
314 | internalSetState(params: OnChangeParams): void;
|
315 | }
|
316 |
|
317 | export const StyledRoot: StyletronComponent<any>;
|
318 | export const StyledControlContainer: StyletronComponent<any>;
|
319 | export const StyledValueContainer: StyletronComponent<any>;
|
320 | export const StyledPlaceholder: StyletronComponent<any>;
|
321 | export const StyledSingleValue: StyletronComponent<any>;
|
322 | export const StyledInputContainer: StyletronComponent<any>;
|
323 | export const StyledInput: StyletronComponent<any>;
|
324 | export const StyledInputSizer: StyletronComponent<any>;
|
325 | export const StyledIconsContainer: StyletronComponent<any>;
|
326 | export const StyledSelectArrow: StyletronComponent<any>;
|
327 | export const StyledClearIcon: StyletronComponent<any>;
|
328 | export const StyledSearchIconContainer: StyletronComponent<any>;
|
329 |
|
330 | export const StyledSearchIcon: StyletronComponent<any>;
|
331 | export const StyledDropdownContainer: StyletronComponent<any>;
|
332 | export const StyledDropdown: StyletronComponent<any>;
|
333 | export const StyledDropdownListItem: StyletronComponent<any>;
|
334 | export const StyledOptionContent: StyletronComponent<any>;
|
335 |
|
336 | export const TYPE: TYPE;
|
337 | export const STATE_CHANGE_TYPE: STATE_CHANGE_TYPE;
|