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]): - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - + + +

Kent C. Dodds

πŸ’» πŸ“– πŸš‡ ⚠️ πŸ‘€ πŸ“ πŸ› πŸ’‘ πŸ€” πŸ“’

Ryan Florence

πŸ€”

Jared Forsyth

πŸ€” πŸ“–

Jack Moore

πŸ’‘

Travis Arnold

πŸ’» πŸ“–

Marcy Sutton

πŸ› πŸ€”

Jeremy Gayed

πŸ’‘

Kent C. Dodds

πŸ’» πŸ“– πŸš‡ ⚠️ πŸ‘€ πŸ“ πŸ› πŸ’‘ πŸ€” πŸ“’

Ryan Florence

πŸ€”

Jared Forsyth

πŸ€” πŸ“–

Jack Moore

πŸ’‘

Travis Arnold

πŸ’» πŸ“–

Marcy Sutton

πŸ› πŸ€”

Jeremy Gayed

πŸ’‘

Haroen Viaene

πŸ’‘

monssef

πŸ’‘

Federico Zivolo

πŸ“–

Divyendu Singh

πŸ’‘ πŸ’» πŸ“– ⚠️

Muhammad Salman

πŸ’»

JoΓ£o Alberto

πŸ’»

Bernard Lin

πŸ’» πŸ“–

Haroen Viaene

πŸ’‘

monssef

πŸ’‘

Federico Zivolo

πŸ“–

Divyendu Singh

πŸ’‘ πŸ’» πŸ“– ⚠️

Muhammad Salman

πŸ’»

JoΓ£o Alberto

πŸ’»

Bernard Lin

πŸ’» πŸ“–

Geoff Davis

πŸ’‘

Anup

πŸ“–

Ferdinand Salis

πŸ› πŸ’»

Kye Hohenberger

πŸ›

Julien Goux

πŸ› πŸ’» ⚠️

Joachim Seminck

πŸ’»

Jesse Harlin

πŸ› πŸ’‘

Geoff Davis

πŸ’‘

Anup

πŸ“–

Ferdinand Salis

πŸ› πŸ’»

Kye Hohenberger

πŸ›

Julien Goux

πŸ› πŸ’» ⚠️

Joachim Seminck

πŸ’»

Jesse Harlin

πŸ› πŸ’‘

Matt Parrish

πŸ”§ πŸ‘€

thom

πŸ’»

Vu Tran

πŸ’»

Codie Mullins

πŸ’» πŸ’‘

Mohammad Rajabifard

πŸ“– πŸ€”

Frank Tan

πŸ’»

Kier Borromeo

πŸ’‘

Matt Parrish

πŸ”§ πŸ‘€

thom

πŸ’»

Vu Tran

πŸ’»

Codie Mullins

πŸ’» πŸ’‘

Mohammad Rajabifard

πŸ“– πŸ€”

Frank Tan

πŸ’»

Kier Borromeo

πŸ’‘

Paul Veevers

πŸ’»

Ron Cruz

πŸ“–

Rick McGavin

πŸ“–

Jelle Versele

πŸ’‘

Brent Ertz

πŸ€”

Justice Mba

πŸ’» πŸ“– πŸ€”

Mark Ellis

πŸ€”

Paul Veevers

πŸ’»

Ron Cruz

πŸ“–

Rick McGavin

πŸ“–

Jelle Versele

πŸ’‘

Brent Ertz

πŸ€”

Justice Mba

πŸ’» πŸ“– πŸ€”

Mark Ellis

πŸ€”

us͑an̸df͘rien͜ds͠

πŸ› πŸ’» ⚠️

Robin Drexler

πŸ› πŸ’»

Arturo Romero

πŸ’‘

yp

πŸ› πŸ’» ⚠️

Dave Garwacke

πŸ“–

Ivan Pazhitnykh

πŸ’» ⚠️

Luis Merino

πŸ“–

us͑an̸df͘rien͜ds͠

πŸ› πŸ’» ⚠️

Robin Drexler

πŸ› πŸ’»

Arturo Romero

πŸ’‘

yp

πŸ› πŸ’» ⚠️

Dave Garwacke

πŸ“–

Ivan Pazhitnykh

πŸ’» ⚠️

Luis Merino

πŸ“–

Andrew Hansen

πŸ’» ⚠️ πŸ€”

John Whiles

πŸ’»

Justin Hall

πŸš‡

Pete NykΓ€nen

πŸ‘€

Jared Palmer

πŸ’»

Philip Young

πŸ’» ⚠️ πŸ€”

Alexander Nanberg

πŸ“– πŸ’»

