-
Notifications
You must be signed in to change notification settings - Fork 7.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #19452 from dvdksn/version-callouts
feat: version callouts
- Loading branch information
Showing
4 changed files
with
89 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
{{- /* | ||
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 }} | ||
<div class="text-gray-light dark:text-gray-dark flex items-center gap-2"> | ||
<span class="icon-svg flex items-center">{{ partial "icon.html" "chevron_right" }}</span> | ||
<span>Introduced in {{ T $component }} version | ||
{{- if $link }} | ||
{{ page.RenderString (fmt.Printf `[%s](%s)` $v $link) }} | ||
{{- else }} | ||
{{ $v }} | ||
{{- end }} | ||
</span> | ||
</div> | ||
{{- else }} | ||
{{ warnf "[introduced] version below threshold: %s %s %v" $component $v $pos }} | ||
{{- end }} | ||
{{- else }} | ||
{{ errorf "[introduced] invalid component: %s %v" $component $pos }} | ||
{{- end }} |