diff --git a/app/code/Magento/Search/view/frontend/web/form-mini.js b/app/code/Magento/Search/view/frontend/web/form-mini.js index 1811274af0167..6e922f646e0b5 100644 --- a/app/code/Magento/Search/view/frontend/web/form-mini.js +++ b/app/code/Magento/Search/view/frontend/web/form-mini.js @@ -9,11 +9,11 @@ define([ 'jquery', 'underscore', + 'mage/getKeyNameFromEvent', 'mage/template', 'matchMedia', - 'jquery/ui', 'mage/translate' -], function ($, _, mageTemplate, mediaCheck) { +], function ($, _, getKeyNameFromEvent, mageTemplate, mediaCheck) { 'use strict'; /** @@ -202,29 +202,27 @@ define([ * @return {Boolean} Default return type for any unhandled keys */ _onKeyDown: function (e) { - var keyCode = e.keyCode || e.which; - - switch (keyCode) { - case $.ui.keyCode.HOME: + switch (getKeyNameFromEvent(e)) { + case "Home": this._getFirstVisibleElement().addClass(this.options.selectClass); this.responseList.selected = this._getFirstVisibleElement(); break; - case $.ui.keyCode.END: + case "End": this._getLastElement().addClass(this.options.selectClass); this.responseList.selected = this._getLastElement(); break; - case $.ui.keyCode.ESCAPE: + case "Escape": this._resetResponseList(true); this.autoComplete.hide(); break; - case $.ui.keyCode.ENTER: + case "Enter": this.searchForm.trigger('submit'); break; - case $.ui.keyCode.DOWN: + case "ArrowDown": if (this.responseList.indexList) { if (!this.responseList.selected) { //eslint-disable-line max-depth this._getFirstVisibleElement().addClass(this.options.selectClass); @@ -242,7 +240,7 @@ define([ } break; - case $.ui.keyCode.UP: + case "ArrowUp": if (this.responseList.indexList !== null) { if (!this._getFirstVisibleElement().hasClass(this.options.selectClass)) { this.responseList.selected = this.responseList.selected diff --git a/lib/web/mage/getKeyNameFromEvent.js b/lib/web/mage/getKeyNameFromEvent.js new file mode 100644 index 0000000000000..fad02f10f907b --- /dev/null +++ b/lib/web/mage/getKeyNameFromEvent.js @@ -0,0 +1,35 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +define([ +], function () { + + /** + * @param {Event} e The key event + */ + function getKeyNameFromEvent(e) { + var keyName = e.key; + switch (keyName) { + case "Esc": // Internet Explorer and Edge + keyName = "Escape"; + break; + case "Down": // Internet Explorer and Edge + keyName = "ArrowDown"; + break; + case "Up": // Internet Explorer and Edge + keyName = "ArrowUp"; + break; + case "Left": // Internet Explorer and Edge + keyName = "ArrowLeft"; + break; + case "Right": // Internet Explorer and Edge + keyName = "ArrowRight"; + break; + } + return keyName; + } + + return getKeyNameFromEvent; +}); diff --git a/lib/web/mage/menu.js b/lib/web/mage/menu.js index 86d98181724cd..6a90860807a83 100644 --- a/lib/web/mage/menu.js +++ b/lib/web/mage/menu.js @@ -6,10 +6,11 @@ define([ 'jquery', 'matchMedia', + 'mage/getKeyNameFromEvent', 'jquery/ui', 'jquery/jquery.mobile.custom', 'mage/translate' -], function ($, mediaCheck) { +], function ($, mediaCheck, getKeyNameFromEvent) { 'use strict'; /** @@ -254,47 +255,47 @@ define([ if (this.active.closest(this.options.menus).attr('aria-expanded') != 'true') { //eslint-disable-line eqeqeq - switch (event.keyCode) { - case $.ui.keyCode.PAGE_UP: + switch (getKeyNameFromEvent(event)) { + case "PageUp": this.previousPage(event); break; - case $.ui.keyCode.PAGE_DOWN: + case "PageDown": this.nextPage(event); break; - case $.ui.keyCode.HOME: + case "Home": this._move('first', 'first', event); break; - case $.ui.keyCode.END: + case "End": this._move('last', 'last', event); break; - case $.ui.keyCode.UP: + case "ArrowUp": this.previous(event); break; - case $.ui.keyCode.DOWN: + case "ArrowDown": if (this.active && !this.active.is('.ui-state-disabled')) { this.expand(event); } break; - case $.ui.keyCode.LEFT: + case "ArrowLeft": this.previous(event); break; - case $.ui.keyCode.RIGHT: + case "ArrowRight": this.next(event); break; - case $.ui.keyCode.ENTER: - case $.ui.keyCode.SPACE: + case "Enter": + case "Space": this._activate(event); break; - case $.ui.keyCode.ESCAPE: + case "Escape": this.collapse(event); break; default: @@ -345,28 +346,28 @@ define([ } } } else { - switch (event.keyCode) { - case $.ui.keyCode.DOWN: + switch (getKeyNameFromEvent(event)) { + case "ArrowDown": this.next(event); break; - case $.ui.keyCode.UP: + case "ArrowUp": this.previous(event); break; - case $.ui.keyCode.RIGHT: + case "ArrowRight": if (this.active && !this.active.is('.ui-state-disabled')) { this.expand(event); } break; - case $.ui.keyCode.ENTER: - case $.ui.keyCode.SPACE: + case "Enter": + case "Space": this._activate(event); break; - case $.ui.keyCode.LEFT: - case $.ui.keyCode.ESCAPE: + case "ArrowLeft": + case "Escape": this.collapse(event); break; default: