From da41d0b63c2de98e98e587d2d6a79c6de39ba100 Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Thu, 7 Jul 2016 06:19:54 -0700 Subject: [PATCH] Do not close offcanvas when clicking a menu parent. Use `touchend` when touch events available. (fixes #1411) --- assets/common/application/menu/index.js | 8 +++++++- assets/common/js/main.js | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/assets/common/application/menu/index.js b/assets/common/application/menu/index.js index 52b81ea3b..f7c15dfb6 100644 --- a/assets/common/application/menu/index.js +++ b/assets/common/application/menu/index.js @@ -74,7 +74,7 @@ var Menu = new prime({ } body.delegate('click', ':not(' + selectors.mainContainer + ') ' + selectors.linkedParent + ', .g-fullwidth .g-sublevel ' + selectors.linkedParent, this.bound('click')); - body.delegate('click', ':not(' + selectors.mainContainer + ') a[href]', this.bound('resetAfterClick')); + body.delegate(hasTouchEvents ? 'touchend' : 'click', ':not(' + selectors.mainContainer + ') a[href]', this.bound('resetAfterClick')); if (hasTouchEvents || !this.hoverExpand) { var linkedParent = $(selectors.linkedParent); @@ -97,6 +97,12 @@ var Menu = new prime({ }, resetAfterClick: function(event) { + var target = $(event.target); + + if (target.data('g-menuparent') !== null) { + return true; + } + this.closeDropdown(event); if (global.G5 && global.G5.offcanvas) { G5.offcanvas.close(); diff --git a/assets/common/js/main.js b/assets/common/js/main.js index f8b54a2bc..fd051f0a3 100644 --- a/assets/common/js/main.js +++ b/assets/common/js/main.js @@ -100,7 +100,7 @@ var Menu = new prime({ } body.delegate('click', ':not(' + selectors.mainContainer + ') ' + selectors.linkedParent + ', .g-fullwidth .g-sublevel ' + selectors.linkedParent, this.bound('click')); - body.delegate('click', ':not(' + selectors.mainContainer + ') a[href]', this.bound('resetAfterClick')); + body.delegate(hasTouchEvents ? 'touchend' : 'click', ':not(' + selectors.mainContainer + ') a[href]', this.bound('resetAfterClick')); if (hasTouchEvents || !this.hoverExpand) { var linkedParent = $(selectors.linkedParent); @@ -123,6 +123,12 @@ var Menu = new prime({ }, resetAfterClick: function(event) { + var target = $(event.target); + + if (target.data('g-menuparent') !== null) { + return true; + } + this.closeDropdown(event); if (global.G5 && global.G5.offcanvas) { G5.offcanvas.close();