summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2017-08-02 10:22:13 +0100
committerPhil Hughes <me@iamphill.com>2017-08-02 10:22:13 +0100
commit25d6a6c4b528159c288995de4909e6a8da431d0b (patch)
tree691fe780f176b93817c757b3b5658be331bf22b5
parente67c4a6d913ccdb4615639cb317634141da2a37b (diff)
downloadgitlab-ce-25d6a6c4b528159c288995de4909e6a8da431d0b.tar.gz
stop mobile from showing the sub-items
-rw-r--r--app/assets/javascripts/fly_out_nav.js9
-rw-r--r--spec/javascripts/fly_out_nav_spec.js45
2 files changed, 51 insertions, 3 deletions
diff --git a/app/assets/javascripts/fly_out_nav.js b/app/assets/javascripts/fly_out_nav.js
index 3f64c16a79d..8e9a97fe207 100644
--- a/app/assets/javascripts/fly_out_nav.js
+++ b/app/assets/javascripts/fly_out_nav.js
@@ -1,3 +1,8 @@
+/* global bp */
+import './breakpoints';
+
+export const canShowSubItems = () => bp.getBreakpointSize() === 'md' || bp.getBreakpointSize() === 'lg';
+
export const calculateTop = (boundingRect, outerHeight) => {
const windowHeight = window.innerHeight;
const bottomOverflow = windowHeight - (boundingRect.top + outerHeight);
@@ -9,7 +14,7 @@ export const calculateTop = (boundingRect, outerHeight) => {
export const showSubLevelItems = (el) => {
const subItems = el.querySelector('.sidebar-sub-level-items');
- if (!subItems) return;
+ if (!subItems || !canShowSubItems()) return;
subItems.style.display = 'block';
el.classList.add('is-over');
@@ -28,7 +33,7 @@ export const showSubLevelItems = (el) => {
export const hideSubLevelItems = (el) => {
const subItems = el.querySelector('.sidebar-sub-level-items');
- if (!subItems) return;
+ if (!subItems || !canShowSubItems()) return;
el.classList.remove('is-over');
subItems.style.display = 'none';
diff --git a/spec/javascripts/fly_out_nav_spec.js b/spec/javascripts/fly_out_nav_spec.js
index 74775911505..ab74f3e00ec 100644
--- a/spec/javascripts/fly_out_nav_spec.js
+++ b/spec/javascripts/fly_out_nav_spec.js
@@ -1,19 +1,26 @@
+/* global bp */
import {
calculateTop,
hideSubLevelItems,
showSubLevelItems,
+ canShowSubItems,
} from '~/fly_out_nav';
describe('Fly out sidebar navigation', () => {
let el;
+ let breakpointSize = 'lg';
+
beforeEach(() => {
el = document.createElement('div');
el.style.position = 'relative';
document.body.appendChild(el);
+
+ spyOn(bp, 'getBreakpointSize').and.callFake(() => breakpointSize);
});
afterEach(() => {
el.remove();
+ breakpointSize = 'lg';
});
describe('calculateTop', () => {
@@ -53,6 +60,16 @@ describe('Fly out sidebar navigation', () => {
).toBe('none');
});
+ it('does not hude subitems on mobile', () => {
+ breakpointSize = 'sm';
+
+ hideSubLevelItems(el);
+
+ expect(
+ el.querySelector('.sidebar-sub-level-items').style.display,
+ ).not.toBe('none');
+ });
+
it('removes is-over class', () => {
spyOn(el.classList, 'remove');
@@ -103,7 +120,17 @@ describe('Fly out sidebar navigation', () => {
).toHaveBeenCalledWith('is-over');
});
- it('shows sub-items', () => {
+ it('does not show sub-items on mobile', () => {
+ breakpointSize = 'sm';
+
+ showSubLevelItems(el);
+
+ expect(
+ el.querySelector('.sidebar-sub-level-items').style.display,
+ ).not.toBe('block');
+ });
+
+ it('does not shows sub-items', () => {
showSubLevelItems(el);
expect(
@@ -134,4 +161,20 @@ describe('Fly out sidebar navigation', () => {
).toHaveBeenCalledWith('is-above');
});
});
+
+ describe('canShowSubItems', () => {
+ it('returns true if on desktop size', () => {
+ expect(
+ canShowSubItems(),
+ ).toBeTruthy();
+ });
+
+ it('returns false if on mobile size', () => {
+ breakpointSize = 'sm';
+
+ expect(
+ canShowSubItems(),
+ ).toBeFalsy();
+ });
+ });
});