refactor main.js into smaller pieces, and moved navbar.js to assets

This commit is contained in:
Aaron Qian 2022-11-10 23:23:50 -08:00 committed by Aaron Qian
parent fd8eeb3330
commit 177dffe553
No known key found for this signature in database
GPG key ID: BF1A987C395B5B0E
19 changed files with 214 additions and 207 deletions

View file

@ -0,0 +1,48 @@
import { getDeviceState } from '../../core';
// Toggle Table of Contents on click. Here, class "hide" open the toc
function toggleTOC() {
let toc = document.getElementById("toc-section");
if (toc == null) {
return
}
if (toc.classList.contains("hide")) {
toc.classList.remove("hide");
} else {
// if sidebar-section is open, then close it first
let sidebar = document.getElementById("sidebar-section");
if (sidebar != null && sidebar.classList.contains("hide")) {
sidebar.classList.remove("hide");
}
// add "hide" class
toc.classList.add("hide");
// if it is mobile device. then scroll to top.
const { isMobile } = getDeviceState();
if (isMobile && toc.classList.contains("hide")) {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
}
}
if (document.getElementById("hero-area") != null) {
document.getElementById("hero-area").classList.toggle("hide");
}
}
window.addEventListener('DOMContentLoaded', () => {
// bind click event to #toc-toggle in navbar-2.html
const $toggle = document.getElementById('toc-toggler');
if ($toggle) $toggle.addEventListener('click', toggleTOC);
// hide TOC when user clicks on a TOC link.
// Only applies if it's mobile.
const $toc = document.getElementById("TableOfContents");
if ($toc) {
$toc.addEventListener('click', (event) => {
const { isMobile } = getDeviceState();
if (isMobile && event.target.nodeName === 'A') {
toggleTOC();
}
});
}
});