1+ const versions = [
2+ {{- range $version := .Versions }}
3+ {{- $text := $version.Text }}
4+ {{- if eq $text "Experimental" }}
5+ {{- $text = "Master" }}
6+ {{- end}}
7+ {{- if eq $version.State "PRE_FINAL_RELEASE" }}
8+ {{- $text = printf "%s (RC)" .Name }}
9+ {{- end}}
10+ {path: "{{ $version.Path }}", text: "{{ $text }}", selected: {{ eq $version.Name $.Current }} },
11+ {{- end}}
12+ ];
13+
14+ // Material theme
15+
16+ function addMaterialMenu(elt, versions) {
17+ const current = versions.find(function (value) {
18+ return value.selected
19+ })
20+
21+ const rootLi = document.createElement('li');
22+ rootLi.classList.add('md-nav__item');
23+ rootLi.classList.add('md-nav__item--nested');
24+ rootLi.classList.add('md-nav__item--version');
25+
26+ const input = document.createElement('input');
27+ input.classList.add('md-toggle');
28+ input.classList.add('md-nav__toggle');
29+ input.setAttribute('data-md-toggle', 'nav-10000000');
30+ input.id = "nav-10000000";
31+ input.type = 'checkbox';
32+
33+ rootLi.appendChild(input);
34+
35+ const lbl01 = document.createElement('label')
36+ lbl01.classList.add('md-nav__link');
37+ lbl01.setAttribute('for', 'nav-10000000');
38+ lbl01.textContent = current.text + " ";
39+
40+ rootLi.appendChild(lbl01);
41+
42+ const nav = document.createElement('nav')
43+ nav.classList.add('md-nav');
44+ nav.setAttribute('data-md-component','collapsible');
45+ nav.setAttribute('data-md-level','1');
46+
47+ rootLi.appendChild(nav);
48+
49+ const lbl02 = document.createElement('label')
50+ lbl02.classList.add('md-nav__title');
51+ lbl02.setAttribute('for', 'nav-10000000');
52+ lbl02.textContent = current.text + " ";
53+
54+ nav.appendChild(lbl02);
55+
56+ const ul = document.createElement('ul')
57+ ul.classList.add('md-nav__list');
58+ ul.setAttribute('data-md-scrollfix','');
59+
60+ nav.appendChild(ul);
61+
62+ for (let i = 0; i < versions.length; i++) {
63+ const li = document.createElement('li');
64+ li.classList.add('md-nav__item');
65+
66+ ul.appendChild(li);
67+
68+ const a = document.createElement('a');
69+ a.classList.add('md-nav__link');
70+ if (versions[i].selected) {
71+ a.classList.add('md-nav__link--active');
72+ }
73+ a.href = window.location.protocol + "//" + window.location.host + "/";
74+ if (versions[i].path) {
75+ a.href = a.href + versions[i].path + "/"
76+ }
77+ a.title = versions[i].text;
78+ a.text = versions[i].text;
79+
80+ li.appendChild(a);
81+ }
82+
83+ elt.appendChild(rootLi);
84+ }
85+
86+ const materialSelector = 'div.md-container main.md-main div.md-main__inner.md-grid div.md-sidebar.md-sidebar--primary div.md-sidebar__scrollwrap div.md-sidebar__inner nav.md-nav.md-nav--primary ul.md-nav__list';
87+ const elt = document.querySelector(materialSelector);
88+ addMaterialMenu(elt, versions);
0 commit comments