Andrew Hansen

πŸ’» ⚠️ πŸ€”

John Whiles

πŸ’»

Justin Hall

πŸš‡

Pete NykΓ€nen

πŸ‘€

Jared Palmer

πŸ’»

Philip Young

πŸ’» ⚠️ πŸ€”

Alexander Nanberg

πŸ“– πŸ’»

Pete Redmond

πŸ›

Nick Lavin

πŸ› πŸ’» ⚠️

James Long

πŸ› πŸ’»

Michael Ball

πŸ› πŸ’» ⚠️

CAVALEIRO Julien

πŸ’‘

Kim GrΓΆnqvist

πŸ’» ⚠️

Sijie

πŸ› πŸ’»

Pete Redmond

πŸ›

Nick Lavin

πŸ› πŸ’» ⚠️

James Long

πŸ› πŸ’»

Michael Ball

πŸ› πŸ’» ⚠️

CAVALEIRO Julien

πŸ’‘

Kim GrΓΆnqvist

πŸ’» ⚠️

Sijie

πŸ› πŸ’»

Dony Sukardi

πŸ’‘ πŸ’¬ πŸ’» ⚠️

Dillon Mulroy

πŸ“–

Curtis Tate Wilkinson

πŸ’»

Brice BERNARD

πŸ› πŸ’»

Tony Xu

πŸ’»

Anthony Ng

πŸ“–

S S

πŸ’¬ πŸ’» πŸ“– πŸ€” ⚠️

Dony Sukardi

πŸ’‘ πŸ’¬ πŸ’» ⚠️

Dillon Mulroy

πŸ“–

Curtis Tate Wilkinson

πŸ’»

Brice BERNARD

πŸ› πŸ’»

Tony Xu

πŸ’»

Anthony Ng

πŸ“–

S S

πŸ’¬ πŸ’» πŸ“– πŸ€” ⚠️

Austin Tackaberry

πŸ’¬ πŸ’» πŸ“– πŸ› πŸ’‘ πŸ€” πŸ‘€ ⚠️

Jean Duthon

πŸ› πŸ’»

Anton Telesh

πŸ› πŸ’»

Eric Edem

πŸ’» πŸ“– πŸ€” ⚠️

Austin Wood

πŸ’¬ πŸ“– πŸ‘€

Mark Murray

πŸš‡

Gianmarco

πŸ› πŸ’»

Austin Tackaberry

πŸ’¬ πŸ’» πŸ“– πŸ› πŸ’‘ πŸ€” πŸ‘€ ⚠️

Jean Duthon

πŸ› πŸ’»

Anton Telesh

πŸ› πŸ’»

Eric Edem

πŸ’» πŸ“– πŸ€” ⚠️

Austin Wood

πŸ’¬ πŸ“– πŸ‘€

Mark Murray

πŸš‡

Gianmarco

πŸ› πŸ’»

Emmanuel Pastor

πŸ’‘

dalehurwitz

πŸ’»

Bogdan Lobor

πŸ› πŸ’»

Luke Herrington

πŸ’‘

Brandon Clemons

πŸ’»

Kieran

πŸ’»

Brushedoctopus

πŸ› πŸ’»

Emmanuel Pastor

πŸ’‘

dalehurwitz

πŸ’»

Bogdan Lobor

πŸ› πŸ’»

Luke Herrington

πŸ’‘

Brandon Clemons

πŸ’»

Kieran

πŸ’»

Brushedoctopus

πŸ› πŸ’»

Cameron Edwards

πŸ’» ⚠️

stereobooster

πŸ’» ⚠️

Trevor Pierce

πŸ‘€

Xuefei Li

πŸ’»

Alfred Ringstad

πŸ’»

D[oa]vid Weisz

πŸ’»

Royston Shufflebotham

πŸ› πŸ’»

Cameron Edwards

πŸ’» ⚠️

stereobooster

πŸ’» ⚠️

Trevor Pierce

πŸ‘€

Xuefei Li

πŸ’»

Alfred Ringstad

πŸ’»

D[oa]vid Weisz

πŸ’»

Royston Shufflebotham

πŸ› πŸ’»

MichaΓ«l De Boey

πŸ’»

Henry

πŸ’»

Andrew Walton

πŸ› πŸ’» ⚠️

Arthur Denner

πŸ’»

Cody Olsen

πŸ’»

Thomas Ladd

πŸ’»

lixualinta

πŸ’»

MichaΓ«l De Boey

πŸ’»

Henry

πŸ’»

Andrew Walton

πŸ› πŸ’» ⚠️

Arthur Denner

πŸ’»

Cody Olsen

