From 569a48848d293d54ed8a72e367be436d4b0e7722 Mon Sep 17 00:00:00 2001 From: ilhan Date: Wed, 3 Jun 2020 07:53:32 +0300 Subject: [PATCH] fix(ui5-select): fix use of ESC leads to wrong selection When the picker is closed and the user hits ESC, the component saves that action and cancels the next selection. Now ESC cancels selection only if the picker is opened. FIXES: https://github.com/SAP/ui5-webcomponents/issues/1721 --- packages/main/src/Select.js | 2 +- packages/main/test/pages/Select.html | 6 ++++++ packages/main/test/specs/Select.spec.js | 23 +++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) 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."); + }); });