Skip to content

Commit a6c4d29

Browse files
authored
feat(ui5-select): select opens with space (#245)
1 parent 7daf417 commit a6c4d29

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

packages/main/src/Select.js

+12
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ class Select extends WebComponent {
158158
constructor() {
159159
super();
160160

161+
this._closing = false; // Flag for handling open/close on space
161162
this._setSelectedItem(null);
162163
this._setPreviewedItem(null);
163164
this.Suggestions = new Suggestions(this, "items", true /* move focus with arrow keys */);
@@ -191,6 +192,11 @@ class Select extends WebComponent {
191192
}
192193

193194
if (isSpace(event)) {
195+
if (!this._isOpened()) {
196+
this._closing = true;
197+
return event.preventDefault();
198+
}
199+
this._closing = false;
194200
return this.Suggestions.onSpace(event);
195201
}
196202

@@ -206,6 +212,12 @@ class Select extends WebComponent {
206212
}
207213
}
208214

215+
onkeyup(event) {
216+
if (isSpace(event)) {
217+
return this.Suggestions.toggle(this._closing); // Open Suggestions
218+
}
219+
}
220+
209221
onfocusin(event) {
210222
this._focused = true; // invalidating property
211223
}

packages/main/test/specs/Select.spec.js

+12
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,18 @@ describe("Select general interaction", () => {
5252
assert.ok(selectText.getHTML(false).indexOf(EXPECTED_SELECTION_TEXT2) !== -1, "Select label is correct.");
5353
});
5454

55+
it("opens upon space", () => {
56+
const btn = $("#myBtn2");
57+
const select = $("#mySelect");
58+
const popover = browser.findElementDeep("#mySelect >>> ui5-popover >>> .sapMPopover");
59+
60+
btn.click();
61+
btn.keys("Tab");
62+
63+
browser.keys("Space");
64+
assert.ok(popover.isDisplayedInViewport(), "Select is opened.");
65+
});
66+
5567
it("toggles upon F4", () => {
5668
const btn = $("#myBtn2");
5769
const select = $("#mySelect");

0 commit comments

Comments
 (0)