downshift 9.3.1 → 9.4.0-alpha.0

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 (155) hide show
  1. package/dist/downshift.cjs.cjs +623 -702
  2. package/dist/downshift.d.ts +49 -55
  3. package/dist/downshift.esm.mjs +624 -703
  4. package/dist/downshift.native.cjs.cjs +578 -654
  5. package/dist/downshift.nativeweb.cjs.cjs +621 -697
  6. package/dist/downshift.types.d.ts +205 -0
  7. package/dist/downshift.umd.js +627 -706
  8. package/dist/downshift.umd.js.map +1 -1
  9. package/dist/downshift.umd.min.js +1 -1
  10. package/dist/downshift.umd.min.js.map +1 -1
  11. package/dist/hooks/testUtils/MemoizedItem.d.ts +10 -0
  12. package/dist/hooks/testUtils/fixtures.d.ts +16 -0
  13. package/dist/hooks/testUtils/index.d.ts +4 -0
  14. package/dist/hooks/testUtils/interactions.d.ts +16 -0
  15. package/dist/hooks/testUtils/testCases.d.ts +2 -0
  16. package/dist/hooks/useCombobox/__tests__/utils/index.d.ts +5 -0
  17. package/dist/hooks/useCombobox/__tests__/utils/interactions.d.ts +6 -0
  18. package/dist/hooks/useCombobox/__tests__/utils/renderCombobox.d.ts +72 -0
  19. package/dist/hooks/useCombobox/__tests__/utils/renderUseCombobox.d.ts +2 -0
  20. package/dist/hooks/useCombobox/index.d.ts +4 -94
  21. package/dist/hooks/useCombobox/index.types.d.ts +302 -0
  22. package/dist/hooks/useCombobox/reducer.d.ts +4 -1
  23. package/dist/hooks/useCombobox/stateChangeTypes.d.ts +24 -23
  24. package/dist/hooks/useCombobox/utils/getInitialState.d.ts +10 -0
  25. package/dist/hooks/useCombobox/utils/index.d.ts +3 -0
  26. package/dist/hooks/useCombobox/{utils.d.ts → utils/propTypes.d.ts} +2 -30
  27. package/dist/hooks/useCombobox/utils/useControlledReducer.d.ts +16 -0
  28. package/dist/hooks/useMultipleSelection/index.d.ts +25 -13
  29. package/dist/hooks/useMultipleSelection/index.types.d.ts +117 -0
  30. package/dist/hooks/useMultipleSelection/reducer.d.ts +1 -1
  31. package/dist/hooks/useMultipleSelection/utils.d.ts +14 -15
  32. package/dist/hooks/useSelect/__tests__/utils/getItemIndexByCharacter.d.ts +7 -0
  33. package/dist/hooks/useSelect/__tests__/utils/index.d.ts +6 -0
  34. package/dist/hooks/useSelect/__tests__/utils/renderSelect.d.ts +71 -0
  35. package/dist/hooks/useSelect/__tests__/utils/renderUseSelect.d.ts +2 -0
  36. package/dist/hooks/useSelect/__tests__/utils/stateChangeTestCases.d.ts +182 -0
  37. package/dist/hooks/useSelect/index.d.ts +4 -71
  38. package/dist/hooks/useSelect/index.types.d.ts +266 -0
  39. package/dist/hooks/useSelect/reducer.d.ts +4 -1
  40. package/dist/hooks/useSelect/stateChangeTypes.d.ts +23 -22
  41. package/dist/hooks/useSelect/utils/index.d.ts +0 -1
  42. package/dist/hooks/useTagGroup/__tests__/utils/renderTagGroup.d.ts +1 -1
  43. package/dist/hooks/useTagGroup/index.types.d.ts +10 -13
  44. package/dist/hooks/useTagGroup/reducer.d.ts +4 -2
  45. package/dist/hooks/useTagGroup/utils/index.d.ts +3 -1
  46. package/dist/hooks/utils/__tests__/dropdownDefaultProps.test.d.ts +1 -0
  47. package/dist/hooks/utils/__tests__/getChangesOnSelection.test.d.ts +1 -0
  48. package/dist/hooks/utils/__tests__/getDefaultHighlightedIndex.test.d.ts +1 -0
  49. package/dist/hooks/utils/__tests__/getDefaultValue.test.d.ts +1 -0
  50. package/dist/hooks/utils/__tests__/getHighlightedIndexOnOpen.test.d.ts +1 -0
  51. package/dist/hooks/utils/__tests__/getInitialValue.test.d.ts +1 -0
  52. package/dist/hooks/utils/__tests__/getItemAndIndex.test.d.ts +1 -0
  53. package/dist/hooks/utils/__tests__/isDropdownStateEqual.test.d.ts +1 -0
  54. package/dist/hooks/utils/__tests__/useA11yMessageStatus.test.d.ts +1 -0
  55. package/dist/hooks/utils/__tests__/useControlPropsValidator.test.d.ts +1 -0
  56. package/dist/hooks/utils/__tests__/useControlledReducer.test.d.ts +1 -0
  57. package/dist/hooks/utils/__tests__/useElementIds.legacy.test.d.ts +1 -0
  58. package/dist/hooks/utils/__tests__/useElementIds.r18.test.d.ts +1 -0
  59. package/dist/hooks/utils/__tests__/useEnhancedReducer.test.d.ts +1 -0
  60. package/dist/hooks/utils/__tests__/useGetterPropsCalledChecker.test.d.ts +1 -0
  61. package/dist/hooks/utils/__tests__/useIsInitialMount.test.d.ts +1 -0
  62. package/dist/hooks/utils/__tests__/useMouseAndTouchTracker.test.d.ts +1 -0
  63. package/dist/hooks/utils/__tests__/useScrollIntoView.test.d.ts +1 -0
  64. package/dist/hooks/utils/callOnChangeProps.d.ts +4 -0
  65. package/dist/hooks/utils/dropdownDefaultProps.d.ts +13 -0
  66. package/dist/hooks/{utils.dropdown/defaultStateValues.d.ts → utils/dropdownDefaultStateValues.d.ts} +2 -2
  67. package/dist/hooks/{utils.dropdown/propTypes.d.ts → utils/dropdownPropTypes.d.ts} +1 -1
  68. package/dist/hooks/utils/getChangesOnSelection.d.ts +17 -0
  69. package/dist/hooks/utils/getDefaultHighlightedIndex.d.ts +7 -0
  70. package/dist/hooks/utils/getDefaultValue.d.ts +8 -0
  71. package/dist/hooks/utils/getHighlightedIndexOnOpen.d.ts +16 -0
  72. package/dist/hooks/utils/getInitialState.d.ts +23 -0
  73. package/dist/hooks/utils/getInitialValue.d.ts +14 -0
  74. package/dist/hooks/utils/index.d.ts +24 -0
  75. package/dist/hooks/utils/index.types.d.ts +26 -0
  76. package/dist/hooks/utils/isDropdownStateEqual.d.ts +16 -0
  77. package/dist/hooks/utils/reducer.d.ts +27 -0
  78. package/dist/hooks/utils/useControlPropsValidator.d.ts +6 -0
  79. package/dist/hooks/utils/useControlledReducer.d.ts +13 -0
  80. package/dist/hooks/utils/useEnhancedReducer.d.ts +15 -0
  81. package/dist/hooks/utils/useGetterPropsCalledChecker.d.ts +2 -0
  82. package/dist/hooks/utils/useMouseAndTouchTracker.d.ts +15 -0
  83. package/dist/hooks/utils/useScrollIntoView.d.ts +11 -0
  84. package/dist/index.d.ts +1 -1
  85. package/dist/utils/__tests__/callAllEventHandlers.test.d.ts +1 -0
  86. package/dist/utils/__tests__/debounce.test.d.ts +1 -0
  87. package/dist/utils/__tests__/generateId.r18.test.d.ts +1 -0
  88. package/dist/utils/__tests__/generateId.test.d.ts +1 -0
  89. package/dist/utils/__tests__/getHighlightedIndex.test.d.ts +1 -0
  90. package/dist/utils/__tests__/getNonDisabledIndex.test.d.ts +1 -0
  91. package/dist/utils/__tests__/getState.test.d.ts +1 -0
  92. package/dist/utils/__tests__/handleRefs.test.d.ts +1 -0
  93. package/dist/utils/__tests__/normalizeArrowKey.test.d.ts +1 -0
  94. package/dist/utils/__tests__/scrollIntoView.test.d.ts +1 -0
  95. package/dist/utils/__tests__/setA11yStatus.test.d.ts +1 -0
  96. package/dist/utils/__tests__/targetWithinDownshift.test.d.ts +1 -0
  97. package/dist/utils/__tests__/useLatestRef.test.d.ts +1 -0
  98. package/dist/utils/__tests__/validateControlledUnchanged.test.d.ts +1 -0
  99. package/dist/utils/__tests__/validatePropTypes.test.d.ts +1 -0
  100. package/dist/utils/getHighlightedIndex.d.ts +11 -0
  101. package/dist/utils/getNonDisabledIndex.d.ts +11 -0
  102. package/dist/utils/getState.d.ts +12 -0
  103. package/dist/utils/handleRefs.d.ts +2 -0
  104. package/dist/{utils-ts → utils}/index.d.ts +5 -1
  105. package/dist/utils/normalizeArrowKey.d.ts +6 -0
  106. package/dist/utils/targetWithinDownshift.d.ts +12 -0
  107. package/dist/utils/validateControlledUnchanged.d.ts +1 -0
  108. package/dist/utils/validatePropTypes.d.ts +2 -0
  109. package/dist/utils.legacy.d.ts +54 -0
  110. package/flow-typed/npm/downshift_v2.x.x.js.flow +87 -62
  111. package/package.json +2 -4
  112. package/preact/dist/downshift.cjs.cjs +623 -702
  113. package/preact/dist/downshift.cjs.js +4265 -0
  114. package/preact/dist/downshift.esm.js +4238 -0
  115. package/preact/dist/downshift.esm.mjs +624 -703
  116. package/preact/dist/downshift.umd.js +623 -702
  117. package/preact/dist/downshift.umd.js.map +1 -1
  118. package/preact/dist/downshift.umd.min.js +1 -1
  119. package/preact/dist/downshift.umd.min.js.map +1 -1
  120. package/typings/index.d.ts +13 -21
  121. package/dist/hooks/reducer.d.ts +0 -1
  122. package/dist/hooks/useSelect/utils/defaultProps.d.ts +0 -8
  123. package/dist/hooks/utils-ts/callOnChangeProps.d.ts +0 -2
  124. package/dist/hooks/utils-ts/getDefaultValue.d.ts +0 -2
  125. package/dist/hooks/utils-ts/getInitialValue.d.ts +0 -2
  126. package/dist/hooks/utils-ts/index.d.ts +0 -11
  127. package/dist/hooks/utils-ts/stateReducer.d.ts +0 -6
  128. package/dist/hooks/utils-ts/useControlledReducer.d.ts +0 -12
  129. package/dist/hooks/utils-ts/useEnhancedReducer.d.ts +0 -13
  130. package/dist/hooks/utils.d.ts +0 -58
  131. package/dist/hooks/utils.dropdown/defaultProps.d.ts +0 -9
  132. package/dist/hooks/utils.dropdown/index.d.ts +0 -3
  133. package/dist/utils-ts/getState.d.ts +0 -22
  134. package/dist/utils-ts/handleRefs.d.ts +0 -2
  135. package/dist/utils-ts/validatePropTypes.d.ts +0 -2
  136. package/dist/utils.d.ts +0 -123
  137. package/typings/index.legacy.d.ts +0 -888
  138. /package/dist/hooks/{utils-ts/__tests__/getItemAndIndex.test.d.ts → useCombobox/utils/__tests__/getInitialState.test.d.ts} +0 -0
  139. /package/dist/hooks/{utils.dropdown/__tests__/useElementIds.legacy.test.d.ts → useCombobox/utils/__tests__/useControlledReducer.test.d.ts} +0 -0
  140. /package/dist/hooks/{utils.dropdown/__tests__/useElementIds.r18.test.d.ts → useSelect/utils/__tests__/getItemIndexByCharacterKey.test.d.ts} +0 -0
  141. /package/dist/{utils-ts/__tests__/getState.test.d.ts → hooks/utils/__tests__/callOnChangeProps.test.d.ts} +0 -0
  142. /package/dist/{utils-ts/__tests__/handleRefs.test.d.ts → hooks/utils/__tests__/capitalizeString.test.d.ts} +0 -0
  143. /package/dist/hooks/{utils-ts → utils}/capitalizeString.d.ts +0 -0
  144. /package/dist/hooks/{utils-ts → utils}/getItemAndIndex.d.ts +0 -0
  145. /package/dist/hooks/{utils-ts → utils}/propTypes.d.ts +0 -0
  146. /package/dist/hooks/{utils-ts → utils}/useA11yMessageStatus.d.ts +0 -0
  147. /package/dist/hooks/{utils.dropdown → utils}/useElementIds.d.ts +0 -0
  148. /package/dist/hooks/{utils-ts → utils}/useIsInitialMount.d.ts +0 -0
  149. /package/dist/{utils-ts → utils}/callAllEventHandlers.d.ts +0 -0
  150. /package/dist/{utils-ts → utils}/debounce.d.ts +0 -0
  151. /package/dist/{utils-ts → utils}/generateId.d.ts +0 -0
  152. /package/dist/{utils-ts → utils}/noop.d.ts +0 -0
  153. /package/dist/{utils-ts → utils}/scrollIntoView.d.ts +0 -0
  154. /package/dist/{utils-ts → utils}/setA11yStatus.d.ts +0 -0
  155. /package/dist/{utils-ts → utils}/useLatestRef.d.ts +0 -0
