@ui5/webcomponents 0.0.0-db2be6526 → 0.0.0-dc3ccac50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/csp.js +7 -0
  2. package/dist/CheckBox.js +4 -0
  3. package/dist/ColorPalettePopover.js +0 -1
  4. package/dist/ColorPicker.js +1 -1
  5. package/dist/ComboBox.js +31 -1
  6. package/dist/DateTimePicker.js +2 -1
  7. package/dist/DayPicker.js +5 -0
  8. package/dist/FileUploader.js +14 -0
  9. package/dist/Icon.js +1 -0
  10. package/dist/Input.js +68 -18
  11. package/dist/List.js +2 -2
  12. package/dist/MultiComboBox.js +32 -7
  13. package/dist/MultiComboBoxItem.js +4 -10
  14. package/dist/Option.js +4 -10
  15. package/dist/Popup.js +2 -7
  16. package/dist/RangeSlider.js +1 -1
  17. package/dist/Select.js +27 -8
  18. package/dist/SliderBase.js +2 -1
  19. package/dist/Switch.js +4 -0
  20. package/dist/Tab.js +26 -12
  21. package/dist/TabContainer.js +5 -8
  22. package/dist/Table.js +2 -1
  23. package/dist/TableRow.js +1 -1
  24. package/dist/TextArea.js +14 -0
  25. package/dist/Token.js +21 -1
  26. package/dist/Tokenizer.js +4 -1
  27. package/dist/WheelSlider.js +9 -9
  28. package/dist/api.json +14 -28
  29. package/dist/features/InputSuggestions.js +100 -15
  30. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  31. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  32. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  33. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  34. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  35. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  36. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  37. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  38. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  39. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +3 -3
  40. package/dist/generated/templates/ComboBoxTemplate.lit.js +4 -3
  41. package/dist/generated/templates/CustomListItemTemplate.lit.js +1 -1
  42. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +1 -1
  43. package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +1 -1
  44. package/dist/generated/templates/InputPopoverTemplate.lit.js +3 -3
  45. package/dist/generated/templates/InputTemplate.lit.js +6 -5
  46. package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
  47. package/dist/generated/templates/ListTemplate.lit.js +1 -1
  48. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +4 -4
  49. package/dist/generated/templates/MultiComboBoxTemplate.lit.js +4 -3
  50. package/dist/generated/templates/MultiInputTemplate.lit.js +7 -6
  51. package/dist/generated/templates/SelectPopoverTemplate.lit.js +3 -3
  52. package/dist/generated/templates/SliderTemplate.lit.js +1 -1
  53. package/dist/generated/templates/StandardListItemTemplate.lit.js +1 -1
  54. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +1 -1
  55. package/dist/generated/templates/SwitchTemplate.lit.js +3 -1
  56. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +1 -1
  57. package/dist/generated/templates/TabContainerTemplate.lit.js +1 -1
  58. package/dist/generated/templates/TabInStripTemplate.lit.js +2 -4
  59. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +1 -1
  60. package/dist/generated/templates/TokenTemplate.lit.js +1 -1
  61. package/dist/generated/templates/TreeListItemTemplate.lit.js +1 -1
  62. package/dist/generated/themes/Avatar.css.js +1 -1
  63. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  64. package/dist/generated/themes/Badge.css.js +1 -1
  65. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  66. package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
  67. package/dist/generated/themes/BrowserScrollbar.css.js +1 -1
  68. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  69. package/dist/generated/themes/Button.css.js +1 -1
  70. package/dist/generated/themes/Button.ie11.css.js +1 -1
  71. package/dist/generated/themes/Calendar.css.js +1 -1
  72. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  73. package/dist/generated/themes/Card.css.js +1 -1
  74. package/dist/generated/themes/CardHeader.css.js +1 -1
  75. package/dist/generated/themes/Carousel.css.js +1 -1
  76. package/dist/generated/themes/CheckBox.css.js +1 -1
  77. package/dist/generated/themes/ColorPalette.css.js +1 -1
  78. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  79. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  80. package/dist/generated/themes/ColorPaletteStaticArea.css.js +1 -1
  81. package/dist/generated/themes/ColorPicker.css.js +1 -1
  82. package/dist/generated/themes/ComboBox.css.js +1 -1
  83. package/dist/generated/themes/ComboBoxPopover.css.js +1 -1
  84. package/dist/generated/themes/CustomListItem.css.js +1 -1
  85. package/dist/generated/themes/DatePicker.css.js +1 -1
  86. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  87. package/dist/generated/themes/DateRangePicker.css.js +1 -1
  88. package/dist/generated/themes/DateTimePicker.css.js +1 -1
  89. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  90. package/dist/generated/themes/DayPicker.css.js +1 -1
  91. package/dist/generated/themes/Dialog.css.js +1 -1
  92. package/dist/generated/themes/FileUploader.css.js +1 -1
  93. package/dist/generated/themes/GroupHeaderListItem.css.js +1 -1
  94. package/dist/generated/themes/GrowingButton.css.js +1 -1
  95. package/dist/generated/themes/Icon.css.js +1 -1
  96. package/dist/generated/themes/Input.css.js +1 -1
  97. package/dist/generated/themes/InputIcon.css.js +1 -1
  98. package/dist/generated/themes/InvisibleTextStyles.css.js +1 -1
  99. package/dist/generated/themes/Label.css.js +1 -1
  100. package/dist/generated/themes/Link.css.js +1 -1
  101. package/dist/generated/themes/List.css.js +1 -1
  102. package/dist/generated/themes/ListItem.css.js +1 -1
  103. package/dist/generated/themes/ListItemBase.css.js +1 -1
  104. package/dist/generated/themes/MessageStrip.css.js +1 -1
  105. package/dist/generated/themes/MonthPicker.css.js +1 -1
  106. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  107. package/dist/generated/themes/MultiInput.css.js +1 -1
  108. package/dist/generated/themes/Panel.css.js +1 -1
  109. package/dist/generated/themes/Popover.css.js +1 -1
  110. package/dist/generated/themes/Popup.css.js +1 -1
  111. package/dist/generated/themes/PopupGlobal.css.js +8 -0
  112. package/dist/generated/themes/PopupStaticAreaStyles.css.js +1 -1
  113. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  114. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  115. package/dist/generated/themes/RadioButton.css.js +1 -1
  116. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  117. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  118. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  119. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  120. package/dist/generated/themes/Select.css.js +1 -1
  121. package/dist/generated/themes/SelectPopover.css.js +1 -1
  122. package/dist/generated/themes/SliderBase.css.js +1 -1
  123. package/dist/generated/themes/StepInput.css.js +1 -1
  124. package/dist/generated/themes/Suggestions.css.js +8 -0
  125. package/dist/generated/themes/Switch.css.js +1 -1
  126. package/dist/generated/themes/Tab.css.js +1 -1
  127. package/dist/generated/themes/TabContainer.css.js +1 -1
  128. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  129. package/dist/generated/themes/TabInStrip.css.js +1 -1
  130. package/dist/generated/themes/Table.css.js +1 -1
  131. package/dist/generated/themes/TableCell.css.js +1 -1
  132. package/dist/generated/themes/TableColumn.css.js +1 -1
  133. package/dist/generated/themes/TableGroupRow.css.js +1 -1
  134. package/dist/generated/themes/TableRow.css.js +1 -1
  135. package/dist/generated/themes/TapHighlightColor.css.js +1 -1
  136. package/dist/generated/themes/TextArea.css.js +1 -1
  137. package/dist/generated/themes/TimePicker.css.js +1 -1
  138. package/dist/generated/themes/TimePickerPopover.css.js +1 -1
  139. package/dist/generated/themes/TimeSelection.css.js +1 -1
  140. package/dist/generated/themes/Title.css.js +1 -1
  141. package/dist/generated/themes/Toast.css.js +1 -1
  142. package/dist/generated/themes/ToggleButton.css.js +1 -1
  143. package/dist/generated/themes/ToggleButton.ie11.css.js +1 -1
  144. package/dist/generated/themes/Token.css.js +1 -1
  145. package/dist/generated/themes/Tokenizer.css.js +1 -1
  146. package/dist/generated/themes/Tree.css.js +1 -1
  147. package/dist/generated/themes/TreeListItem.css.js +1 -1
  148. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  149. package/dist/generated/themes/WheelSlider.css.js +1 -1
  150. package/dist/generated/themes/YearPicker.css.js +1 -1
  151. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  152. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  153. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  154. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  155. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  156. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  157. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  158. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  159. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  160. package/package.json +8 -8
  161. package/src/CheckBox.js +4 -0
  162. package/src/ColorPalettePopover.js +0 -1
  163. package/src/ColorPicker.js +1 -1
  164. package/src/ComboBox.hbs +4 -0
  165. package/src/ComboBox.js +31 -1
  166. package/src/ComboBoxPopover.hbs +3 -0
  167. package/src/DateTimePicker.js +2 -1
  168. package/src/DayPicker.js +5 -0
  169. package/src/FileUploader.js +14 -0
  170. package/src/FileUploaderPopover.hbs +1 -0
  171. package/src/GroupHeaderListItem.hbs +1 -0
  172. package/src/Icon.js +1 -0
  173. package/src/Input.hbs +4 -0
  174. package/src/Input.js +68 -18
  175. package/src/InputPopover.hbs +4 -1
  176. package/src/List.hbs +1 -1
  177. package/src/List.js +2 -2
  178. package/src/ListItem.hbs +1 -0
  179. package/src/MultiComboBox.hbs +4 -0
  180. package/src/MultiComboBox.js +32 -7
  181. package/src/MultiComboBoxItem.js +4 -10
  182. package/src/MultiComboBoxPopover.hbs +4 -1
  183. package/src/Option.js +4 -10
  184. package/src/Popup.js +2 -7
  185. package/src/RangeSlider.js +1 -1
  186. package/src/Select.js +27 -8
  187. package/src/SelectPopover.hbs +4 -1
  188. package/src/Slider.hbs +1 -1
  189. package/src/SliderBase.js +2 -1
  190. package/src/Switch.hbs +12 -2
  191. package/src/Switch.js +4 -0
  192. package/src/Tab.js +26 -12
  193. package/src/TabContainer.hbs +6 -1
  194. package/src/TabContainer.js +5 -8
  195. package/src/TabContainerPopover.hbs +1 -0
  196. package/src/TabInStrip.hbs +1 -5
  197. package/src/Table.js +2 -1
  198. package/src/TableRow.js +1 -1
  199. package/src/TextArea.js +14 -0
  200. package/src/TextAreaPopover.hbs +1 -0
  201. package/src/Token.hbs +2 -0
  202. package/src/Token.js +21 -1
  203. package/src/Tokenizer.js +4 -1
  204. package/src/WheelSlider.js +9 -9
  205. package/src/features/InputSuggestions.js +100 -15
