From d2f33e79e04b05dc0d6ddd454579325ec50da3e8 Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Wed, 22 Apr 2015 15:51:45 -0700 Subject: [PATCH] More menu fixes. Reset states when switching between offcanvas and desktop. Do not fixHeights in toplevel when in desktop mode and touch screen. --- assets/common/application/menu/index.js | 15 ++++++++++++++- assets/common/js/main.js | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/assets/common/application/menu/index.js b/assets/common/application/menu/index.js index e4c636fbc..651cfda96 100644 --- a/assets/common/application/menu/index.js +++ b/assets/common/application/menu/index.js @@ -142,7 +142,7 @@ var Menu = new prime({ if (sublevel) { var isNavMenu = target.parent(selectors.mainContainer); - this._fixHeights(sublevel, slideout, isGoingBack, isNavMenu); + if (!isNavMenu || (isNavMenu && !sublevel.matches('.g-toplevel'))) { this._fixHeights(sublevel, slideout, isGoingBack, isNavMenu); } if (!isNavMenu && columns && (blocks = columns.search('> .g-grid > .g-block'))) { if (blocks.length > 1) { sublevel = blocks.search('> .g-sublevel'); } } @@ -197,6 +197,17 @@ var Menu = new prime({ this.toggleOverlay(topLevel); }, + resetStates: function(menu) { + if (!menu) { return; } + var items = menu.search('.g-toplevel, .g-dropdown-column, .g-dropdown, .g-selected, .g-active, .g-slide-out'), + actives = menu.search('.g-active'); + if (!items) { return; } + + menu.attribute('style', null).removeClass('g-selected').removeClass('g-slide-out'); + items.attribute('style', null).removeClass('g-selected').removeClass('g-slide-out'); + if (actives) { actives.removeClass('g-active').addClass('g-inactive'); } + }, + toggleOverlay: function(menu) { if (!menu) { return; } var shouldOpen = !!menu.find('.g-active, .g-selected'); @@ -256,6 +267,8 @@ var Menu = new prime({ find = mobileContainer.find(selectors.topLevel); if (find) { find.top(mainContainer); } } + + this.resetStates(find); }, _debug: function() {} diff --git a/assets/common/js/main.js b/assets/common/js/main.js index a29028cf5..8acdbbd1f 100644 --- a/assets/common/js/main.js +++ b/assets/common/js/main.js @@ -164,7 +164,7 @@ var Menu = new prime({ if (sublevel) { var isNavMenu = target.parent(selectors.mainContainer); - this._fixHeights(sublevel, slideout, isGoingBack, isNavMenu); + if (!isNavMenu || (isNavMenu && !sublevel.matches('.g-toplevel'))) { this._fixHeights(sublevel, slideout, isGoingBack, isNavMenu); } if (!isNavMenu && columns && (blocks = columns.search('> .g-grid > .g-block'))) { if (blocks.length > 1) { sublevel = blocks.search('> .g-sublevel'); } } @@ -219,6 +219,17 @@ var Menu = new prime({ this.toggleOverlay(topLevel); }, + resetStates: function(menu) { + if (!menu) { return; } + var items = menu.search('.g-toplevel, .g-dropdown-column, .g-dropdown, .g-selected, .g-active, .g-slide-out'), + actives = menu.search('.g-active'); + if (!items) { return; } + + menu.attribute('style', null).removeClass('g-selected').removeClass('g-slide-out'); + items.attribute('style', null).removeClass('g-selected').removeClass('g-slide-out'); + if (actives) { actives.removeClass('g-active').addClass('g-inactive'); } + }, + toggleOverlay: function(menu) { if (!menu) { return; } var shouldOpen = !!menu.find('.g-active, .g-selected'); @@ -278,6 +289,8 @@ var Menu = new prime({ find = mobileContainer.find(selectors.topLevel); if (find) { find.top(mainContainer); } } + + this.resetStates(find); }, _debug: function() {}