define(['jquery'], function($) { 'use strict'; return function(navigationMenu) { $.widget('mage.menu', navigationMenu.menu, { options: { mediaBreakpoint: '(max-width: ' + window.widthThreshold + 'px)' }, _toggleMobileMode: function () { var subMenus; $(this.element).off('mouseenter mouseleave'); this._on({ /** * @param {jQuery.Event} event */ 'click .ui-menu-item:has(a)': function (event) { var target; event.preventDefault(); target = $(event.target).closest('.ui-menu-item'); // Open submenu on click if (target.has('.ui-menu').length) { this.expand(event); } else if (!this.element.is(':focus') && $(this.document[0].activeElement).closest('.ui-menu').length ) { // Redirect focus to the menu this.element.trigger('focus', [true]); // If the active item is on the top level, let it stay active. // Otherwise, blur the active item since it is no longer visible. if (this.active && this.active.parents('.ui-menu').length === 1) { //eslint-disable-line clearTimeout(this.timer); } } target.get(0).scrollIntoView(); if (!target.hasClass('level-top') || !target.has('.ui-menu').length) { window.location.href = target.find('> a').attr('href'); } }, /** * @param {jQuery.Event} event */ 'click .ui-menu-item:has(.ui-state-active)': function (event) { this.collapseAll(event, true); } }); subMenus = this.element.find('.level-top'); $.each(subMenus, $.proxy(function (index, item) { var category = $(item).find('> a span').not('.ui-menu-icon').text(), categoryUrl = $(item).find('> a').attr('href'), menu = $(item).find('> .ui-menu'); this.categoryLink = $('') .attr('href', categoryUrl) .text($.mage.__('All %1').replace('%1', category)); this.categoryParent = $('
  • ') .addClass('ui-menu-item all-category') .html(this.categoryLink); if (menu.find('.all-category').length === 0) { menu.prepend(this.categoryParent); } }, this)); $('.navigation ul > li.level0.mm-no-children > ul.hide-all-category').remove(); }, /** * Toggle. */ toggle: function () { if ($(window).width() <= window.widthThreshold || window.widthThreshold === undefined) { var html = $('html'); if (html.hasClass('nav-open')) { html.removeClass('nav-open'); setTimeout(function () { html.removeClass('nav-before-open'); }, this.options.hideDelay); } else { html.addClass('nav-before-open'); setTimeout(function () { html.addClass('nav-open'); }, this.options.showDelay); } } } }); return { menu: $.mage.menu, navigation: $.mage.navigation } } });