@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
@@ -97,10 +97,16 @@ class Suggestions {
97
97
  }
98
98
 
99
99
  onEnter(event) {
100
+ if (this._isGroupOrInactiveItem) {
101
+ event.preventDefault();
102
+ return false;
103
+ }
104
+
100
105
  if (this._isItemOnTarget()) {
101
106
  this.onItemSelected(null, true /* keyboardUsed */);
102
107
  return true;
103
108
  }
109
+
104
110
  return false;
105
111
  }
106
112
 
@@ -135,9 +141,15 @@ class Suggestions {
135
141
  }
136
142
 
137
143
  async close(preventFocusRestore = false) {
144
+ const selectedItem = this._getItems() && this._getItems()[this.selectedItemIndex];
145
+
138
146
  this._getComponent().open = false;
139
147
  this.responsivePopover = await this._getSuggestionPopover();
140
148
  this.responsivePopover.close(false, false, preventFocusRestore);
149
+
150
+ if (selectedItem && selectedItem.focused) {
151
+ selectedItem.focused = false;
152
+ }
141
153
  }
142
154
 
143
155
  updateSelectedItemPosition(pos) {
@@ -171,16 +183,13 @@ class Suggestions {
171
183
 
172
184
  // If the item is "Inactive", prevent selection with SPACE or ENTER
173
185
  // to have consistency with the way "Inactive" items behave in the ui5-list
174
- if (item.type === "Inactive") {
175
- return;
176
- }
177
-
178
- if (item.group) {
186
+ if (item.type === "Inactive" || item.group) {
179
187
  return;
180
188
  }
181
189
 
182
190
  this._getComponent().onItemSelected(this._getRealItems()[this.selectedItemIndex], keyboardUsed);
183
191
  item.selected = false;
192
+ item.focused = false;
184
193
  this._getComponent().open = false;
185
194
  }
186
195
 
@@ -242,7 +251,17 @@ class Suggestions {
242
251
  }
243
252
 
244
253
  _isItemOnTarget() {
245
- return this.isOpened() && this.selectedItemIndex !== null;
254
+ return this.isOpened() && this.selectedItemIndex !== null && this.selectedItemIndex !== -1 && !this._isGroupOrInactiveItem;
255
+ }
256
+
257
+ get _isGroupOrInactiveItem() {
258
+ const items = this._getItems();
259
+
260
+ if (!items || !items[this.selectedItemIndex]) {
261
+ return false;
262
+ }
263
+
264
+ return (items[this.selectedItemIndex].group || items[this.selectedItemIndex].type === "Inactive");
246
265
  }
247
266
 
248
267
  isOpened() {
@@ -264,23 +283,68 @@ class Suggestions {
264
283
  _selectNextItem() {
265
284
  const itemsCount = this._getItems().length;
266
285
  const previousSelectedIdx = this.selectedItemIndex;
286
+ const hasValueState = this.component.hasValueStateMessage;
287
+
288
+ if (hasValueState && previousSelectedIdx === null && !this.component._isValueStateFocused) {
289
+ this.component._isValueStateFocused = true;
290
+ this.component.focused = false;
291
+ this.component.hasSuggestionItemSelected = false;
292
+ this.selectedItemIndex = null;
293
+
294
+ return;
295
+ }
296
+
297
+ if ((previousSelectedIdx === null && !hasValueState) || this.component._isValueStateFocused) {
298
+ this.component._isValueStateFocused = false;
299
+ --this.selectedItemIndex;
300
+ }
267
301
 
268
- if ((this.selectedItemIndex === null) || (++this.selectedItemIndex > itemsCount - 1)) {
269
- this.selectedItemIndex = 0;
302
+ if (previousSelectedIdx !== null && previousSelectedIdx + 1 > itemsCount - 1) {
303
+ return;
270
304
  }
271
305
 
272
- this._moveItemSelection(previousSelectedIdx, this.selectedItemIndex);
306
+ this._moveItemSelection(previousSelectedIdx, ++this.selectedItemIndex);
273
307
  }
274
308
 
275
309
  _selectPreviousItem() {
276
- const itemsCount = this._getItems().length;
310
+ const items = this._getItems();
277
311
  const previousSelectedIdx = this.selectedItemIndex;
312
+ const hasValueState = this.component.hasValueStateMessage;
278
313
 
279
- if ((this.selectedItemIndex === null) || (--this.selectedItemIndex < 0)) {
280
- this.selectedItemIndex = itemsCount - 1;
314
+ if (hasValueState && previousSelectedIdx === 0 && !this.component._isValueStateFocused) {
315
+ this.component.hasSuggestionItemSelected = false;
316
+ this.component._isValueStateFocused = true;
317
+ this.selectedItemIndex = null;
318
+
319
+ items[0].focused = false;
320
+ items[0].selected = false;
321
+
322
+ return;
323
+ }
324
+
325
+ if (this.component._isValueStateFocused) {
326
+ this.component.focused = true;
327
+ this.component._isValueStateFocused = false;
328
+ this.selectedItemIndex = null;
329
+
330
+ return;
331
+ }
332
+
333
+ if (previousSelectedIdx === -1 || previousSelectedIdx === null) {
334
+ return;
335
+ }
336
+
337
+ if (previousSelectedIdx - 1 < 0) {
338
+ items[previousSelectedIdx].selected = false;
339
+ items[previousSelectedIdx].focused = false;
340
+
341
+ this.component.focused = true;
342
+ this.component.hasSuggestionItemSelected = false;
343
+ this.selectedItemIndex -= 1;
344
+ return;
281
345
  }
282
346
 
283
- this._moveItemSelection(previousSelectedIdx, this.selectedItemIndex);
347
+ this._moveItemSelection(previousSelectedIdx, --this.selectedItemIndex);
284
348
  }
285
349
 
286
350
  _moveItemSelection(previousIdx, nextIdx) {
@@ -288,6 +352,12 @@ class Suggestions {
288
352
  const currentItem = items[nextIdx];
289
353
  const previousItem = items[previousIdx];
290
354
 
355
+ if (!currentItem) {
356
+ return;
357
+ }
358
+
359
+ this.component.focused = false;
360
+
291
361
  this.accInfo = {
292
362
  currentPos: nextIdx + 1,
293
363
  listSize: items.length,
@@ -296,16 +366,22 @@ class Suggestions {
296
366
 
297
367
  if (previousItem) {
298
368
  previousItem.selected = false;
369
+ previousItem.focused = false;
299
370
  }
300
371
 
301
372
  if (currentItem) {
302
- currentItem.selected = true;
373
+ currentItem.focused = true;
374
+
375
+ if (currentItem.type === "Active") {
376
+ currentItem.selected = true;
377
+ }
303
378
 
304
379
  if (this.handleFocus) {
305
380
  currentItem.focus();
306
381
  }
307
382
  }
308
383
 
384
+ this.component.hasSuggestionItemSelected = true;
309
385
  this.onItemPreviewed(currentItem);
310
386
 
311
387
  if (!this._isItemIntoView(currentItem)) {
@@ -317,9 +393,18 @@ class Suggestions {
317
393
  const items = this._getItems();
318
394
  items.forEach(item => {
319
395
  item.selected = false;
396
+ item.focused = false;
320
397
  });
321
398
  }
322
399
 
400
+ _clearItemFocus() {
401
+ const focusedItem = this._getItems().find(item => item.focused);
402
+
403
+ if (focusedItem) {
404
+ focusedItem.focused = false;
405
+ }
406
+ }
407
+
323
408
  _isItemIntoView(item) {
324
409
  const rectItem = item.getDomRef().getBoundingClientRect();
325
410
  const rectInput = this._getComponent().getDomRef().getBoundingClientRect();
@@ -344,7 +429,7 @@ class Suggestions {
344
429
  }
345
430
 
346
431
  _getItems() {
347
- return [...this.responsivePopover.querySelector("[ui5-list]").children];
432
+ return !!this.responsivePopover && [...this.responsivePopover.querySelector("[ui5-list]").children];
348
433
  }
349
434
 
350
435
  _getComponent() {