SD-2508 - fix: toc not being displayed inside w:sdt#2850
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ad510e09aa
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…SDTs Word stores TOC field codes on the child tableOfContents node, not the wrapper SDT. The new branch was passing the wrapper's tocInstruction, which is undefined for Custom TOC docs, silently dropping per-TOC options like '\o "1-3"'. Mirror processTocChildren's existing recursion (toc.ts:162-172) and prefer the child's instruction. Adds 3 unit tests for the new branch covering instruction preference, fallback to the wrapper, and the Array.isArray guard.
caio-pizzol
left a comment
There was a problem hiding this comment.
hey @chittolinag! loaded the customer's "Custom Table of Contents" doc against your branch and the TOC entries render now :)
i pushed a follow-up commit (56377a1) with the missing child-instruction handling and 3 unit tests for the new branch.
two things still open, both inline.
|
@artem-harbour mind doing a review on this one pls? |
|
@chittolina pls resolve merge conflicts |
|
@caio-pizzol, please check your comments and let us know if this is ready for merge. |
caio-pizzol
left a comment
There was a problem hiding this comment.
hey @chittolinag! thanks for addressing last round - approving.
left one small thing inline if you want to tidy it up, but nothing blocking.
|
🎉 This PR is included in @superdoc-dev/mcp v0.3.0-next.62 The release is available on GitHub release |
|
🎉 This PR is included in @superdoc-dev/react v1.2.0-next.104 The release is available on GitHub release |
|
🎉 This PR is included in vscode-ext v2.3.0-next.106 |
|
🎉 This PR is included in superdoc-cli v0.8.0-next.78 The release is available on GitHub release |
|
🎉 This PR is included in superdoc v1.30.0-next.60 The release is available on GitHub release |
|
🎉 This PR is included in superdoc-sdk v1.8.0-next.60 |
|
🎉 This PR is included in superdoc-cli v0.9.0 The release is available on GitHub release |
|
🎉 This PR is included in superdoc v1.32.0 The release is available on GitHub release |
|
🎉 This PR is included in @superdoc-dev/mcp v0.4.0 The release is available on GitHub release |
|
🎉 This PR is included in @superdoc-dev/react v1.3.0 The release is available on GitHub release |
|
🎉 This PR is included in vscode-ext v2.4.0 |
|
🎉 This PR is included in superdoc-sdk v1.9.0 |
Issue
Documents with a TOC inside a
w:sdtwhosedocPartGalleryis not exactly"Table of Contents"(e.g."Custom Table of Contents") have the TOC dropped on render.The field preprocessor converts TOC field codes (
w:fldChar begin/end) into a singlesd:tableOfContentselement regardless of the gallery type. This means the PMdocumentPartObjectnode for any custom TOC gallery ends up with atableOfContentschild.handleDocumentPartObjectNodedispatches ondocPartGallery === 'Table of Contents'for theprocessTocChildrenpath. For any other gallery string it falls to an else-if loop that only handledparagraphchildren —tableOfContentschildren were silently dropped.Proposed solution
Add a
tableOfContentsbranch to the else-if loop indocument-part-object.tsthat forwards to the existingprocessTocChildrenhelper. No changes to the import handler or preprocessing pipeline.Side notes
This PR fixes the issue where the TOC is completely dropped and doesn't show up in the document. However, there are still rendering issues with the TOC. This other PR is open and fixes the rendering issue.