diff --git a/.all-contributorsrc b/.all-contributorsrc
index b74bbba61..fc435d4d1 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1324,6 +1324,15 @@
"code",
"bug"
]
+ },
+ {
+ "login": "clementgarbay",
+ "name": "ClΓ©ment Garbay",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/12433625?v=4",
+ "profile": "https://github.com/clementgarbay",
+ "contributions": [
+ "code"
+ ]
}
],
"repoHost": "https://github.com",
diff --git a/README.md b/README.md
index bffa05f3e..d5a96bf91 100644
--- a/README.md
+++ b/README.md
@@ -1229,183 +1229,184 @@ Thanks goes to these people ([emoji key][emojis]):
-
+
diff --git a/src/hooks/reducer.js b/src/hooks/reducer.js
index cca930f31..66917221c 100644
--- a/src/hooks/reducer.js
+++ b/src/hooks/reducer.js
@@ -1,8 +1,7 @@
import {getHighlightedIndexOnOpen, getDefaultValue} from './utils'
-import * as stateChangeTypes from './stateChangeTypes'
/* eslint-disable complexity */
-export default function downshiftCommonReducer(state, action) {
+export default function downshiftCommonReducer(state, action, stateChangeTypes) {
const {type, props} = action
let changes
diff --git a/src/hooks/stateChangeTypes.js b/src/hooks/stateChangeTypes.js
deleted file mode 100644
index ac4a879ce..000000000
--- a/src/hooks/stateChangeTypes.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import productionEnum from '../productionEnum.macro'
-
-export const MenuMouseLeave = productionEnum('__menu_mouse_leave__')
-
-export const ItemMouseMove = productionEnum('__item_mouse_move__')
-export const ItemClick = productionEnum('__item_click__')
-
-export const ToggleButtonClick = productionEnum('__togglebutton_click__')
-
-export const FunctionToggleMenu = productionEnum('__function_toggle_menu__')
-export const FunctionOpenMenu = productionEnum('__function_open_menu__')
-export const FunctionCloseMenu = productionEnum('__function_close_menu__')
-export const FunctionSetHighlightedIndex = productionEnum(
- '__function_set_highlighted_index__',
-)
-export const FunctionSelectItem = productionEnum('__function_select_item__')
-export const FunctionSetInputValue = productionEnum(
- '__function_set_input_value__',
-)
-export const FunctionReset = productionEnum('__function_reset__')
-
-// to be used by useSelect and useCombobox
-export function productionEnumFn(state) {
- return productionEnum(state)
-}
diff --git a/src/hooks/useCombobox/reducer.js b/src/hooks/useCombobox/reducer.js
index 91479ff53..c43b668f5 100644
--- a/src/hooks/useCombobox/reducer.js
+++ b/src/hooks/useCombobox/reducer.js
@@ -144,7 +144,7 @@ export default function downshiftUseComboboxReducer(state, action) {
}
break
default:
- return commonReducer(state, action)
+ return commonReducer(state, action, stateChangeTypes)
}
return {
diff --git a/src/hooks/useCombobox/stateChangeTypes.js b/src/hooks/useCombobox/stateChangeTypes.js
index 57aa53c51..21af8c23d 100644
--- a/src/hooks/useCombobox/stateChangeTypes.js
+++ b/src/hooks/useCombobox/stateChangeTypes.js
@@ -1,17 +1,34 @@
-import {productionEnumFn} from '../stateChangeTypes'
+import productionEnum from '../../productionEnum.macro'
-export * from '../stateChangeTypes'
-
-export const InputKeyDownArrowDown = productionEnumFn(
+export const InputKeyDownArrowDown = productionEnum(
'__input_keydown_arrow_down__',
)
-export const InputKeyDownArrowUp = productionEnumFn('__input_keydown_arrow_up__')
-export const InputKeyDownEscape = productionEnumFn('__input_keydown_escape__')
-export const InputKeyDownHome = productionEnumFn('__input_keydown_home__')
-export const InputKeyDownEnd = productionEnumFn('__input_keydown_end__')
-export const InputKeyDownEnter = productionEnumFn('__input_keydown_enter__')
-export const InputChange = productionEnumFn('__input_change__')
-export const InputBlur = productionEnumFn('__input_blur__')
-export const ControlledPropUpdatedSelectedItem = productionEnumFn(
+export const InputKeyDownArrowUp = productionEnum('__input_keydown_arrow_up__')
+export const InputKeyDownEscape = productionEnum('__input_keydown_escape__')
+export const InputKeyDownHome = productionEnum('__input_keydown_home__')
+export const InputKeyDownEnd = productionEnum('__input_keydown_end__')
+export const InputKeyDownEnter = productionEnum('__input_keydown_enter__')
+export const InputChange = productionEnum('__input_change__')
+export const InputBlur = productionEnum('__input_blur__')
+
+export const MenuMouseLeave = productionEnum('__menu_mouse_leave__')
+
+export const ItemMouseMove = productionEnum('__item_mouse_move__')
+export const ItemClick = productionEnum('__item_click__')
+
+export const ToggleButtonClick = productionEnum('__togglebutton_click__')
+
+export const FunctionToggleMenu = productionEnum('__function_toggle_menu__')
+export const FunctionOpenMenu = productionEnum('__function_open_menu__')
+export const FunctionCloseMenu = productionEnum('__function_close_menu__')
+export const FunctionSetHighlightedIndex = productionEnum(
+ '__function_set_highlighted_index__',
+)
+export const FunctionSelectItem = productionEnum('__function_select_item__')
+export const FunctionSetInputValue = productionEnum(
+ '__function_set_input_value__',
+)
+export const FunctionReset = productionEnum('__function_reset__')
+export const ControlledPropUpdatedSelectedItem = productionEnum(
'__controlled_prop_updated_selected_item__',
)
diff --git a/src/hooks/useSelect/reducer.js b/src/hooks/useSelect/reducer.js
index 7d5440426..347b077a3 100644
--- a/src/hooks/useSelect/reducer.js
+++ b/src/hooks/useSelect/reducer.js
@@ -163,7 +163,7 @@ export default function downshiftSelectReducer(state, action) {
break
default:
- return commonReducer(state, action)
+ return commonReducer(state, action, stateChangeTypes)
}
return {
diff --git a/src/hooks/useSelect/stateChangeTypes.js b/src/hooks/useSelect/stateChangeTypes.js
index 1a0f86e0d..8183d950a 100644
--- a/src/hooks/useSelect/stateChangeTypes.js
+++ b/src/hooks/useSelect/stateChangeTypes.js
@@ -1,26 +1,42 @@
-import {productionEnumFn} from '../stateChangeTypes'
+import productionEnum from '../../productionEnum.macro'
-export * from '../stateChangeTypes'
-
-export const MenuKeyDownArrowDown = productionEnumFn(
+export const MenuKeyDownArrowDown = productionEnum(
'__menu_keydown_arrow_down__',
)
-export const MenuKeyDownArrowUp = productionEnumFn('__menu_keydown_arrow_up__')
-export const MenuKeyDownEscape = productionEnumFn('__menu_keydown_escape__')
-export const MenuKeyDownHome = productionEnumFn('__menu_keydown_home__')
-export const MenuKeyDownEnd = productionEnumFn('__menu_keydown_end__')
-export const MenuKeyDownEnter = productionEnumFn('__menu_keydown_enter__')
-export const MenuKeyDownSpaceButton = productionEnumFn(
+export const MenuKeyDownArrowUp = productionEnum('__menu_keydown_arrow_up__')
+export const MenuKeyDownEscape = productionEnum('__menu_keydown_escape__')
+export const MenuKeyDownHome = productionEnum('__menu_keydown_home__')
+export const MenuKeyDownEnd = productionEnum('__menu_keydown_end__')
+export const MenuKeyDownEnter = productionEnum('__menu_keydown_enter__')
+export const MenuKeyDownSpaceButton = productionEnum(
'__menu_keydown_space_button__',
)
-export const MenuKeyDownCharacter = productionEnumFn('__menu_keydown_character__')
-export const MenuBlur = productionEnumFn('__menu_blur__')
-export const ToggleButtonKeyDownArrowDown = productionEnumFn(
+export const MenuKeyDownCharacter = productionEnum('__menu_keydown_character__')
+export const MenuBlur = productionEnum('__menu_blur__')
+export const MenuMouseLeave = productionEnum('__menu_mouse_leave__')
+
+export const ItemMouseMove = productionEnum('__item_mouse_move__')
+export const ItemClick = productionEnum('__item_click__')
+
+export const ToggleButtonClick = productionEnum('__togglebutton_click__')
+export const ToggleButtonKeyDownArrowDown = productionEnum(
'__togglebutton_keydown_arrow_down__',
)
-export const ToggleButtonKeyDownArrowUp = productionEnumFn(
+export const ToggleButtonKeyDownArrowUp = productionEnum(
'__togglebutton_keydown_arrow_up__',
)
-export const ToggleButtonKeyDownCharacter = productionEnumFn(
+export const ToggleButtonKeyDownCharacter = productionEnum(
'__togglebutton_keydown_character__',
)
+
+export const FunctionToggleMenu = productionEnum('__function_toggle_menu__')
+export const FunctionOpenMenu = productionEnum('__function_open_menu__')
+export const FunctionCloseMenu = productionEnum('__function_close_menu__')
+export const FunctionSetHighlightedIndex = productionEnum(
+ '__function_set_highlighted_index__',
+)
+export const FunctionSelectItem = productionEnum('__function_select_item__')
+export const FunctionSetInputValue = productionEnum(
+ '__function_set_input_value__',
+)
+export const FunctionReset = productionEnum('__function_reset__')
diff --git a/typings/index.d.ts b/typings/index.d.ts
index 7fe1eeaba..f7d52548d 100644
--- a/typings/index.d.ts
+++ b/typings/index.d.ts
@@ -500,7 +500,7 @@ export interface UseComboboxGetInputPropsOptions
GetPropsWithRefKey {}
export interface UseComboboxGetComboboxPropsOptions
- extends React.HTMLProps {}
+ extends React.HTMLProps {}
export interface UseComboboxPropGetters- {
getToggleButtonProps: (