Skip to content

Commit 8c473c3

Browse files
authoredAug 26, 2020
feat(ui5-multi-input): fire value-help-trigger with F4, ALT/OPTION + ARROW_UP/DOWN (#2145)
Fire the value-help-trigger when F4 or ALT/OPTION + ARROW_UP/ARROW_DOWN keyboard keys are used. FIXES #2143 BREAKING CHANGE value-help-icon-press is renamed to value-help-trigger
1 parent 242c7a3 commit 8c473c3

File tree

5 files changed

+61
-16
lines changed

5 files changed

+61
-16
lines changed
 

‎packages/main/src/MultiInput.js

+15-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
2+
import { isShow } from "@ui5/webcomponents-base/dist/Keys.js";
23
import Input from "./Input.js";
34
import MultiInputTemplate from "./generated/templates/MultiInputTemplate.lit.js";
45
import styles from "./generated/themes/MultiInput.css.js";
@@ -14,7 +15,7 @@ const metadata = {
1415
properties: /** @lends sap.ui.webcomponents.main.MultiInput.prototype */ {
1516
/**
1617
* Determines whether a value help icon will be should in the end of the input.
17-
* Pressing the icon will fire <code>value-help-icon-press</code> event.
18+
* Pressing the icon will fire <code>value-help-trigger</code> event.
1819
*
1920
* @type {boolean}
2021
* @defaultvalue false
@@ -54,12 +55,13 @@ const metadata = {
5455
},
5556
events: /** @lends sap.ui.webcomponents.main.MultiInput.prototype */ {
5657
/**
57-
* Fired when value state icon is pressed.
58+
* Fired when the value help icon is pressed
59+
* and F4 or ALT/OPTION + ARROW_UP/ARROW_DOWN keyboard keys are used.
5860
*
59-
* @event sap.ui.webcomponents.main.MultiInput#value-help-icon-press
61+
* @event sap.ui.webcomponents.main.MultiInput#value-help-trigger
6062
* @public
6163
*/
62-
"value-help-icon-press": {},
64+
"value-help-trigger": {},
6365

6466
/**
6567
* Fired when a token is about to be deleted.
@@ -120,7 +122,7 @@ class MultiInput extends Input {
120122

121123
valueHelpPress(event) {
122124
this.closePopover();
123-
this.fireEvent("value-help-icon-press", {});
125+
this.fireEvent("value-help-trigger", {});
124126
}
125127

126128
showMorePress(event) {
@@ -159,6 +161,14 @@ class MultiInput extends Input {
159161
this.expandedTokenizer = true;
160162
}
161163

164+
_onkeydown(event) {
165+
super._onkeydown(event);
166+
167+
if (isShow(event)) {
168+
this.valueHelpPress();
169+
}
170+
}
171+
162172
_onfocusout(event) {
163173
super._onfocusout(event);
164174
const relatedTarget = event.relatedTarget;

‎packages/main/test/pages/MultiInput.html

+16-3
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,13 @@ <h1>Tokens + Suggestions</h1>
179179
</ui5-dialog>
180180
</div>
181181

182+
<div class="sample-container">
183+
<h1>Test value-help-trigger with F4 and Alt + ArrowUp/Down</h1>
184+
185+
<ui5-multi-input id="multi-with-value-help-icon" show-value-help-icon>
186+
</ui5-multi-input>
187+
<ui5-input id="value-help-trigger-counter" placeholder="event count.."></ui5-input>
188+
</div>
182189

183190
<script>
184191

@@ -209,11 +216,11 @@ <h1>Tokens + Suggestions</h1>
209216

210217
/* ----------------- */
211218

212-
document.getElementById("vh").addEventListener("ui5-value-help-icon-press", function (event) {
219+
document.getElementById("vh").addEventListener("ui5-value-help-trigger", function (event) {
213220
alert("test");
214221
});
215222

216-
document.getElementById("suggestion-token").addEventListener("ui5-value-help-icon-press", function (event) {
223+
document.getElementById("suggestion-token").addEventListener("ui5-value-help-trigger", function (event) {
217224
var list = document.getElementById("tokens-list");
218225

219226
list.innerHTML = "";
@@ -241,9 +248,15 @@ <h1>Tokens + Suggestions</h1>
241248
event.target.value = "";
242249
});
243250

244-
document.getElementById("basic-overflow-and-icon").addEventListener("value-help-icon-press", function (event) {
251+
document.getElementById("basic-overflow-and-icon").addEventListener("ui5-value-help-trigger", function (event) {
245252
document.getElementById("basic-event-listener").innerHTML = "value help icon press";
246253
});
254+
255+
let valueHelpTriggerCounter = 0;
256+
document.getElementById("multi-with-value-help-icon").addEventListener("ui5-value-help-trigger", function (event) {
257+
document.getElementById("value-help-trigger-counter").value = ++valueHelpTriggerCounter;
258+
});
259+
247260
document.getElementById("suggestion-token").addEventListener("ui5-token-delete", function (event) {
248261
var mi = event.target;
249262

‎packages/main/test/pages/MultiInput_Suggestions.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ <h1>Token Creation onChange (unique)</h1>
114114

115115
/* ----------------- */
116116

117-
document.getElementById("suggestion-token").addEventListener("ui5-value-help-icon-press", function (event) {
117+
document.getElementById("suggestion-token").addEventListener("ui5-value-help-trigger", function (event) {
118118
var list = document.getElementById("tokens-list");
119119

120120
list.innerHTML = "";

‎packages/main/test/specs/MultiInput.spec.js

+28-6
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,47 @@ describe("MultiInput general interaction", () => {
2525

2626
it ("tests opening of tokenizer Popover", () => {
2727
const tokenizer = $("#basic-overflow").shadow$("ui5-tokenizer");
28-
const nMoreLable = tokenizer.shadow$(".ui5-tokenizer-more-text");
28+
const nMoreLabel = tokenizer.shadow$(".ui5-tokenizer-more-text");
2929

30-
nMoreLable.click();
30+
nMoreLabel.click();
3131

3232
const rpoClassName = getTokenizerPopoverId("basic-overflow");
3333
const rpo = $(`.${rpoClassName}`).shadow$("ui5-responsive-popover");
3434

3535
assert.ok(rpo.getProperty("opened"), "More Popover should be open");
3636
});
3737

38-
it ("fires value help icon press", () => {
39-
const lable = $("#basic-event-listener");
38+
it ("fires value-help-trigger on icon press", () => {
39+
const label = $("#basic-event-listener");
4040
const icon = $("#basic-overflow-and-icon").shadow$("ui5-icon");
41+
const EXPECTED_TEXT = "value help icon press"
4142

42-
assert.strictEqual(lable.getText(), "", "event is not fired");
43+
assert.strictEqual(label.getText(), "", "event is not fired");
4344

45+
// act
4446
icon.click();
4547

46-
assert.strictEqual(lable.getText(), "value help icon press", "value help press event is fired");
48+
// assert
49+
assert.strictEqual(label.getText(), EXPECTED_TEXT, "value help press event is fired");
50+
51+
});
52+
53+
it ("fires value-help-trigger with F4 and Alt/Option + ArrowUp/Down", () => {
54+
const eventCounter = $("#value-help-trigger-counter");
55+
const multiInputInner = $("#multi-with-value-help-icon").shadow$(".ui5-input-inner");
56+
57+
// act
58+
multiInputInner.click();
59+
browser.keys(["Alt", "ArrowUp", "NULL"]);
60+
61+
// assert
62+
assert.strictEqual(eventCounter.getProperty("value"), "1", "value help press event is fired");
63+
64+
// act
65+
browser.keys("F4");
66+
67+
// assert
68+
assert.strictEqual(eventCounter.getProperty("value"), "2", "value help press event is fired");
4769
});
4870

4971
it ("adds a token to multi input", () => {

‎yarn.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -2003,7 +2003,7 @@ chrome-launcher@^0.13.1:
20032003
mkdirp "^0.5.3"
20042004
rimraf "^3.0.2"
20052005

2006-
chromedriver@^84.0.1:
2006+
chromedriver@latest:
20072007
version "84.0.1"
20082008
resolved "https://registry.npmjs.org/chromedriver/-/chromedriver-84.0.1.tgz#eaca7723f1a58c262a5c521b8596769af40b0d4f"
20092009
integrity sha512-iJ6Y680yp58+KlAPS5YgYe3oePVFf8jY5k4YoczhXkT0p/mQZKfGNkGG/Xc0LjGWDQRTgZwXg66hOXoApIQecg==

0 commit comments

Comments
 (0)
Please sign in to comment.