-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* remove `nullable` prop * prevent selecting active option on blur + cleanup and adjust comments * remove nullable from comments * bump TypeScript to 5.4 This gives us `NoInfer<T>`! * simplify types of `Combobox` Now that `nullable` is gone, we can take another look at the type definition. This in combination with the new `NoInfer` type makes types drastically simpler and more correct. * re-add `nullable` to prevent type issues But let's mark it as deprecated to hint that something changed. * update changelog * improve `ByComparator` type If we are just checking for `T extends null`, then `{id:1,name:string}|null` will also be true and therefore we would eventually return `string` instead of `"id" | "name"`. To solve this, we first check if `NonNullable<T> extends never`, this would be the case if `T` is `null`. Otherwise, we know it's not just `null` but it can be something else with or without `null`. To be sure, we use `keyof NonNullable<null>` to get rid of the `null` part and to only keep the rest of the object (if it's an object). * ensure the `by` prop type handles `multiple` values correctly This way the `by` prop will still compare single values that are present inside the array. This now also solves a pending TypeScript issue that we used to `// @ts-expect-error` before. * type uncontrolled `Combobox` components correctly We have some tests that use uncontrolled components which means that we can't infer the type from the `value` type. * simplify `onChange` calls Now that we don't infer the type when using the generic inside of `onChange`, it means that we can use `onChange={setValue}` directly because we don't have to worry about the updater function of `setValue` anymore. * correctly type `onChange`, by adding `null` If you are in single value mode, then the `onChange` can (and will) receive `null` as a value (when you clear the input field). We never properly typed it so this fixes that. In multiple value mode this won't happen, if anything the value will be `[]` but not `null`. * remove `nullable` prop from playground * drop `nullable` mentions in tests
- Loading branch information
1 parent
6d44a8d
commit d03fbb1
Showing
7 changed files
with
104 additions
and
162 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.