diff options
Diffstat (limited to 'app/assets/javascripts/sticky_tabs.js')
-rw-r--r-- | app/assets/javascripts/sticky_tabs.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/app/assets/javascripts/sticky_tabs.js b/app/assets/javascripts/sticky_tabs.js new file mode 100644 index 00000000000..ec81cfbae0d --- /dev/null +++ b/app/assets/javascripts/sticky_tabs.js @@ -0,0 +1,32 @@ +class StickyTabs { + constructor(stickyTabs, unstickyTabs) { + this.stickyTabs = stickyTabs; + this.unstickyTabs = unstickyTabs; + + this.unstickyTabsHeight = this.unstickyTabs.offsetHeight; + + this.eventListeners = {}; + } + + bindEvents() { + this.eventListeners.handleStickyTabs = this.handleStickyTabs.bind(this); + + document.addEventListener('scroll', this.eventListeners.handleStickyTabs); + } + + unbindEvents() { + document.removeEventListener('scroll', this.eventListeners.handleStickyTabs); + } + + handleStickyTabs() { + if (this.unstickyTabs.getBoundingClientRect().top <= this.unstickyTabsHeight) { + this.unstickyTabs.classList.add('invisible'); + this.stickyTabs.classList.remove('hide'); + } else { + this.unstickyTabs.classList.remove('invisible'); + this.stickyTabs.classList.add('hide'); + } + } +} + +export default StickyTabs; |