Can you post a link to your site? I suspect the issue is due to styling in your theme.
Here My link:
https://whois.nhachinhchu.org/t/bang-gia-xem-data-nha-chinh-chu/63389
Sorry to the interrupt the ongoing discussion. Found something that Iām not sure if it has been reported already.
If the post has a link on a header, the number of clicks is also shown on the TOC entry:
Since this update, Iām seeing an error on discourse-docs pages that have a table of contents. For example, on this page on Meta, the ToC isnāt displayed, and I see an error in my browser dev tools:
On my site, I also see a banner at the top of the page saying āPosts may not display correctly because one of the post content decorators on your site raised an error. Check the browser developer tools for more information.ā
Thanks @simonk, I just (2 minutes ago!) merged a fix for that issue. Please update the component on your site, and let me know if the banner on your own site is persisting.
Thanks for the reply! The error is gone, but the ToC is not displayed within the discourse-docs version of the page. Before yesterdayās update, the ToC was displayed on the discourse-docs version of the page as well as the ānormalā version.
(This isnāt urgent for me - I deployed the update on a staging site, not production, so it doesnāt matter that itās not working properly)
Edit: Iām running 2.8.0.beta11 (42c71789f9), if that makes any difference.
Yeah, I see what you mean. Unfortunately, my changes to TOC use an outlet in the topic view that is missing in docs. Will look into it.
Made a few more changes to the component today, they should address the issues raised by @mentalstring and @simonk. In your case, Simon, you need a full rebuild because you need to pull an update to the docs plugin as well.
@huynhthai824 itās very likely that your issue will be fixed once you update the component.
Tks so much, Iām so happy, My issue is solve.
Thank againā¦
After a full rebuild, I can confirm that the ToC appears correctly on the discourse-docs page - thanks a lot
I see youāve also now restricted the ToC to 2 levels. Given the horizontal space, I think this is reasonable, but it means that third-level headings are displayed in the ToC at the same nesting level as their parents.
ie. at the moment, this text:
# First Heading
## First Subheading
### Child of First Subheading
### Child of First Subheading
## Second Subheading
### Child of Second Subheading
### Child of Second Subheading
# Second Heading
Produces this ToC:
I wonder if it would be better for third-level headings and below to be excluded from the ToC altogether?
Also, the DOM structure doesnāt look quite right - each second level item is a <ul>
with a single <li>
inside it:
Good catch. Iām not sure how often we use 3+ levels, but itās possible to reintroduce them, it shouldnāt be too complicated.
Good catch, again. This one was a small mistake, it should be fixed once this PR is merged.
If youāre in the mood for feature requests, perhaps the max depth could be controlled via a settingā¦
In my experience, the ToC feature only works on the first posting but not on subsequent postings. Is this correct? If so, could my remark be treated as a feature request therefore? BTW, the ToC, even on the first posting, is a really great addition.Ā R
Hello everyone, I have an issue since the last upgrade on this great theme component, but on mobile only. When I click on the table of contents button, the slider with the full toc is not opening.
If I use a very small window in Desktop, this button and slider works great. So it might be an issue on Android only.
Here is the log on my up-to-date (Discourse and TOC) forum:
Message
Uncaught TypeError: Cannot read properties of null (reading 'classList')
Url: https://iunctis.fr/theme-javascripts/671f772e071bd55050592ff8541b659afe421259.js?__ws=iunctis.fr
Line: 36
Column: 49
Window Location: https://iunctis.fr/t/le-mensuel-01-decembre-2021/9591
Backtrace
TypeError: Cannot read properties of null (reading 'classList')
at n.showTOCOverlay (https://iunctis.fr/theme-javascripts/671f772e071bd55050592ff8541b659afe421259.js?__ws=iunctis.fr:36:49)
at e.n._join (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:412333)
at e.n.join (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:409358)
at h (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:273784)
at https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:65110
at a (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:260923)
at https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:65054
at n._triggerAction (https://iunctis.fr/assets/application-945e3f0cb654a8c23b30e86f5e955be5599a8330d68ce75e97b8228ad45ff6fd.js:1:1254524)
at n.click (https://iunctis.fr/assets/application-945e3f0cb654a8c23b30e86f5e955be5599a8330d68ce75e97b8228ad45ff6fd.js:1:1254160)
Env
HTTP HOSTS: iunctis.fr
If I use an android user agent in my firefox desktop version, I have this error if I click on the button in this forum:
Uncaught TypeError: document.querySelector(...) is null
showTOCOverlay 4916e6ed2a984e00537fe797b799637f1a801ffe.js:374
_join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4033
join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3999
p _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2870
An _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:1147
o _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2785
An _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:1147
_triggerAction _application-2646ad3bbed41e42bb77806dc41fbea2.js:489
click _application-2646ad3bbed41e42bb77806dc41fbea2.js:488
trigger _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2560
n _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2422
_run _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4034
_join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4033
join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3999
p _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2870
handleEvent _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2574
o _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2785
handleEvent _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2574
handleEvent _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2499
setupHandler _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2524
dispatch _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:347
handle _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:342
add _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:342
Oe _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:339
each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:123
each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:116
Oe _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:339
on _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:358
initialize _application-2646ad3bbed41e42bb77806dc41fbea2.js:3354
initialize _application-2646ad3bbed41e42bb77806dc41fbea2.js:62
runInstanceInitializers _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2730
each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4074
walk _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4064
each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4056
topsort _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4056
_runInitializer _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2733
runInstanceInitializers _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2730
_bootSync _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2604
didBecomeReady _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2623
invoke _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3963
flush _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3955
flush _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3969
_end _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4032
end _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3988
_run _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4034
_join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4033
join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3999
p _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2870
bind _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2873
u _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:272
c _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:273
setTimeout handler*a/< _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:274
l _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:265
fireWith _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:266
fire _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:266
l _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:265
fireWith _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:266
ready _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:283
z _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:283
EventListener.handleEvent* _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:283
<anonymous> _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:109
<anonymous> _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:109
4916e6ed2a984e00537fe797b799637f1a801ffe.js:374:18
On my phone, I have Chrome version 97.0.4692 if it helps
Am I the only one who experience this?
This is a recent regression due to a change in core, Iāve got a fix ready in FIX: Restore outlet in mobile views by pmusaraj Ā· Pull Request #15683 Ā· discourse/discourse Ā· GitHub, once that is merged, you can rebuild your site and the issue should be fixed. Sorry about that.
Last week, I also added back the third indentation level for headings in the component, as mentioned by Simon above.
I am hesitating to add a setting here, the vast, vast majority of use-cases donāt need it. And, the component has classes for each level as well, so if you want to hide the 4th and 5th level, you can do so with this css:
li.d-toc-h4, li.d-toc-h5 {
display:none;
}
Itās merged and working fine, thanks!
I noticed that the <div data-theme-toc="true"> </div>
at the top of a topic introduced extra margin. For example:
Iāve added this to my theme, which seems to fix it:
// ToC elements at the top of the post introduce unwanted
// space. Discourse sets the top margin of the first child in the post
// to zero, but this doesn't work when the ToC is the first
// child. Instead we'll set the top margin of the element following
// the ToC to zero.
div[data-theme-toc="true"] + * {
margin-top: 0px;
}
Perhaps something like that needs to be added to the component?
Good catch, Iāve added that CSS rule in this PR: https://github.com/discourse/DiscoTOC/pull/30
I have addressed this issue in the past by moving the embed code to the bottom of the post. Does feel a bit hacky but it works.
I have posts that have extra DIVs in their bodies. For example, On Storytelling - Public - Podcaster Community
The DIV which triggers the TOC generation is inside a DIVā¦ and TOC notices that. But other headings, inside DIVs, donāt seem to get noticed by TOC.
ā¦not the best screenshot. Thatās an H2 in an arbitrary/just-for-styling DIV which does not appear in the TOC.
ā¦not shown is the <div
that triggers the TOC, which is inside the DIV with the crazy attribute/value pairā¦
updated hours later to add: Maybe just ā:scope h1,ā etc rather than requiring the headings be immediate children of the scope?
ā¦also, this was mentioned in March '21, DiscoTOC - automatic table of contents - #255 by Ed_Bobkov