Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Change the implementation of
useForwardedRef
to not modify the associated ref during render. The preferred method of updating the forwarded ref according to React is itsuseImperativeHandle
hook.See #6551 for details on the issue.
The change to the DateInput-test is basically because the
.focus()
done via a setTimeout() can actually happen after the DOM has gone away (even though the timeout is only 1ms.)Where should the reviewer start?
refs.js
What testing has been done on this PR?
jest, manual and storybook
How should this be manually tested?
Go to the DateInput "Format" story and click on the icon to open the Calendar. Then click on a date in the calendar and close it. It should use the ref that the Calendar forwarded from DateInput to set focus on the DateInput input field.
pass a ref into any component that uses
useForwardedRef()
and then display that ref from auseEffect
.Do Jest tests follow these best practices?
screen
is used for querying.userEvent
is used in place offireEvent
.asFragment()
is used for snapshot testing.Any background context you want to provide?
What are the relevant issues?
Closes #6551
Screenshots (if appropriate)
Do the grommet docs need to be updated?
No
Should this PR be mentioned in the release notes?
Yes
Is this change backwards compatible or is it a breaking change?
Backwards compatible