Skip to content

Commit

Permalink
🪜 fix set defaultValues for controlled components with values pro…
Browse files Browse the repository at this point in the history
…ps (#9780)

* fix set defaultValues for controlled components with values props

* update test and save some bytes
  • Loading branch information
bluebill1049 committed Jan 16, 2023
1 parent aaa2329 commit a500857
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
24 changes: 24 additions & 0 deletions src/__tests__/controller.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1429,4 +1429,28 @@ describe('Controller', () => {
show: false,
});
});

it('should set up defaultValues for controlled component with values prop', () => {
function App() {
const { control } = useForm<any>({
values: {
firstName: 'test',
},
});

return (
<Controller
render={({ field }) => <input {...field} />}
control={control}
name="firstName"
/>
);
}

render(<App />);

expect((screen.getByRole('textbox') as HTMLInputElement).value).toEqual(
'test',
);
});
});
7 changes: 4 additions & 3 deletions src/logic/createFormControl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,10 @@ export function createFormControl<
errors: {},
};
let _fields = {};
let _defaultValues = isObject(_options.defaultValues)
? cloneObject(_options.defaultValues) || {}
: {};
let _defaultValues =
isObject(_options.defaultValues) || isObject(_options.values)
? cloneObject(_options.defaultValues || _options.values) || {}
: {};
let _formValues = _options.shouldUnregister
? {}
: cloneObject(_defaultValues);
Expand Down

0 comments on commit a500857

Please sign in to comment.