Skip to content

Commit 1f1db07

Browse files
feat(ui5-input, ui5-combobox, ui5-multicombobox): SAP Horizon Theme Implementation (#4182)
* feat(ui5-input, ui5-combobox, ui5-multicombobox): SAP Horizon Theme Implementation * additional styles * remove hash update * add nmore logic * additional styles
1 parent 786128b commit 1f1db07

24 files changed

+77
-15
lines changed

packages/main/src/ComboBox.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import ComboBoxCss from "./generated/themes/ComboBox.css.js";
3939
import ComboBoxPopoverCss from "./generated/themes/ComboBoxPopover.css.js";
4040
import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
4141
import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
42+
import SuggestionsCss from "./generated/themes/Suggestions.css.js";
4243

4344
import ComboBoxItem from "./ComboBoxItem.js";
4445
import Icon from "./Icon.js";
@@ -367,7 +368,7 @@ class ComboBox extends UI5Element {
367368
}
368369

369370
static get staticAreaStyles() {
370-
return [ResponsivePopoverCommonCss, ValueStateMessageCss, ComboBoxPopoverCss];
371+
return [ResponsivePopoverCommonCss, ValueStateMessageCss, ComboBoxPopoverCss, SuggestionsCss];
371372
}
372373

373374
static get template() {
@@ -994,6 +995,10 @@ class ComboBox extends UI5Element {
994995

995996
get classes() {
996997
return {
998+
popover: {
999+
"ui5-suggestions-popover": !this.isPhone,
1000+
"ui5-suggestions-popover-with-value-state-header": !this.isPhone && this.hasValueStateText,
1001+
},
9971002
popoverValueState: {
9981003
"ui5-valuestatemessage-header": true,
9991004
"ui5-valuestatemessage-root": true,

packages/main/src/ComboBoxPopover.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<ui5-responsive-popover
2+
class="{{classes.popover}}"
23
hide-arrow
34
content-only-on-desktop
45
_disable-initial-focus

packages/main/src/GroupHeaderListItem.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<li
2+
part="native-li"
23
tabindex="{{_tabIndex}}"
34
class="ui5-ghli-root {{classes.main}}"
45
@focusin="{{_onfocusin}}"

packages/main/src/Input.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import {
4040
import styles from "./generated/themes/Input.css.js";
4141
import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
4242
import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
43+
import SuggestionsCss from "./generated/themes/Suggestions.css.js";
4344

4445
const rgxFloat = new RegExp(/(\+|-)?\d+(\.|,)\d+/);
4546

@@ -487,7 +488,7 @@ class Input extends UI5Element {
487488
}
488489

489490
static get staticAreaStyles() {
490-
return [ResponsivePopoverCommonCss, ValueStateMessageCss];
491+
return [ResponsivePopoverCommonCss, ValueStateMessageCss, SuggestionsCss];
491492
}
492493

493494
constructor() {
@@ -1154,6 +1155,10 @@ class Input extends UI5Element {
11541155

11551156
get classes() {
11561157
return {
1158+
popover: {
1159+
"ui5-suggestions-popover": !this.isPhone && this.showSuggestions,
1160+
"ui5-suggestions-popover-with-value-state-header": !this.isPhone && this.showSuggestions && this.hasValueStateMessage,
1161+
},
11571162
popoverValueState: {
11581163
"ui5-valuestatemessage-root": true,
11591164
"ui5-valuestatemessage-header": true,

packages/main/src/InputPopover.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{{#if showSuggestions}}
22
<ui5-responsive-popover
3+
class="{{classes.popover}}"
34
hide-arrow
45
_disable-initial-focus
56
placement-type="Bottom"

packages/main/src/ListItem.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<li
2+
part="native-li"
23
tabindex="{{tabIndex}}"
34
class="{{classes.main}}"
45
dir="{{effectiveDir}}"

packages/main/src/MultiComboBox.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import MultiComboBoxPopoverTemplate from "./generated/templates/MultiComboBoxPop
4949
import styles from "./generated/themes/MultiComboBox.css.js";
5050
import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
5151
import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
52+
import SuggestionsCss from "./generated/themes/Suggestions.css.js";
5253

5354
/**
5455
* @public
@@ -388,7 +389,7 @@ class MultiComboBox extends UI5Element {
388389
}
389390

390391
static get staticAreaStyles() {
391-
return [ResponsivePopoverCommonCss, ValueStateMessageCss];
392+
return [ResponsivePopoverCommonCss, ValueStateMessageCss, SuggestionsCss];
392393
}
393394

394395
static get dependencies() {
@@ -1033,6 +1034,11 @@ class MultiComboBox extends UI5Element {
10331034

10341035
get classes() {
10351036
return {
1037+
popover: {
1038+
"ui5-multi-combobox-all-items-responsive-popover": true,
1039+
"ui5-suggestions-popover": !this.isPhone,
1040+
"ui5-suggestions-popover-with-value-state-header": !this.isPhone && this.hasValueStateMessage,
1041+
},
10361042
popoverValueState: {
10371043
"ui5-valuestatemessage-root": true,
10381044
"ui5-valuestatemessage-header": true,

packages/main/src/MultiComboBoxPopover.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<ui5-responsive-popover
22
placement-type="Bottom"
33
horizontal-align="Stretch"
4-
class="ui5-multi-combobox-all-items-responsive-popover"
4+
class="{{classes.popover}}"
55
hide-arrow
66
_disable-initial-focus
77
@ui5-selection-change={{_listSelectionChange}}

packages/main/src/Tokenizer.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ import styles from "./generated/themes/Tokenizer.css.js";
2727
import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
2828
import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
2929

30+
// reuse suggestions focus styling for NMore popup
31+
import SuggestionsCss from "./generated/themes/Suggestions.css.js";
32+
3033
/**
3134
* @public
3235
*/
@@ -125,7 +128,7 @@ class Tokenizer extends UI5Element {
125128
}
126129

127130
static get staticAreaStyles() {
128-
return [ResponsivePopoverCommonCss, ValueStateMessageCss];
131+
return [ResponsivePopoverCommonCss, ValueStateMessageCss, SuggestionsCss];
129132
}
130133

131134
static get staticAreaTemplate() {

packages/main/src/features/InputSuggestions.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ class Suggestions {
181181

182182
this._getComponent().onItemSelected(this._getRealItems()[this.selectedItemIndex], keyboardUsed);
183183
item.selected = false;
184+
item.focused = false;
184185
this._getComponent().open = false;
185186
}
186187

@@ -296,10 +297,12 @@ class Suggestions {
296297

297298
if (previousItem) {
298299
previousItem.selected = false;
300+
previousItem.focused = false;
299301
}
300302

301303
if (currentItem) {
302304
currentItem.selected = true;
305+
currentItem.focused = true;
303306

304307
if (this.handleFocus) {
305308
currentItem.focus();
@@ -317,6 +320,7 @@ class Suggestions {
317320
const items = this._getItems();
318321
items.forEach(item => {
319322
item.selected = false;
323+
item.focused = false;
320324
});
321325
}
322326

0 commit comments

Comments
 (0)