pass close fn/forwardref to promptlink #698
Merged
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.
✨ Codu Pull Request 💻
Pull Request details
The dropdown nav is a headless UI disclosure, usually handles closing. From docs >>
To close a disclosure manually when clicking a child of its panel, render that child as a Disclosure.Button. You can use the ‘as’ prop to customize which element is being rendered.
However in this case it is not working, because the as prop is passed the PromptLink component.
<Disclosure.Button
as={Link} // import Link as PromptLink
to={item.href}
{item.name}
</Disclosure.Button>
Fix
The disclosure component exposes a close render prop, which I drill down and invoke in the PromptLink component.
Nav > MobileNav > SubNav > PromptLink
Note:
Before I made modifications to the code, a forwardRef error was being displayed in the console. I resolved this issue by introducing a ref to the disclosure button, passing it as a forwardRef to PromptLink, and then applying the ref to the next/Link component.
I also added a displayName to the PromptLink component to please the linting gods.
Any Breaking changes
None
Associated Screenshots