package/csp.js ADDED
@@ -0,0 +1,7 @@
1
+ import { setPackageCSSRoot, setUseLinks } from "@ui5/webcomponents-base/dist/CSP.js";
2
+
3
+ setUseLinks(false); // !document.adoptedStyleSheets
4
+ setPackageCSSRoot("@ui5/webcomponents-base", "/resources/css/base/");
5
+ setPackageCSSRoot("@ui5/webcomponents-theming", "/resources/css/theming/");
6
+ setPackageCSSRoot("@ui5/webcomponents", "/resources/css/main/");
7
+ setPackageCSSRoot("@ui5/webcomponents-fiori", "/css/");
package/dist/CheckBox.js CHANGED
@@ -298,6 +298,10 @@ class CheckBox extends UI5Element {
298
298
  }
299
299
 
300
300
  _onmousedown() {
301
+ if (this.readonly || this.disabled) {
302
+ return;
303
+ }
304
+
301
305
  this.active = true;
302
306
  activeCb = this; // eslint-disable-line
303
307
  }
@@ -58,7 +58,6 @@ const metadata = {
58
58
  * Defines the default color of the component.
59
59
  * <b>Note:</b> The default color should be a part of the ColorPalette colors</code>
60
60
  * @type {CSSColor}
61
- * @defaultValue ""
62
61
  * @public
63
62
  */
64
63
  defaultColor: {
@@ -30,7 +30,7 @@ const metadata = {
30
30
  * Defines the currently selected color of the component.
31
31
  * <br><br>
32
32
  * <b>Note</b>: use HEX, RGB, RGBA, HSV formats or a CSS color name when modifying this property.
33
- * @type {String}
33
+ * @type {CSSColor}
34
34
  * @public
35
35
  */
36
36
  color: {
package/dist/ComboBox.js CHANGED
@@ -7,6 +7,7 @@ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/Ari
7
7
  import announce from "@ui5/webcomponents-base/dist/util/InvisibleMessage.js";
8
8
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
9
9
  import "@ui5/webcomponents-icons/dist/decline.js";
10
+ import "@ui5/webcomponents-icons/dist/not-editable.js";
10
11
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
11
12
  import {
12
13
  isBackSpace,
@@ -16,6 +17,8 @@ import {
16
17
  isDown,
17
18
  isEnter,
18
19
  isEscape,
20
+ isTabNext,
21
+ isTabPrevious,
19
22
  } from "@ui5/webcomponents-base/dist/Keys.js";
20
23
  import * as Filters from "./ComboBoxFilters.js";
21
24
 
@@ -39,6 +42,7 @@ import ComboBoxCss from "./generated/themes/ComboBox.css.js";
39
42
  import ComboBoxPopoverCss from "./generated/themes/ComboBoxPopover.css.js";
40
43
  import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
41
44
  import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
45
+ import SuggestionsCss from "./generated/themes/Suggestions.css.js";
42
46
 
43
47
  import ComboBoxItem from "./ComboBoxItem.js";
44
48
  import Icon from "./Icon.js";
@@ -367,7 +371,7 @@ class ComboBox extends UI5Element {
367
371
  }
368
372
 
369
373
  static get staticAreaStyles() {
370
- return [ResponsivePopoverCommonCss, ValueStateMessageCss, ComboBoxPopoverCss];
374
+ return [ResponsivePopoverCommonCss, ValueStateMessageCss, ComboBoxPopoverCss, SuggestionsCss];
371
375
  }
372
376
 
373
377
  static get template() {
@@ -524,6 +528,10 @@ class ComboBox extends UI5Element {
524
528
  this._toggleRespPopover();
525
529
  }
526
530
 
531
+ _readonlyIconClick() {
532
+ this.inner.focus();
533
+ }
534
+
527
535
  _input(event) {
528
536
  const { value } = event.target;
529
537
 
@@ -719,6 +727,10 @@ class ComboBox extends UI5Element {
719
727
  this._isValueStateFocused = false;
720
728
  }
721
729
 
730
+ if ((isTabNext(event) || isTabPrevious(event)) && this.open) {
731
+ this._closeRespPopover();
732
+ }
733
+
722
734
  if (isShow(event) && !this.readonly && !this.disabled) {
723
735
  event.preventDefault();
724
736
 
@@ -946,6 +958,20 @@ class ComboBox extends UI5Element {
946
958
  return !this.valueStateMessage.length && this.hasValueStateText;
947
959
  }
948
960
 
961
+ /**
962
+ * This method is relevant for sap_horizon theme only
963
+ */
964
+ get _valueStateMessageIcon() {
965
+ const iconPerValueState = {
966
+ Error: "error",
967
+ Warning: "alert",
968
+ Success: "sys-enter-2",
969
+ Information: "information",
970
+ };
971
+
972
+ return this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : "";
973
+ }
974
+
949
975
  get open() {
950
976
  return this.responsivePopover ? this.responsivePopover.opened : false;
951
977
  }
@@ -994,6 +1020,10 @@ class ComboBox extends UI5Element {
994
1020
 
995
1021
  get classes() {
996
1022
  return {
1023
+ popover: {
1024
+ "ui5-suggestions-popover": !this.isPhone,
1025
+ "ui5-suggestions-popover-with-value-state-header": !this.isPhone && this.hasValueStateText,
1026
+ },
997
1027
  popoverValueState: {
998
1028
  "ui5-valuestatemessage-header": true,
999
1029
  "ui5-valuestatemessage-root": true,
@@ -314,12 +314,13 @@ class DateTimePicker extends DatePicker {
314
314
  */
315
315
  onSelectedDatesChange(event) {
316
316
  event.preventDefault();
317
+ const dateTimePickerContent = event.path ? event.path[1] : event.composedPath()[1];
317
318
 
318
319
  this._previewValues = {
319
320
  ...this._previewValues,
320
321
  calendarTimestamp: event.detail.timestamp,
321
322
  calendarValue: event.detail.values[0],
322
- timeSelectionValue: event.path[1].lastChild.value,
323
+ timeSelectionValue: dateTimePickerContent.lastChild.value,
323
324
  };
324
325
  }
325
326
 
package/dist/DayPicker.js CHANGED
@@ -259,10 +259,15 @@ class DayPicker extends CalendarPart {
259
259
  if (isWeekend) {
260
260
  day.classes += " ui5-dp-item--weeekend";
261
261
  }
262
+
262
263
  if (isDisabled) {
263
264
  day.classes += " ui5-dp-item--disabled";
264
265
  }
265
266
 
267
+ if (this.hasSecondaryCalendarType) {
268
+ day.classes += " ui5-dp-item--withsecondtype";
269
+ }
270
+
266
271
  week.push(day);
267
272
 
268
273
  if (dayOfTheWeek === DAYS_IN_WEEK - 1) { // 0-indexed so 6 is the last day of the week
@@ -480,6 +480,20 @@ class FileUploader extends UI5Element {
480
480
  return this.focused && this.hasValueStateText && !this.hideInput;
481
481
  }
482
482
 
483
+ /**
484
+ * This method is relevant for sap_horizon theme only
485
+ */
486
+ get _valueStateMessageInputIcon() {
487
+ const iconPerValueState = {
488
+ Error: "error",
489
+ Warning: "alert",
490
+ Success: "sys-enter-2",
491
+ Information: "information",
492
+ };
493
+
494
+ return this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : "";
495
+ }
496
+
483
497
  get classes() {
484
498
  return {
485
499
  popoverValueState: {
package/dist/Icon.js CHANGED
@@ -19,6 +19,7 @@ const PRESENTATION_ROLE = "presentation";
19
19
  const metadata = {
20
20
  tag: "ui5-icon",
21
21
  languageAware: true,
22
+ themeAware: true,
22
23
  properties: /** @lends sap.ui.webcomponents.main.Icon.prototype */ {
23
24
  /**
24
25
  * Defines if the icon is interactive (focusable and pressable)
package/dist/Input.js CHANGED
@@ -18,6 +18,7 @@ import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
18
18
  import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
19
19
  import { getCaretPosition, setCaretPosition } from "@ui5/webcomponents-base/dist/util/Caret.js";
20
20
  import "@ui5/webcomponents-icons/dist/decline.js";
21
+ import "@ui5/webcomponents-icons/dist/not-editable.js";
21
22
  import InputType from "./types/InputType.js";
22
23
  import Popover from "./Popover.js";
23
24
  // Templates
@@ -40,6 +41,7 @@ import {
40
41
  import styles from "./generated/themes/Input.css.js";
41
42
  import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
42
43
  import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
44
+ import SuggestionsCss from "./generated/themes/Suggestions.css.js";
43
45
 
44
46
  const rgxFloat = new RegExp(/(\+|-)?\d+(\.|,)\d+/);
45
47
 
@@ -330,6 +332,14 @@ const metadata = {
330
332
  type: Boolean,
331
333
  },
332
334
 
335
+ /**
336
+ * Indicates whether the visual focus is on the value state header
337
+ * @private
338
+ */
339
+ _isValueStateFocused: {
340
+ type: Boolean,
341
+ },
342
+
333
343
  open: {
334
344
  type: Boolean,
335
345
  },
@@ -487,7 +497,7 @@ class Input extends UI5Element {
487
497
  }
488
498
 
489
499
  static get staticAreaStyles() {
490
- return [ResponsivePopoverCommonCss, ValueStateMessageCss];
500
+ return [ResponsivePopoverCommonCss, ValueStateMessageCss, SuggestionsCss];
491
501
  }
492
502
 
493
503
  constructor() {
@@ -614,7 +624,7 @@ class Input extends UI5Element {
614
624
  }
615
625
 
616
626
  if (this.showSuggestions) {
617
- this.Suggestions._deselectItems();
627
+ this._clearPopoverFocusAndSelection();
618
628
  }
619
629
 
620
630
  this._keyDown = true;
@@ -652,26 +662,41 @@ class Input extends UI5Element {
652
662
 
653
663
  _handleEnter(event) {
654
664
  const itemPressed = !!(this.Suggestions && this.Suggestions.onEnter(event));
665
+
655
666
  if (!itemPressed) {
656
667
  this.fireEventByAction(this.ACTION_ENTER);
657
668
  this.lastConfirmedValue = this.value;
669
+ return;
658
670
  }
671
+
672
+ this.focused = true;
659
673
  }
660
674
 
661
675
  _handleEscape() {
662
- if (this.showSuggestions && this.Suggestions && this.Suggestions._isItemOnTarget()) {
676
+ const hasSuggestions = this.showSuggestions && !!this.Suggestions;
677
+ const isOpen = hasSuggestions && this.open;
678
+
679
+ if (!isOpen) {
680
+ this.value = this.lastConfirmedValue ? this.lastConfirmedValue : this.previousValue;
681
+ return;
682
+ }
683
+
684
+ if (hasSuggestions && isOpen && this.Suggestions._isItemOnTarget()) {
663
685
  // Restore the value.
664
686
  this.value = this.valueBeforeItemPreview;
665
687
 
666
688
  // Mark that the selection has been canceled, so the popover can close
667
689
  // and not reopen, due to receiving focus.
668
690
  this.suggestionSelectionCanceled = true;
669
- this.open = false;
670
- } else if (this.Suggestions && this.Suggestions.isOpened()) {
671
- this.closePopover();
672
- } else {
673
- this.value = this.lastConfirmedValue ? this.lastConfirmedValue : this.previousValue;
691
+ this.focused = true;
674
692
  }
693
+
694
+ if (this._isValueStateFocused) {
695
+ this._isValueStateFocused = false;
696
+ this.focused = true;
697
+ }
698
+
699
+ this.open = false;
675
700
  }
676
701
 
677
702
  async _onfocusin(event) {
@@ -702,6 +727,7 @@ class Input extends UI5Element {
702
727
  }
703
728
 
704
729
  this.closePopover();
730
+ this._clearPopoverFocusAndSelection();
705
731
 
706
732
  this.previousValue = "";
707
733
  this.lastConfirmedValue = "";
@@ -709,6 +735,18 @@ class Input extends UI5Element {
709
735
  this.open = false;
710
736
  }
711
737
 
738
+ _clearPopoverFocusAndSelection() {
739
+ if (!this.showSuggestions || !this.Suggestions) {
740
+ return;
741
+ }
742
+
743
+ this._isValueStateFocused = false;
744
+ this.hasSuggestionItemSelected = false;
745
+
746
+ this.Suggestions._deselectItems();
747
+ this.Suggestions._clearItemFocus();
748
+ }
749
+
712
750
  _click(event) {
713
751
  if (isPhone() && !this.readonly && this.Suggestions) {
714
752
  this.blur();
@@ -774,6 +812,8 @@ class Input extends UI5Element {
774
812
  }
775
813
 
776
814
  if (event.target === inputDomRef) {
815
+ this.focused = true;
816
+
777
817
  // stop the native event, as the semantic "input" would be fired.
778
818
  event.stopImmediatePropagation();
779
819
  }
@@ -787,6 +827,7 @@ class Input extends UI5Element {
787
827
  !skipFiring && this.fireEventByAction(this.ACTION_USER_INPUT);
788
828
 
789
829
  this.hasSuggestionItemSelected = false;
830
+ this._isValueStateFocused = false;
790
831
 
791
832
  if (this.Suggestions) {
792
833
  this.Suggestions.updateSelectedItemPosition(null);
@@ -864,14 +905,6 @@ class Input extends UI5Element {
864
905
  }
865
906
  }
866
907
 
867
- shouldOpenSuggestions() {
868
- return !!(this.suggestionItems.length
869
- && this.focused
870
- && this.showSuggestions
871
- && !this.hasSuggestionItemSelected
872
- && !this.suggestionSelectionCanceled);
873
- }
874
-
875
908
  selectSuggestion(item, keyboardUsed) {
876
909
  if (item.group) {
877
910
  return;
@@ -913,7 +946,7 @@ class Input extends UI5Element {
913
946
  */
914
947
  updateValueOnPreview(item) {
915
948
  const noPreview = item.type === "Inactive" || item.group;
916
- const itemValue = noPreview ? "" : (item.effectiveTitle || item.textContent);
949
+ const itemValue = noPreview ? this.valueBeforeItemPreview : (item.effectiveTitle || item.textContent);
917
950
  this.value = itemValue;
918
951
  }
919
952
 
@@ -1154,10 +1187,13 @@ class Input extends UI5Element {
1154
1187
 
1155
1188
  get classes() {
1156
1189
  return {
1190
+ popover: {
1191
+ "ui5-suggestions-popover": !this.isPhone && this.showSuggestions,
1192
+ "ui5-suggestions-popover-with-value-state-header": !this.isPhone && this.showSuggestions && this.hasValueStateMessage,
1193
+ },
1157
1194
  popoverValueState: {
1158
1195
  "ui5-valuestatemessage-root": true,
1159
1196
  "ui5-valuestatemessage-header": true,
1160
- "ui5-responsive-popover-header": !this.isValueStateOpened(),
1161
1197
  "ui5-valuestatemessage--success": this.valueState === ValueState.Success,
1162
1198
  "ui5-valuestatemessage--error": this.valueState === ValueState.Error,
1163
1199
  "ui5-valuestatemessage--warning": this.valueState === ValueState.Warning,
@@ -1278,6 +1314,20 @@ class Input extends UI5Element {
1278
1314
  return this.valueState !== ValueState.None ? result : "";
1279
1315
  }
1280
1316
 
1317
+ /**
1318
+ * This method is relevant for sap_horizon theme only
1319
+ */
1320
+ get _valueStateMessageInputIcon() {
1321
+ const iconPerValueState = {
1322
+ Error: "error",
1323
+ Warning: "alert",
1324
+ Success: "sys-enter-2",
1325
+ Information: "information",
1326
+ };
1327
+
1328
+ return this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : "";
1329
+ }
1330
+
1281
1331
  /**
1282
1332
  * Returns the caret position inside the native input
1283
1333
  * @protected
package/dist/List.js CHANGED
@@ -361,7 +361,7 @@ const metadata = {
361
361
  * The <code>ui5-list</code> component allows displaying a list of items, advanced keyboard
362
362
  * handling support for navigating between items, and predefined modes to improve the development efficiency.
363
363
  * <br><br>
364
- * The <code>ui5-list</code> is а container for the available list items:
364
+ * The <code>ui5-list</code> is a container for the available list items:
365
365
  * <ul>
366
366
  * <li><code>ui5-li</code></li>
367
367
  * <li><code>ui5-li-custom</code></li>
@@ -560,7 +560,7 @@ class List extends UI5Element {
560
560
  return ids.length ? ids.join(" ") : undefined;
561
561
  }
562
562
 
563
- get ariaLabelТxt() {
563
+ get ariaLabelTxt() {
564
564
  return getEffectiveAriaLabelText(this);
565
565
  }
566
566
 
@@ -19,6 +19,7 @@ import { isIE, isPhone } from "@ui5/webcomponents-base/dist/Device.js";
19
19
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
20
20
  import "@ui5/webcomponents-icons/dist/decline.js";
21
21
  import "@ui5/webcomponents-icons/dist/multiselect-all.js";
22
+ import "@ui5/webcomponents-icons/dist/not-editable.js";
22
23
  import MultiComboBoxItem from "./MultiComboBoxItem.js";
23
24
  import Tokenizer from "./Tokenizer.js";
24
25
  import Token from "./Token.js";
@@ -35,6 +36,7 @@ import {
35
36
  VALUE_STATE_SUCCESS,
36
37
  VALUE_STATE_ERROR,
37
38
  VALUE_STATE_WARNING,
39
+ VALUE_STATE_INFORMATION,
38
40
  INPUT_SUGGESTIONS_TITLE,
39
41
  SELECT_OPTIONS,
40
42
  MULTICOMBOBOX_DIALOG_OK_BUTTON,
@@ -49,6 +51,7 @@ import MultiComboBoxPopoverTemplate from "./generated/templates/MultiComboBoxPop
49
51
  import styles from "./generated/themes/MultiComboBox.css.js";
50
52
  import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
51
53
  import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
54
+ import SuggestionsCss from "./generated/themes/Suggestions.css.js";
52
55
 
53
56
  /**
54
57
  * @public
@@ -337,12 +340,6 @@ const metadata = {
337
340
  * <li> Backspace - deletes the token and focus the next token. </li>
338
341
  * </ul>
339
342
  *
340
- * In the context of <code>ui5-multi-combobox</code>, you can provide a custom stable DOM ref for:
341
- * <ul>
342
- * <li>Every <code>ui5-mcb-item</code> that you provide.
343
- * Example: <code>&lt;ui5-mcb-item stable-dom-ref="item1"&gt;&lt;/ui5-mcb-item&gt;</code></li>
344
- * </ul>
345
- *
346
343
  * <h3>CSS Shadow Parts</h3>
347
344
  *
348
345
  * <ui5-link target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/::part">CSS Shadow Parts</ui5-link> allow developers to style elements inside the Shadow DOM.
@@ -388,7 +385,7 @@ class MultiComboBox extends UI5Element {
388
385
  }
389
386
 
390
387
  static get staticAreaStyles() {
391
- return [ResponsivePopoverCommonCss, ValueStateMessageCss];
388
+ return [ResponsivePopoverCommonCss, ValueStateMessageCss, SuggestionsCss];
392
389
  }
393
390
 
394
391
  static get dependencies() {
@@ -819,6 +816,10 @@ class MultiComboBox extends UI5Element {
819
816
  this._filteredItems = this.items;
820
817
  }
821
818
 
819
+ this.items.forEach(item => {
820
+ item._getRealDomRef = () => this.allItemsPopover.querySelector(`*[data-ui5-stable=${item.stableDomRef}]`);
821
+ });
822
+
822
823
  const filteredItems = this._filterItems(this.value);
823
824
  this._filteredItems = filteredItems;
824
825
  }
@@ -931,6 +932,10 @@ class MultiComboBox extends UI5Element {
931
932
  }
932
933
  }
933
934
 
935
+ _readonlyIconClick() {
936
+ this._inputDom.focus();
937
+ }
938
+
934
939
  get editable() {
935
940
  return !this.readonly;
936
941
  }
@@ -973,6 +978,20 @@ class MultiComboBox extends UI5Element {
973
978
  return this.getSlottedNodes("valueStateMessage").map(el => el.cloneNode(true));
974
979
  }
975
980
 
981
+ /**
982
+ * This method is relevant for sap_horizon theme only
983
+ */
984
+ get _valueStateMessageIcon() {
985
+ const iconPerValueState = {
986
+ Error: "error",
987
+ Warning: "alert",
988
+ Success: "sys-enter-2",
989
+ Information: "information",
990
+ };
991
+
992
+ return this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : "";
993
+ }
994
+
976
995
  get _tokensCountText() {
977
996
  if (!this._tokenizer) {
978
997
  return;
@@ -1002,6 +1021,7 @@ class MultiComboBox extends UI5Element {
1002
1021
  "Error": MultiComboBox.i18nBundle.getText(VALUE_STATE_ERROR),
1003
1022
  "Error_Selection": MultiComboBox.i18nBundle.getText(VALUE_STATE_ERROR_ALREADY_SELECTED),
1004
1023
  "Warning": MultiComboBox.i18nBundle.getText(VALUE_STATE_WARNING),
1024
+ "Information": MultiComboBox.i18nBundle.getText(VALUE_STATE_INFORMATION),
1005
1025
  };
1006
1026
  }
1007
1027
 
@@ -1033,6 +1053,11 @@ class MultiComboBox extends UI5Element {
1033
1053
 
1034
1054
  get classes() {
1035
1055
  return {
1056
+ popover: {
1057
+ "ui5-multi-combobox-all-items-responsive-popover": true,
1058
+ "ui5-suggestions-popover": !this.isPhone,
1059
+ "ui5-suggestions-popover-with-value-state-header": !this.isPhone && this.hasValueStateMessage,
1060
+ },
1036
1061
  popoverValueState: {
1037
1062
  "ui5-valuestatemessage-root": true,
1038
1063
  "ui5-valuestatemessage-header": true,
@@ -13,16 +13,6 @@ const metadata = {
13
13
  * @public
14
14
  */
15
15
  selected: { type: Boolean },
16
-
17
- /**
18
- * Defines the stable selector that you can use via getStableDomRef method.
19
- * @public
20
- * @type {string}
21
- * @since 1.0.0-rc.11
22
- */
23
- stableDomRef: {
24
- type: String,
25
- },
26
16
  },
27
17
  };
28
18
 
@@ -42,6 +32,10 @@ class MultiComboBoxItem extends ComboBoxItem {
42
32
  static get metadata() {
43
33
  return metadata;
44
34
  }
35
+
36
+ get stableDomRef() {
37
+ return `${this._id}-stable-dom-ref`;
38
+ }
45
39
  }
46
40
 
47
41
  MultiComboBoxItem.define();
package/dist/Option.js CHANGED
@@ -57,16 +57,6 @@ const metadata = {
57
57
  type: String,
58
58
  },
59
59
 
60
- /**
61
- * Defines the stable selector that you can use via getStableDomRef method.
62
- * @public
63
- * @type {string}
64
- * @since 1.0.0-rc.11
65
- */
66
- stableDomRef: {
67
- type: String,
68
- },
69
-
70
60
  /**
71
61
  * Defines the focused state of the component.
72
62
  * @type {boolean}
@@ -114,6 +104,10 @@ class Option extends UI5Element {
114
104
  static get metadata() {
115
105
  return metadata;
116
106
  }
107
+
108
+ get stableDomRef() {
109
+ return `${this._id}-stable-dom-ref`;
110
+ }
117
111
  }
118
112
 
119
113
  Option.define();
package/dist/Popup.js CHANGED
@@ -13,6 +13,7 @@ import { addOpenedPopup, removeOpenedPopup } from "./popup-utils/OpenedPopupsReg
13
13
  // Styles
14
14
  import styles from "./generated/themes/Popup.css.js";
15
15
  import staticAreaStyles from "./generated/themes/PopupStaticAreaStyles.css.js";
16
+ import globalStyles from "./generated/themes/PopupGlobal.css.js";
16
17
 
17
18
  /**
18
19
  * @public
@@ -143,13 +144,7 @@ const metadata = {
143
144
 
144
145
  const createBlockingStyle = () => {
145
146
  if (!hasStyle("data-ui5-popup-scroll-blocker")) {
146
- createStyle(`
147
- .ui5-popup-scroll-blocker {
148
- width: 100%;
149
- height: 100%;
150
- position: fixed;
151
- overflow: hidden;
152
- }`, "data-ui5-popup-scroll-blocker");
147
+ createStyle(globalStyles, "data-ui5-popup-scroll-blocker");
153
148
  }
154
149
  };
155
150
 
@@ -733,7 +733,7 @@ class RangeSlider extends SliderBase {
733
733
  get styles() {
734
734
  return {
735
735
  progress: {
736
- "transform": `scaleX(${this._selectedRange})`,
736
+ "width": `${this._selectedRange * 100}%`,
737
737
  "transform-origin": `${this.directionStart} top`,
738
738
  [this.directionStart]: `${this._firstHandlePositionFromStart}%`,
739
739
  },
package/dist/Select.js CHANGED
@@ -264,14 +264,6 @@ const metadata = {
264
264
  * </ul>
265
265
  * <br>
266
266
  *
267
- * <h3>Stable DOM Refs</h3>
268
- *
269
- * In the context of <code>ui5-select</code>, you can provide a custom stable DOM ref for:
270
- * <ul>
271
- * <li>Every <code>ui5-option</code> that you provide.
272
- * Example: <code><ui5-option stable-dom-ref="option1"></ui5-option></code></li>
273
- * </ul>
274
- *
275
267
  * <h3>ES6 Module Import</h3>
276
268
  * <code>import "@ui5/webcomponents/dist/Select";</code>
277
269
  * <br>
@@ -335,6 +327,8 @@ class Select extends UI5Element {
335
327
  this._listWidth = this.responsivePopover.offsetWidth;
336
328
  }
337
329
  }
330
+
331
+ this._attachRealDomRefs();
338
332
  }
339
333
 
340
334
  _onfocusin() {
@@ -378,6 +372,14 @@ class Select extends UI5Element {
378
372
  }
379
373
  }
380
374
 
375
+ async _attachRealDomRefs() {
376
+ this.responsivePopover = await this._respPopover();
377
+
378
+ this.options.forEach(option => {
379
+ option._getRealDomRef = () => this.responsivePopover.querySelector(`*[data-ui5-stable=${option.stableDomRef}]`);
380
+ });
381
+ }
382
+
381
383
  _syncSelection() {
382
384
  let lastSelectedOptionIndex = -1,
383
385
  firstEnabledOptionIndex = -1;
@@ -699,6 +701,20 @@ class Select extends UI5Element {
699
701
  && this.responsivePopover.opened) ? "-1" : "0";
700
702
  }
701
703
 
704
+ /**
705
+ * This method is relevant for sap_horizon theme only
706
+ */
707
+ get _valueStateMessageInputIcon() {
708
+ const iconPerValueState = {
709
+ Error: "error",
710
+ Warning: "alert",
711
+ Success: "sys-enter-2",
712
+ Information: "information",
713
+ };
714
+
715
+ return this.valueState !== ValueState.None ? iconPerValueState[this.valueState] : "";
716
+ }
717
+
702
718
  get classes() {
703
719
  return {
704
720
  popoverValueState: {
@@ -708,6 +724,9 @@ class Select extends UI5Element {
708
724
  "ui5-valuestatemessage--warning": this.valueState === ValueState.Warning,
709
725
  "ui5-valuestatemessage--information": this.valueState === ValueState.Information,
710
726
  },
727
+ popover: {
728
+ "ui5-valuestatemessage-popover": this.hasValueState,
729
+ },
711
730
  };
712
731
  }
713
732
 
@@ -3,6 +3,7 @@ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import Float from "@ui5/webcomponents-base/dist/types/Float.js";
4
4
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
5
5
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
6
+ import "@ui5/webcomponents-icons/dist/source-code.js";
6
7
  import {
7
8
  isEscape, isHome, isEnd, isUp, isDown, isRight, isLeft, isUpCtrl, isDownCtrl, isRightCtrl, isLeftCtrl, isPlus, isMinus, isPageUp, isPageDown,
8
9
  } from "@ui5/webcomponents-base/dist/Keys.js";
@@ -180,7 +181,7 @@ class SliderBase extends UI5Element {
180
181
  sap_belize: "#bfbfbf",
181
182
  sap_belize_hcw: "#000000",
182
183
  sap_belize_hcb: "#ffffff",
183
- sap_horizon: "#d5dadd",
184
+ sap_horizon: "#89919a",
184
185
  };
185
186
  }
186
187