selfprivacy.org/_vendor/github.com/google/docsy/layouts/shortcodes/tabpane.html
2024-04-26 01:15:39 +03:00

176 lines
6.1 KiB
HTML

{{/* Check parameter types */ -}}
{{ $tpPersistAttrName := "data-td-tp-persist" -}}
{{ with .Get "langEqualsHeader" -}}
{{ if ne ( printf "%T" . ) "bool" -}}
{{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "langEqualsHeader" (printf "%T" .) $.Position -}}
{{ end -}}
{{ end -}}
{{ with .Get "text" -}}
{{ if ne ( printf "%T" . ) "bool" -}}
{{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "text" (printf "%T" .) $.Position -}}
{{ end -}}
{{ end -}}
{{ $_persistLang := .Get "persistLang" -}}
{{ if and (ne $_persistLang nil) (ne $_persistLang "") -}}
{{ if ne ( printf "%T" $_persistLang ) "bool" -}}
{{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "persistLang" (printf "%T" $_persistLang) $.Position -}}
{{ else -}}
{{ warnf "Shortcode %q parameter `persistLang` is deprecated, use `persist` instead: %s" $.Name $.Position -}}
{{ end -}}
{{ end -}}
{{ $_persist := .Get "persist" -}}
{{ with $_persist -}}
{{ $matched := findRE "^(header|lang|disabled)$" . -}}
{{ if not $matched -}}
{{ errorf "Shortcode %q: parameter %q should be one of 'header', 'lang', or 'disabled'; but got %s. Error position: %s" $.Name "persist" $_persist $.Position -}}
{{ end -}}
{{ end -}}
{{ with .Get "right" -}}
{{ if ne ( printf "%T" . ) "bool" -}}
{{ errorf "Shortcode %q: boolean value expected for parameter %q, but got %s. Error position: %s" $.Name "right" (printf "%T" .) $.Position -}}
{{ end -}}
{{ end -}}
{{/* Set values given defined within tabpane */ -}}
{{ $langPane := default "" ($.Get "lang") -}}
{{ $hloptionsPane := default "" ($.Get "highlight") -}}
{{ $textPane := default false ($.Get "text") -}}
{{ $langEqualsHeader := default false ($.Get "langEqualsHeader") -}}
{{ $deprecatedPersistLang := $_persistLang | default true -}}
{{ $persistKeyKind := $_persist
| default (cond (or $textPane (ne "" $langPane)) "header" "lang") -}}
{{ $persistTabpane := and $deprecatedPersistLang (ne $persistKeyKind "disabled") -}}
{{ $rightPane := default false ($.Get "right") -}}
{{ $activeSet := false -}}
{{/* Scratchpad gets populated through call to .Inner */ -}}
{{ .Inner -}}
{{ $duplicate := false -}}
{{ $duplicateKey := "" -}}
{{ $persistKeyList := slice -}}
{{ $tabPaneOrdinal := .Ordinal -}}
{{/* Nav tabs */ -}}
<ul class="nav nav-tabs{{ if $rightPane }} justify-content-end{{ end }}" id="tabs-{{- $tabPaneOrdinal -}}" role="tablist">
{{ range $index, $element := $.Scratch.Get "tabs" -}}
{{ $enabled := not $element.disabled -}}
{{ $lang := $langPane -}}
{{ if $langEqualsHeader -}}
{{ $lang = $element.header -}}
{{ end -}}
{{ with $element.language -}}
{{ $lang = . -}}
{{ end -}}
{{ $persistKey := "" -}}
{{ if eq $persistKeyKind "lang" -}}
{{ with $lang -}}
{{ $persistKey = . -}}
{{ else -}}
{{ with findRE "```(\\S+)" $element.content 1 -}}
{{ $persistKey = index . 1 -}}
{{ end -}}
{{ end -}}
{{ else if eq $persistKeyKind "header" -}}
{{ $persistKey = $element.header -}}
{{ end -}}
{{ $persistKey = $persistKey | lower -}}
{{ $persistTab := and $persistTabpane $persistKey $enabled -}}
{{/* Check for duplicate tab-persistence keys */ -}}
{{ if $persistTab -}}
{{ if in $persistKeyList $persistKey -}}
{{ $duplicate = true -}}
{{ $duplicateKey = $persistKey -}}
{{ $persistTab = false -}}
{{ else -}}
{{ $persistKeyList = $persistKeyList | append $persistKey -}}
{{ end -}}
{{ end -}}
{{ $rightpush := false -}}
{{ with $element.rightpush -}}
{{ $rightpush = . -}}
{{ end -}}
<li class="nav-item{{ if $rightpush }} ms-auto{{ end -}}">
{{/* Generate the IDs for the <a> and the <div> elements */ -}}
{{ $tabid := printf "tabs-%02v-%v-tab" $tabPaneOrdinal $index | anchorize -}}
{{ $entryid := printf "tabs-%02v-%v" $tabPaneOrdinal $index | anchorize -}}
{{ $isActive := and $enabled (not $activeSet) -}}
<button class="nav-link
{{- if $isActive -}}
{{ $activeSet = true }} active
{{- end -}}
{{ if not $enabled }} disabled{{ end -}}"
id="{{ $tabid }}" data-bs-toggle="tab" data-bs-target="#{{ $entryid }}" role="tab"
{{ if $persistTab -}}
{{ printf "%s=%q " $tpPersistAttrName $persistKey | safeHTMLAttr -}}
{{ end -}}
aria-controls="{{- $entryid -}}" aria-selected="{{ $isActive }}">
{{ index . "header" | markdownify }}
</button>
</li>
{{- end }}
</ul>
{{ if $duplicate -}}
{{ warnf "Shortcode %q: duplicate tab-persistence key %q detected, disabling persistance to avoid multiple tab display. Position: %s" $.Name $duplicateKey $.Position -}}
{{ end -}}
{{ $activeSet = false -}}
{{/* Tab panes */ -}}
<div class="tab-content" id="tabs-{{ $tabPaneOrdinal }}-content">
{{- range $index, $element := $.Scratch.Get "tabs" -}}
{{ $lang := $langPane -}}
{{ if $langEqualsHeader -}}
{{ $lang = $element.header -}}
{{ end -}}
{{ with $element.language -}}
{{ $lang = . -}}
{{ end -}}
{{ $enabled := not $element.disabled -}}
{{ $hloptions := $hloptionsPane -}}
{{ with $element.highlight -}}
{{ $hloptions = . -}}
{{ end -}}
{{ $text := $textPane -}}
{{ with $element.text -}}
{{ $text = . }}
{{ end -}}
{{ $tabid := printf "tabs-%02v-%v-tab" $tabPaneOrdinal $index | anchorize -}}
{{ $entryid := printf "tabs-%02v-%v" $tabPaneOrdinal $index | anchorize }}
{{ $isActive := and $enabled (not $activeSet) -}}
<div class="{{ if $text }}tab-body {{end}}tab-pane fade
{{- if $isActive -}}
{{ $activeSet = true }} show active
{{- end }}"
id="{{ $entryid }}" role="tabpanel" aria-labelled-by="{{ $tabid }}" tabindex="{{ $tabPaneOrdinal }}">
{{ if $text -}}
{{ index . "content" -}}
{{ else -}}
{{ highlight (trim (index . "content") "\r\n") $lang $hloptions -}}
{{ end }}
</div>
{{- end }}
</div>