diff --git a/packages/main/src/Select.js b/packages/main/src/Select.js index 21660e212fac..95e198318836 100644 --- a/packages/main/src/Select.js +++ b/packages/main/src/Select.js @@ -395,7 +395,7 @@ class Select extends UI5Element { } } - if (isEscape(event)) { + if (isEscape(event) && this._isPickerOpen) { this._escapePressed = true; } diff --git a/packages/main/test/pages/Select.html b/packages/main/test/pages/Select.html index 4a9f6a01066b..c615878b52bd 100644 --- a/packages/main/test/pages/Select.html +++ b/packages/main/test/pages/Select.html @@ -60,6 +60,12 @@

Selection not cycling

Opt3 + + Cozy + Compact + Condensed + +

Change event counter holder

diff --git a/packages/main/test/specs/Select.spec.js b/packages/main/test/specs/Select.spec.js index bf4f92ffddb7..84a2fc7b87fd 100644 --- a/packages/main/test/specs/Select.spec.js +++ b/packages/main/test/specs/Select.spec.js @@ -228,4 +228,27 @@ describe("Select general interaction", () => { assert.strictEqual(inputResult.getProperty("value"), "7", "Change event should be fired"); }); + + it("tests ESC on closed picker", () => { + const select = $("#mySelectEsc"); + const selectText = browser.$("#mySelectEsc").shadow$("ui5-label"); + const EXPECTED_SELECTION_TEXT = "Cozy"; + const EXPECTED_SELECTION_TEXT2 = "Condensed"; + + select.click(); + const staticAreaItemClassName = browser.getStaticAreaItemClassName("#mySelectEsc") + const firstItem = browser.$(`.${staticAreaItemClassName}`).shadow$$("ui5-li")[0]; + const thirdItem = browser.$(`.${staticAreaItemClassName}`).shadow$$("ui5-li")[2]; + + firstItem.click(); + + assert.ok(selectText.getHTML(false).indexOf(EXPECTED_SELECTION_TEXT) !== -1, "Select label is correct."); + + // verify that ESC does not interfere when the picker is closed + select.keys("Escape"); + select.click(); + thirdItem.click(); + + assert.ok(selectText.getHTML(false).indexOf(EXPECTED_SELECTION_TEXT2) !== -1, "Select label is correct."); + }); });