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.");
+ });
});