Files
mantelzorgwoning.info/themes/godocs-4/assets/js/script.js
2025-12-05 09:15:15 +01:00

75 lines
2.1 KiB
JavaScript

'use strict';
// searchToggler keyboard shortcut
const searchToggler = document.querySelectorAll('[data-search-toggler]');
searchToggler.forEach((item) => {
let userAgentData = navigator?.userAgentData?.platform || navigator?.platform || 'unknown';
if (userAgentData == 'macOS') {
item.innerText = `⌘ + K`
} else {
item.innerText = `Ctrl + K`
}
});
// Navbar fixed
window.onscroll = function () {
if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {
document.querySelector(".navigation").classList.add("nav-bg");
} else {
document.querySelector(".navigation").classList.remove("nav-bg");
}
};
// Search wrapper show on
function isScrolledIntoView(el) {
var rect = el.getBoundingClientRect();
var elemTop = rect.top;
var elemBottom = rect.bottom;
// Only completely visible elements return true:
var isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight);
// Partially visible elements return true:
//isVisible = elemTop < window.innerHeight && elemBottom >= 0;
return isVisible;
}
window.addEventListener("scroll", function () {
let header = document.querySelector("header");
let banner_searchWrapper = document.querySelector("#banner .search-wrapper");
let header_searchWrapper = document.querySelector("header .search-wrapper");
try {
if (isScrolledIntoView(banner_searchWrapper)) {
header.classList.remove("search-active");
} else {
header.classList.add("search-active");
}
} catch (error) {
}
});
// copy to clipboard
let blocks = document.querySelectorAll("pre");
blocks.forEach((block) => {
if (navigator.clipboard) {
let button = document.createElement("span");
button.innerText = "copy";
button.className = "copy-to-clipboard";
block.appendChild(button);
button.addEventListener("click", async () => {
await copyCode(block, button);
});
}
});
async function copyCode(block, button) {
let code = block.querySelector("code");
let text = code.innerText;
await navigator.clipboard.writeText(text);
button.innerText = "copied";
setTimeout(() => {
button.innerText = "copy";
}, 700);
}