]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/docs/src/assets/js/main.js
2 var toc_trigger
= document
.getElementById("js-toc-label"),
3 toc
= document
.getElementById("js-toc-panel"),
4 body
= document
.getElementsByTagName("body")[0],
7 if (toc
&& matchMedia
) {
8 const mq
= window
.matchMedia("(max-width: 1023px)");
9 mq
.addEventListener('change', WidthChange
);
14 function WidthChange(mq
) {
15 if (mq
.matches
&& toc_trigger
) {
16 let text
= toc_trigger
.innerText
;
17 let headingButton
= document
.createElement("button");
18 headingButton
.setAttribute("aria-expanded", "false");
19 headingButton
.innerText
= text
;
20 toc_trigger
.innerHTML
= "";
22 toc_trigger
.appendChild(headingButton
);
23 headingButton
.innerHTML
+= `<svg class="toc-trigger-icon" width="12" height="8" aria-hidden="true" focusable="false" viewBox="0 0 12 8"><g fill="none"><path fill="currentColor" d="M1.41.59l4.59 4.58 4.59-4.58 1.41 1.41-6 6-6-6z"/><path d="M-6-8h24v24h-24z"/></g></svg>`;
25 toc
.setAttribute("data-open", "false");
26 toc_trigger
.setAttribute("aria-expanded", "false");
27 headingButton
.addEventListener("click", toggleTOC
, true);
29 toc_trigger
.innerHTML
= 'Table of Contents';
30 toc
.setAttribute("data-open", "true");
35 function toggleTOC(e
) {
37 this.setAttribute("aria-expanded", "true");
38 toc
.setAttribute("data-open", "true");
41 this.setAttribute("aria-expanded", "false");
42 toc
.setAttribute("data-open", "false");
49 var nav_trigger
= document
.getElementById("nav-toggle"),
50 nav
= document
.getElementById("nav-panel"),
51 body
= document
.getElementsByTagName("body")[0],
55 const mq
= window
.matchMedia("(max-width: 1023px)");
56 mq
.addEventListener('change', WidthChange
);
61 function WidthChange(mq
) {
63 nav
.setAttribute("data-open", "false");
64 nav_trigger
.removeAttribute("hidden");
65 nav_trigger
.setAttribute("aria-expanded", "false");
66 nav_trigger
.addEventListener("click", togglenav
, false);
68 nav
.setAttribute("data-open", "true");
69 nav_trigger
.setAttribute("hidden", "");
70 nav_trigger
.setAttribute("aria-expanded", "true");
75 function togglenav(e
) {
77 this.setAttribute("aria-expanded", "true");
78 nav
.setAttribute("data-open", "true");
81 this.setAttribute("aria-expanded", "false");
82 nav
.setAttribute("data-open", "false");
89 var index_trigger
= document
.getElementById("js-docs-index-toggle"),
90 index
= document
.getElementById("js-docs-index-panel"),
91 body
= document
.getElementsByTagName("body")[0],
95 const mq
= window
.matchMedia("(max-width: 1023px)");
96 mq
.addEventListener('change', WidthChange
);
100 function WidthChange(mq
) {
104 function toggleindex(e
) {
106 this.setAttribute("aria-expanded", "true");
107 index
.setAttribute("data-open", "true");
110 this.setAttribute("aria-expanded", "false");
111 index
.setAttribute("data-open", "false");
116 function initIndex() {
119 index_trigger
.removeAttribute("hidden");
120 index_trigger
.setAttribute("aria-expanded", "false");
121 index
.setAttribute("data-open", "false");
123 index
.setAttribute("data-open", "false");
124 index_trigger
.addEventListener("click", toggleindex
, false);
132 var switchers
= document
.querySelectorAll('.switcher'),
133 fallbacks
= document
.querySelectorAll('.switcher-fallback');
135 if (fallbacks
!= null) {
136 fallbacks
.forEach(el
=> {
137 el
.setAttribute('hidden', '');
141 if (switchers
!= null) {
142 switchers
.forEach(element
=> {
143 element
.removeAttribute('hidden');
144 const select
= element
.querySelector('select');
146 select
.addEventListener('change', function() {
147 var selected
= this.options
[this.selectedIndex
];
148 url
= selected
.getAttribute('data-url');
150 window
.location
.href
= url
;
156 // add "Open in Playground" button to code blocks
158 // let blocks = document.querySelectorAll('pre[class*="language-"]');
160 // blocks.forEach(function(block) {
161 // let button = document.createElement("a");
162 // button.classList.add('c-btn--playground');
163 // button.classList.add('c-btn');
164 // button.classList.add('c-btn--secondary');
165 // button.setAttribute("href", "#");
166 // button.innerText = "Open in Playground";
167 // block.appendChild(button);
189 generateID: function(base
) {
190 return base
+ Math
.floor(Math
.random() * 999);
193 getDirectChildren: function(elm
, selector
) {
194 return Array
.prototype.filter
.call(elm
.children
, function(child
) {
195 return child
.matches(selector
);
200 (function(w
, doc
, undefined) {
201 var CollapsibleIndexOptions
= {
203 icon
: '<svg class="index-icon" width="12" height="8" aria-hidden="true" focusable="false" viewBox="0 0 12 8"><g fill="none"><path fill="currentColor" d="M1.41.59l4.59 4.58 4.59-4.58 1.41 1.41-6 6-6-6z"/><path d="M-6-8h24v24h-24z"/></g></svg>',
205 var CollapsibleIndex = function(inst
, options
) {
206 var _options
= Object
.assign(CollapsibleIndexOptions
, options
);
208 var indexToggles
= el
.querySelectorAll(".docs-index .docs__index__panel > ul > .docs-index__item[data-has-children] > a"); // only top-most level
209 var indexPanels
= el
.querySelectorAll(".docs-index .docs__index__panel > ul > .docs-index__item>[data-child-list]"); // the list
210 var accID
= util
.generateID("c-index-");
212 var init = function() {
213 el
.classList
.add("index-js");
215 setupindexToggles(indexToggles
);
216 setupindexPanels(indexPanels
);
220 var setupindexToggles = function(indexToggles
) {
221 Array
.from(indexToggles
).forEach(function(item
, index
) {
224 $this.setAttribute('role', 'button');
225 $this.setAttribute("id", accID
+ "__item-" + index
);
226 $this.innerHTML
+= _options
.icon
;
228 if (_options
.allCollapsed
) $this.setAttribute("aria-expanded", "false");
229 else $this.setAttribute("aria-expanded", "true");
231 $this.addEventListener("click", function(e
) {
238 var setupindexPanels = function(indexPanels
) {
239 Array
.from(indexPanels
).forEach(function(item
, index
) {
242 $this.setAttribute("id", accID
+ "__list-" + index
);
245 accID
+ "__item-" + index
247 if (_options
.allCollapsed
) $this.setAttribute("aria-hidden", "true");
248 else $this.setAttribute("aria-hidden", "false");
252 var togglePanel = function(toggleButton
) {
253 var thepanel
= toggleButton
.nextElementSibling
;
255 if (toggleButton
.getAttribute("aria-expanded") == "true") {
256 toggleButton
.setAttribute("aria-expanded", "false");
257 thepanel
.setAttribute("aria-hidden", "true");
259 toggleButton
.setAttribute("aria-expanded", "true");
260 thepanel
.setAttribute("aria-hidden", "false");
267 }; // CollapsibleIndex()
269 w
.CollapsibleIndex
= CollapsibleIndex
;
270 })(window
, document
);
273 var index
= document
.getElementById('docs-index');
275 index
= new CollapsibleIndex(index
, {
280 document
.addEventListener("DOMContentLoaded", () => {
281 anchors
.add(".docs-content h2:not(.c-toc__label), .docs-content h3, .docs-content h4");