summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/fly_out_nav.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/fly_out_nav.js')
-rw-r--r--app/assets/javascripts/fly_out_nav.js52
1 files changed, 8 insertions, 44 deletions
diff --git a/app/assets/javascripts/fly_out_nav.js b/app/assets/javascripts/fly_out_nav.js
index 93101f123b5..67a58493fae 100644
--- a/app/assets/javascripts/fly_out_nav.js
+++ b/app/assets/javascripts/fly_out_nav.js
@@ -1,16 +1,3 @@
-let hideTimeoutInterval = 0;
-let hideTimeout;
-let subitems;
-
-export const getHideTimeoutInterval = () => hideTimeoutInterval;
-
-export const hideAllSubItems = () => {
- subitems.forEach((el) => {
- el.parentNode.classList.remove('is-over');
- el.style.display = 'none'; // eslint-disable-line no-param-reassign
- });
-};
-
export const calculateTop = (boundingRect, outerHeight) => {
const windowHeight = window.innerHeight;
const bottomOverflow = windowHeight - (boundingRect.top + outerHeight);
@@ -24,14 +11,8 @@ export const showSubLevelItems = (el) => {
if (!$subitems) return;
- hideAllSubItems();
-
- if (el.classList.contains('is-over')) {
- clearTimeout(hideTimeout);
- } else {
- $subitems.style.display = 'block';
- el.classList.add('is-over');
- }
+ $subitems.style.display = 'block';
+ el.classList.add('is-over');
const boundingRect = el.getBoundingClientRect();
const top = calculateTop(boundingRect, $subitems.offsetHeight);
@@ -46,37 +27,20 @@ export const showSubLevelItems = (el) => {
export const hideSubLevelItems = (el) => {
const $subitems = el.querySelector('.sidebar-sub-level-items');
- const hideFn = () => {
- el.classList.remove('is-over');
- $subitems.style.display = 'none';
- $subitems.classList.remove('is-above');
- hideTimeoutInterval = 0;
- };
-
- if ($subitems && hideTimeoutInterval) {
- hideTimeout = setTimeout(hideFn, hideTimeoutInterval);
- } else if ($subitems) {
- hideFn();
- }
-};
+ if (!$subitems) return;
-export const setMouseOutTimeout = (el) => {
- if (el.closest('.sidebar-sub-level-items')) {
- hideTimeoutInterval = 250;
- } else {
- hideTimeoutInterval = 0;
- }
+ el.classList.remove('is-over');
+ $subitems.style.display = 'none';
+ $subitems.classList.remove('is-above');
};
export default () => {
- const items = [...document.querySelectorAll('.sidebar-top-level-items > li:not(.active)')];
- subitems = [...document.querySelectorAll('.sidebar-top-level-items > li:not(.active) .sidebar-sub-level-items')];
+ const items = [...document.querySelectorAll('.sidebar-top-level-items > li:not(.active)')]
+ .filter(el => el.querySelector('.sidebar-sub-level-items'));
items.forEach((el) => {
el.addEventListener('mouseenter', e => showSubLevelItems(e.currentTarget));
el.addEventListener('mouseleave', e => hideSubLevelItems(e.currentTarget));
});
-
- subitems.forEach(el => el.addEventListener('mouseleave', e => setMouseOutTimeout(e.target)));
};