Typescript: Autocomplete value validation when using controlled value (empty first) but with disabledClearable on
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- react, typescript
- Domain
- frontend
Research direction
Start with @mui/core/AutocompleteUnstyled/useAutocomplete.d.ts and reproduce the TypeScript error in the linked CodeSandbox. Check the AutocompleteValue type against the controlled empty value and disabledClearable case; done means the reported controlled usage type-checks while the existing value constraints remain intact.
Written by the indexing model from the issue text.
Description
- [ X] The issue is present in the latest release.
- [ X] I have searched the issues of this repository and believe that this is not a duplicate.
Current Behavior 😯
Im implementing the Autocompleted with controlled state (from react-hook-form).
The Value in the beginning should be emtpy => null
When the user selects an Item the ID of the item is the controlled value.
When providing value || null the typescript compiler throws an error because nullable values are not allowed when disableClearable is set. It makes sence that an updated value cannot be null but initialy it makes sence.
Expected Behavior 🤔
Allow null as value even when disableClearable is set.
Steps to Reproduce 🕹
@mui/core/AutocompleteUnstyled/useAutocomplete.d.ts
export type AutocompleteValue<T, Multiple, DisableClearable, FreeSolo> = Multiple extends
| undefined
| false
? DisableClearable extends true
? NonNullable<T | AutocompleteFreeSoloValueMapping<FreeSolo>>
: T | null | AutocompleteFreeSoloValueMapping<FreeSolo>
: Array<T | AutocompleteFreeSoloValueMapping<FreeSolo>>;
https://codesandbox.io/s/combobox-material-demo-forked-dd8de?file=/demo.tsx
Context 🔦
I have a form (react-hook-form) one field is userId which can be selected from a list of users
The value is controlled and should contain the userId directly which is why I dont just pass the whole object (label + id) as value but rather select the option by value (id)
- Dominant language
- JavaScript
- Stars
- 99.1k
- Forks
- 32.5k
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 106
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from mui/material-ui
-
type: new feature waiting for 👍
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
mui/material-ui#48254 · 3 comments · 1 reaction ·
-
has workaround scope: avatar waiting for 👍
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
mui/material-ui#48190 · 5 comments ·
-
has workaround scope: typography type: new feature waiting for 👍
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
mui/material-ui#46488 · 2 comments · 1 reaction ·
-
has workaround scope: text field type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
mui/material-ui#37216 · 6 comments ·
-
docs scope: autocomplete
Difficulty 1/5 1-3 hours Newbie friendliness 68/100
mui/material-ui#35713 · 5 comments ·
Similar issues
-
code-quality refactoring
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
optimization optimization:agents-md-curator
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
githubnext/gh-aw-cao#13143 ·
-
status: needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100