Skip to content

Commit 679362d

Browse files
authored
feat(ui5-combobox): аdd two-column layout support (#2503)
This change adds support for two-column layout in the ComboBox web component so that the apps can display additional information for the selection options, such as currencies, country abbreviations, or system abbreviations. FIXES #2450
1 parent 7d24572 commit 679362d

File tree

5 files changed

+65
-0
lines changed

5 files changed

+65
-0
lines changed

packages/main/src/ComboBoxItem.js

+9
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,15 @@ const metadata = {
1919
* @public
2020
*/
2121
text: { type: String },
22+
/**
23+
* Defines the additional text of the <code>ui5-cb-item</code>.
24+
*
25+
* @type {string}
26+
* @defaultvalue ""
27+
* @since 1.0.0-rc.11
28+
* @public
29+
*/
30+
additionalText: { type: String },
2231
},
2332
slots: {
2433
//

packages/main/src/ComboBoxPopover.hbs

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
{{#each _filteredItems}}
7171
<ui5-li
7272
type="Active"
73+
info={{this.additionalText}}
7374
._tabIndex={{itemTabIndex}}
7475
.mappedItem={{this}}
7576
?selected={{this.selected}}

packages/main/test/pages/ComboBox.html

+16
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,22 @@
9595
<ui5-combobox id="" style="width: 360px;" value-state="Success"></ui5-combobox>
9696
</div>
9797

98+
<div class="demo-section">
99+
<ui5-label id="combo-additional-text">Items with additional text: </ui5-label>
100+
<ui5-combobox id="combobox-two-column-layout" style="width: 360px;" value="Bulgaria" aria-labelledby="countryLabel">
101+
<ui5-cb-item text="Algeria" additional-text="DZ"></ui5-cb-item>
102+
<ui5-cb-item text="Argentina" additional-text="AR"></ui5-cb-item>
103+
<ui5-cb-item text="Australia" additional-text="AU"></ui5-cb-item>
104+
<ui5-cb-item text="Austria" additional-text="AT"></ui5-cb-item>
105+
<ui5-cb-item text="Bahrain" additional-text="BH"></ui5-cb-item>
106+
<ui5-cb-item text="Belgium" additional-text="BE"></ui5-cb-item>
107+
<ui5-cb-item text="Brazil" additional-text="BR"></ui5-cb-item>
108+
<ui5-cb-item text="Bulgaria" additional-text="BG"></ui5-cb-item>
109+
<ui5-cb-item text="Canada" additional-text="CA"></ui5-cb-item>
110+
<ui5-cb-item text="Chile" additional-text="CL"></ui5-cb-item>
111+
</ui5-combobox>
112+
</div>
113+
98114
<div class="demo-section">
99115
<span id="change-event-result"></span>
100116
<br />

packages/main/test/samples/ComboBox.sample.html

+28
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,34 @@ <h3>Filters (StartsWithPerTerm(default), StartsWith, Contains)</h3>
136136

137137
</section>
138138

139+
<section>
140+
<h3>ComboBox with Two-Column Layout Items</h3>
141+
<div class="snippet responsive-snippet">
142+
<ui5-combobox placeholder="Two-column Layout">
143+
<ui5-cb-item text="Austria" additional-text="AT"></ui5-cb-item>
144+
<ui5-cb-item text="Belgium" additional-text="BE"></ui5-cb-item>
145+
<ui5-cb-item text="Brazil" additional-text="BR"></ui5-cb-item>
146+
<ui5-cb-item text="Bulgaria" additional-text="BG"></ui5-cb-item>
147+
<ui5-cb-item text="Canada" additional-text="CA"></ui5-cb-item>
148+
</ui5-combobox>
149+
</div>
150+
151+
<pre class="prettyprint lang-html"><xmp>
152+
153+
<ui5-combobox placeholder="Two-column layout">
154+
<ui5-cb-item text="Austria" additional-text="AT"></ui5-cb-item>
155+
<ui5-cb-item text="Belgium" additional-text="BE"></ui5-cb-item>
156+
<ui5-cb-item text="Brazil" additional-text="BR"></ui5-cb-item>
157+
<ui5-cb-item text="Bulgaria" additional-text="BG"></ui5-cb-item>
158+
<ui5-cb-item text="Canada" additional-text="CA"></ui5-cb-item>
159+
</ui5-combobox>
160+
161+
</xmp></pre>
162+
163+
164+
</section>
165+
166+
139167
<section>
140168
<h3>Lazy loading</h3>
141169

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

+11
Original file line numberDiff line numberDiff line change
@@ -315,4 +315,15 @@ describe("General interaction", () => {
315315

316316
assert.ok(combo.getProperty("focused"), "property focused should be true");
317317
});
318+
319+
it ("Tests Combo with two-column layout", () => {
320+
const combo = $("#combobox-two-column-layout");
321+
const staticAreaItemClassName = browser.getStaticAreaItemClassName("#combobox-two-column-layout");
322+
const arrow = combo.shadow$("[input-icon]");
323+
const popover = browser.$(`.${staticAreaItemClassName}`).shadow$("ui5-responsive-popover");
324+
const listItem = popover.$("ui5-list").$$("ui5-li")[0];
325+
326+
arrow.click();
327+
assert.strictEqual(listItem.shadow$(".ui5-li-info").getText(), "DZ", "Additional item text should be displayed");
328+
});
318329
});

0 commit comments

Comments
 (0)