@@ -1,888 +0,0 @@
1
- import React from "react"
2
-
3
- import {Environment} from '../dist/hooks/useTagGroup/index.types'
4
-
5
- export {Environment}
6
-
7
- export type Callback = () => void
8
-
9
- export type Overwrite<T, U> = Pick<T, Exclude<keyof T, keyof U>> & U
10
-
11
- export interface DownshiftState<Item> {
12
- highlightedIndex: number | null
13
- inputValue: string | null
14
- isOpen: boolean
15
- selectedItem: Item | null
16
- }
17
-
18
- export enum StateChangeTypes {
19
- unknown = '__autocomplete_unknown__',
20
- mouseUp = '__autocomplete_mouseup__',
21
- itemMouseEnter = '__autocomplete_item_mouseenter__',
22
- keyDownArrowUp = '__autocomplete_keydown_arrow_up__',
23
- keyDownArrowDown = '__autocomplete_keydown_arrow_down__',
24
- keyDownEscape = '__autocomplete_keydown_escape__',
25
- keyDownEnter = '__autocomplete_keydown_enter__',
26
- clickItem = '__autocomplete_click_item__',
27
- blurInput = '__autocomplete_blur_input__',
28
- changeInput = '__autocomplete_change_input__',
29
- keyDownSpaceButton = '__autocomplete_keydown_space_button__',
30
- clickButton = '__autocomplete_click_button__',
31
- blurButton = '__autocomplete_blur_button__',
32
- controlledPropUpdatedSelectedItem = '__autocomplete_controlled_prop_updated_selected_item__',
33
- touchEnd = '__autocomplete_touchend__',
34
- }
35
-
36
- export interface DownshiftProps<Item> {
37
- initialSelectedItem?: Item
38
- initialInputValue?: string
39
- initialHighlightedIndex?: number | null
40
- initialIsOpen?: boolean
41
- defaultHighlightedIndex?: number | null
42
- defaultIsOpen?: boolean
43
- itemToString?: (item: Item | null) => string
44
- selectedItemChanged?: (prevItem: Item, item: Item) => boolean
45
- getA11yStatusMessage?: (options: A11yStatusMessageOptions<Item>) => string
46
- onChange?: (
47
- selectedItem: Item | null,
48
- stateAndHelpers: ControllerStateAndHelpers<Item>,
49
- ) => void
50
- onSelect?: (
51
- selectedItem: Item | null,
52
- stateAndHelpers: ControllerStateAndHelpers<Item>,
53
- ) => void
54
- onStateChange?: (
55
- options: StateChangeOptions<Item>,
56
- stateAndHelpers: ControllerStateAndHelpers<Item>,
57
- ) => void
58
- onInputValueChange?: (
59
- inputValue: string,
60
- stateAndHelpers: ControllerStateAndHelpers<Item>,
61
- ) => void
62
- stateReducer?: (
63
- state: DownshiftState<Item>,
64
- changes: StateChangeOptions<Item>,
65
- ) => Partial<StateChangeOptions<Item>>
66
- itemCount?: number
67
- highlightedIndex?: number | null
68
- inputValue?: string | null
69
- isOpen?: boolean
70
- selectedItem?: Item | null
71
- children?: ChildrenFunction<Item>
72
- id?: string
73
- inputId?: string
74
- labelId?: string
75
- menuId?: string
76
- getItemId?: (index?: number) => string
77
- environment?: Environment
78
- onOuterClick?: (stateAndHelpers: ControllerStateAndHelpers<Item>) => void
79
- scrollIntoView?: (node: HTMLElement, menuNode: HTMLElement) => void
80
- onUserAction?: (
81
- options: StateChangeOptions<Item>,
82
- stateAndHelpers: ControllerStateAndHelpers<Item>,
83
- ) => void
84
- suppressRefError?: boolean
85
- }
86
-
87
- export interface A11yStatusMessageOptions<Item> {
88
- highlightedIndex: number | null
89
- inputValue: string
90
- isOpen: boolean
91
- itemToString: (item: Item | null) => string
92
- previousResultCount: number
93
- resultCount: number
94
- highlightedItem: Item
95
- selectedItem: Item | null
96
- }
97
-
98
- export interface StateChangeOptions<Item> extends Partial<DownshiftState<Item>> {
99
- type: StateChangeTypes
100
- }
101
-
102
- export type StateChangeFunction<Item> = (
103
- state: DownshiftState<Item>,
104
- ) => Partial<StateChangeOptions<Item>>
105
-
106
- export interface GetRootPropsOptions {
107
- refKey?: string
108
- ref?: React.RefObject<any>
109
- }
110
-
111
- export interface GetRootPropsReturnValue {
112
- 'aria-expanded': boolean
113
- 'aria-haspopup': 'listbox'
114
- 'aria-labelledby': string
115
- 'aria-owns': string | undefined
116
- ref?: React.RefObject<any>
117
- role: 'combobox'
118
- }
119
-
120
- export interface GetInputPropsOptions extends React.HTMLProps<HTMLInputElement> {
121
- disabled?: boolean
122
- }
123
-
124
- export interface GetInputPropsReturnValue {
125
- 'aria-autocomplete': 'list'
126
- 'aria-activedescendant': string | undefined
127
- 'aria-controls': string | undefined
128
- 'aria-labelledby': string | undefined
129
- autoComplete: 'off'
130
- id: string
131
- onChange?: React.ChangeEventHandler
132
- onChangeText?: React.ChangeEventHandler
133
- onInput?: React.FormEventHandler
134
- onKeyDown?: React.KeyboardEventHandler
135
- onBlur?: React.FocusEventHandler
136
- value: string
137
- }
138
-
139
- export interface GetLabelPropsOptions extends React.HTMLProps<HTMLLabelElement> {}
140
-
141
- export interface GetLabelPropsReturnValue {
142
- htmlFor: string
143
- id: string
144
- }
145
-
146
- export interface GetToggleButtonPropsOptions extends React.HTMLProps<HTMLButtonElement> {
147
- disabled?: boolean
148
- onPress?: (event: React.BaseSyntheticEvent) => void
149
- }
150
-
151
- export interface GetToggleButtonPropsReturnValue {
152
- 'aria-label': 'close menu' | 'open menu'
153
- 'aria-haspopup': true
154
- 'data-toggle': true
155
- onPress?: (event: React.BaseSyntheticEvent) => void
156
- onClick?: React.MouseEventHandler
157
- onKeyDown?: React.KeyboardEventHandler
158
- onKeyUp?: React.KeyboardEventHandler
159
- onBlur?: React.FocusEventHandler
160
- role: 'button'
161
- type: 'button'
162
- }
163
-
164
- export interface GetMenuPropsOptions
165
- extends React.HTMLProps<HTMLElement>, GetPropsWithRefKey {
166
- ['aria-label']?: string
167
- }
168
-
169
- export interface GetMenuPropsReturnValue {
170
- 'aria-labelledby': string | undefined
171
- ref?: React.RefObject<any>
172
- role: 'listbox'
173
- id: string
174
- }
175
-
176
- export interface GetPropsCommonOptions {
177
- suppressRefError?: boolean
178
- }
179
-
180
- export interface GetPropsWithRefKey {
181
- refKey?: string
182
- }
183
-
184
- export interface GetItemPropsOptions<Item> extends React.HTMLProps<HTMLElement> {
185
- index?: number
186
- item: Item
187
- isSelected?: boolean
188
- disabled?: boolean
189
- }
190
-
191
- export interface GetItemPropsReturnValue {
192
- 'aria-selected': boolean
193
- id: string
194
- onClick?: React.MouseEventHandler
195
- onMouseDown?: React.MouseEventHandler
196
- onMouseMove?: React.MouseEventHandler
197
- onPress?: React.MouseEventHandler
198
- role: 'option'
199
- }
200
-
201
- export interface PropGetters<Item> {
202
- getRootProps: <Options>(
203
- options?: GetRootPropsOptions & Options,
204
- otherOptions?: GetPropsCommonOptions,
205
- ) => Overwrite<GetRootPropsReturnValue, Options>
206
- getToggleButtonProps: <Options>(
207
- options?: GetToggleButtonPropsOptions & Options,
208
- ) => Overwrite<GetToggleButtonPropsReturnValue, Options>
209
- getLabelProps: <Options>(
210
- options?: GetLabelPropsOptions & Options,
211
- ) => Overwrite<GetLabelPropsReturnValue, Options>
212
- getMenuProps: <Options>(
213
- options?: GetMenuPropsOptions & Options,
214
- otherOptions?: GetPropsCommonOptions,
215
- ) => Overwrite<GetMenuPropsReturnValue, Options>
216
- getInputProps: <Options>(
217
- options?: GetInputPropsOptions & Options,
218
- ) => Overwrite<GetInputPropsReturnValue, Options>
219
- getItemProps: <Options>(
220
- options: GetItemPropsOptions<Item> & Options,
221
- ) => Omit<Overwrite<GetItemPropsReturnValue, Options>, 'index' | 'item'>
222
- }
223
-
224
- export interface Actions<Item> {
225
- reset: (
226
- otherStateToSet?: Partial<StateChangeOptions<Item>>,
227
- cb?: Callback,
228
- ) => void
229
- openMenu: (cb?: Callback) => void
230
- closeMenu: (cb?: Callback) => void
231
- toggleMenu: (
232
- otherStateToSet?: Partial<StateChangeOptions<Item>>,
233
- cb?: Callback,
234
- ) => void
235
- selectItem: (
236
- item: Item | null,
237
- otherStateToSet?: Partial<StateChangeOptions<Item>>,
238
- cb?: Callback,
239
- ) => void
240
- selectItemAtIndex: (
241
- index: number,
242
- otherStateToSet?: Partial<StateChangeOptions<Item>>,
243
- cb?: Callback,
244
- ) => void
245
- selectHighlightedItem: (
246
- otherStateToSet?: Partial<StateChangeOptions<Item>>,
247
- cb?: Callback,
248
- ) => void
249
- setHighlightedIndex: (
250
- index: number,
251
- otherStateToSet?: Partial<StateChangeOptions<Item>>,
252
- cb?: Callback,
253
- ) => void
254
- clearSelection: (cb?: Callback) => void
255
- clearItems: () => void
256
- setItemCount: (count: number) => void
257
- unsetItemCount: () => void
258
- setState: (
259
- stateToSet: Partial<StateChangeOptions<Item>> | StateChangeFunction<Item>,
260
- cb?: Callback,
261
- ) => void
262
- itemToString: (item: Item | null) => string
263
- }
264
-
265
- export type ControllerStateAndHelpers<Item> = DownshiftState<Item> &
266
- PropGetters<Item> &
267
- Actions<Item>
268
-
269
- export type ChildrenFunction<Item> = (
270
- options: ControllerStateAndHelpers<Item>,
271
- ) => React.ReactNode
272
-
273
- export default class Downshift<Item = any> extends React.Component<
274
- DownshiftProps<Item>
275
- > {
276
- static stateChangeTypes: {
277
- unknown: StateChangeTypes.unknown
278
- mouseUp: StateChangeTypes.mouseUp
279
- itemMouseEnter: StateChangeTypes.itemMouseEnter
280
- keyDownArrowUp: StateChangeTypes.keyDownArrowUp
281
- keyDownArrowDown: StateChangeTypes.keyDownArrowDown
282
- keyDownEscape: StateChangeTypes.keyDownEscape
283
- keyDownEnter: StateChangeTypes.keyDownEnter
284
- clickItem: StateChangeTypes.clickItem
285
- blurInput: StateChangeTypes.blurInput
286
- changeInput: StateChangeTypes.changeInput
287
- keyDownSpaceButton: StateChangeTypes.keyDownSpaceButton
288
- clickButton: StateChangeTypes.clickButton
289
- blurButton: StateChangeTypes.blurButton
290
- controlledPropUpdatedSelectedItem: StateChangeTypes.controlledPropUpdatedSelectedItem
291
- touchEnd: StateChangeTypes.touchEnd
292
- }
293
- }
294
-
295
- export function resetIdCounter(): void
296
-
297
- /* useSelect Types */
298
-
299
- export interface UseSelectState<Item> {
300
- highlightedIndex: number
301
- selectedItem: Item | null
302
- isOpen: boolean
303
- inputValue: string
304
- }
305
-
306
- export enum UseSelectStateChangeTypes {
307
- ToggleButtonClick = '__togglebutton_click__',
308
- ToggleButtonKeyDownArrowDown = '__togglebutton_keydown_arrow_down__',
309
- ToggleButtonKeyDownArrowUp = '__togglebutton_keydown_arrow_up__',
310
- ToggleButtonKeyDownCharacter = '__togglebutton_keydown_character__',
311
- ToggleButtonKeyDownEscape = '__togglebutton_keydown_escape__',
312
- ToggleButtonKeyDownHome = '__togglebutton_keydown_home__',
313
- ToggleButtonKeyDownEnd = '__togglebutton_keydown_end__',
314
- ToggleButtonKeyDownEnter = '__togglebutton_keydown_enter__',
315
- ToggleButtonKeyDownSpaceButton = '__togglebutton_keydown_space_button__',
316
- ToggleButtonKeyDownPageUp = '__togglebutton_keydown_page_up__',
317
- ToggleButtonKeyDownPageDown = '__togglebutton_keydown_page_down__',
318
- ToggleButtonBlur = '__togglebutton_blur__',
319
- MenuMouseLeave = '__menu_mouse_leave__',
320
- ItemMouseMove = '__item_mouse_move__',
321
- ItemClick = '__item_click__',
322
- FunctionToggleMenu = '__function_toggle_menu__',
323
- FunctionOpenMenu = '__function_open_menu__',
324
- FunctionCloseMenu = '__function_close_menu__',
325
- FunctionSetHighlightedIndex = '__function_set_highlighted_index__',
326
- FunctionSelectItem = '__function_select_item__',
327
- FunctionSetInputValue = '__function_set_input_value__',
328
- FunctionReset = '__function_reset__',
329
- }
330
-
331
- export interface UseSelectProps<Item> {
332
- items: Item[]
333
- isItemDisabled?(item: Item, index: number): boolean
334
- itemToString?: (item: Item | null) => string
335
- itemToKey?: (item: Item | null) => any
336
- getA11yStatusMessage?: (options: UseSelectState<Item>) => string
337
- highlightedIndex?: number
338
- initialHighlightedIndex?: number
339
- defaultHighlightedIndex?: number
340
- isOpen?: boolean
341
- initialIsOpen?: boolean
342
- defaultIsOpen?: boolean
343
- selectedItem?: Item | null
344
- initialSelectedItem?: Item | null
345
- defaultSelectedItem?: Item | null
346
- id?: string
347
- labelId?: string
348
- menuId?: string
349
- toggleButtonId?: string
350
- getItemId?: (index: number) => string
351
- scrollIntoView?: (node: HTMLElement, menuNode: HTMLElement) => void
352
- stateReducer?: (
353
- state: UseSelectState<Item>,
354
- actionAndChanges: UseSelectStateChangeOptions<Item>,
355
- ) => Partial<UseSelectState<Item>>
356
- onSelectedItemChange?: (changes: UseSelectSelectedItemChange<Item>) => void
357
- onIsOpenChange?: (changes: UseSelectIsOpenChange<Item>) => void
358
- onHighlightedIndexChange?: (
359
- changes: UseSelectHighlightedIndexChange<Item>,
360
- ) => void
361
- onStateChange?: (changes: UseSelectStateChange<Item>) => void
362
- environment?: Environment
363
- }
364
-
365
- export interface UseSelectStateChangeOptions<
366
- Item,
367
- > extends UseSelectDispatchAction<Item> {
368
- changes: Partial<UseSelectState<Item>>
369
- }
370
-
371
- export interface UseSelectDispatchAction<Item> {
372
- type: UseSelectStateChangeTypes
373
- altKey?: boolean
374
- key?: string
375
- index?: number
376
- highlightedIndex?: number
377
- selectedItem?: Item | null
378
- inputValue?: string
379
- }
380
-
381
- export interface UseSelectStateChange<Item> extends Partial<UseSelectState<Item>> {
382
- type: UseSelectStateChangeTypes
383
- }
384
-
385
- export interface UseSelectSelectedItemChange<Item> extends UseSelectStateChange<Item> {
386
- selectedItem: Item | null
387
- }
388
-
389
- export interface UseSelectHighlightedIndexChange<
390
- Item,
391
- > extends UseSelectStateChange<Item> {
392
- highlightedIndex: number
393
- }
394
-
395
- export interface UseSelectIsOpenChange<Item> extends UseSelectStateChange<Item> {
396
- isOpen: boolean
397
- }
398
-
399
- export interface UseSelectGetMenuPropsOptions
400
- extends GetPropsWithRefKey, GetMenuPropsOptions {}
401
-
402
- export interface UseSelectGetMenuReturnValue extends GetMenuPropsReturnValue {
403
- onMouseLeave: React.MouseEventHandler
404
- }
405
-
406
- export interface UseSelectGetToggleButtonPropsOptions
407
- extends GetPropsWithRefKey, React.HTMLProps<HTMLElement> {
408
- onPress?: (event: React.BaseSyntheticEvent) => void
409
- }
410
-
411
- export interface UseSelectGetToggleButtonReturnValue extends Pick<
412
- GetToggleButtonPropsReturnValue,
413
- 'onBlur' | 'onClick' | 'onPress' | 'onKeyDown'
414
- > {
415
- 'aria-activedescendant': string
416
- 'aria-controls': string
417
- 'aria-expanded': boolean
418
- 'aria-haspopup': 'listbox'
419
- 'aria-labelledby': string | undefined
420
- id: string
421
- ref?: React.RefObject<any>
422
- role: 'combobox'
423
- tabIndex: 0
424
- }
425
-
426
- export interface UseSelectGetLabelPropsOptions extends GetLabelPropsOptions {}
427
-
428
- export interface UseSelectGetLabelPropsReturnValue extends GetLabelPropsReturnValue {
429
- onClick: React.MouseEventHandler
430
- }
431
-
432
- export interface UseSelectGetItemPropsOptions<Item>
433
- extends Omit<GetItemPropsOptions<Item>, 'disabled'>, GetPropsWithRefKey {}
434
-
435
- export interface UseSelectGetItemPropsReturnValue extends GetItemPropsReturnValue {
436
- 'aria-disabled': boolean
437
- ref?: React.RefObject<any>
438
- }
439
-
440
- export interface UseSelectPropGetters<Item> {
441
- getToggleButtonProps: <Options>(
442
- options?: UseSelectGetToggleButtonPropsOptions & Options,
443
- otherOptions?: GetPropsCommonOptions,
444
- ) => Overwrite<UseSelectGetToggleButtonReturnValue, Options>
445
- getLabelProps: <Options>(
446
- options?: UseSelectGetLabelPropsOptions & Options,
447
- ) => Overwrite<UseSelectGetLabelPropsReturnValue, Options>
448
- getMenuProps: <Options>(
449
- options?: UseSelectGetMenuPropsOptions & Options,
450
- otherOptions?: GetPropsCommonOptions,
451
- ) => Overwrite<UseSelectGetMenuReturnValue, Options>
452
- getItemProps: <Options>(
453
- options: UseSelectGetItemPropsOptions<Item> & Options,
454
- ) => Omit<
455
- Overwrite<UseSelectGetItemPropsReturnValue, Options>,
456
- 'index' | 'item'
457
- >
458
- }
459
-
460
- export interface UseSelectActions<Item> {
461
- reset: () => void
462
- openMenu: () => void
463
- closeMenu: () => void
464
- toggleMenu: () => void
465
- selectItem: (item: Item | null) => void
466
- setHighlightedIndex: (index: number) => void
467
- }
468
-
469
- export type UseSelectReturnValue<Item> = UseSelectState<Item> &
470
- UseSelectPropGetters<Item> &
471
- UseSelectActions<Item>
472
-
473
- export interface UseSelectInterface {
474
- <Item>(props: UseSelectProps<Item>): UseSelectReturnValue<Item>
475
- stateChangeTypes: {
476
- ToggleButtonClick: UseSelectStateChangeTypes.ToggleButtonClick
477
- ToggleButtonKeyDownArrowDown: UseSelectStateChangeTypes.ToggleButtonKeyDownArrowDown
478
- ToggleButtonKeyDownArrowUp: UseSelectStateChangeTypes.ToggleButtonKeyDownArrowUp
479
- ToggleButtonKeyDownCharacter: UseSelectStateChangeTypes.ToggleButtonKeyDownCharacter
480
- ToggleButtonKeyDownEscape: UseSelectStateChangeTypes.ToggleButtonKeyDownEscape
481
- ToggleButtonKeyDownHome: UseSelectStateChangeTypes.ToggleButtonKeyDownHome
482
- ToggleButtonKeyDownEnd: UseSelectStateChangeTypes.ToggleButtonKeyDownEnd
483
- ToggleButtonKeyDownEnter: UseSelectStateChangeTypes.ToggleButtonKeyDownEnter
484
- ToggleButtonKeyDownSpaceButton: UseSelectStateChangeTypes.ToggleButtonKeyDownSpaceButton
485
- ToggleButtonKeyDownPageUp: UseSelectStateChangeTypes.ToggleButtonKeyDownPageUp
486
- ToggleButtonKeyDownPageDown: UseSelectStateChangeTypes.ToggleButtonKeyDownPageDown
487
- ToggleButtonBlur: UseSelectStateChangeTypes.ToggleButtonBlur
488
- MenuMouseLeave: UseSelectStateChangeTypes.MenuMouseLeave
489
- ItemMouseMove: UseSelectStateChangeTypes.ItemMouseMove
490
- ItemClick: UseSelectStateChangeTypes.ItemClick
491
- FunctionToggleMenu: UseSelectStateChangeTypes.FunctionToggleMenu
492
- FunctionOpenMenu: UseSelectStateChangeTypes.FunctionOpenMenu
493
- FunctionCloseMenu: UseSelectStateChangeTypes.FunctionCloseMenu
494
- FunctionSetHighlightedIndex: UseSelectStateChangeTypes.FunctionSetHighlightedIndex
495
- FunctionSelectItem: UseSelectStateChangeTypes.FunctionSelectItem
496
- FunctionSetInputValue: UseSelectStateChangeTypes.FunctionSetInputValue
497
- FunctionReset: UseSelectStateChangeTypes.FunctionReset
498
- }
499
- }
500
-
501
- export const useSelect: UseSelectInterface
502
-
503
- /* useCombobox Types */
504
-
505
- export interface UseComboboxState<Item> {
506
- highlightedIndex: number
507
- selectedItem: Item | null
508
- isOpen: boolean
509
- inputValue: string
510
- }
511
-
512
- export enum UseComboboxStateChangeTypes {
513
- InputKeyDownArrowDown = '__input_keydown_arrow_down__',
514
- InputKeyDownArrowUp = '__input_keydown_arrow_up__',
515
- InputKeyDownEscape = '__input_keydown_escape__',
516
- InputKeyDownHome = '__input_keydown_home__',
517
- InputKeyDownEnd = '__input_keydown_end__',
518
- InputKeyDownPageUp = '__input_keydown_page_up__',
519
- InputKeyDownPageDown = '__input_keydown_page_down__',
520
- InputKeyDownEnter = '__input_keydown_enter__',
521
- InputChange = '__input_change__',
522
- InputBlur = '__input_blur__',
523
- InputClick = '__input_click__',
524
- MenuMouseLeave = '__menu_mouse_leave__',
525
- ItemMouseMove = '__item_mouse_move__',
526
- ItemClick = '__item_click__',
527
- ToggleButtonClick = '__togglebutton_click__',
528
- FunctionToggleMenu = '__function_toggle_menu__',
529
- FunctionOpenMenu = '__function_open_menu__',
530
- FunctionCloseMenu = '__function_close_menu__',
531
- FunctionSetHighlightedIndex = '__function_set_highlighted_index__',
532
- FunctionSelectItem = '__function_select_item__',
533
- FunctionSetInputValue = '__function_set_input_value__',
534
- FunctionReset = '__function_reset__',
535
- ControlledPropUpdatedSelectedItem = '__controlled_prop_updated_selected_item__',
536
- }
537
-
538
- export interface UseComboboxProps<Item> {
539
- items: Item[]
540
- isItemDisabled?(item: Item, index: number): boolean
541
- itemToString?: (item: Item | null) => string
542
- itemToKey?: (item: Item | null) => any
543
- getA11yStatusMessage?: (options: UseComboboxState<Item>) => string
544
- highlightedIndex?: number
545
- initialHighlightedIndex?: number
546
- defaultHighlightedIndex?: number
547
- isOpen?: boolean
548
- initialIsOpen?: boolean
549
- defaultIsOpen?: boolean
550
- selectedItem?: Item | null
551
- initialSelectedItem?: Item | null
552
- defaultSelectedItem?: Item | null
553
- inputValue?: string
554
- initialInputValue?: string
555
- defaultInputValue?: string
556
- id?: string
557
- labelId?: string
558
- menuId?: string
559
- toggleButtonId?: string
560
- inputId?: string
561
- getItemId?: (index: number) => string
562
- scrollIntoView?: (node: HTMLElement, menuNode: HTMLElement) => void
563
- stateReducer?: (
564
- state: UseComboboxState<Item>,
565
- actionAndChanges: UseComboboxStateChangeOptions<Item>,
566
- ) => Partial<UseComboboxState<Item>>
567
- onSelectedItemChange?: (changes: UseComboboxSelectedItemChange<Item>) => void
568
- onIsOpenChange?: (changes: UseComboboxIsOpenChange<Item>) => void
569
- onHighlightedIndexChange?: (
570
- changes: UseComboboxHighlightedIndexChange<Item>,
571
- ) => void
572
- onStateChange?: (changes: UseComboboxStateChange<Item>) => void
573
- onInputValueChange?: (changes: UseComboboxInputValueChange<Item>) => void
574
- environment?: Environment
575
- }
576
-
577
- export interface UseComboboxStateChangeOptions<
578
- Item,
579
- > extends UseComboboxDispatchAction<Item> {
580
- changes: Partial<UseComboboxState<Item>>
581
- }
582
-
583
- export interface UseComboboxDispatchAction<Item> {
584
- type: UseComboboxStateChangeTypes
585
- altKey?: boolean
586
- inputValue?: string
587
- index?: number
588
- highlightedIndex?: number
589
- selectedItem?: Item | null
590
- selectItem?: boolean
591
- }
592
-
593
- export interface UseComboboxStateChange<Item> extends Partial<UseComboboxState<Item>> {
594
- type: UseComboboxStateChangeTypes
595
- }
596
-
597
- export interface UseComboboxSelectedItemChange<
598
- Item,
599
- > extends UseComboboxStateChange<Item> {
600
- selectedItem: Item | null
601
- }
602
-
603
- export interface UseComboboxHighlightedIndexChange<
604
- Item,
605
- > extends UseComboboxStateChange<Item> {
606
- highlightedIndex: number
607
- }
608
-
609
- export interface UseComboboxIsOpenChange<Item> extends UseComboboxStateChange<Item> {
610
- isOpen: boolean
611
- }
612
-
613
- export interface UseComboboxInputValueChange<
614
- Item,
615
- > extends UseComboboxStateChange<Item> {
616
- inputValue: string
617
- }
618
-
619
- export interface UseComboboxGetMenuPropsOptions
620
- extends GetPropsWithRefKey, GetMenuPropsOptions {}
621
-
622
- export interface UseComboboxGetMenuPropsReturnValue extends UseSelectGetMenuReturnValue {}
623
-
624
- export interface UseComboboxGetToggleButtonPropsOptions
625
- extends GetPropsWithRefKey, GetToggleButtonPropsOptions {}
626
-
627
- export interface UseComboboxGetToggleButtonPropsReturnValue {
628
- 'aria-controls': string
629
- 'aria-expanded': boolean
630
- id: string
631
- onPress?: (event: React.BaseSyntheticEvent) => void
632
- onClick?: React.MouseEventHandler
633
- ref?: React.RefObject<any>
634
- tabIndex: -1
635
- }
636
-
637
- export interface UseComboboxGetLabelPropsOptions extends GetLabelPropsOptions {}
638
-
639
- export interface UseComboboxGetLabelPropsReturnValue extends GetLabelPropsReturnValue {}
640
-
641
- export interface UseComboboxGetItemPropsOptions<Item>
642
- extends Omit<GetItemPropsOptions<Item>, 'disabled'>, GetPropsWithRefKey {}
643
-
644
- export interface UseComboboxGetItemPropsReturnValue extends GetItemPropsReturnValue {
645
- 'aria-disabled': boolean
646
- ref?: React.RefObject<any>
647
- }
648
-
649
- export interface UseComboboxGetInputPropsOptions
650
- extends GetInputPropsOptions, GetPropsWithRefKey {}
651
-
652
- export interface UseComboboxGetInputPropsReturnValue extends GetInputPropsReturnValue {
653
- 'aria-activedescendant': string
654
- 'aria-controls': string
655
- 'aria-expanded': boolean
656
- role: 'combobox'
657
- onClick: React.MouseEventHandler
658
- }
659
-
660
- export interface UseComboboxPropGetters<Item> {
661
- getToggleButtonProps: <Options>(
662
- options?: UseComboboxGetToggleButtonPropsOptions & Options,
663
- ) => Overwrite<UseComboboxGetToggleButtonPropsReturnValue, Options>
664
- getLabelProps: <Options>(
665
- options?: UseComboboxGetLabelPropsOptions & Options,
666
- ) => Overwrite<UseComboboxGetLabelPropsReturnValue, Options>
667
- getMenuProps: <Options>(
668
- options?: UseComboboxGetMenuPropsOptions & Options,
669
- otherOptions?: GetPropsCommonOptions,
670
- ) => Overwrite<UseComboboxGetMenuPropsReturnValue, Options>
671
- getItemProps: <Options>(
672
- options: UseComboboxGetItemPropsOptions<Item> & Options,
673
- ) => Omit<
674
- Overwrite<UseComboboxGetItemPropsReturnValue, Options>,
675
- 'index' | 'item'
676
- >
677
- getInputProps: <Options>(
678
- options?: UseComboboxGetInputPropsOptions & Options,
679
- otherOptions?: GetPropsCommonOptions,
680
- ) => Overwrite<UseComboboxGetInputPropsReturnValue, Options>
681
- }
682
-
683
- export interface UseComboboxActions<Item> {
684
- reset: () => void
685
- openMenu: () => void
686
- closeMenu: () => void
687
- toggleMenu: () => void
688
- selectItem: (item: Item | null) => void
689
- setHighlightedIndex: (index: number) => void
690
- setInputValue: (inputValue: string) => void
691
- }
692
-
693
- export type UseComboboxReturnValue<Item> = UseComboboxState<Item> &
694
- UseComboboxPropGetters<Item> &
695
- UseComboboxActions<Item>
696
-
697
- export interface UseComboboxInterface {
698
- <Item>(props: UseComboboxProps<Item>): UseComboboxReturnValue<Item>
699
- stateChangeTypes: {
700
- InputKeyDownArrowDown: UseComboboxStateChangeTypes.InputKeyDownArrowDown
701
- InputKeyDownArrowUp: UseComboboxStateChangeTypes.InputKeyDownArrowUp
702
- InputKeyDownEscape: UseComboboxStateChangeTypes.InputKeyDownEscape
703
- InputKeyDownHome: UseComboboxStateChangeTypes.InputKeyDownHome
704
- InputKeyDownEnd: UseComboboxStateChangeTypes.InputKeyDownEnd
705
- InputKeyDownPageDown: UseComboboxStateChangeTypes.InputKeyDownPageDown
706
- InputKeyDownPageUp: UseComboboxStateChangeTypes.InputKeyDownPageUp
707
- InputKeyDownEnter: UseComboboxStateChangeTypes.InputKeyDownEnter
708
- InputChange: UseComboboxStateChangeTypes.InputChange
709
- InputBlur: UseComboboxStateChangeTypes.InputBlur
710
- InputClick: UseComboboxStateChangeTypes.InputClick
711
- MenuMouseLeave: UseComboboxStateChangeTypes.MenuMouseLeave
712
- ItemMouseMove: UseComboboxStateChangeTypes.ItemMouseMove
713
- ItemClick: UseComboboxStateChangeTypes.ItemClick
714
- ToggleButtonClick: UseComboboxStateChangeTypes.ToggleButtonClick
715
- FunctionToggleMenu: UseComboboxStateChangeTypes.FunctionToggleMenu
716
- FunctionOpenMenu: UseComboboxStateChangeTypes.FunctionOpenMenu
717
- FunctionCloseMenu: UseComboboxStateChangeTypes.FunctionCloseMenu
718
- FunctionSetHighlightedIndex: UseComboboxStateChangeTypes.FunctionSetHighlightedIndex
719
- FunctionSelectItem: UseComboboxStateChangeTypes.FunctionSelectItem
720
- FunctionSetInputValue: UseComboboxStateChangeTypes.FunctionSetInputValue
721
- FunctionReset: UseComboboxStateChangeTypes.FunctionReset
722
- ControlledPropUpdatedSelectedItem: UseComboboxStateChangeTypes.ControlledPropUpdatedSelectedItem
723
- }
724
- }
725
-
726
- export const useCombobox: UseComboboxInterface
727
-
728
- // useMultipleSelection types.
729
-
730
- export interface UseMultipleSelectionState<Item> {
731
- selectedItems: Item[]
732
- activeIndex: number
733
- }
734
-
735
- export enum UseMultipleSelectionStateChangeTypes {
736
- SelectedItemClick = '__selected_item_click__',
737
- SelectedItemKeyDownDelete = '__selected_item_keydown_delete__',
738
- SelectedItemKeyDownBackspace = '__selected_item_keydown_backspace__',
739
- SelectedItemKeyDownNavigationNext = '__selected_item_keydown_navigation_next__',
740
- SelectedItemKeyDownNavigationPrevious = '__selected_item_keydown_navigation_previous__',
741
- DropdownKeyDownNavigationPrevious = '__dropdown_keydown_navigation_previous__',
742
- DropdownKeyDownBackspace = '__dropdown_keydown_backspace__',
743
- DropdownClick = '__dropdown_click__',
744
- FunctionAddSelectedItem = '__function_add_selected_item__',
745
- FunctionRemoveSelectedItem = '__function_remove_selected_item__',
746
- FunctionSetSelectedItems = '__function_set_selected_items__',
747
- FunctionSetActiveIndex = '__function_set_active_index__',
748
- FunctionReset = '__function_reset__',
749
- }
750
-
751
- export interface UseMultipleSelectionProps<Item> {
752
- selectedItems?: Item[]
753
- initialSelectedItems?: Item[]
754
- defaultSelectedItems?: Item[]
755
- itemToKey?: (item: Item | null) => any
756
- getA11yStatusMessage?: (options: UseMultipleSelectionState<Item>) => string
757
- stateReducer?: (
758
- state: UseMultipleSelectionState<Item>,
759
- actionAndChanges: UseMultipleSelectionStateChangeOptions<Item>,
760
- ) => Partial<UseMultipleSelectionState<Item>>
761
- activeIndex?: number
762
- initialActiveIndex?: number
763
- defaultActiveIndex?: number
764
- onActiveIndexChange?: (
765
- changes: UseMultipleSelectionActiveIndexChange<Item>,
766
- ) => void
767
- onSelectedItemsChange?: (
768
- changes: UseMultipleSelectionSelectedItemsChange<Item>,
769
- ) => void
770
- onStateChange?: (changes: UseMultipleSelectionStateChange<Item>) => void
771
- keyNavigationNext?: string
772
- keyNavigationPrevious?: string
773
- environment?: Environment
774
- }
775
-
776
- export interface UseMultipleSelectionStateChangeOptions<
777
- Item,
778
- > extends UseMultipleSelectionDispatchAction<Item> {
779
- changes: Partial<UseMultipleSelectionState<Item>>
780
- }
781
-
782
- export interface UseMultipleSelectionDispatchAction<Item> {
783
- type: UseMultipleSelectionStateChangeTypes
784
- index?: number
785
- selectedItem?: Item | null
786
- selectedItems?: Item[]
787
- activeIndex?: number
788
- }
789
-
790
- export interface UseMultipleSelectionStateChange<Item> extends Partial<
791
- UseMultipleSelectionState<Item>
792
- > {
793
- type: UseMultipleSelectionStateChangeTypes
794
- }
795
-
796
- export interface UseMultipleSelectionActiveIndexChange<
797
- Item,
798
- > extends UseMultipleSelectionStateChange<Item> {
799
- activeIndex: number
800
- }
801
-
802
- export interface UseMultipleSelectionSelectedItemsChange<
803
- Item,
804
- > extends UseMultipleSelectionStateChange<Item> {
805
- selectedItems: Item[]
806
- }
807
-
808
- export interface A11yRemovalMessage<Item> {
809
- itemToString: (item: Item) => string
810
- resultCount: number
811
- activeSelectedItem: Item
812
- removedSelectedItem: Item
813
- activeIndex: number
814
- }
815
-
816
- export interface UseMultipleSelectionGetSelectedItemPropsOptions<Item>
817
- extends React.HTMLProps<HTMLElement>, GetPropsWithRefKey {
818
- index?: number
819
- selectedItem: Item
820
- }
821
-
822
- export interface UseMultipleSelectionGetSelectedItemReturnValue {
823
- ref?: React.RefObject<any>
824
- tabIndex: 0 | -1
825
- onClick: React.MouseEventHandler
826
- onKeyDown: React.KeyboardEventHandler
827
- }
828
-
829
- export interface UseMultipleSelectionGetDropdownPropsOptions extends React.HTMLProps<HTMLElement> {
830
- preventKeyAction?: boolean
831
- }
832
-
833
- export interface UseMultipleSelectionGetDropdownReturnValue {
834
- ref?: React.RefObject<any>
835
- onClick?: React.MouseEventHandler
836
- onKeyDown?: React.KeyboardEventHandler
837
- }
838
-
839
- export interface UseMultipleSelectionPropGetters<Item> {
840
- getDropdownProps: <Options>(
841
- options?: UseMultipleSelectionGetDropdownPropsOptions & Options,
842
- extraOptions?: GetPropsCommonOptions,
843
- ) => Omit<
844
- Overwrite<UseMultipleSelectionGetDropdownReturnValue, Options>,
845
- 'preventKeyAction'
846
- >
847
- getSelectedItemProps: <Options>(
848
- options: UseMultipleSelectionGetSelectedItemPropsOptions<Item> & Options,
849
- ) => Omit<
850
- Overwrite<UseMultipleSelectionGetSelectedItemReturnValue, Options>,
851
- 'index' | 'selectedItem'
852
- >
853
- }
854
-
855
- export interface UseMultipleSelectionActions<Item> {
856
- reset: () => void
857
- addSelectedItem: (item: Item) => void
858
- removeSelectedItem: (item: Item) => void
859
- setSelectedItems: (items: Item[]) => void
860
- setActiveIndex: (index: number) => void
861
- }
862
-
863
- export type UseMultipleSelectionReturnValue<Item> = UseMultipleSelectionState<Item> &
864
- UseMultipleSelectionPropGetters<Item> &
865
- UseMultipleSelectionActions<Item>
866
-
867
- export interface UseMultipleSelectionInterface {
868
- <Item>(
869
- props?: UseMultipleSelectionProps<Item>,
870
- ): UseMultipleSelectionReturnValue<Item>
871
- stateChangeTypes: {
872
- SelectedItemClick: UseMultipleSelectionStateChangeTypes.SelectedItemClick
873
- SelectedItemKeyDownDelete: UseMultipleSelectionStateChangeTypes.SelectedItemKeyDownDelete
874
- SelectedItemKeyDownBackspace: UseMultipleSelectionStateChangeTypes.SelectedItemKeyDownBackspace
875
- SelectedItemKeyDownNavigationNext: UseMultipleSelectionStateChangeTypes.SelectedItemKeyDownNavigationNext
876
- SelectedItemKeyDownNavigationPrevious: UseMultipleSelectionStateChangeTypes.SelectedItemKeyDownNavigationPrevious
877
- DropdownKeyDownNavigationPrevious: UseMultipleSelectionStateChangeTypes.DropdownKeyDownNavigationPrevious
878
- DropdownKeyDownBackspace: UseMultipleSelectionStateChangeTypes.DropdownKeyDownBackspace
879
- DropdownClick: UseMultipleSelectionStateChangeTypes.DropdownClick
880
- FunctionAddSelectedItem: UseMultipleSelectionStateChangeTypes.FunctionAddSelectedItem
881
- FunctionRemoveSelectedItem: UseMultipleSelectionStateChangeTypes.FunctionRemoveSelectedItem
882
- FunctionSetSelectedItems: UseMultipleSelectionStateChangeTypes.FunctionSetSelectedItems
883
- FunctionSetActiveIndex: UseMultipleSelectionStateChangeTypes.FunctionSetActiveIndex
884
- FunctionReset: UseMultipleSelectionStateChangeTypes.FunctionReset
885
- }
886
- }
887
-
888
- export const useMultipleSelection: UseMultipleSelectionInterface