@ringcentral/juno 1.12.3-beta.5791-ea7a35ca → 1.12.3-beta.5828-dc41552f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/components/Buttons/Button/Button.d.ts +2 -2
  2. package/components/Buttons/Button/styles/StyledButton.js +4 -2
  3. package/components/Card/Card/Card.d.ts +2 -2
  4. package/components/Chip/Chip.d.ts +10 -3
  5. package/components/Chip/Chip.js +5 -3
  6. package/components/Chip/styles/ChipStyle.js +5 -4
  7. package/components/Chip/utils/ChipUtils.d.ts +1 -1
  8. package/components/Chip/utils/ChipUtils.js +1 -1
  9. package/components/Dialer/DialTextField/DialTextField.d.ts +1 -1
  10. package/components/Downshift/Downshift.d.ts +20 -9
  11. package/components/Downshift/Downshift.js +15 -5
  12. package/components/Downshift/SuggestionList/SuggestionList.d.ts +2 -2
  13. package/components/Downshift/SuggestionList/SuggestionList.js +12 -6
  14. package/components/Downshift/SuggestionList/utils/index.d.ts +1 -0
  15. package/components/Downshift/SuggestionList/utils/index.js +1 -0
  16. package/components/Downshift/SuggestionList/utils/useSuggestionList.d.ts +298 -0
  17. package/components/Downshift/SuggestionList/utils/useSuggestionList.js +239 -0
  18. package/components/Downshift/styles/StyledTextField.d.ts +1 -1
  19. package/components/Downshift/utils/DownshiftUtils.d.ts +12 -0
  20. package/components/Downshift/utils/DownshiftUtils.js +19 -1
  21. package/components/Downshift/utils/SelectItem.d.ts +19 -0
  22. package/components/Downshift/utils/useDownshift.d.ts +5 -2
  23. package/components/Downshift/utils/useDownshift.interface.d.ts +5 -0
  24. package/components/Downshift/utils/useDownshift.js +31 -13
  25. package/components/Downshift/utils/useDownshiftGroup.d.ts +7 -7
  26. package/components/Downshift/utils/useDownshiftGroup.js +45 -19
  27. package/components/Forms/Picker/TimePicker/NumberPicker.js +1 -3
  28. package/components/Forms/Picker/TimePicker/utils/TimePickerHelper.js +1 -1
  29. package/components/Forms/Picker/styles/StyledPickerTextField.d.ts +1 -1
  30. package/components/Forms/Select/PlainSelect/PlainSelect.d.ts +1 -1
  31. package/components/Forms/Select/PlainSelect/PlainSelect.js +5 -4
  32. package/components/Forms/Select/PlainSelect/styles/StyledSelect.js +4 -3
  33. package/components/Forms/Select/Select.d.ts +2 -2
  34. package/components/Forms/Select/Select.js +2 -2
  35. package/components/Forms/Select/styles/StyledSelect.js +22 -18
  36. package/components/Forms/TextField/TextField.d.ts +4 -2
  37. package/components/Forms/TextField/TextField.js +2 -2
  38. package/components/Forms/TextField/styles/OutlineTextFieldStyle.js +4 -2
  39. package/components/Forms/TextField/styles/TextFieldStyle.js +8 -4
  40. package/components/Forms/Textarea/Textarea.d.ts +1 -1
  41. package/components/Menu/SubMenu/SubMenu.js +1 -1
  42. package/components/Virtuoso/utils/useHighlightScroll.d.ts +1 -1
  43. package/es6/components/Buttons/Button/styles/StyledButton.js +4 -2
  44. package/es6/components/Chip/Chip.js +6 -4
  45. package/es6/components/Chip/styles/ChipStyle.js +6 -5
  46. package/es6/components/Chip/utils/ChipUtils.js +1 -1
  47. package/es6/components/Downshift/Downshift.js +16 -7
  48. package/es6/components/Downshift/SuggestionList/SuggestionList.js +13 -7
  49. package/es6/components/Downshift/SuggestionList/utils/index.js +1 -0
  50. package/es6/components/Downshift/SuggestionList/utils/useSuggestionList.js +237 -0
  51. package/es6/components/Downshift/utils/DownshiftUtils.js +19 -1
  52. package/es6/components/Downshift/utils/useDownshift.js +31 -13
  53. package/es6/components/Downshift/utils/useDownshiftGroup.js +46 -20
  54. package/es6/components/Forms/Picker/TimePicker/NumberPicker.js +1 -3
  55. package/es6/components/Forms/Picker/TimePicker/utils/TimePickerHelper.js +1 -1
  56. package/es6/components/Forms/Select/PlainSelect/PlainSelect.js +5 -4
  57. package/es6/components/Forms/Select/PlainSelect/styles/StyledSelect.js +4 -3
  58. package/es6/components/Forms/Select/Select.js +2 -2
  59. package/es6/components/Forms/Select/styles/StyledSelect.js +24 -20
  60. package/es6/components/Forms/TextField/TextField.js +2 -2
  61. package/es6/components/Forms/TextField/styles/OutlineTextFieldStyle.js +5 -3
  62. package/es6/components/Forms/TextField/styles/TextFieldStyle.js +9 -5
  63. package/es6/components/Menu/SubMenu/SubMenu.js +1 -1
  64. package/es6/foundation/hooks/useAnnouncer/useAnnouncer.js +7 -0
  65. package/es6/foundation/hooks/useKeyboardMoveFocus/useKeyboardMoveFocus.js +2 -1
  66. package/foundation/hooks/useAnnouncer/useAnnouncer.d.ts +7 -0
  67. package/foundation/hooks/useAnnouncer/useAnnouncer.js +7 -0
  68. package/foundation/hooks/useKeyboardMoveFocus/useKeyboardMoveFocus.js +2 -1
  69. package/package.json +3 -3