πŸ’»

Thomas Ladd

πŸ’»

lixualinta

πŸ’»

Jacob Cofman

πŸ’»

Joshua Freedman

πŸ’»

Amy

πŸ’‘

Rogin Farrer

πŸ’»

Dmitrii Kanatnikov

πŸ’»

Dallon Feldner

πŸ› πŸ’»

Samuel Fuller Thomas

πŸ’»

Jacob Cofman

πŸ’»

Joshua Freedman

πŸ’»

Amy

πŸ’‘

Rogin Farrer

πŸ’»

Dmitrii Kanatnikov

πŸ’»

Dallon Feldner

πŸ› πŸ’»

Samuel Fuller Thomas

πŸ’»

Ryan Castner

πŸ’»

Silviu Alexandru Avram

πŸ› πŸ’» ⚠️

Anton Volkov

πŸ’» ⚠️

Keegan Street

πŸ› πŸ’»

Manuel DuguΓ©

πŸ’»

Max Karadeniz

πŸ’»

Gonzalo Beviglia

πŸ› πŸ’» πŸ‘€

Ryan Castner

πŸ’»

Silviu Alexandru Avram

πŸ› πŸ’» ⚠️

Anton Volkov

πŸ’» ⚠️

Keegan Street

πŸ› πŸ’»

Manuel DuguΓ©

πŸ’»

Max Karadeniz

πŸ’»

Gonzalo Beviglia

πŸ› πŸ’» πŸ‘€

Brian Kilrain

πŸ› πŸ’» ⚠️ πŸ“–

Gerd Zschaler

πŸ’» πŸ›

Karen Gasparyan

πŸ’»

Sergey Korchinskiy

πŸ› πŸ’» ⚠️

Edygar Oliveira

πŸ’» πŸ›

epeicher

πŸ›

François Chalifour

πŸ’» ⚠️ πŸ“¦

Brian Kilrain

πŸ› πŸ’» ⚠️ πŸ“–

Gerd Zschaler

πŸ’» πŸ›

Karen Gasparyan

πŸ’»

Sergey Korchinskiy

πŸ› πŸ’» ⚠️

Edygar Oliveira

πŸ’» πŸ›

epeicher

πŸ›

François Chalifour

πŸ’» ⚠️ πŸ“¦

Maxim Malov

πŸ› πŸ’»

Enrique Piqueras

πŸ€”

Oleksandr Fediashov

πŸ’» πŸš‡ πŸ€”

Mikhail Bashurov

πŸ’» πŸ›

Joshua Godi

πŸ’»

Kanitkorn Sujautra

πŸ› πŸ’»

Jorge Moya

πŸ’» πŸ›

Maxim Malov

πŸ› πŸ’»

Enrique Piqueras

πŸ€”

Oleksandr Fediashov

πŸ’» πŸš‡ πŸ€”

Mikhail Bashurov

πŸ’» πŸ›

Joshua Godi

πŸ’»

Kanitkorn Sujautra

πŸ› πŸ’»

Jorge Moya

πŸ’» πŸ›

Jakub JastrzΔ™bski

πŸ’»

Shukhrat Mukimov

πŸ’»

Jhonny Moreira

πŸ’»

stefanprobst

πŸ’» ⚠️

Louisa Spicer

πŸ’» πŸ›

Ryō Igarashi

πŸ› πŸ’»

Ryan Lue

πŸ“–

Jakub JastrzΔ™bski

πŸ’»

Shukhrat Mukimov

πŸ’»

Jhonny Moreira

πŸ’»

stefanprobst

πŸ’» ⚠️

Louisa Spicer

πŸ’» πŸ›

Ryō Igarashi

πŸ› πŸ’»

Ryan Lue

πŸ“–

Mateusz Leonowicz

πŸ’»

Dennis Thompson

⚠️

Maksym Boytsov

πŸ’»

Sergey Skrynnikov

πŸ’» ⚠️

Vincent Voyer

πŸ“–

limejoe

πŸ’» πŸ›

Manish Kumar

πŸ’»

Mateusz Leonowicz

πŸ’»

Dennis Thompson

⚠️

Maksym Boytsov

πŸ’»

Sergey Skrynnikov

πŸ’» ⚠️

Vincent Voyer

πŸ“–

limejoe

πŸ’» πŸ›

Manish Kumar

πŸ’»

Anang Fachreza

πŸ“– πŸ’‘

Nick Deom

πŸ’» πŸ›

Anang Fachreza

πŸ“– πŸ’‘

Nick Deom

πŸ’» πŸ›

ClΓ©ment Garbay

πŸ’»
- + 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: (