diff options
author | Marcin Aman <marcin.aman@gmail.com> | 2020-11-10 16:54:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-10 16:54:57 +0100 |
commit | 07e43676665bdc009e135b767e6d43c536b413fa (patch) | |
tree | d389a7257ef4a508a7672abca16c626965c1e04d /plugins/base/src/main/resources/dokka/scripts | |
parent | 470ccfca37041ff0f1924318fae8820f674d26f4 (diff) | |
download | dokka-07e43676665bdc009e135b767e6d43c536b413fa.tar.gz dokka-07e43676665bdc009e135b767e6d43c536b413fa.tar.bz2 dokka-07e43676665bdc009e135b767e6d43c536b413fa.zip |
New breadcrumbs (#1590)
Add top navbar
Diffstat (limited to 'plugins/base/src/main/resources/dokka/scripts')
-rw-r--r-- | plugins/base/src/main/resources/dokka/scripts/platform-content-handler.js | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/plugins/base/src/main/resources/dokka/scripts/platform-content-handler.js b/plugins/base/src/main/resources/dokka/scripts/platform-content-handler.js index 26dd9424..07a6642b 100644 --- a/plugins/base/src/main/resources/dokka/scripts/platform-content-handler.js +++ b/plugins/base/src/main/resources/dokka/scripts/platform-content-handler.js @@ -4,6 +4,8 @@ filteringContext = { activeFilters: [] } let highlightedAnchor; +let topNavbarOffset; +var scrollNavbarBreakPoint = 300 window.addEventListener('load', () => { document.querySelectorAll("div[data-platform-hinted]") @@ -18,6 +20,13 @@ window.addEventListener('load', () => { initTabs() handleAnchor() initHidingLeftNavigation() + + document.getElementById('main').addEventListener("scroll", (e) => { + const element = document.getElementsByClassName("navigation-wrapper")[0] + const additionalOffset = element.classList.contains("sticky-navigation") ? 14 : 0 + element.classList.toggle("sticky-navigation", e.target.scrollTop + additionalOffset > scrollNavbarBreakPoint) + }) + topNavbarOffset = document.getElementById('navigation-wrapper') }) const initHidingLeftNavigation = () => { @@ -64,7 +73,24 @@ function handleAnchor() { content.classList.add('anchor-highlight') highlightedAnchor = content } - element.scrollIntoView({behavior: "smooth"}) + + const scrollToElement = () => document.getElementById('main').scrollTo({ top: element.offsetTop - topNavbarOffset.offsetHeight, behavior: "smooth"}) + + const waitAndScroll = () => { + setTimeout(() => { + if(topNavbarOffset){ + scrollToElement() + } else { + waitForScroll() + } + }, 100) + } + + if(topNavbarOffset){ + scrollToElement() + } else { + waitAndScroll() + } } } } |