@@ -0,0 +1,298 @@
1
+ /// <reference types="styled-jsx" />
2
+ import { HTMLAttributes } from 'react';
3
+ import { RcIconButtonProps } from '../../../Buttons/IconButton';
4
+ import { RcDownshiftProps } from '../../Downshift';
5
+ import { RcDownshiftGetItemPropsOptions, RcDownshiftHighlightChangeReason, RcDownshiftSelectedItem } from '../../utils';
6
+ declare type UseDownshiftParams<T = RcDownshiftSelectedItem> = {
7
+ /** that input ref you binding event */
8
+ inputRef: React.RefObject<HTMLInputElement>;
9
+ /** emit when item be select */
10
+ onSelect?: (event: React.ChangeEvent<{}>, selectedItems: T) => void;
11
+ } & Pick<RcDownshiftProps<T>, 'options' | 'value' | 'getOptionLabel' | 'filterOptions' | 'inputValue' | 'onInputChange' | 'onKeyDown' | 'onClear' | 'getOptionDisabled' | 'disabledItemsHighlightable' | 'variant' | 'groupBy' | 'getExpandIconProps' | 'groupExpanded' | 'groupDefaultExpanded' | 'onGroupExpanded' | 'groupVariant'>;
12
+ /**
13
+ * provide suggestion list with search function and expandable group with virtualized list
14
+ */
15
+ export declare const useSuggestionList: <T extends RcDownshiftSelectedItem = RcDownshiftSelectedItem>({ inputValue: inputValueProp, getOptionLabel, filterOptions, disabledItemsHighlightable, options, onInputChange: onInputChangeProp, inputRef, onKeyDown: onKeyDownProp, onSelect, onClear, getOptionDisabled, groupBy, onGroupExpanded, groupVariant, groupExpanded, groupDefaultExpanded, getExpandIconProps, }: UseDownshiftParams<T>) => {
16
+ focusInput: () => void | undefined;
17
+ getClearButtonProps: (props?: RcIconButtonProps | undefined) => RcIconButtonProps;
18
+ getLabelProps: (props?: Partial<import("@material-ui/core").InputLabelProps> | undefined) => Partial<import("@material-ui/core").InputLabelProps>;
19
+ getMenuProps: (restMenuProps?: HTMLAttributes<HTMLElement> | undefined) => HTMLAttributes<HTMLElement>;
20
+ getInputProps: (props?: Partial<import("@material-ui/core").InputProps> | undefined) => Partial<import("@material-ui/core").InputProps>;
21
+ getInputAriaProps: (props?: import("@material-ui/core").InputBaseComponentProps | undefined) => import("@material-ui/core").InputBaseComponentProps;
22
+ getItemProps: ({ item, index, ...itemRest }: RcDownshiftGetItemPropsOptions<T>) => {
23
+ isSelected?: boolean | undefined;
24
+ disabled?: boolean | undefined;
25
+ ref?: import("react").RefObject<any> | undefined;
26
+ defaultChecked?: boolean | undefined;
27
+ defaultValue?: string | number | readonly string[] | undefined;
28
+ suppressContentEditableWarning?: boolean | undefined;
29
+ suppressHydrationWarning?: boolean | undefined;
30
+ accessKey?: string | undefined;
31
+ className?: string | undefined;
32
+ contentEditable?: boolean | "inherit" | "true" | "false" | undefined;
33
+ contextMenu?: string | undefined;
34
+ dir?: string | undefined;
35
+ draggable?: boolean | "true" | "false" | undefined;
36
+ hidden?: boolean | undefined;
37
+ id?: string | undefined;
38
+ lang?: string | undefined;
39
+ placeholder?: string | undefined;
40
+ slot?: string | undefined;
41
+ spellCheck?: boolean | "true" | "false" | undefined;
42
+ style?: import("react").CSSProperties | undefined;
43
+ tabIndex?: number | undefined;
44
+ title?: string | undefined;
45
+ translate?: "no" | "yes" | undefined;
46
+ radioGroup?: string | undefined;
47
+ role?: "alert" | "alertdialog" | "application" | "article" | "banner" | "button" | "cell" | "checkbox" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "dialog" | "directory" | "document" | "feed" | "figure" | "form" | "grid" | "gridcell" | "group" | "heading" | "img" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem" | (string & {}) | undefined;
48
+ about?: string | undefined;
49
+ datatype?: string | undefined;
50
+ inlist?: any;
51
+ prefix?: string | undefined;
52
+ property?: string | undefined;
53
+ resource?: string | undefined;
54
+ typeof?: string | undefined;
55
+ vocab?: string | undefined;
56
+ autoCapitalize?: string | undefined;
57
+ autoCorrect?: string | undefined;
58
+ autoSave?: string | undefined;
59
+ color?: string | undefined;
60
+ itemProp?: string | undefined;
61
+ itemScope?: boolean | undefined;
62
+ itemType?: string | undefined;
63
+ itemID?: string | undefined;
64
+ itemRef?: string | undefined;
65
+ results?: number | undefined;
66
+ security?: string | undefined;
67
+ unselectable?: "off" | "on" | undefined;
68
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
69
+ is?: string | undefined;
70
+ 'aria-activedescendant'?: string | undefined;
71
+ 'aria-atomic'?: boolean | "true" | "false" | undefined;
72
+ 'aria-autocomplete'?: "list" | "none" | "inline" | "both" | undefined;
73
+ 'aria-busy'?: boolean | "true" | "false" | undefined;
74
+ 'aria-checked'?: boolean | "true" | "false" | "mixed" | undefined;
75
+ 'aria-colcount'?: number | undefined;
76
+ 'aria-colindex'?: number | undefined;
77
+ 'aria-colspan'?: number | undefined;
78
+ 'aria-controls'?: string | undefined;
79
+ 'aria-current'?: boolean | "true" | "false" | "page" | "step" | "location" | "date" | "time" | undefined;
80
+ 'aria-describedby'?: string | undefined;
81
+ 'aria-details'?: string | undefined;
82
+ 'aria-disabled'?: boolean | "true" | "false" | undefined;
83
+ 'aria-dropeffect'?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
84
+ 'aria-errormessage'?: string | undefined;
85
+ 'aria-expanded'?: boolean | "true" | "false" | undefined;
86
+ 'aria-flowto'?: string | undefined;
87
+ 'aria-grabbed'?: boolean | "true" | "false" | undefined;
88
+ 'aria-haspopup'?: boolean | "dialog" | "grid" | "listbox" | "menu" | "tree" | "true" | "false" | undefined;
89
+ 'aria-hidden'?: boolean | "true" | "false" | undefined;
90
+ 'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
91
+ 'aria-keyshortcuts'?: string | undefined;
92
+ 'aria-label'?: string | undefined;
93
+ 'aria-labelledby'?: string | undefined;
94
+ 'aria-level'?: number | undefined;
95
+ 'aria-live'?: "off" | "assertive" | "polite" | undefined;
96
+ 'aria-modal'?: boolean | "true" | "false" | undefined;
97
+ 'aria-multiline'?: boolean | "true" | "false" | undefined;
98
+ 'aria-multiselectable'?: boolean | "true" | "false" | undefined;
99
+ 'aria-orientation'?: "horizontal" | "vertical" | undefined;
100
+ 'aria-owns'?: string | undefined;
101
+ 'aria-placeholder'?: string | undefined;
102
+ 'aria-posinset'?: number | undefined;
103
+ 'aria-pressed'?: boolean | "true" | "false" | "mixed" | undefined;
104
+ 'aria-readonly'?: boolean | "true" | "false" | undefined;
105
+ 'aria-relevant'?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
106
+ 'aria-required'?: boolean | "true" | "false" | undefined;
107
+ 'aria-roledescription'?: string | undefined;
108
+ 'aria-rowcount'?: number | undefined;
109
+ 'aria-rowindex'?: number | undefined;
110
+ 'aria-rowspan'?: number | undefined;
111
+ 'aria-selected'?: boolean | "true" | "false" | undefined;
112
+ 'aria-setsize'?: number | undefined;
113
+ 'aria-sort'?: "none" | "ascending" | "descending" | "other" | undefined;
114
+ 'aria-valuemax'?: number | undefined;
115
+ 'aria-valuemin'?: number | undefined;
116
+ 'aria-valuenow'?: number | undefined;
117
+ 'aria-valuetext'?: string | undefined;
118
+ children?: import("react").ReactNode;
119
+ dangerouslySetInnerHTML?: {
120
+ __html: string;
121
+ } | undefined;
122
+ onCopy?: ((event: import("react").ClipboardEvent<HTMLElement>) => void) | undefined;
123
+ onCopyCapture?: ((event: import("react").ClipboardEvent<HTMLElement>) => void) | undefined;
124
+ onCut?: ((event: import("react").ClipboardEvent<HTMLElement>) => void) | undefined;
125
+ onCutCapture?: ((event: import("react").ClipboardEvent<HTMLElement>) => void) | undefined;
126
+ onPaste?: ((event: import("react").ClipboardEvent<HTMLElement>) => void) | undefined;
127
+ onPasteCapture?: ((event: import("react").ClipboardEvent<HTMLElement>) => void) | undefined;
128
+ onCompositionEnd?: ((event: import("react").CompositionEvent<HTMLElement>) => void) | undefined;
129
+ onCompositionEndCapture?: ((event: import("react").CompositionEvent<HTMLElement>) => void) | undefined;
130
+ onCompositionStart?: ((event: import("react").CompositionEvent<HTMLElement>) => void) | undefined;
131
+ onCompositionStartCapture?: ((event: import("react").CompositionEvent<HTMLElement>) => void) | undefined;
132
+ onCompositionUpdate?: ((event: import("react").CompositionEvent<HTMLElement>) => void) | undefined;
133
+ onCompositionUpdateCapture?: ((event: import("react").CompositionEvent<HTMLElement>) => void) | undefined;
134
+ onFocus?: ((event: import("react").FocusEvent<HTMLElement, Element>) => void) | undefined;
135
+ onFocusCapture?: ((event: import("react").FocusEvent<HTMLElement, Element>) => void) | undefined;
136
+ onBlur?: ((event: import("react").FocusEvent<HTMLElement, Element>) => void) | undefined;
137
+ onBlurCapture?: ((event: import("react").FocusEvent<HTMLElement, Element>) => void) | undefined;
138
+ onChange?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
139
+ onChangeCapture?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
140
+ onBeforeInput?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
141
+ onBeforeInputCapture?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
142
+ onInput?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
143
+ onInputCapture?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
144
+ onReset?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
145
+ onResetCapture?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
146
+ onSubmit?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
147
+ onSubmitCapture?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
148
+ onInvalid?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
149
+ onInvalidCapture?: ((event: import("react").FormEvent<HTMLElement>) => void) | undefined;
150
+ onLoad?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
151
+ onLoadCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
152
+ onError?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
153
+ onErrorCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
154
+ onKeyDown?: ((event: import("react").KeyboardEvent<HTMLElement>) => void) | undefined;
155
+ onKeyDownCapture?: ((event: import("react").KeyboardEvent<HTMLElement>) => void) | undefined;
156
+ onKeyPress?: ((event: import("react").KeyboardEvent<HTMLElement>) => void) | undefined;
157
+ onKeyPressCapture?: ((event: import("react").KeyboardEvent<HTMLElement>) => void) | undefined;
158
+ onKeyUp?: ((event: import("react").KeyboardEvent<HTMLElement>) => void) | undefined;
159
+ onKeyUpCapture?: ((event: import("react").KeyboardEvent<HTMLElement>) => void) | undefined;
160
+ onAbort?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
161
+ onAbortCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
162
+ onCanPlay?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
163
+ onCanPlayCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
164
+ onCanPlayThrough?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
165
+ onCanPlayThroughCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
166
+ onDurationChange?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
167
+ onDurationChangeCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
168
+ onEmptied?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
169
+ onEmptiedCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
170
+ onEncrypted?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
171
+ onEncryptedCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
172
+ onEnded?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
173
+ onEndedCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
174
+ onLoadedData?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
175
+ onLoadedDataCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
176
+ onLoadedMetadata?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
177
+ onLoadedMetadataCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
178
+ onLoadStart?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
179
+ onLoadStartCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
180
+ onPause?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
181
+ onPauseCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
182
+ onPlay?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
183
+ onPlayCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
184
+ onPlaying?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
185
+ onPlayingCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
186
+ onProgress?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
187
+ onProgressCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
188
+ onRateChange?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
189
+ onRateChangeCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
190
+ onSeeked?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
191
+ onSeekedCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
192
+ onSeeking?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
193
+ onSeekingCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
194
+ onStalled?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
195
+ onStalledCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
196
+ onSuspend?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
197
+ onSuspendCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
198
+ onTimeUpdate?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
199
+ onTimeUpdateCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
200
+ onVolumeChange?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
201
+ onVolumeChangeCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
202
+ onWaiting?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
203
+ onWaitingCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
204
+ onAuxClick?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
205
+ onAuxClickCapture?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
206
+ onClick?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
207
+ onClickCapture?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
208
+ onContextMenu?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
209
+ onContextMenuCapture?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
210
+ onDoubleClick?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
211
+ onDoubleClickCapture?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
212
+ onDrag?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
213
+ onDragCapture?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
214
+ onDragEnd?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
215
+ onDragEndCapture?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
216
+ onDragEnter?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
217
+ onDragEnterCapture?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
218
+ onDragExit?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
219
+ onDragExitCapture?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
220
+ onDragLeave?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
221
+ onDragLeaveCapture?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
222
+ onDragOver?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
223
+ onDragOverCapture?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
224
+ onDragStart?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
225
+ onDragStartCapture?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
226
+ onDrop?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
227
+ onDropCapture?: ((event: import("react").DragEvent<HTMLElement>) => void) | undefined;
228
+ onMouseDown?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
229
+ onMouseDownCapture?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
230
+ onMouseEnter?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
231
+ onMouseLeave?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
232
+ onMouseMove?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
233
+ onMouseMoveCapture?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
234
+ onMouseOut?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
235
+ onMouseOutCapture?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
236
+ onMouseOver?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
237
+ onMouseOverCapture?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
238
+ onMouseUp?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
239
+ onMouseUpCapture?: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
240
+ onSelect?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
241
+ onSelectCapture?: ((event: import("react").SyntheticEvent<HTMLElement, Event>) => void) | undefined;
242
+ onTouchCancel?: ((event: import("react").TouchEvent<HTMLElement>) => void) | undefined;
243
+ onTouchCancelCapture?: ((event: import("react").TouchEvent<HTMLElement>) => void) | undefined;
244
+ onTouchEnd?: ((event: import("react").TouchEvent<HTMLElement>) => void) | undefined;
245
+ onTouchEndCapture?: ((event: import("react").TouchEvent<HTMLElement>) => void) | undefined;
246
+ onTouchMove?: ((event: import("react").TouchEvent<HTMLElement>) => void) | undefined;
247
+ onTouchMoveCapture?: ((event: import("react").TouchEvent<HTMLElement>) => void) | undefined;
248
+ onTouchStart?: ((event: import("react").TouchEvent<HTMLElement>) => void) | undefined;
249
+ onTouchStartCapture?: ((event: import("react").TouchEvent<HTMLElement>) => void) | undefined;
250
+ onPointerDown?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
251
+ onPointerDownCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
252
+ onPointerMove?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
253
+ onPointerMoveCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
254
+ onPointerUp?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
255
+ onPointerUpCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
256
+ onPointerCancel?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
257
+ onPointerCancelCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
258
+ onPointerEnter?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
259
+ onPointerEnterCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
260
+ onPointerLeave?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
261
+ onPointerLeaveCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
262
+ onPointerOver?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
263
+ onPointerOverCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
264
+ onPointerOut?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
265
+ onPointerOutCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
266
+ onGotPointerCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
267
+ onGotPointerCaptureCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
268
+ onLostPointerCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
269
+ onLostPointerCaptureCapture?: ((event: import("react").PointerEvent<HTMLElement>) => void) | undefined;
270
+ onScroll?: ((event: import("react").UIEvent<HTMLElement, UIEvent>) => void) | undefined;
271
+ onScrollCapture?: ((event: import("react").UIEvent<HTMLElement, UIEvent>) => void) | undefined;
272
+ onWheel?: ((event: import("react").WheelEvent<HTMLElement>) => void) | undefined;
273
+ onWheelCapture?: ((event: import("react").WheelEvent<HTMLElement>) => void) | undefined;
274
+ onAnimationStart?: ((event: import("react").AnimationEvent<HTMLElement>) => void) | undefined;
275
+ onAnimationStartCapture?: ((event: import("react").AnimationEvent<HTMLElement>) => void) | undefined;
276
+ onAnimationEnd?: ((event: import("react").AnimationEvent<HTMLElement>) => void) | undefined;
277
+ onAnimationEndCapture?: ((event: import("react").AnimationEvent<HTMLElement>) => void) | undefined;
278
+ onAnimationIteration?: ((event: import("react").AnimationEvent<HTMLElement>) => void) | undefined;
279
+ onAnimationIterationCapture?: ((event: import("react").AnimationEvent<HTMLElement>) => void) | undefined;
280
+ onTransitionEnd?: ((event: import("react").TransitionEvent<HTMLElement>) => void) | undefined;
281
+ onTransitionEndCapture?: ((event: import("react").TransitionEvent<HTMLElement>) => void) | undefined;
282
+ };
283
+ highlightedIndex: number;
284
+ optionItems: T[];
285
+ inputValue: string;
286
+ onInputChange: (newValue: string) => boolean;
287
+ setHighlightedIndex: (index: number, { reRender, reason, }: {
288
+ reRender?: boolean | undefined;
289
+ reason?: RcDownshiftHighlightChangeReason;
290
+ }) => void;
291
+ changeHighlightedIndexReason: RcDownshiftHighlightChangeReason;
292
+ reset: (isFocus?: boolean | undefined) => void;
293
+ forceUpdate: () => void;
294
+ optionsGroupList: import("../../utils").RcDownshiftGroupedOption<T>[];
295
+ /** current suggestion list id */
296
+ id: string;
297
+ };
298
+ export {};
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var react_1 = require("react");
5
+ var uniqueId_1 = tslib_1.__importDefault(require("lodash/uniqueId"));
6
+ var utils_1 = require("@material-ui/core/utils");
7
+ var foundation_1 = require("../../../../foundation");
8
+ var utils_2 = require("../../utils");
9
+ var useDownshiftGroup_1 = require("../../utils/useDownshiftGroup");
10
+ var DEFAULT_HIGHLIGHTED_INDEX = -1;
11
+ var componentName = 'useSuggestionList';
12
+ /**
13
+ * provide suggestion list with search function and expandable group with virtualized list
14
+ */
15
+ exports.useSuggestionList = function (_a) {
16
+ var inputValueProp = _a.inputValue, _b = _a.getOptionLabel, getOptionLabel = _b === void 0 ? utils_2.DEFAULT_GET_OPTION_LABEL : _b, filterOptions = _a.filterOptions, disabledItemsHighlightable = _a.disabledItemsHighlightable, options = _a.options, onInputChangeProp = _a.onInputChange, inputRef = _a.inputRef, onKeyDownProp = _a.onKeyDown, onSelect = _a.onSelect, onClear = _a.onClear, getOptionDisabled = _a.getOptionDisabled, groupBy = _a.groupBy, onGroupExpanded = _a.onGroupExpanded, groupVariant = _a.groupVariant, groupExpanded = _a.groupExpanded, groupDefaultExpanded = _a.groupDefaultExpanded, getExpandIconProps = _a.getExpandIconProps;
17
+ var _c = tslib_1.__read(utils_1.useControlled({
18
+ controlled: inputValueProp,
19
+ default: '',
20
+ name: componentName,
21
+ }), 2), inputValue = _c[0], setInputValue = _c[1];
22
+ var updateInputValue = function (newValue) {
23
+ onInputChangeProp === null || onInputChangeProp === void 0 ? void 0 : onInputChangeProp(newValue);
24
+ setInputValue(newValue);
25
+ };
26
+ var focusInput = function () { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); };
27
+ var suggestionListId = foundation_1.useResultRef(function () {
28
+ return uniqueId_1.default("suggestion-list-");
29
+ }).current;
30
+ // * use -2 for us know that is init state, for recalculate defaultHighlightedIndex
31
+ var highlightedIndexRef = react_1.useRef(DEFAULT_HIGHLIGHTED_INDEX);
32
+ var changeHighlightedIndexReason = react_1.useRef();
33
+ var forceUpdate = foundation_1.useForceUpdate();
34
+ var filteredResult = react_1.useMemo(function () {
35
+ var getFilteredItems = function (items) {
36
+ if (filterOptions) {
37
+ return filterOptions(items, {
38
+ inputValue: inputValue,
39
+ getOptionLabel: getOptionLabel,
40
+ selectedItems: [],
41
+ });
42
+ }
43
+ return items;
44
+ };
45
+ // * only when isOpen calculate the filtered result
46
+ var results = getFilteredItems(options);
47
+ return results;
48
+ }, [filterOptions, getOptionLabel, inputValue, options]);
49
+ var _d = useDownshiftGroup_1.useDownshiftGroup({
50
+ groupBy: groupBy,
51
+ options: options,
52
+ filteredResult: filteredResult,
53
+ getExpandIconProps: getExpandIconProps,
54
+ groupExpanded: groupExpanded,
55
+ groupDefaultExpanded: groupDefaultExpanded,
56
+ onGroupExpanded: onGroupExpanded,
57
+ groupVariant: groupVariant,
58
+ getOptionDisabled: getOptionDisabled,
59
+ id: suggestionListId,
60
+ }), groupedResult = _d.groupedResult, handleGroupExpandedChange = _d.handleGroupExpandedChange, optionsGroupList = _d.optionsGroupList;
61
+ var optionItems = groupBy ? groupedResult : filteredResult;
62
+ var setHighlightedIndex = function (index, _a) {
63
+ var _b = _a.reRender, reRender = _b === void 0 ? false : _b, reason = _a.reason;
64
+ changeHighlightedIndexReason.current = reason;
65
+ if (highlightedIndexRef.current !== index) {
66
+ highlightedIndexRef.current = index;
67
+ if (reRender)
68
+ forceUpdate();
69
+ }
70
+ };
71
+ var handleInputChange = function (newValue) {
72
+ if (inputValue !== newValue) {
73
+ setHighlightedIndex(DEFAULT_HIGHLIGHTED_INDEX, { reason: 'auto' });
74
+ updateInputValue(newValue);
75
+ }
76
+ return false;
77
+ };
78
+ var getIsItemCanSelected = function (item) {
79
+ return ((!!item && item.freeSolo) ||
80
+ (utils_2.isItemCanSelected(item) && !(getOptionDisabled === null || getOptionDisabled === void 0 ? void 0 : getOptionDisabled(item))));
81
+ };
82
+ var selectItemFn = function (e, selectedItem) {
83
+ if (getIsItemCanSelected(selectedItem)) {
84
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(e, selectedItem);
85
+ return true;
86
+ }
87
+ return false;
88
+ };
89
+ var resetState = function () {
90
+ if (inputRef.current && inputRef.current.value.length > 0) {
91
+ updateInputValue('');
92
+ }
93
+ };
94
+ var reset = function (isFocus) {
95
+ resetState();
96
+ onInputChangeProp === null || onInputChangeProp === void 0 ? void 0 : onInputChangeProp('');
97
+ if (isFocus)
98
+ focusInput();
99
+ };
100
+ var onKeyFocusedIndexHandle = foundation_1.useKeyboardMoveFocus({
101
+ options: optionItems,
102
+ focusedIndexRef: highlightedIndexRef,
103
+ infinite: true,
104
+ onFocusedIndexChange: function (event, toIndex) {
105
+ setHighlightedIndex(toIndex, { reason: 'keyboard', reRender: true });
106
+ event === null || event === void 0 ? void 0 : event.preventDefault();
107
+ },
108
+ getOptionDisabled: disabledItemsHighlightable
109
+ ? undefined
110
+ : function (child) {
111
+ return !getIsItemCanSelected(child);
112
+ },
113
+ }).onKeyFocusedIndexHandle;
114
+ var getItemProps = function (_a) {
115
+ var item = _a.item, index = _a.index, itemRest = tslib_1.__rest(_a, ["item", "index"]);
116
+ return foundation_1.combineProps({
117
+ id: suggestionListId + "-option-" + index,
118
+ role: 'option',
119
+ onClick: function (e) {
120
+ selectItemFn(e, item);
121
+ },
122
+ onMouseDown: function (e) {
123
+ e.preventDefault();
124
+ e.stopPropagation();
125
+ },
126
+ onMouseOver: function () {
127
+ if (highlightedIndexRef.current !== index) {
128
+ setHighlightedIndex(index, { reason: 'mouse', reRender: true });
129
+ }
130
+ },
131
+ }, itemRest);
132
+ };
133
+ var getInputProps = function (props) {
134
+ return foundation_1.combineProps({
135
+ id: suggestionListId + "-input",
136
+ autoComplete: 'off',
137
+ onChange: function (e) {
138
+ var changeValue = e.target.value;
139
+ handleInputChange(changeValue);
140
+ },
141
+ onKeyDown: function (e) {
142
+ var _a;
143
+ onKeyDownProp === null || onKeyDownProp === void 0 ? void 0 : onKeyDownProp(e, highlightedIndexRef.current);
144
+ var highlightedIndex = highlightedIndexRef.current;
145
+ switch (e.key) {
146
+ case 'F10':
147
+ if (e.shiftKey) {
148
+ var currOption = optionItems[highlightedIndex];
149
+ var currentGroup = currOption.group;
150
+ if (currentGroup && currentGroup.options.length > 1) {
151
+ handleGroupExpandedChange(currentGroup.group);
152
+ }
153
+ }
154
+ break;
155
+ case 'Enter':
156
+ if (e.which === 229)
157
+ return;
158
+ if (highlightedIndex !== DEFAULT_HIGHLIGHTED_INDEX) {
159
+ var currOption = optionItems[highlightedIndex];
160
+ var isGroupTitle = currOption === ((_a = currOption.group) === null || _a === void 0 ? void 0 : _a.options[0]);
161
+ if (isGroupTitle) {
162
+ var onClick = currOption.group.getExpandIconProps().onClick;
163
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
164
+ }
165
+ else {
166
+ selectItemFn(e, currOption);
167
+ }
168
+ e.stopPropagation();
169
+ }
170
+ // always preventDefault for not inset all enter into textarea
171
+ e.preventDefault();
172
+ break;
173
+ default:
174
+ onKeyFocusedIndexHandle(e);
175
+ break;
176
+ }
177
+ },
178
+ }, props);
179
+ };
180
+ var getInputAriaProps = function (props) {
181
+ return foundation_1.combineProps({
182
+ // * provide for when container click focus on input
183
+ onContainerClick: focusInput,
184
+ role: 'combobox',
185
+ 'aria-autocomplete': 'list',
186
+ // TODO
187
+ 'aria-expanded': true,
188
+ 'aria-haspopup': true,
189
+ 'aria-owns': suggestionListId + "-menu",
190
+ 'aria-activedescendant': highlightedIndexRef.current > -1
191
+ ? suggestionListId + "-option-" + highlightedIndexRef.current
192
+ : undefined,
193
+ }, props);
194
+ };
195
+ var getLabelProps = function (props) {
196
+ return foundation_1.combineProps({
197
+ htmlFor: suggestionListId + "-input",
198
+ id: suggestionListId + "-label",
199
+ }, props);
200
+ };
201
+ var getMenuProps = function (restMenuProps) {
202
+ return foundation_1.combineProps({
203
+ 'aria-labelledby': suggestionListId + "-label",
204
+ id: suggestionListId + "-menu",
205
+ role: 'listbox',
206
+ }, restMenuProps);
207
+ };
208
+ var getClearButtonProps = function (props) {
209
+ return foundation_1.combineProps({
210
+ id: suggestionListId + "-clear-button",
211
+ onClick: function (e) {
212
+ onClear === null || onClear === void 0 ? void 0 : onClear(e);
213
+ reset(true);
214
+ },
215
+ }, props);
216
+ };
217
+ var resultObj = {
218
+ focusInput: focusInput,
219
+ getClearButtonProps: getClearButtonProps,
220
+ getLabelProps: getLabelProps,
221
+ getMenuProps: getMenuProps,
222
+ getInputProps: getInputProps,
223
+ getInputAriaProps: getInputAriaProps,
224
+ getItemProps: getItemProps,
225
+ highlightedIndex: highlightedIndexRef.current,
226
+ optionItems: optionItems,
227
+ inputValue: inputValue,
228
+ onInputChange: handleInputChange,
229
+ setHighlightedIndex: setHighlightedIndex,
230
+ changeHighlightedIndexReason: changeHighlightedIndexReason.current,
231
+ reset: reset,
232
+ forceUpdate: forceUpdate,
233
+ optionsGroupList: optionsGroupList,
234
+ /** current suggestion list id */
235
+ id: suggestionListId,
236
+ };
237
+ changeHighlightedIndexReason.current = undefined;
238
+ return resultObj;
239
+ };