Skip to content

Commit cbe8bb8

Browse files
authored
fix(ui5-input): fix JS errors when open/close popups (#1811)
There are use cases when the user dynamically appends/removes the value state msg slot and we have to check if the value state msg popover is present before opening or closing it. FIXES: #1790
1 parent fb07dd4 commit cbe8bb8

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

packages/main/src/Input.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -673,15 +673,17 @@ class Input extends UI5Element {
673673
}
674674

675675
async openPopover() {
676-
this._isPopoverOpen = true;
677676
this.popover = await this._getPopover();
678-
this.popover.openBy(this);
677+
if (this.popover) {
678+
this._isPopoverOpen = true;
679+
this.popover.openBy(this);
680+
}
679681
}
680682

681683
closePopover() {
682684
if (this.isOpen()) {
683685
this._isPopoverOpen = false;
684-
this.popover.close();
686+
this.popover && this.popover.close();
685687
}
686688
}
687689

packages/main/test/pages/Input.html

+15-9
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,21 @@ <h3>Input in Compact</h3>
4141

4242
<h3> Input suggestions with ui5-suggestion-item</h3>
4343

44-
<div style="width: 200px">Input keyp</div>
45-
<ui5-input id="keyupResult" style="width: 100%"></ui5-input> <br>
44+
<div style="width: 200px">Test keyup</div>
45+
<ui5-input id="keyupResult" style="width: 100%"></ui5-input>
46+
<br><br>
4647

47-
<div style="width: 200px">Input suggestion-item-preview</div>
48-
<ui5-input id="inputItemPreviewRes" style="width:100%"></ui5-input><br><br>
48+
<div style="width: 200px">Test suggestion-item-preview</div>
49+
<ui5-input id="inputItemPreviewRes" style="width:100%"></ui5-input>
50+
<br><br>
4951

50-
<div style="width: 200px">mouseover on item</div>
51-
<ui5-input id="mouseoverResult" style="width: 100%"></ui5-input> <br>
52+
<div style="width: 200px">Test mouseover on item</div>
53+
<ui5-input id="mouseoverResult" style="width: 100%"></ui5-input>
54+
<br><br>
5255

53-
<div style="width: 200px">mouseout on item</div>
54-
<ui5-input id="mouseoutResult" style="width:100%"></ui5-input><br>
56+
<div style="width: 200px">Test mouseout on item</div>
57+
<ui5-input id="mouseoutResult" style="width:100%"></ui5-input>
58+
<br><br>
5559

5660
<ui5-input id="inputPreview" show-suggestions style="width: 200px">
5761
<ui5-suggestion-item class="suggestionItem" text="Cozy"></ui5-suggestion-item>
@@ -342,7 +346,9 @@ <h3> Input with multiple icons</h3>
342346

343347
inputPreview.addEventListener("keyup", function (event) {
344348
const item = event.target.previewItem;
345-
keyupResult.value = "[key]: " + event.key + " , [preview item]:" + (item && item.text);
349+
const combination = event.key === "1" && event.shiftKey && event.ctrlKey;
350+
351+
keyupResult.value = combination ? "[ctr+shift+1] on item: " + (item && item.text) : event.key;
346352
});
347353

348354
[].slice.call(document.querySelectorAll(".suggestionItem")).forEach(function(el) {

0 commit comments

Comments
 (0)