init
This commit is contained in:
85
themes/godocs-4/assets/js/bootstrap.js
vendored
Normal file
85
themes/godocs-4/assets/js/bootstrap.js
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
// bootstrap js components
|
||||
// import Alert from "js/bootstrap/src/alert";
|
||||
// import Button from "js/bootstrap/src/button";
|
||||
// import Carousel from "js/bootstrap/src/carousel";
|
||||
import Collapse from "js/bootstrap/src/collapse";
|
||||
import Dropdown from "js/bootstrap/src/dropdown";
|
||||
import Modal from "js/bootstrap/src/modal";
|
||||
// import Offcanvas from "js/bootstrap/src/offcanvas";
|
||||
// import Popover from "js/bootstrap/src/popover";
|
||||
// import ScrollSpy from "js/bootstrap/src/scrollspy";
|
||||
import Tab from "js/bootstrap/src/tab";
|
||||
// import Toast from "js/bootstrap/src/toast";
|
||||
// import Tooltip from "js/bootstrap/src/tooltip";
|
||||
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
let searchModalEl = document.getElementById('searchModal');
|
||||
let modalOpen = false;
|
||||
let searchModal = new Modal(searchModalEl, {});
|
||||
|
||||
const params = new Proxy(new URLSearchParams(window.location.search), {
|
||||
get: (searchParams, prop) => searchParams.get(prop),
|
||||
});
|
||||
if (params.search !== null && params.search !== undefined) {
|
||||
searchModal.show();
|
||||
modalOpen = true;
|
||||
} else {
|
||||
searchModal.hide();
|
||||
modalOpen = false;
|
||||
}
|
||||
|
||||
document.addEventListener('keydown', function(e) {
|
||||
if (e.key === "Escape") {
|
||||
searchModal.hide();
|
||||
} else if ((e.ctrlKey || e.metaKey) && e.key === 'k') {
|
||||
if (!modalOpen) {
|
||||
e.preventDefault();
|
||||
searchModal.show();
|
||||
modalOpen = true;
|
||||
} else {
|
||||
e.preventDefault();
|
||||
searchModal.hide();
|
||||
modalOpen = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
searchModalEl.addEventListener('hidden.bs.modal', e => {
|
||||
modalOpen = false;
|
||||
});
|
||||
|
||||
// document.addEventListener('keydown', function(e) {
|
||||
// let searchModal = new Modal(document.getElementById('searchModal'), {});
|
||||
// let modalOpen = document.getElementById('searchModal').classList.contains('show');
|
||||
|
||||
// if (e.key === "Escape") {
|
||||
// searchModal.hide();
|
||||
// } else if (e.ctrlKey && e.key === 'k' || e.metaKey && e.key === 'k') {
|
||||
// e.preventDefault();
|
||||
// if (modalOpen) {
|
||||
// searchModal.hide();
|
||||
// } else {
|
||||
// searchModal.show();
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
|
||||
// let toastElList = [].slice.call(document.querySelectorAll(".toast"));
|
||||
// let toastList = toastElList.map(function (toastEl) {
|
||||
// return new Toast(toastEl);
|
||||
// });
|
||||
|
||||
// toastList.forEach(function (toast) {
|
||||
// toast.show();
|
||||
// });
|
||||
|
||||
// let popoverTriggerList = [].slice.call(
|
||||
// document.querySelectorAll('[data-bs-toggle="popover"]')
|
||||
// );
|
||||
// popoverTriggerList.map(function (popoverTriggerEl) {
|
||||
// return new Popover(popoverTriggerEl);
|
||||
// });
|
||||
})();
|
||||
75
themes/godocs-4/assets/js/script.js
Normal file
75
themes/godocs-4/assets/js/script.js
Normal file
@@ -0,0 +1,75 @@
|
||||
'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);
|
||||
}
|
||||
Reference in New Issue
Block a user