VictoriaMetrics/docs/_includes/extra/script.js
Dmytro Kozlov d9ef1a5bff
docs: add scroll to the selected element (#4508)
* docs: add scroll to the selected element

* docs: scroll to root if element not found

* docs: simplify code

* docs: code cleanup

* docs: fix comments (fix code formatting, check element only inside sidebar container)
2023-06-23 12:05:32 +02:00

55 lines
1.7 KiB
JavaScript

/* When in mobile layout, the anchor navigation for submenus
* doesn't work due to fixed body height when menu is toggled.
* This script intercepts clicks on links, toggles the menu off
* and performs the anchor navigation. */
window.addEventListener("load", function () {
let href = window.location.pathname;
const hash = window.location.hash;
if (hash !== "") {
href = hash
}
const sidebar = document.querySelector('.sidebar .toctree');
const selector = function(href) {return `a[href="${href}"]`};
let element = sidebar.querySelector(selector(href));
if (!element) {
href = window.location.pathname;
element = document.querySelector(selector(href));
}
if (element) {
element.scrollIntoView({ behavior: "smooth" });
}
});
$(document).on("click", '.shift li.toc a', function(e) {
let segments = this.href.split('#');
if (segments.length < 2) {
/* ignore links without anchor */
return true;
}
e.preventDefault();
$("#toggle").click();
setTimeout(function () {
location.hash = segments.pop();
},1)
});
/* Clipboard-copy snippet from https://github.com/marcoaugustoandrade/jekyll-clipboardjs/blob/master/copy.js */
let codes = document.querySelectorAll('.with-copy .highlight > pre > code');
let countID = 0;
codes.forEach((code) => {
code.setAttribute("id", "code" + countID);
let btn = document.createElement('button');
btn.innerHTML = "Copy";
btn.className = "btn-copy";
btn.setAttribute("data-clipboard-action", "copy");
btn.setAttribute("data-clipboard-target", "#code" + countID);
code.before(btn);
countID++;
});
let clipboard = new ClipboardJS('.btn-copy');