-
Notifications
You must be signed in to change notification settings - Fork 929
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
[ts] selectedItem type definition for controlled usage #1088
Comments
Makes sense, all typings for the hooks in this case should be updated. Will this be a breaking change? |
@silviuaavram Great question. It's difficult to say whether it will be a breaking change, since the current type definitions are arguably already "broken" for Typescript users who wish to control the Let me reach out to some TS wizards to see what the ideal Type definition should be here. Something feels off about simply expanding the type thusly, but I'm admittedly not super knowledgable here 👇 interface UseComboboxParams {
selectedItem?: Item | null;
} |
That would be awesome. Thanks @mattrothenberg ! |
**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
🎉 This issue has been resolved in version 6.0.0 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
downshift
version:latest
node
version:12.31.
npm
(oryarn
) version:1.21.
Relevant code or config
What you did:
In trying to control a Combobox by passing a
null
value to it, I get a TS error since the type definition ofselectedItem
expects either anItem
orundefined
. As far as I understand from reading the docs, passing anundefined
value here suggests that you want to use the combobox in an uncontrolled manner, which is not what I'm after.https://github.com/downshift-js/downshift/blob/master/typings/index.d.ts#L417
What happened:
Reproduction repository:
https://codesandbox.io/s/unruffled-elion-1fx0s?file=/src/App.tsx
Suggested solution:
Should the type definition for
selectedItem
be expanded to includenull
types as well?The text was updated successfully, but these errors were encountered: