diff options
Diffstat (limited to 'templates/partials/doc')
-rw-r--r-- | templates/partials/doc/global_toc.html | 18 | ||||
-rw-r--r-- | templates/partials/doc/page_toc.html | 6 | ||||
-rw-r--r-- | templates/partials/doc/toc_script.html | 25 |
3 files changed, 41 insertions, 8 deletions
diff --git a/templates/partials/doc/global_toc.html b/templates/partials/doc/global_toc.html index ebad287..f739f49 100644 --- a/templates/partials/doc/global_toc.html +++ b/templates/partials/doc/global_toc.html @@ -1,8 +1,20 @@ -<aside id="global_toc" class="col-span-1 h-max bg-gray-100 shadow-inner border-r border-t border-gray-200"> +<aside id="global_toc" class="relative col-span-1 h-full bg-gray-100 shadow-inner border-r border-t border-gray-200"> {% if section.subsections %} - <ul class="space-y-2 py-0.5 px-6 py-3 list-none"> + <ul id="main-toc-menu" class="space-y-2 px-6 py-3 list-none"> + + {% if section.pages %} + {% for page in section.pages %} + <a + href="{{ page.permalink | safe }}" + class="docPage block pl-2 py-1 border-l rounded-r border-garage-orange hover:bg-garage-orange hover:bg-opacity-20 + {% if current_path == page.path %} activePage border-l-4 text-garage-orange font-semibold border-opacity-100 border-garage-orange {% endif %}"> + {{ page.title }} + </a> + {% endfor %} + {% endif %} + {% for subsec in section.subsections %} - {% set h1 = get_section(path=subsec) %} + {% set h1 = get_section(path=subsec) %} <li class="relative"> <a href="{{ h1.permalink | safe }}" diff --git a/templates/partials/doc/page_toc.html b/templates/partials/doc/page_toc.html index 172e0ce..238d8c3 100644 --- a/templates/partials/doc/page_toc.html +++ b/templates/partials/doc/page_toc.html @@ -1,12 +1,12 @@ -<aside class="hidden 2xl:block fixed right-0 bottom-1/2 transform translate-y-1/2 col-span-1 h-auto bg-gray-100 rounded-l-lg shadow-inner"> +<aside class="hidden 2xl:block fixed right-0 bottom-1/2 transform translate-y-1/2 w-80 col-span-1 h-auto bg-gray-100 rounded-l-lg shadow-inner"> {% if page.toc %} <div class="w-full flex items-center justify-center py-1.5 bg-gray-200 rounded-tl-lg"> <span class="uppercase tracking-wide text-xs text-garage-gray">Page content</span> </div> - <ol class="text-sm space-y-0.5 py-0.5 px-8 py-3 list-decimal"> + <ol class="text-sm space-y-0.5 px-8 py-3 list-decimal"> {% for h1 in page.toc %} <li> - <a href="{{ h1.permalink | safe }}" class="font-semibold bg-gradient-to-r from-garage-gray to-garage-orange text-transparent bg-clip-text transition-all hover:text-garage-orange">{{ h1.title }}</a> + <a href="{{ h1.permalink | safe }}" class="font-semibold text-gray-800 transition-all hover:text-garage-orange">{{ h1.title }}</a> {% if h1.children %} <ul class="space-y-0.5 py-0.5"> {% for h2 in h1.children %} diff --git a/templates/partials/doc/toc_script.html b/templates/partials/doc/toc_script.html index a858c94..1453a69 100644 --- a/templates/partials/doc/toc_script.html +++ b/templates/partials/doc/toc_script.html @@ -1,9 +1,31 @@ -<script type="text/javascript"> +<script> const menuBarHeight = document.querySelector("nav.navbar").clientHeight; +const mainTocMenuWidth = document.getElementById('main-toc-menu').clientWidth; const tocItems = document.querySelectorAll(".toc"); const navSections = new Array(tocItems.length); + // Global ToC +/* + Fixed ToC when user scrolls. +*/ + +window.addEventListener('scroll', function() { + if (window.screen.width >= 1280) { + if (window.scrollY >= menuBarHeight) { + document.getElementById('main-toc-menu').classList.add('fixed', 'top-0', 'left-0'); + document.getElementById('main-toc-menu').style.width = mainTocMenuWidth + 'px'; + } else { + document.getElementById('main-toc-menu').classList.remove('fixed', 'top-0', 'left-0'); + } + } +}); + +// Page content +/* + Focus effect on current section anchor when user scrolls. +*/ + tocItems.forEach((el, i) => { let id = el.getAttribute("id").substring(5); navSections[i] = document.getElementById(id); @@ -42,7 +64,6 @@ window.addEventListener('scroll', () => { } }, false); -// If JS enabled, deploy only the current doc menu document.addEventListener("DOMContentLoaded", function() { var menusTriggers = document.getElementsByClassName("deploySubMenu"); var activeDocPage = document.getElementsByClassName("activePage")[0]; |