fix(mdx-loader): improve mdxJsxTextElementToHtml #9262
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.
Motivation
MDX headings are converted to html string to generate toc items.
This is a quite hacky and unreliable process that we already used in MDX v1. Now that MDX v2 is more strict, we have to implement more of this hacky process ourselves.
This PR slightly improves the process by allowing users to pass a
className
attribute to heading JSX elements.This is used on a few websites, notably the React-Native website:
### <div class="label required basic">Required</div> **`data`**
https://reactnative.dev/docs/flatlist#required-data
Letting the className pass-through the TOC heading serialization is important to let users customize how it renders on the TOC.
It is possible that supporting other attributes become useful in the future. If it's the case I'd prefer you to let me know so that we can study that on a case-by-case basis.
Ultimately, this remains a workaround. We should probably emit real JSX nodes instead of HTML strings to render the TOC, but that's a more complex refactor.
Test Plan
CI
Test links
Deploy preview: https://deploy-preview-_____--docusaurus-2.netlify.app/
Related issues/PRs