Merge pull request #2795 from alxhslm/tab-nested

fix: Tab shortcode supports nested shortcodes
This commit is contained in:
Nuno C.
2026-03-11 00:27:03 +00:00
committed by GitHub
3 changed files with 12 additions and 6 deletions
+5 -4
View File
@@ -879,6 +879,7 @@ The `tabs` shortcode is commonly used to present different variants of a particu
| `default` | **Optional.** Label of the tab to be active by default. If not set, the first tab will be active. | | `default` | **Optional.** Label of the tab to be active by default. If not set, the first tab will be active. |
| `label` | **Required.** The text label displayed on the tab button. | | `label` | **Required.** The text label displayed on the tab button. |
| `icon` | **Optional.** Icon name to display before the label. | | `icon` | **Optional.** Icon name to display before the label. |
| `md` | **Optional.** Render tab content as Markdown (default `true`). Set `md=false` to allow nested shortcodes inside tab content. |
**Example 1: Basic Usage** **Example 1: Basic Usage**
@@ -905,8 +906,8 @@ The `tabs` shortcode is commonly used to present different variants of a particu
``` ```
{{</* /tab */>}} {{</* /tab */>}}
{{</* tab label="Linux" */>}} {{</* tab label="Linux" md=false */>}}
See [documentation](https://code.visualstudio.com/docs/setup/linux#_install-vs-code-on-linux). {{</* alert */>}}See [documentation](https://code.visualstudio.com/docs/setup/linux#_install-vs-code-on-linux).{{</* /alert */>}}
{{</* /tab */>}} {{</* /tab */>}}
{{</* /tabs */>}} {{</* /tabs */>}}
@@ -936,8 +937,8 @@ The `tabs` shortcode is commonly used to present different variants of a particu
``` ```
{{< /tab >}} {{< /tab >}}
{{< tab label="Linux" >}} {{< tab label="Linux" md=false >}}
See [documentation](https://code.visualstudio.com/docs/setup/linux#_install-vs-code-on-linux). {{< alert >}}See [documentation](https://code.visualstudio.com/docs/setup/linux#_install-vs-code-on-linux).{{< /alert >}}
{{< /tab >}} {{< /tab >}}
{{< /tabs >}} {{< /tabs >}}
+6 -1
View File
@@ -1,7 +1,12 @@
{{- $label := .Get "label" -}} {{- $label := .Get "label" -}}
{{- $icon := .Get "icon" -}} {{- $icon := .Get "icon" -}}
{{- $index := .Parent.Store.Get "tab-index" | default 0 -}} {{- $index := .Parent.Store.Get "tab-index" | default 0 -}}
{{- $content := .InnerDeindent | strings.TrimSpace | .Page.RenderString -}} {{- $md := .Get "md" | default true -}}
{{- $isMarkdown := or (eq $md true) (eq $md "true") -}}
{{- $content := .Inner -}}
{{- if $isMarkdown -}}
{{- $content = .InnerDeindent | strings.TrimSpace | .Page.RenderString -}}
{{- end -}}
{{- $tabs := .Parent.Store.Get "tabs" | default slice -}} {{- $tabs := .Parent.Store.Get "tabs" | default slice -}}
{{- .Parent.Store.Set "tabs" ($tabs | append (dict "label" $label "icon" $icon "content" $content)) -}} {{- .Parent.Store.Set "tabs" ($tabs | append (dict "label" $label "icon" $icon "content" $content)) -}}
+1 -1
View File
@@ -45,7 +45,7 @@
{{- $isActive = eq $nTabs 0 -}} {{- $isActive = eq $nTabs 0 -}}
{{- end -}} {{- end -}}
<div class="tab__panel {{ if $isActive }}tab--active{{ end }}" data-tab-index="{{ $nTabs }}"> <div class="tab__panel {{ if $isActive }}tab--active{{ end }}" data-tab-index="{{ $nTabs }}">
{{ index . "content" }} {{ index . "content" | safeHTML }}
</div> </div>
{{- end -}} {{- end -}}
</div> </div>