diff options
-rw-r--r-- | app/assets/javascripts/sidebar.js.es6 | 16 | ||||
-rw-r--r-- | spec/features/pinned_nav_spec.rb | 32 |
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 |