Skip to content

Commit e7f380e

Browse files
authored
feat(ui5-input): add suggestion-item-preview event (#1778)
Add "suggestion-item-preview" event to notify when the user navigates to a suggestion item via the ARROW keys, before he/she performs final selection. Related to: #1768
1 parent f7bc0aa commit e7f380e

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

packages/main/src/Input.js

+15
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,20 @@ const metadata = {
349349
item: { type: HTMLElement },
350350
},
351351
},
352+
353+
/**
354+
* Fired when the user navigates to a suggestion item via the ARROW keys,
355+
* as a preview, before the final selection.
356+
*
357+
* @event sap.ui.webcomponents.main.Input#suggestion-item-preview
358+
* @param {HTMLElement} item The previewed item
359+
* @public
360+
*/
361+
"suggestion-item-preview": {
362+
detail: {
363+
item: { type: HTMLElement },
364+
},
365+
},
352366
},
353367
};
354368

@@ -785,6 +799,7 @@ class Input extends UI5Element {
785799

786800
onItemPreviewed(item) {
787801
this.previewSuggestion(item);
802+
this.fireEvent("suggestion-item-preview", { item });
788803
}
789804

790805
onOpen() {}

packages/main/test/pages/Input.html

+6-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ <h3>Input in Compact</h3>
4040
</div>
4141

4242
<h3> Input suggestions with ui5-suggestion-item</h3>
43-
<ui5-input show-suggestions style="width: 100%">
43+
<ui5-input id="inputItemPreviewRes" placeholder="preview item test"></ui5-input>
44+
<ui5-input id="inputItemPreview" show-suggestions style="width: 100%">
4445
<ui5-suggestion-item text="Cozy"></ui5-suggestion-item>
4546
<ui5-suggestion-item text="Compact"></ui5-suggestion-item>
4647
<ui5-suggestion-item text="Condensed"></ui5-suggestion-item>
@@ -309,6 +310,10 @@ <h3> Input with multiple icons</h3>
309310
inputChange.addEventListener("ui5-change", function (event) {
310311
inputChangeResult.value = ++inputChangeResultCounter;
311312
});
313+
314+
inputItemPreview.addEventListener("ui5-suggestion-item-preview", function (event) {
315+
inputItemPreviewRes.value = event.detail.item.textContent;
316+
});
312317
</script>
313318
</body>
314319
</html>

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

+10
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,16 @@ describe("Input general interaction", () => {
129129
assert.strictEqual(inputChangeResult.getValue(), "2", "change is called twice");
130130
});
131131

132+
it("fires suggestion-item-preview", () => {
133+
const inputItemPreview = $("#inputItemPreview").shadow$("input");
134+
const inputItemPreviewRes = $("#inputItemPreviewRes");
135+
136+
inputItemPreview.click();
137+
inputItemPreview.keys("ArrowDown");
138+
139+
assert.strictEqual(inputItemPreviewRes.getValue(), "Cozy", "First item has been previewed");
140+
});
141+
132142
it("handles suggestions", () => {
133143
browser.url("http://localhost:8080/test-resources/pages/Input.html");
134144

0 commit comments

Comments
 (0)