{{- /* Renders a version callout for when a feature was introduced in a component. Accepts positional parameters. Depends on site.Params.min_version_thresholds and i18n strings for component IDs @param {string} component The ID of the component as defined in site config. @param {string} version The version of the component in which the thing was introduced. @param {string} [link] A relevant link to e.g. release note. @returns {template.HTML} @examples {{< introduced buildx 0.12.0 "../release-notes.md#0120" >}} {{< introduced desktop "4.28" "https://example.com/" >}} */ -}} {{- $component := .Get 0 }} {{- $v := .Get 1 }} {{- $link := .Get 2 }} {{- $pos := .Position }} {{- with (index site.Params.min_version_thresholds $component) }} {{- /* Hacky semver comparison. - Split the input version and threshold version strings - Range over the input version []string - Cast to ints and compare input with same index threshold []string - Set threshold false if input is lower than config, and break */ -}} {{ $vslice := strings.Split $v "." }} {{ $tslice := strings.Split . "." }} {{ $versionAboveThreshold := true }} {{ range $i, $e := $vslice }} {{ if compare.Lt (cast.ToInt $e) (cast.ToInt (index $tslice $i)) }} {{ $versionAboveThreshold = false }} {{ break }} {{ end }} {{ end }} {{- if $versionAboveThreshold }}
{{ partialCached "icon.html" "chevron_right" "chevron_right" }} Introduced in {{ T $component }} version {{- if $link }} {{ page.RenderString (fmt.Printf `[%s](%s)` $v $link) }} {{- else }} {{ $v }} {{- end }}
{{- end }} {{- else }} {{ errorf "[introduced] invalid component: %s %v" $component $pos }} {{- end }}