summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/sidebar.js.es616
-rw-r--r--spec/features/pinned_nav_spec.rb32
2 files changed, 48 insertions, 0 deletions
diff --git a/app/assets/javascripts/sidebar.js.es6 b/app/assets/javascripts/sidebar.js.es6
index a23ca449c4b..126f141912d 100644
--- a/app/assets/javascripts/sidebar.js.es6
+++ b/app/assets/javascripts/sidebar.js.es6
@@ -40,6 +40,22 @@
.on('click', 'html, body', (e) => this.handleClickEvent(e))
.on('page:change', () => this.renderState())
.on('todo:toggle', (e, count) => this.updateTodoCount(count));
+
+ $(window)
+ .off('resize.sidebar')
+ .on('resize.sidebar', () => {
+ clearTimeout(this.widnowResizeTimout);
+ this.widnowResizeTimout = setTimeout(() => {
+ if (!this.isPinned) return;
+
+ if (this.isExpanded && window.innerWidth < sidebarBreakpoint) {
+ this.toggleSidebar();
+ } else if (!this.isExpanded && window.innerWidth >= sidebarBreakpoint) {
+ this.toggleSidebar();
+ }
+ }, 250);
+ });
+
this.renderState();
}
diff --git a/spec/features/pinned_nav_spec.rb b/spec/features/pinned_nav_spec.rb
new file mode 100644
index 00000000000..4bb93193d1a
--- /dev/null
+++ b/spec/features/pinned_nav_spec.rb
@@ -0,0 +1,32 @@
+require 'spec_helper'
+
+feature 'Pinned nav', feature: true, js: true do
+ before do
+ login_as(:admin)
+ show_nav
+ end
+
+ it 'hides pinned nav on resize' do
+ page.driver.resize_window(1000, 768)
+
+ expect(page).not_to have_selector('.page-sidebar-pinned')
+ end
+
+ it 'shows pinned nav after resize' do
+ page.driver.resize_window(1000, 768)
+
+ expect(page).not_to have_selector('.page-sidebar-pinned')
+
+ page.driver.resize_window(1024, 768)
+
+ expect(page).to have_selector('.page-sidebar-pinned')
+ end
+
+ def show_nav
+ find('.side-nav-toggle').click
+ expect(page).to have_selector('.page-sidebar-expanded')
+
+ find('.js-nav-pin').click
+ expect(page).to have_selector('.page-sidebar-pinned')
+ end
+end