Skip to content

Commit 6ebf9a8

Browse files
committed
Merge remote-tracking branch 'mainline/develop' into MAGETWO-35266-Update-fails-trying-to-recreate-tables
2 parents c4fe6d6 + 051fc59 commit 6ebf9a8

File tree

4 files changed

+93
-98
lines changed

4 files changed

+93
-98
lines changed

app/code/Magento/Backend/Block/Menu.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ protected function _addSubMenu($menuItem, $level, $limit)
410410
if ($level == 0 && $limit) {
411411
$colStops = $this->_columnBrake($menuItem->getChildren(), $limit);
412412
$output .= '<strong class="submenu-title">' . $this->_getAnchorLabel($menuItem) . '</strong>';
413-
$output .= '<button class="submenu-close _close"></button>';
413+
$output .= '<a href="#" class="submenu-close _close" data-role="close-submenu"></a>';
414414
}
415415

416416
$output .= $this->renderNavigation($menuItem->getChildren(), $level + 1, $limit, $colStops);

app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/_menu.less

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,12 +177,12 @@
177177
> .submenu {
178178
background-color: @submenu__background-color;
179179
box-shadow: 0 0 3px @color-black;
180-
left: -100rem;
180+
left: -90rem;
181181
min-height: ~'calc(@{menu-logo__outer-size} + 2rem + 100%)';
182182
padding: @submenu__padding-vertical 0 0;
183183
position: absolute;
184184
top: -@menu-logo__outer-size;
185-
transition: all .7s linear;
185+
transition: all .5s ease;
186186
visibility: hidden;
187187
z-index: @submenu__z-index;
188188
&._show {
@@ -272,6 +272,9 @@
272272
position: absolute;
273273
right: 0;
274274
top: 0;
275+
&:active {
276+
.scale();
277+
}
275278
&:before {
276279
&:extend(.abs-icon all);
277280
color: @submenu-section-label__color;
@@ -280,6 +283,8 @@
280283
.transition(color);
281284
}
282285
&:hover {
286+
cursor: pointer;
287+
text-decoration: none;
283288
&:before {
284289
color: @color-white;
285290
}

app/design/adminhtml/Magento/backend/web/css/override.less

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3147,12 +3147,12 @@ fieldset[disabled] .admin__control-text + .ui-datepicker-trigger {
31473147
.admin__menu .level-0 > .submenu {
31483148
background-color: #524d49;
31493149
box-shadow: 0 0 3px #000000;
3150-
left: -100rem;
3150+
left: -90rem;
31513151
min-height: ~" calc(7.5rem + 2rem + 100%)";
31523152
padding: 2rem 0 0;
31533153
position: absolute;
31543154
top: -7.5rem;
3155-
transition: all .7s linear;
3155+
transition: all .5s ease;
31563156
visibility: hidden;
31573157
z-index: 698;
31583158
}
@@ -3224,6 +3224,9 @@ fieldset[disabled] .admin__control-text + .ui-datepicker-trigger {
32243224
right: 0;
32253225
top: 0;
32263226
}
3227+
.admin__menu .submenu-close:active {
3228+
transform: scale(0.9);
3229+
}
32273230
.admin__menu .submenu-close:before {
32283231
color: #a79d95;
32293232
content: '\e62f';

app/design/adminhtml/Magento/backend/web/js/theme.js

Lines changed: 80 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -5,133 +5,120 @@
55

66
define('globalNavigation', [
77
'jquery',
8-
'jquery/ui',
9-
'jquery/hover-intent'
8+
'jquery/ui'
109
], function ($) {
1110
'use strict';
1211

1312
$.widget('mage.globalNavigation', {
1413
options: {
15-
menuCategory: '.level-0',
16-
menuLinks: 'a',
17-
itemsConfig: null,
18-
hoverIntentConfig: {
19-
interval: 100,
20-
timeout: 500 // number = milliseconds delay before onMouseOut
14+
selectors: {
15+
topLevelItem: '.level-0',
16+
topLevelHref: '> a',
17+
subMenu: '> .submenu',
18+
closeSubmenuBtn: '[data-role="close-submenu"]'
2119
},
22-
categoriesConfig: {
23-
'[data-ui-id="menu-mage-adminhtml-system"]': {
24-
open: 'click'
25-
},
26-
'[data-ui-id="menu-mage-adminhtml-stores"]': {
27-
open: 'click'
28-
}
29-
}
20+
overlayTmpl: '<div class="admin__menu-overlay"></div>'
3021
},
3122

3223
_create: function () {
33-
this.menu = this.element;
34-
this.menuCategory = $(this.options.menuCategory, this.menu);
35-
this.menuLinks = $(this.options.menuLinks, this.menuCategory);
36-
this._bind();
37-
},
24+
var selectors = this.options.selectors;
3825

39-
_menuCategoryBind: function (category, config) {
40-
category
41-
.hoverIntent($.extend({}, this.options.hoverIntentConfig, {
42-
over: !config.open ? this._hoverEffects : $.noop,
43-
out: !config.close ? this._leaveEffects : $.noop
44-
}));
45-
46-
if (config.open) {
47-
category.on(config.open, this._hoverEffects);
48-
}
26+
this.menu = this.element;
27+
this.menuLinks = $(selectors.topLevelHref, selectors.topLevelItem);
4928

50-
if (config.close) {
51-
category.on(config.close, this._leaveEffects);
52-
}
29+
this._initOverlay()
30+
._bind();
5331
},
5432

55-
_menuCategoryEvents: function () {
56-
this.menuCategory.each($.proxy(function (i, category) {
57-
var itemConfig = {};
58-
if (this.options.categoriesConfig) {
59-
$.each(this.options.categoriesConfig, $.proxy(function (selector, conf) {
60-
if ($(category).is(selector)) {
61-
itemConfig = conf;
62-
}
63-
}, this));
64-
}
65-
this._menuCategoryBind($(category), itemConfig);
66-
}, this));
33+
_initOverlay: function () {
34+
var wrapper = $('<div />').addClass('admin__scope');
35+
36+
this.overlay = $(this.options.overlayTmpl).appendTo('body').hide(0);
37+
38+
/**
39+
* @todo fix LESS and remove next line and wrapper definition
40+
*/
41+
this.overlay.wrap(wrapper);
42+
43+
return this;
6744
},
6845

6946
_bind: function () {
70-
this._menuCategoryEvents();
47+
var lighten = this._lighten.bind(this),
48+
open = this._open.bind(this),
49+
darken = this._darken.bind(this);
50+
7151
this.menuLinks
72-
.on('focus.tabFocus', function (e) {
73-
$(e.target).trigger('mouseenter');
74-
})
75-
.on('blur.tabFocus', function (e) {
76-
$(e.target).trigger('mouseleave');
77-
});
52+
.on('focus', lighten)
53+
.on('click', open)
54+
.on('blur', darken);
7855
},
7956

80-
_hoverEffects: function (e) {
57+
_lighten: function (e) {
58+
var selectors = this.options.selectors,
59+
menuItem = $(e.target).closest(selectors.topLevelItem);
8160

82-
// Disable current active class while hover is on level 0
83-
$(this).siblings('._active').addClass('_current').removeClass('_active');
61+
menuItem
62+
.addClass('_active')
63+
.siblings(selectors.topLevelItem)
64+
.removeClass('_active');
65+
},
8466

85-
$(this)
86-
.addClass('_hover _recent')
87-
.siblings('.level-0').each(function () {
88-
clearTimeout($(this).prop('hoverIntent_t'));
89-
$(this).prop('hoverIntent_s', 0);
90-
$(this).removeClass('_recent _hover');
91-
});
67+
_darken: function (e) {
68+
var selectors = this.options.selectors,
69+
menuItem = $(e.target).closest(selectors.topLevelItem);
9270

93-
var targetSubmenu = $(e.target).closest('.submenu');
94-
if (targetSubmenu.length && targetSubmenu.is(':visible')) {
95-
return;
96-
}
97-
var availableWidth = parseInt($(this).parent().css('width')) - $(this).position().left,
98-
submenu = $('> .submenu', this),
99-
colsWidth = 0;
71+
menuItem.removeClass('_active');
72+
},
10073

101-
submenu.addClass('_show');
74+
_closeSubmenu: function (e) {
75+
var selectors = this.options.selectors,
76+
menuItem = $(e.target).closest(selectors.topLevelItem);
10277

103-
$.each($('> .submenu > ul li.column', this), function () {
104-
colsWidth = colsWidth + parseInt($(this).css('width'));
105-
});
78+
this._close(e);
10679

107-
var containerPaddings = parseInt(submenu.css('padding-left')) + parseInt(submenu.css('padding-right'));
80+
$(selectors.topLevelHref, menuItem).focus();
81+
},
10882

109-
$(this).toggleClass('reverse', (containerPaddings + colsWidth) > availableWidth);
83+
_open: function (e) {
84+
var selectors = this.options.selectors,
85+
menuItemSelector = selectors.topLevelItem,
86+
menuItem = $(e.target).closest(menuItemSelector),
87+
subMenu = $(selectors.subMenu, menuItem),
88+
close = this._closeSubmenu.bind(this),
89+
closeBtn = subMenu.find(selectors.closeSubmenuBtn);
11090

111-
submenu.removeClass('_show');
91+
if (subMenu.length) {
92+
e.preventDefault();
93+
}
94+
95+
menuItem
96+
.addClass('_hover _recent')
97+
.siblings(menuItemSelector)
98+
.removeClass('_hover _recent');
99+
100+
subMenu.attr('aria-expanded', 'true');
101+
102+
closeBtn.on('click', close);
103+
104+
this.overlay.show(0).on('click', close);
112105
},
113106

114-
_leaveEffects: function (e) {
107+
_close: function (e) {
108+
var selectors = this.options.selectors,
109+
menuItem = this.menu.find(selectors.topLevelItem + '._hover._recent'),
110+
subMenu = $(selectors.subMenu, menuItem),
111+
closeBtn = subMenu.find(selectors.closeSubmenuBtn);
115112

116-
// Disable current active class while hover is on level 0
117-
$(this).siblings('._current').addClass('_active').removeClass('_current');
113+
e.preventDefault();
118114

119-
var targetSubmenu = $(e.target).closest('.submenu'),
120-
self = $(this),
121-
submenu = $('> .submenu', this);
115+
this.overlay.hide(0).off('click');
122116

123-
if (targetSubmenu.length && targetSubmenu.is(':hidden')) {
124-
return;
125-
}
117+
closeBtn.off('click');
126118

127-
if (submenu.length) {
128-
submenu.removeClass('_show', function () {
129-
self.removeClass('_hover');
130-
});
131-
} else {
132-
self.removeClass('_hover');
133-
}
119+
subMenu.attr('aria-expanded', 'false');
134120

121+
menuItem.removeClass('_hover _recent');
135122
}
136123
});
137124

0 commit comments

Comments
 (0)