Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

downshift v6 #1104

Merged
merged 7 commits into from
Jul 21, 2020
Merged

downshift v6 #1104

merged 7 commits into from
Jul 21, 2020

Conversation

silviuaavram
Copy link
Collaborator

@silviuaavram silviuaavram commented Jun 27, 2020

What:

Update downshift to v6.

Why:

Introduce breaking changes that fix the issues below.
Fixes #1088.
Fixes #1015.
Fixes #1010.
Fixes #719.

How:

The list of breaking changes:

BREAKING CHANGE: Update TS typings for selectedItem to accept null in both useSelect and useCombobox.

To migrate to the new change, update your types or code if necessary. selectedItem, defaultSelectedItem and initialSelectedItem now have Item | null instead of Item type. PR with the changes: #1090

BREAKING CHANGE: Update TS typings for itemToString to accept null for the item parameter, in useSelect and useCombobox + in Downshift where this was missing. useMultipleSelection type for itemToString stays the same as it can't receive null as item.

To migrate to the new change, update your types or code if necessary. itemToString: (item: Item) => string -> itemToString: (item: Item | null) => string}. PR with the changes: #1075 #1105

BREAKING CHANGE: Pass type to the onChange (onInputValueChange, onHighlightedIndexChange, onSelectedItemChange, onIsOpenChange) handler parameters, as specified in the documentation. Also updated the TS typings to reflect this + onStateChange - the type parameter was passed but it was not reflected in the TS types.

To migrate to the new change, update your types or code if necessary, better to view the changes in the PR: #985.

BREAKING BEHAVIOUR [useCombobox]: When an item is highlighted by keyboard and user closes the menu using mouse/touch, the item is not selected anymore. The only selection on Blur happens using either Tab / Shift+Tab. PR with the changes: #1109

BREAKING BEHAVIOUR [useCombobox & downshift]: When pressing Escape and the menu is open, only close the menu. When the menu is closed and there is an item selected and/or text in the input, clear the selectedItem and the inputValue. PR with the changes: #719

Checklist:

  • Documentation
  • Tests
  • TypeScript Types
  • Flow Types
  • Ready to be merged

silviuaavram and others added 5 commits June 27, 2020 15:10
This makes it so the argument passed to `itemToString` can be `null` for the following interfaces:

- `UseSelectProps`
- `UseComboboxProps`
- `Actions`

This makes them behave in line with various documentation, which states that they can receive null:

- [`useCombobox#itemToString`](https://github.com/downshift-js/downshift/tree/master/src/hooks/useCombobox#itemtostring)
- [`useSelect#itemToString`](https://github.com/downshift-js/downshift/tree/master/src/hooks/useSelect#itemtostring)
- [Downshift component](https://github.com/downshift-js/downshift#itemtostring)

I didn’t touch `useMultipleSelection`, because its documentation didn’t have this line: [`useMultipleSelection#itemToString`](https://github.com/downshift-js/downshift/tree/master/src/hooks/useMultipleSelection#itemtostring)

I was also not sure about `itemToString` passed to the various `A11y`-functions, so I didn’t touch these either.

This fix has previously been applied to the main Downshift component: #505

This will be a breaking change for people using typescript with `strictNullChecks` turned on if they don’t already check for null. I will leave that decision with you, though.
* include type in hook on change handler params

* fix tests to check this change

* update TS typings

* fix ts typings again

* add typings for action
@silviuaavram silviuaavram merged commit ddd0e6d into master Jul 21, 2020
@silviuaavram silviuaavram deleted the v6 branch July 21, 2020 14:21
@silviuaavram
Copy link
Collaborator Author

🎉 This PR is included in version 6.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment