Files
hugo-book/layouts/_shortcodes/tab.html
Daniel Strobusch f597beb5c4 Fix tabs: use page-level counter for unique group IDs (#817) (#818)
.Page.Store.Add is broken in Hugo 0.158+ (returns nil).
Additionally, Hugo renders shortcodes bottom-up, so the parent
tabs.html cannot pass data to child tab.html via .Store.

Fix:
- shortcode-id partial: replace .Page.Store.Add with explicit
  .Page.Store.Set + add, which works in Hugo 0.161+.
- tab.html: the first child tab generates a page-unique ID via
  the partial and caches it on .Parent.Store for siblings.
- tabs.html: remove broken .Store.Set "id" line.

This avoids the .Parent.Ordinal collision when tabs are nested
inside other shortcodes (details, columns, etc.).

Fixes #817
2026-05-27 13:51:45 +02:00

16 lines
596 B
HTML

{{- if not .Ordinal -}}{{- /* first tab sets group ID */ -}}
{{- .Parent.Store.Set "id" (partial "docs/text/shortcode-id" .Parent) -}}
{{- end -}}
{{- $group := printf "tabs-%d" (.Parent.Store.Get "id") -}}
{{- $tab := printf "%s-%d" $group .Ordinal -}}
<input type="radio" class="toggle" name="{{ $group }}" id="{{ $tab }}" {{ if not .Ordinal }}checked="checked"{{ end }} />
{{- /* remove whitespaces */ -}}
<label for="{{ $tab }}">
{{- .Get 0 -}}
</label>
{{- /* remove whitespaces */ -}}
<div class="book-tabs-content markdown-inner">
{{ .Inner -}}
</div>
{{- /* remove whitespaces */ -}}